Commit Graph

608 Commits

Author SHA1 Message Date
Masayuki Nakano
5133af6274 Bug 1514940 - part 1: Forcibly disable new keyCode/charCode value of keypress events if the document is Confluence r=smaug,Ehsan,kmag
Old Confluence does not aware of conflated model keypress event (see UI Events
spec, https://w3c.github.io/uievents/#determine-keypress-keyCode).
Additionally, Confluence can be hosted with any domains.  Therefore, we cannot
use blacklist to disable the conflated model keypress event only on it.

This patch checks whether current or parent document is Confluence with JS
module, called KeyPressEventModelCheckerChild.  For kicking this module,
nsHTMLDocument dispatches an custom event, CheckKeyPressEventModel, when it
becomes editable only first time.  Finally, if it's a Confluence instance, the
module let PresShell know that we need to use split model keypress event in it.

Differential Revision: https://phabricator.services.mozilla.com/D17907
2019-02-05 11:35:43 +00:00
Masayuki Nakano
8785054d71 Bug 1466208 - part 10: Create PresShell::EventHandler::MaybeDiscardEvent() to check whether it's safe to handle the event r=smaug
It may not be safe to handle events even when
PresShell::EventHandler::HandleEvent().  In such case, we need to discard
received events with notifying somebody.  This patch move this rare case
jobs into the new method, MaybeDiscardEvent().  Then, the caller, HandleEvnet(),
becomes easier to read.

Differential Revision: https://phabricator.services.mozilla.com/D16960
2019-02-02 02:20:28 +00:00
Masayuki Nakano
f84b2e4e4e Bug 1466208 - part 9: Create PresShell::EventHandler::MaybeHandleEventWithAnotherPresShell() to handle event with another PresShell if necessary r=smaug
Let's move the redirection of coming event in
PresShell::EventHandler::HandleEvent() into a method.  This makes the caller
easier to read.

Differential Revision: https://phabricator.services.mozilla.com/D16959
2019-02-02 02:20:25 +00:00
Masayuki Nakano
256f72d56a Bug 1524214 - Grab caching capturing content with local variable r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D18209
2019-02-01 20:44:28 +00:00
Masayuki Nakano
871c75f9bd Bug 1466208 - part 8: Clean up PresShell::EventHandler::GetFrameForHandlingEventWith() r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D16958
2019-02-01 02:18:55 +00:00
Masayuki Nakano
3955587b28 Bug 1466208 - part 7: Create PresShell::EventHandler::GetFrameForHandlingEventWith() to retrieve a frame which is necessary to handle event with another PresShell instance r=smaug
Next, we need to look for a frame for first parameter of calling
PresShell::HandleEvent() of another PresShell instance.  This patch creates
PresShell::EventHandler::GetFrameForHandlingEventWith() to do it.

Unfortunately, the result is used in 3 patterns.  One is, the caller should
stop handling the event.  Another one is, the caller should keep handling
the event by itself.  The other is, the caller should call
PresShell::HandleEvent() of different PresShell instance.  Therefore, this
patch makes the method take aFrame of the caller.  Then, the caller can check
the last 2 patterns with check the result is same as aFrame.  This is not so
smart approach, but I have no better idea without adding a bool argument or
making the return type bool and adding out argument of nsIFrame.

Differential Revision: https://phabricator.services.mozilla.com/D16957
2019-02-01 02:15:54 +00:00
Masayuki Nakano
50d87bbdb4 Bug 1466208 - part 6: Clean up PresShell::EventHandler::GetRetargetEventDocument() r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D16956
2019-01-31 02:28:07 +00:00
Masayuki Nakano
1fad9ec40a Bug 1466208 - part 5: Create PresShell::EventHandler::GetRetargetEventDocument() retrieve retarget document of coming event r=smaug
In some cases, PresShell::EventHandler::HandleEvent() needs to call
HandleEvent() of another instance.

For retrieving the instance, we need to compute retarget document first.
This patch makes new method to retrieve it.  The following patch will clean
up it.

Differential Revision: https://phabricator.services.mozilla.com/D16955
2019-01-31 02:24:51 +00:00
Masayuki Nakano
f7753088ce Bug 1466208 - part 4: Create PresShell::EventHandler::GetCapturingContentFor() to retrieve capturing content for specific event r=smaug
PresShell::HandleEvent() treats capturing content only when received event is
related to pointing device.  And it's used in 2 purposes.  One is for computing
to target document of coming event.  The other is for handling events using
coordinates.  Therefore, if we create a helper method to retrieve it, we can
move the variable into smaller blocks.

Differential Revision: https://phabricator.services.mozilla.com/D16954
2019-01-30 07:17:43 +00:00
Masayuki Nakano
e508c8b0d6 Bug 1466208 - part 3: Rewrite PresShell::EventHandler::MaybeHandleEventWithAccessibleCaret() with early-return style r=smaug
Because of spinning out from PresShell::EventHandler::HandleEvent(), we can use
early-return style in MaybeHandleEventWithAccessibleCaret().  This patch
rewrites MaybeHandleEventWithAccessibleCaret() with the style.

Differential Revision: https://phabricator.services.mozilla.com/D16953
2019-01-30 02:33:05 +00:00
garvitdelhi
cdc6f539cb Bug 1519185: Remove AttributeWillChange aNewValue parameter r=emilio,bzbarsky
Differential Revision: https://phabricator.services.mozilla.com/D17073
2019-01-29 17:59:38 +01:00
Cosmin Sabou
ef6c5d87ab Backed out 2 changesets (bug 1519185) build bustages on nsMenuGroupOwnerX.mm. CLOSED TREE
Backed out changeset e1de5282e21a (bug 1519185)
Backed out changeset 00d8afb01890 (bug 1519185)
2019-01-29 18:22:46 +02:00
garvitdelhi
790b1c35a4 Bug 1519185: Remove AttributeWillChange aNewValue parameter r=emilio,bzbarsky
Differential Revision: https://phabricator.services.mozilla.com/D17073
2019-01-29 15:27:02 +00:00
Emilio Cobos Álvarez
d0c4aad899 Bug 1523062 - Devirtualize a few nsIPresShell bits. r=TYLin,rhunt
No good reason they're virtual, since there's only one nsIPresShell
implementation.

Differential Revision: https://phabricator.services.mozilla.com/D17735
2019-01-29 15:24:31 +01:00
Masayuki Nakano
28b5853d21 Bug 1466208 - part 2: Create PresShell::EventHandler::MaybeHandleEventWithAccessibleCaret() to handle event with AccessbleCaretEventHub r=smaug
PresShell::EventHandler::HandleEvent() is too big.  That makes us difficult to
understand the flow of them.  So, first of all, we should split the method to
smaller chunks.  Then, we can understand what we're doing in HandleEvent() more.

This patch creates MaybeHandleEventWithAccessibleCaret() for first handling
block in HandleEvent().  Note that the following patch will clean it up.
I.e., this patch just moves the existing block into the new method.

Differential Revision: https://phabricator.services.mozilla.com/D16952
2019-01-29 10:30:35 +00:00
Masayuki Nakano
eab27bcccb Bug 1466208 - part 1: Create stack class to handle events in PresShell r=smaug
PresShell::HandleEvent() and PresShell::HandleEventInternal() are too big.
Additionally, we have a lot of methods used only by them.  So, if we'll
split those big methods, PresShell will have a lot of small methods which
are not grouped as a part of event handling.  That's too bad because some
of them may depend on the calling order, etc.

So, for grouping them, PresShell should create a stack class instance to handle
each event.  Then, we can store shared information in it only while we're
handling an event.

This patch creates PresShell::EventHandler and PresShell methods become
wrappers of the stack class, but this patch does not change any logic in the
code, i.e., just reorganizing existing methods.

Note that HandleEventWithTarget() and HandleEventInternal() need to take
WidgetEvent rather than WidgetGUIEvent.  Additionally, some other methods
require WidgetGUIEvent to refer WidgetGUIEvent::mWidget.  Therefore, this
patch does not make the new class store the event as a member.

Differential Revision: https://phabricator.services.mozilla.com/D16951
2019-01-29 06:04:05 +00:00
Emilio Cobos Álvarez
8ea8402e17 Bug 1514511 - Don't flush if the document is in the bfcache. r=bzbarsky
I think this is slightly better fix given the amount of offenders we have that
don't make sure this is the case.

Generally we get through the flush just fine, but there's code that relies on
nsIDocument::GetShell to return something meaningful, like the styleset code
that gets a pres context.

Differential Revision: https://phabricator.services.mozilla.com/D14689
2019-01-26 08:59:17 +01:00
Bobby Holley
8c2421bab3 Bug 1522017 - Introduce StackingContextParams to avoid death by a thousand argument. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D17434
2019-01-24 10:44:35 -08:00
Ryan Hunt
b45158768e Bug 1518640 - Use the visual viewport for anchor node selection. r=botond 2019-01-22 13:37:16 -06:00
Csoregi Natalia
08beb9e515 Backed out 2 changesets (bug 1518640) for reftest failures on gfx/layers/apz/test/reftest/frame-reconstruction-scroll-clamping.html. CLOSED TREE
Backed out changeset 27bbb318ecb4 (bug 1518640)
Backed out changeset 3b192e4631cc (bug 1518640)
2019-01-22 22:37:00 +02:00
Ryan Hunt
23066b81ce Bug 1518640 - Use the visual viewport for anchor node selection. r=botond 2019-01-22 13:37:16 -06:00
Cosmin Sabou
57bb107987 Merge mozilla-inbound to mozilla-central. a=merge 2019-01-19 11:57:49 +02:00
Greg Tatum
7ced9eb1ec Bug 1520526 - Add categories to all profiler markers; r=mstange
This commit adds categories to all markers. This way the profiler's
marker categories and frame label categories agree. There are a few
duplicate category properties on some of the marker payloads, but
this could be cleaned up in a follow-up if needed.

Differential Revision: https://phabricator.services.mozilla.com/D16864
2019-01-18 15:40:15 +00:00
sotaro
f342513ae1 Bug 1508522 - Relax aysnc animation size restriction with WebRender r=mattwoodrow
Performance of sync animation with large images is worse with WebRender than non-WebRender case. We want to use async animation as much as possible and relax aysnc animation size restriction. With WebRender, memory usage increase for async animation is limited compared to non-WebRender case.  Image does not needs additional TextureClient allocation for async animation and majority of frames are comverted to WebRenderCommands. Then we could relax aysnc animation size restriction with WebRender.

Differential Revision: https://phabricator.services.mozilla.com/D16791
2019-01-17 23:59:44 +00:00
Ryan Hunt
47e6aceb92 Bug 1519462 - Coalesce all scroll anchor adjustments to be performed after layout when flushing notifcations. r=dholbert
We currently perform anchor adjustment in three spots:
  1. If the target of RestyleManager::RecomputePosition is in a scroll anchor chain
  2. If the reflow root is in a scroll anchor chain
  3. In nsHTMLScrollFrame::DidReflow, for itself

It looks like it's possible for a scroll anchor container to be adjusted by (1)
and (2 or 3) in the same PresShell flush.

This should be okay, except that we consume mSuppressAnchorAdjustment when
performing an adjustment, and this can lead us to miss the second time that
we perform adjustments in a PresShell flush.

This commit reworks how we run anchor adjustments so that we collect all
scroll anchor containers that should be adjusted, and only perform the
adjustments once.

Differential Revision: https://phabricator.services.mozilla.com/D16407
2019-01-13 00:54:05 -06:00
Ting-Yu Lin
fc359f1610 Bug 1503420 Part 1 - Adjust some callers of nsIFrame::List() to stop passing 0 as a const char* argument. r=dholbert
To reproduce, execute
"GECKO_FRAMECTOR_DEBUG_FLAGS=really-noisy-content-updates ./mach run".

nsIFrame::List()'s second argument should be a const char*, not an
integer. We can fix the bug by omitting it because the default value of
the argument is an empty string.

Differential Revision: https://phabricator.services.mozilla.com/D16075
2019-01-09 21:02:13 +00:00
Oana Pop Rus
5847bf8ce1 Merge mozilla-central to autoland. a=merge CLOSED TREE 2019-01-15 11:39:31 +02:00
Botond Ballo
e7b3975365 Bug 1509575 - Make nsIPresShell::mVisualViewportOffset a Maybe so we can tell if it's ever been set. r=kats
This allows us to e.g. avoid sending a value that's (0,0) because it hasn't
been set yet in a visual scroll update.

Depends on D16346

Differential Revision: https://phabricator.services.mozilla.com/D16477
2019-01-15 01:30:55 +00:00
Cameron McCormack
f111c08be6 Bug 1519296 - Part 3: Make PresShell::AddOverrideStyleSheet append its sheet rather than prepend r=emilio
We only ever add a single sheet (EditorOverride.css) there anyway.

Depends on D16282

Differential Revision: https://phabricator.services.mozilla.com/D16283
2019-01-12 06:45:52 +00:00
Cameron McCormack
836359028d Bug 1519296 - Part 2: Make PresShell::AddUserSheet just find the right place to insert r=emilio
Depends on D16281

Differential Revision: https://phabricator.services.mozilla.com/D16282
2019-01-12 06:46:00 +00:00
Boris Zbarsky
d8defde5aa Bug 1519193 part 4. Convert AssertNoFramesInSubtree to using ShadowIncludingTreeIterator. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D16245
2019-01-12 03:20:05 +00:00
Noemi Erli
034297a992 Backed out 5 changesets (bug 1519193) for build bustages in Document.cpp CLOSED TREE
Backed out changeset e118466df64d (bug 1519193)
Backed out changeset 12d89a7fe296 (bug 1519193)
Backed out changeset 08b0f2b9a96a (bug 1519193)
Backed out changeset 1caa462e7f08 (bug 1519193)
Backed out changeset aae6e06aa88b (bug 1519193)
2019-01-12 00:29:37 +02:00
Boris Zbarsky
77aec42c48 Bug 1519193 part 4. Convert AssertNoFramesInSubtree to using ShadowIncludingTreeIterator. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D16245
2019-01-10 22:24:24 +00:00
Jan Henning
907a103ee7 Bug 1498812 - Part 10: Return whether SetVisualViewportOffset was a no-op. r=botond
So that the caller doesn't have to retrieve and compare the previous viewport
offset himself.

Differential Revision: https://phabricator.services.mozilla.com/D15785
2019-01-11 19:50:17 +00:00
Razvan Maries
c8747156b8 Merge mozilla-central to autoland. a=merge on a CLOSED TREE 2019-01-11 11:36:24 +02:00
Daniel Varga
6406ac0729 Merge mozilla-central to mozilla-inbound. a=merge on a CLOSED TREE 2019-01-11 06:23:02 +02:00
Masayuki Nakano
67508411d2 Bug 181137 - part 8: Make ContentIteratorBase and its subclasses non-refcountable r=smaug
This patch makes ContentIteratorBase, PostContentIterator, PreContentIterator
and ContentSubtreeIterator classes non-refcountable because most users can
create their instances in stack and such users may be in a hot path.  So,
we can save a lot of cost of instantiation.

Unfortunately, only ScriptableContentIterator creates one of the concrete
classes and needs to destroy it properly.  Therefore, its
EnsureContentIterator(), destructor, traverse and unlink code becomes messy.
However, ScriptableContentIterator was designed for automated tests and we
need to maintain it not so many times.  Therefore, improvement of other
users must be worthwhiler than this demerit.

Differential Revision: https://phabricator.services.mozilla.com/D15928
2019-01-11 01:52:26 +00:00
Masayuki Nakano
7999b49986 Bug 181137 - part 3: Make all users of ContentSutreeIterator treat it directly rather than via nsIContentIterator r=smaug
Now, all users of ContentSubtreeIterator can access it directly.  This patch
makes them use the concrete class directly.

Differential Revision: https://phabricator.services.mozilla.com/D15920
2019-01-11 01:49:00 +00:00
Botond Ballo
dae45663b6 Bug 1507279 - Add a mechanism for the main thread to set a visual viewport offset. r=kats
Differential Revision: https://phabricator.services.mozilla.com/D16141
2019-01-10 20:59:13 +00:00
Jeff Muizelaar
eca4405235 Bug 1509182. Switch from using WrFilterOp to using FilterOp directly. r=nical
This avoids code duplication and simplifies push_stacking_context

Differential Revision: https://phabricator.services.mozilla.com/D16050
2019-01-10 19:41:08 +00:00
Cosmin Sabou
199c8bac19 Backed out changeset 10dedfde1015 (bug 1509182) for causing build bustages. 2019-01-10 20:52:49 +02:00
Jeff Muizelaar
d39e0bb1d1 Bug 1509182. Switch from using WrFilterOp to using FilterOp directly. r=nical
This avoids code duplication and simplifies push_stacking_context

Differential Revision: https://phabricator.services.mozilla.com/D16050
2019-01-10 18:40:56 +00:00
Csoregi Natalia
30efca58e6 Backed out changeset 8e078c86db82 (bug 1509182) for bustage on WebRenderTypes.h:789. CLOSED TREE 2019-01-10 18:15:42 +02:00
Jeff Muizelaar
3cebb8d71e Bug 1509182. Switch from using WrFilterOp to using FilterOp directly. r=nical
This avoids code duplication and simplifies push_stacking_context

Differential Revision: https://phabricator.services.mozilla.com/D16050
2019-01-10 14:20:21 +00:00
Csoregi Natalia
ec11d4a214 Backed out 8 changesets (bug 181137) for bustage on FragmentOrElement.cpp:1751. CLOSED TREE
Backed out changeset 99a977d519a0 (bug 181137)
Backed out changeset 65a4b245e851 (bug 181137)
Backed out changeset 5385d5fd9b8b (bug 181137)
Backed out changeset 83bec02c21d9 (bug 181137)
Backed out changeset b7ab59bf545e (bug 181137)
Backed out changeset b6fc7a332db7 (bug 181137)
Backed out changeset 654fdbad67db (bug 181137)
Backed out changeset 90a1ff49b6b1 (bug 181137)
2019-01-10 11:42:27 +02:00
Masayuki Nakano
e3bc6266ea Bug 181137 - part 8: Make ContentIteratorBase and its subclasses non-refcountable r=smaug
This patch makes ContentIteratorBase, PostContentIterator, PreContentIterator
and ContentSubtreeIterator classes non-refcountable because most users can
create their instances in stack and such users may be in a hot path.  So,
we can save a lot of cost of instantiation.

Unfortunately, only ScriptableContentIterator creates one of the concrete
classes and needs to destroy it properly.  Therefore, its
EnsureContentIterator(), destructor, traverse and unlink code becomes messy.
However, ScriptableContentIterator was designed for automated tests and we
need to maintain it not so many times.  Therefore, improvement of other
users must be worthwhiler than this demerit.

Differential Revision: https://phabricator.services.mozilla.com/D15928
2019-01-10 08:50:41 +00:00
Masayuki Nakano
602d7d0153 Bug 181137 - part 3: Make all users of ContentSutreeIterator treat it directly rather than via nsIContentIterator r=smaug
Now, all users of ContentSubtreeIterator can access it directly.  This patch
makes them use the concrete class directly.

Differential Revision: https://phabricator.services.mozilla.com/D15920
2019-01-10 08:45:07 +00:00
Masayuki Nakano
ef44e52a83 Bug 1499430 - Make PresShell::PageMove() use result of nsFrameSelection::GetFrameToPageSelect() when PresShell::GetScrollableFrameToScroll() returns nullptr r=smaug
If there is no scrollable frame, PresShell::GetScrollableFrameToScroll() returns
nullptr.  However, even when we don't expand selection, we need to move caret
in current selection root.  Therefore, it should call
nsFrameSelection::CommonPageMove() with the result of
nsFrameSelection::GetFrameToPageSelect() to move caret.

Differential Revision: https://phabricator.services.mozilla.com/D16020
2019-01-10 05:02:56 +00:00
Margareta Eliza Balazs
7fe3543679 Merge mozilla-central to inbound. a=merge CLOSED TREE 2019-01-18 12:31:59 +02:00
Ehsan Akhgari
498e2df734 Bug 1521000 - Part 2: Adjust our clang-format rules to include spaces after the hash for nested preprocessor directives r=sylvestre
# ignore-this-changeset
2019-01-18 10:16:18 +01:00