Bug-org 1179122 [e10s] TextComposition should manage target in parent process even when its child process has focus
初回投稿日時: 2015年07月19日13時05分29秒
カテゴリ: e10s Events IME Mozilla Core Mozilla42 バグ修正
SNS:
Tweet (list)
e10sモードでは、ネイティブのフォーカスは、常にchromeプロセスが持っています。つまり、IMEからのネイティブイベントをハンドリングするのはchromeプロセスになります。そして、各OS向けのwidgetが生成したWidgetCompositionEvent
は、子プロセス内にフォーカスがある場合に、EventStateManager::PreHandleEvent()
で子プロセスにイベントを送信し、chromeプロセス内では何もしないという形をとっていました。つまり、WidgetCompositionEvent
の送信ターゲットを管理するTextComposition
のインスタンスは子プロセスでのみ生成されていました。
しかし、これでは未確定文字列が存在している状態で親プロセス内でフォーカス移動が発生し、子プロセスがフォーカスを持たなくなってしまうと、強制確定のために発生したWidgetCompositionEvent
が新たにフォーカスを得た要素へ送信されてしまい、おかしなことになります。
そこで、今回の修正では、EventStateManager::PreHandleEvent()
では何も行わないようにし、chromeプロセス内でも常にTextComposition
を生成し、これにWidgetCompositionEvent
の送信を任せるようにしました。TextComposition
は送信ターゲットが子プロセスを持っていた場合には、DOMツリーにはイベントを送信せず、その子プロセスに送信します。これにより、親プロセス内でフォーカス移動があっても、確定されるまでの一連のWidgetCompsoitionEvent
は確実に未確定文字列を持っている子プロセスへ送信されることが保証されました。