Commit Graph

40 Commits

Author SHA1 Message Date
Randell Jesup
8f96069cc5 Bug 1298169: use StaticRefPtr r=masayuki 2016-09-20 01:12:09 -04:00
Masayuki Nakano
f8210c2a4e Bug 1275918 part.2 Update TextComposition::mCompositionStartOffset when it's modified in the remote process r=m_kato
MozReview-Commit-ID: H1SJTWWav6G

--HG--
extra : rebase_source : 6d7d79e7d4d719b720bed4f4c20196079fb8b5fb
2016-06-14 21:06:34 +09:00
Masayuki Nakano
54e57600e1 Bug 1275906 part.2 TextComposition should use IMEContentObserver for sending NOTIFY_IME_OF_COMPOSITION_EVENT_HANDLED if the editor which has the composition is in the active IMEContentObserver r=smaug
For sending NOTIFY_IME_OF_COMPOSITION_EVENT_HANDLED after the other change notifications which was caused by the user input, we need to use IMEContentObserver::IMENotificationSender because it sends the notifications when it's safe to do it.

This patch makes TextComposition use IMEContentObserver to send the notification.  However, if there is no active IMEContentObserver, e.g., composition events are fired on unfocused window, TextComposition sends it by itself (same as current implementation).

If IMEContentObserver stops observing when it has pending NOTIFY_IME_OF_COMPOSITION_EVENT_HANDLED, it cannot send the notification (i.e., it is discarded completely in such case). However, in such case, IMEContentObserver sends NOTIFY_IME_OF_BLUR.  So, anyway, native IME handler should treat the blur notification as it including NOTIFY_IME_OF_COMPOSITION_EVENT_HANDLED.

On the other hand, we're buggy if composition events are fired in non-active window.  Even in such case, IMEContentObserver should be created for active editor in each document and it notifies IME of the changes. But this is out of the scope of this bug.

MozReview-Commit-ID: 7Q0ZsJTh4hX

--HG--
extra : rebase_source : 6417f991fa8c0fbe3f25b27bacf4257e5485aecc
2016-06-01 22:14:41 +09:00
Masayuki Nakano
a58a540708 Bug 1251063 PuppetWidget should cache InputContext which is set with SetInputContext() and use it in GetInputContext() only when it is the widget which has active input context in the process r=smaug
PuppetWidget::GetInputContext() needs to communicate with its parent process with synchronous IPC. This is very expensive for focus move.

Currently, IMEStateManager uses nsIWidget::GetInputContext() only for checking the IME enabled state.  Therefore, it's enough to cache input context when nsIWidget::SetInputContext() is called.  Then, we can avoid to communicate with synchronous IPC with PuppetWidget::GetInputContext() in most cases.

This patch makes IMEStateManager stores the last widget which sets input context.  When PuppetWidget uses its input context cache, it should check if it is the last widget to set input context with IMEStateManager since an input context may be shared with other widgets and another one may have update the input context.  I.e., PuppetWidget's input context cache may be already outdated after IMEStateManager sets input context with another widget.

This patch gives up to support retrieving IME open state from child process. However, perhaps, this is not necessary for everybody including add-on developers because the only user of IME open state in child process is nsIDOMWindowUtils. So, add-ons can send IME open state from chrome process instead.  If this decision is wrong, unfortunately, we should support it again in another bug.  It's easy to support with creating another nsIWidget::GetInputContext() or adding additional argument to it.

MozReview-Commit-ID: B2d2CCTsPKj

