Commit Graph

1135 Commits

Author SHA1 Message Date
Mike Conley
2b292319a0 Bug 1397426 - When short-circuiting a TabParent::RenderLayers call, still fire the layer tree event if we've been preserving layers. r=billm
MozReview-Commit-ID: 7UT036vUY85
2017-11-07 15:08:47 -05:00
Mike Conley
a8f39c5a67 Bug 1397426 - Rename mRenderingLayers to mRenderLayers. r=billm
MozReview-Commit-ID: KTDhXM7PRdc
2017-11-22 10:21:34 -08:00
Mike Conley
cb0e50304b Bug 1397426 - Add IPC interface to tell TabChild's to render and clear layers, distinct from setting the active state on the DocShell. r=billm
Originally, setting the active state on the DocShell for remote browsers also did the
work of making the TabChild render its layers and upload them to the compositor.

This patch adds a new renderLayers method to nsITabParent which allows more fine-grained
control - we can now, for example, cause layers to be rendered and uploaded without
activating the DocShell.

Note that if one activates or deactivates the DocShell, we'll still do the work of
attempting to render / clear the layers if it hasn't already been done.

MozReview-Commit-ID: KkLaMDTzfHi
2017-11-03 10:27:05 -04:00
Makoto Kato
c87ca037cd Bug 1419285 - Part 2. IME message should post to correct widget. r=masayuki
After landing bug 1353060, TabParent::GetWidget()'s behaviour is changed.  We
should use GetDocWidget for IME.

MozReview-Commit-ID: 5DpYjzQDHlD
2017-11-29 15:56:11 +09:00
Makoto Kato
0276c36665 Bug 1419285 - Part 1. Calculate composition rect for remote XUL frame. r=masayuki
Out of process support for Web extension creates another XUL widget for it.
We should calculate correct offset for Web Extension's remote widget.

MozReview-Commit-ID: AaALzLeKLsM
2017-11-29 15:55:58 +09:00
Chris Peterson
1c79a65f02 Bug 1416164 - Replace NS_ABORT with MOZ_ASSERT_UNREACHABLE. r=froydnj
MozReview-Commit-ID: DRdYlOYqZpN
2017-10-24 23:52:56 -07:00
Nicholas Nethercote
e7cd5cec20 Bug 1405541 (attempt 2) - Split AUTO_PROFILER_LABEL_DYNAMIC into three macros. r=mstange.
It's easy to mess up the scoping so that (a) the label is pushed and then
immediately popped, and/or (b) the string doesn't live long enough. It's also
easy to do a utf16-to-utf8 conversion unnecessarily when the profiler is
inactive. This patch splits that macro into three new ones that are harder to
mess up.

- AUTO_PROFILER_LABEL_DYNAMIC_CSTR: same as current.
- AUTO_PROFILER_LABEL_DYNAMIC_NSCSTRING: for nsCStrings.
- AUTO_PROFILER_LABEL_DYNAMIC_LOSSY_NSSTRING: for nsStrings.
2017-10-13 16:12:57 +11:00
Botond Ballo
473f8337a1 Bug 1340415 - Ensure main-thread and async autoscrolling do not happen at the same time. r=kats
The two happening at the same time can lead to the APZ autoscroll being
cancelled due to APZ receiving a main-thread scroll offset update.

To achieve this:

  - The content process assumes APZ is handling the autoscroll until
    told otherwise.

  - If the parent process knows APZ won't handle an autoscroll, it
    tells the content process via its response to the Autoscroll:Start
    message. This covers all cases where APZ doesn't handle the
    autoscroll, except the case where APZCTreeManager itself rejects
    the autoscroll and it lives in the compositor process rather than
    the parent process.

  - If APZCTreeManager rejects an autoscroll and it lives in the
    compositor process, it sends an 'autoscroll-rejected-by-apz' message
    to the content process.

MozReview-Commit-ID: L62v4COai6W
2017-10-18 18:18:13 -04:00
Chung-Sheng Fu
92b91eee74 Bug 967895 - Ask for placeholder data when image extraction is not allowed (Tor 6253). r=jrmuizel
MozReview-Commit-ID: AJ5F6M5S83U
2017-08-22 14:23:41 +08:00
Sebastian Hengst
8d913bc885 Backed out changeset 71790f0ea832 (bug 967895) 2017-10-09 19:18:12 +02:00
Chung-Sheng Fu
36169821ad Bug 967895 - Ask for placeholder data when image extraction is not allowed (Tor 6253). r=jrmuizel
MozReview-Commit-ID: AJ5F6M5S83U
2017-08-22 14:23:41 +08:00
Aaron Klotz
5fda39c705 Bug 1383501 - Do not crash when TabParent::RecvPDocAccessibleConstructor receives a null COM proxy sent to the parent process. r=jimm
MozReview-Commit-ID: 5IOuLXc375T
2017-10-04 09:12:25 -06:00
Masayuki Nakano
69e1e875d1 Bug 1400189 - Give same priority to composition events and selectionset event as keyboard events at sending those events from the main process to a remote process r=stone
When sending keyboard events from TabParent to its remote process, TabParent
may give higher priority to them than composition events and selectionset event.

