Closed Bug 1211352 Opened 4 years ago Closed 4 years ago

[e10s][IMM] composition string on windowless plugin should be positioned at left-bottom of the plugin

Categories

(Core :: User events and focus handling, defect)

41 Branch
x86
Windows
defect
Not set

Tracking

()

RESOLVED FIXED
mozilla44
Tracking Status
e10s + ---
firefox44 --- fixed

People

(Reporter: masayuki, Assigned: masayuki)

Details

(Keywords: flashplayer, inputmethod)

Attachments

(5 files)

In e10s mode, we don't cache editor rect (windowless plugin rect) in ContentCacheInParent. Therefore, IMMHandler cannot set the composing window to the left-bottom of the plugin rect.
The main purpose of this fix is, the focused plugin rect is cached in ContentCacheInParent as focused editor rect. For that, we need to send the rect at:
* a plugin gets focus
* the plugin is scrolled or window moved
For computing the plugin rect, we need to use eQueryEditorRect at enough safe time. So, using IMEContentObserver should be the best approach.

My plan is, while a plugin has focus, IMEContentObserver should be created without nsIEditor. And it should notify widget of focus, blur and position change.

This patch allows to create IMEContentObserver instance when input context's IME enabled state is 'PLUGIN'.
Attachment #8670070 - Flags: review?(bugs)
PuppetWidget shouldn't send ContentCache as a notification if it's not wanted by the parent process's widget. And TabParent doesn't need to check it. At text change notification, we've already used this approach.
Attachment #8670078 - Flags: review?(m_kato)
For reducing unnecessary run-time cost, i.e., preventing notifications from content while a plugin has focus, all native IME handlers should return nsIMEUpdatePreference() when the IME enabled state of the input context is PLUGIN.
Attachment #8670079 - Flags: review?(m_kato)
While a plugin has focus, only PuupetWidget should request position change notification for updating the ContentCacheInParent::mEditorRect.
Attachment #8670080 - Flags: review?(m_kato)
PuppetWidget should ignore unnecessary notification with outputting warnings. Except not outputting warnings part, this change just makes the code safer.
Attachment #8670082 - Flags: review?(m_kato)
Attachment #8670079 - Attachment description: nsIWidget::GetIMEupdatePreference() for each platform should not request any notifications while a plugin has focus → part.3 nsIWidget::GetIMEupdatePreference() for each platform should not request any notifications while a plugin has focus
tracking-e10s: --- → +
Attachment #8670078 - Flags: review?(m_kato) → review+
Attachment #8670079 - Flags: review?(m_kato) → review+
Attachment #8670080 - Flags: review?(m_kato) → review+
Attachment #8670082 - Flags: review?(m_kato) → review+
Attachment #8670070 - Flags: review?(bugs) → review+
https://hg.mozilla.org/integration/mozilla-inbound/rev/e889d9abef34debbb7d09b4e187047bf2febece8
Bug 1211352 part.1 IMEContentObserver should be created when a plugin has focus r=smaug

https://hg.mozilla.org/integration/mozilla-inbound/rev/d6fbe14c354aac2711fbd71df40c70901557da03
Bug 1211352 part.2 PuppetWidget shouldn't send notifications which are not wanted by the parent process r=m_kato

https://hg.mozilla.org/integration/mozilla-inbound/rev/4724d4f02b571d73c3571823b53c3ed97794466a
Bug 1211352 part.3 nsIWidget::GetIMEupdatePreference() for each platform should not request any notifications while a plugin has focus r=m_kato

https://hg.mozilla.org/integration/mozilla-inbound/rev/26b4afb254c21a417736ed9215a406eaa4cecf5e
Bug 1211352 part.4 PuppetWidget::GetIMEUpdatePreference() should request only position change notifications while a plugin has focus r=m_kato

https://hg.mozilla.org/integration/mozilla-inbound/rev/4381d0272963eefc9fc7667895809e5956401d41
Bug 1211352 part.5 PuppetWidget should cache only the focused editor rect information while a plugin has focus r=m_kato
Component: Event Handling → User events and focus handling
You need to log in before you can comment on or make changes to this bug.