--HG--
extra : rebase_source : 4117330ba7871753176da960063b612e96f11752
2016-05-28 11:27:56 +09:00
Masayuki Nakano
4d21fa83d0 Bug 1179632 part.6 KeyboardEvent.isComposing shouldn't expose IME state on different document r=smaug 2015-12-04 18:50:43 +09:00
Masayuki Nakano
3d27dcecfa Bug 1179632 part.5 WidgetCompositionEvent::mNativeIMEContext should be used at looking for a TextComposition instance for a WidgetCompositionEvent r=smaug 2015-12-04 18:50:34 +09:00
Robert O'Callahan
7739604da7 Bug 1222092. Don't let sFocusedIMEWidget keep an nsIWidget alive during shutdown. r=masayuki
--HG--
extra : commitid : GsPzx7tAfKb
extra : rebase_source : e202fd334b43956966daa1c7e9297d12c822dfd4
2015-11-13 17:05:54 +13:00
Masayuki Nakano
6a5c380903 Bug 1176955 part.1 TextComposition should guarantee that WidgetSelectionEvent should be handled by same content as the target of composition events when there is a composition r=smaug 2015-07-17 11:25:00 +09:00
Masayuki Nakano
b577b3a7ed Bug 1179122 TextComposition should manage a composition which is even in a child process r=smaug 2015-07-03 11:49:36 +09:00
Masayuki Nakano
9ce25e1e4d Bug 1053053 part.5 Make IMEStateManager::sActiveIMEContentObserver StaticRefPtr r=smaug 2015-07-01 22:19:11 +09:00
Masayuki Nakano
38e32ac3ff Bug 1053053 part.4 Make IMEStateManager::sContent StaticRefPtr r=smaug 2015-07-01 22:19:11 +09:00
Masayuki Nakano
3e2c998faa Bug 1053053 part.3 Notify child process's IMEStateManager of menu key event listener being installed r=smaug 2015-07-01 22:19:11 +09:00
Masayuki Nakano
3a23696fda Bug 1053053 part.2 Notify child process's IMEStateManager of that it should stop manageing IME state r=smaug 2015-07-01 22:19:11 +09:00
Masayuki Nakano
66a78db644 Bug 1053053 part.1 Active TabParent should be managed by IMEStateManager r=smaug 2015-07-01 22:19:11 +09:00
Masayuki Nakano
a6bad653ec Bug 1175392 part.2 IMEStateManager should manage notifications to IME especially delayed notifications from remote process r=smaug 2015-06-27 09:23:31 +09:00
Masayuki Nakano
3dd4837286 Bug 1175392 part.1 IMEContentObserver and TabParent should use IMEStateManager::NotifyIME() r=smaug 2015-06-27 09:23:31 +09:00
Jim Chen
ada45abfc5 bug 1112212 - Set flag in InputContext for IME-unaware webapps; r=masayuki 2015-06-16 19:02:39 -04:00
Masayuki Nakano
29e56f5a88 Bug 1162818 part.6 Don't notify IME of anything during reframing the editor r=smaug 2015-06-05 02:06:10 +09:00
Masayuki Nakano
91298b51a5 Bug 1167022 part.4 Get rid of MozIMEFocus(In|Out) events r=smaug 2015-05-26 16:45:26 +09:00
Masayuki Nakano
f9ae17caea Bug 1167022 part.2 IMEStateManager::UpdateIMEState() should try to restart to observe focused editor when it's reframed r=smaug+nchen 2015-05-26 16:45:26 +09:00
Phil Ringnalda
53b4601f96 Back out 4 changesets (bug 1167022) for reftest-e10s bustage
CLOSED TREE

Backed out changeset de4013b979a7 (bug 1167022)
Backed out changeset b97f76c4be1c (bug 1167022)
Backed out changeset cbc7f8b88a46 (bug 1167022)
Backed out changeset 00b1c04181d3 (bug 1167022)
2015-05-23 21:40:21 -07:00
Masayuki Nakano
bdb3dae876 Bug 1167022 part.4 Get rid of MozIMEFocus(In|Out) events r=smaug 2015-05-24 10:11:37 +09:00
Masayuki Nakano
bbfdde48f6 Bug 1167022 part.2 IMEStateManager::UpdateIMEState() should try to restart to observe focused editor when it's reframed r=smaug+nchen 2015-05-24 10:11:37 +09:00
Andrew McCreight
9e8f4b219e Bug 1152551, part 2 - Fix mode lines in dom/. r=jst 2015-05-03 15:32:37 -04:00
Andrea Marchesini
789ad8312d Bug 1156632 - Remove unused forward class declarations - patch 3 - dom/{events,xbl,xslt,xul} and others, r=ehsan 2015-04-22 08:29:18 +02:00
Ehsan Akhgari
883849ee32 Bug 1145631 - Part 1: Replace MOZ_OVERRIDE and MOZ_FINAL with override and final in the tree; r=froydnj
This patch was automatically generated using the following script:

function convert() {
echo "Converting $1 to $2..."
find . \
       ! -wholename "*/.git*" \
       ! -wholename "obj-ff-dbg*" \
         -type f \
      \( -iname "*.cpp" \
         -o -iname "*.h" \
         -o -iname "*.c" \
         -o -iname "*.cc" \
         -o -iname "*.idl" \
         -o -iname "*.ipdl" \
         -o -iname "*.ipdlh" \
         -o -iname "*.mm" \) | \
    xargs -n 1 sed -i -e "s/\b$1\b/$2/g"
}

convert MOZ_OVERRIDE override
convert MOZ_FINAL final
2015-03-21 12:28:04 -04:00
Kartikaya Gupta
d8cde2ed0d Bug 1121430 - Back out 4 csets from bug 1112212 for breaking backspace on Android. r=backout 2015-01-15 10:52:05 -05:00
Jim Chen
3817965035 bug 1112212 - Set flag in InputContext for IME-unaware webapps; r=masayuki 2015-01-10 12:41:57 -05:00
Masayuki Nakano
020fd43d35 Bug 1047588 - IMEContentObserver::Init() should take nsIEditor because nsDocShell sometimes hasn't been initialized and nsContentEditor::GetHTMLEditor() fails. r=smaug 2014-11-05 08:12:44 -05:00
Wes Kocher
e005079968 Backed out changeset f86dbba73d43 (bug 1047588) under suspicion of adding a hazard on a CLOSED TREE 2014-11-04 20:25:47 -08:00
Masayuki Nakano
a75c24771c Bug 1047588 IMEContentObserver::Init() should take nsIEditor because nsDocShell sometimes hasn't been initialized and nsContentEditor::GetHTMLEditor() fails r=smaug 2014-11-05 10:36:37 +09:00
Masayuki Nakano
2be456d529 Bug 960871 part.10 Some methods which took both WidgetCompositionEvent and WidgetTextEvent should take only WidgetCompositionEvent r=smaug 2014-10-07 19:01:49 +09:00
Masayuki Nakano
09a5b86212 Bug 960871 part.4 Rename NS_TEXT_TEXT to NS_COMPOSITION_CHANGE and fix comments which mention text events r=smaug 2014-10-07 19:01:47 +09:00
Masayuki Nakano
0cecd2284c Bug 1065835 part.4 Destroy TextComposition instance after handling synthesized compositionend event when synthesized events for a request to commit or cancel is caused by PresShell discarding native compositionend event r=smaug 2014-09-26 09:05:12 +09:00
Masayuki Nakano
345fc83f18 Bug 1065835 part.1 Synthesize composition events for committing composition string if requesting to commit of IME isn't performed synchronously r=smaug 2014-09-26 09:05:11 +09:00
Masayuki Nakano
93cf48640e Bug 826657 part.2 Implement NOTIFY_IME_OF_MOUSE_BUTTON_EVENT in XP part r=smaug+ehsan 2014-08-29 19:08:43 +09:00
Masayuki Nakano
bc12cdb1f0 Bug 1037346 IMEStateManager should ignore a call of UpdateIMEState() which is caused by a call of nsIContent::GetDesiredIMEState() r=smaug 2014-07-17 14:08:44 +09:00
Masayuki Nakano
05c7d9794b Bug 1038089 IMEStateManager should log its behavior r=smaug 2014-07-16 14:13:28 +09:00
Masayuki Nakano
65cfda3094 Bug 983049 part.4 Rename nsDispatchingCallback to mozilla::EventDispatchingCallback r=smaug 2014-03-18 13:48:20 +09:00
Masayuki Nakano
b51ee921de Bug 978023 part.3 Rename nsIMEStateManager to mozilla::IMEStateManager r=smaug
--HG--
rename : dom/events/nsIMEStateManager.cpp => dom/events/IMEStateManager.cpp
rename : dom/events/nsIMEStateManager.h => dom/events/IMEStateManager.h
2014-03-08 10:20:07 +09:00