Therefore, the event order between keyboard events and composition events (and
selection set event) may be broken.  Keyboard events which should cause
inputting some characters are ignored if keyboard events are fired before
compositionend event accidentally.

This patch gives same priority to composition events and selectionset event
as keyboard event for avoiding breaking the event order.

MozReview-Commit-ID: 53jubwuHVvw
2017-09-29 22:03:25 +09:00
Yura Zenevich
099feb7763 Bug 1362420 - show and hide emulated windows in e10s mode for Dolphin. r=surkov, smaug
MozReview-Commit-ID: VBtgqbLap
2017-09-26 14:59:33 -04:00
Nicholas Nethercote
721eb311ac Bug 1400148 - Don't use -1 to represent an unset nsCursor. r=karlt.
Because UBSan complains about casting -1:

> runtime error: load of value 4294967295, which is not a valid value for type 'nsCursor'
2017-09-15 14:34:37 +10:00
Stone Shih
5251689dc0 Bug 1399876: Relax the assertion about sending multiple eMouseEnterIntoWidget in TabParent. r=baku.
We may create a browser element and replace it while the TabChild isn't ready to handle input events.
2017-09-15 15:41:53 +08:00
Stone Shih
b2f5ba1fb0 Bug 1397161 - Remove assert(mIsMouseEnterIntoWidgetEventSuppressed) when sending eMouseExitFromWidget to remote. r=smaug 2017-09-06 10:27:52 +08:00
Henry Chang
93bcf0c08b Bug 1349255 - Part 1: Make PBrowser.NotifyIMEFocus async to avoid UI jank. r=kanru,masayuki
Telemetry and some performance profiles show that Msg_NotifyIMEFocus can take
a few seconds to complete, and jank the browser. With bug 1217700, it removes
the necessity of sync Msg_NotifyIMEFocus, so in this patch we make this async
for performance improvement.

MozReview-Commit-ID: 15eUwMJ2Q7H
2017-05-08 19:07:56 +08:00
Stone Shih
ec09c1464f Bug 1389314 Part3: Temporarily disable the input priority events when dnd is active. r=smaug.
MozReview-Commit-ID: AWfYmhjjsq0
2017-08-02 15:23:35 +08:00
Stone Shih
c3615a35b6 Bug 1389314 Part2: Support enabling and disabling the input priority events in runtime. r=smaug.
MozReview-Commit-ID: 3a2TNVqguVb
2017-07-28 15:14:54 +08:00
Stone Shih
7e4e96a694 Bug 1389314 Part1: Rename event prioritization to input event queue. r=smaug.
MozReview-Commit-ID: 7wPWYwIjIet
2017-07-27 16:20:01 +08:00
Christoph Kerschbaumer
08424cf900 Bug 1370843 - Provide correct triggeringPrincipal for dropLinks. r=smaug,tooru 2017-08-22 10:07:03 +02:00
Stone Shih
da09b08d81 Bug 1351148 Part11: Set remote to be ready to handle input events when pref'ed off. r=smaug.
MozReview-Commit-ID: CO5BU9eOC84
2017-08-10 13:20:58 +08:00
Stone Shih
844a116867 Bug 1351148 Part9: Resend a MouseEnterIntoWidget event to TabChild when it's ready to handle input events. r=smaug.
MozReview-Commit-ID: IXPTRyJe1tk
2017-07-24 10:46:40 +08:00
Stone Shih
419a19e980 Bug 1351148 Part2: Add a priority queue for input events. r=smaug.
MozReview-Commit-ID: 5ud1Ex9UNVo
2017-03-21 15:44:12 +08:00
Stone Shih
cb61054c6c Backed out changeset 46d8f42863af (bug 1351148) 2017-08-11 15:19:44 +08:00
Stone Shih
e842b58f34 Backed out changeset 3e2a441357ca (bug 1351148) 2017-08-11 15:18:57 +08:00
Stone Shih
0b330c30c9 Backed out changeset 4b52e1b335fb (bug 1351148) 2017-08-11 15:18:43 +08:00
Stone Shih
d487708f51 Bug 1351148 Part11: Set remote to be ready to handle input events when pref'ed off. r=smaug.
MozReview-Commit-ID: CO5BU9eOC84
2017-08-10 13:20:58 +08:00
Stone Shih
f9253d2cdd Bug 1351148 Part9: Resend a MouseEnterIntoWidget event to TabChild when it's ready to handle input events. r=smaug.
MozReview-Commit-ID: IXPTRyJe1tk
2017-07-24 10:46:40 +08:00
Stone Shih
9477e7b2db Bug 1351148 Part2: Add a priority queue for input events. r=smaug.
MozReview-Commit-ID: 5ud1Ex9UNVo
2017-03-21 15:44:12 +08:00
Jan Henning
2978bc8e64 Bug 1266683 - Part 2 - Add private browsing mode info to InputContext. r=masayuki
Android now supports telling an IME that it shouldn't store user-entered content into it's dictionary/language model/etc. and we want to automatically enable this in private browsing.

As the code that handles input on Android doesn't have any notion of tabs (and therefore of the difference between normal and private tabs), the best way to get that info across is to retrieve it directly within the IMEStateManager from the corresponding document and store it in the inputContext, which is then passed to Java for Fennec to handle.
Implementing this within Gecko also has the benefit that this part of the code can be used by other platforms as well should they want to support similar features in the future.

MozReview-Commit-ID: DsxjC4Ma7DR
2017-07-30 19:45:03 +02:00
Botond Ballo
45ec8b39e5 Bug 1386777 - Interpret autoscroll anchor coordinates correctly when there is a device scale. r=kats
MozReview-Commit-ID: 6caXxWjuqxm
2017-08-02 20:11:07 -04:00
Kris Maglione
13c497c2b8 Bug 1380294: Anchor non-tab tooltips to the correct remote browser. r=aswan
MozReview-Commit-ID: EsJEseyfGYi
2017-08-01 15:01:06 -07:00
Botond Ballo
601cc1a4e1 Bug 1105109 - Have the parent process notify APZ of the start and stop of autoscrolling. r=kats
The messages are routed through nsITabParent, nsIWidget, and IAPZCTreeManager
(the latter possibly remoted via PAPZCTreeManager if out-of-process compositing
is used).

MozReview-Commit-ID: 1zXzLa1fqpG
2017-07-26 19:33:02 -04:00
Carsten "Tomcat" Book
26135cd76d Backed out changeset 284af26c1b53 (bug 1351148) 2017-07-28 09:20:27 +02:00
Carsten "Tomcat" Book
da61f40f4b Backed out changeset 15b71aceffb4 (bug 1383485) 2017-07-28 09:20:02 +02:00
Stone Shih
d9045a70e9 Bug 1383485: Resend a MouseEnterIntoWidget event to TabChild when it's ready to handle input events. r=smaug.
MozReview-Commit-ID: IXPTRyJe1tk
2017-07-24 10:46:40 +08:00
Masayuki Nakano
bda417b32d Bug 1333459 - part2-2: EventStateManager should check if it needs to wait reply from remote content before handling access keys r=smaug
Currently, access key is handled in EventStateManager::PreHandleEvent() with eKeyPress event, i.e., before dispatching it into the DOM tree, if the access key is registered in EventStateManager.  So, the main process does not check if the preceding eKeyDown event is consumed in focused remote process.

When preceding eKeyDown event is consumed in the main process, eKeyPress event won't be dispatched by widget.  However, if remote process has focus, it's impossible widget to stop dispatching eKeyPress event because preceding eKeyDown event hasn't been handled in the focused remote process yet.  Therefore, main process needs to post eKeyPress event to check if preceding eKeyDown event was consumed.  When eKeyPress event is marked as "waiting reply from remote process", TabChild sends it back to the main process only when preceding eKeyDown event wasn't consumed.  So, only when eKeyPress event is back to the main process, main process should handle accesskey with it.

This patch makes EventStateManager::PreHandleEvent() check if a remote target has focus before handling accesskey.  If a remote process has accesskey and there is an accesskey matching with eKeyPress event, it marks the event as "waiting reply from remote content" and stop propagation in the process.

Finally, when eKeyPress event is sent back to TabParent, TabParent::RecvReplyKeyEvent() calls EventStateManager::HandleAccessKey() before dispatching the reply event into the DOM tree.

MozReview-Commit-ID: KsOkakaIVzb
2017-07-22 10:50:41 +09:00
Masayuki Nakano
f2ed8ff63b Bug 1333459 - part1: Move methods of EventStateManager which check modifiers of access key to WidgetKeyboardEvent r=smaug
EventStateManager checks if every keypress event's modifiers match with access key modifiers which are in prefs. Moving related methods of this to WidgetKeyboardEvent makes EventStateManager simpler and we can hide the NS_MODIFIER_* constants (they may make developers confused between Modifiers of WidgetInputEvent) into WidgetEventImpl.cpp.

MozReview-Commit-ID: 23NUQ51lJ1M
2017-07-06 17:36:19 +09:00
Ryan VanderMeulen
af0aa4cb17 Merge m-c to inbound. a=merge 2017-07-21 09:40:28 -04:00
Sebastian Hengst
c191b3cc6a merge mozilla-inbound to mozilla-central. r=merge a=merge
MozReview-Commit-ID: IWRTFZdtzaE
2017-07-21 12:56:44 +02:00
Kris Maglione
0a9eebeee2 Bug 1374025. Try calling ShowViewer again later if it hasn't succeeded yet when we get a render frame parent. r=tnikkel 2017-07-20 16:24:40 -05:00
Samael Wang
8db97683d9 Bug 1350643 - Part 7: Remove sync GetDPI/DefaultScale/WidgetRounding. Use primary screen's value until RecvShow. r=kanru
MozReview-Commit-ID: GlDMNecWp3j
2017-05-19 18:20:18 +08:00
Kris Maglione
5b82c1e30e Bug 1379508: Part 2 - Ignore transforms when calculating child process offsets. r=kats
The current code is wrong in several ways when transforms are applied, but
even if it were correct, it would give the wrong behavior. See comment in
patch for more details.

MozReview-Commit-ID: 3RaPuvENnWa
2017-07-13 15:33:25 -07:00
Kris Maglione
81578b8f6b Bug 1379508: Part 1 - Apply the correct client offsets to remote frameloaders in popup widgets. r=kats
On-screen coordinates for points in remote frameloads are calculated relative
to the screen origin of the top-level window, while event coordinates are
calculated relative to the nearest widget. Since popups have their own widgets
separate from the top-level window, their native client offsets have no
particular relation to the origin of the top-level window, and we need to
manually calculate them relative to the origin of the top-level widget
instead.

MozReview-Commit-ID: EDyEyu37XuY
2017-07-13 15:31:55 -07:00
Stone Shih
e0dd0293e8 Bug 1351148 Part2: Add a priority queue for input events. r=smaug.
MozReview-Commit-ID: 5ud1Ex9UNVo
2017-03-21 15:44:12 +08:00
Masayuki Nakano
bb77d5ed5a Bug 1377672 - part3: IMEStateManager::NotifyIME() should ignore notifications and requests which comes from unexpected process r=m_kato,smaug
IME should receive notifications and requests only from proper process.  E.g., IME shouldn't commit composition by a request which came from previous focused process.

This patch makes that IMEStateManager::NotifyIME() takes pointer to TabParent optionally.  If the request or notification came from remote process, it should be non-nullptr.  Then, this makes it ignore notifications and requests from unexpected process.

Note that this patch also touches some gfx headers because they use |ipc::| but compiler is confused at the ambiguousness between |mozilla::ipc::| and |mozilla::dom::ipc::|.

Finally, this patch changes the NS_ASSERTION in IMEHandler::OnDestroyWindow() to MOZ_ASSERT because the orange caused by the NS_ASSERTION was not realized since there was already an intermittent orange bug caused by different NS_ASSERTION.

MozReview-Commit-ID: 9CgKXQRJWmN
2017-07-06 00:47:40 +09:00
Masayuki Nakano
2bccc2c97c Bug 1377653 - part3: WidgetEvent::mFlags should have a bool flag if it's been posted to at least one remote process r=smaug
Currently, it's not been managed yet that whether an event is posted to at least one remote process.  So, for managing the state, BaseEventFlags should have a new bool flag and WidgetEvent and BaseEventFlags should have helper methods for it.

Additionally, this fixes a bug of nsGUIEventIPC.h. In a lot of ParamTraits, static_cast<Foo> is used for using base class's ParamTraits.  However, it causes creating temporary instance with copy constructor.  Therefore, WidgetEvent::MarkAsPostedToRemoteProcess() call in ParamTraits<mozilla::WidgetEvent>::Write() didn't work as expected.

MozReview-Commit-ID: DdafsbVfrya
2017-07-05 18:59:44 +09:00
Masayuki Nakano
5da93c15f0 Bug 1377653 - part2: Add helper methods to WidgetEvent and BaseEventFlags to manage propagation state between parent process and remote process r=smaug
Currently, we have 2 bool flags (and optional 2 bool flags with related purpose) for managing propagation state between parent process and remote process.  However, it's really complicated.  Actually, setting these flags and referring the flags is usually follow explanation.

So, for making simpler, WidgetEvent and BaseEventFlags should have some utility methods for making them as self documented code.

This patch moves WidgetKeyboardEvent::mIsReserved to BaseEventFlags::mIsReservedByChrome.  That allows us to manage the cross process event propagation state in same place.

MozReview-Commit-ID: IXEDQJ4GpAZ
2017-07-05 13:58:41 +09:00