Bug-org 1175392 [e10s] IME Blur may be too late when moving focus from content to chrome due to race condition
初回投稿日時: 2015-06-30 22:51:48
カテゴリ: e10s IME Mozilla Core Mozilla41 バグ修正
SNS:
Tweet (list)
子プロセスのエディタがフォーカスを失い、親プロセスのエディタがフォーカスを得る場合には確実に発生するのですが、chromeプロセスからIMEに対してfocusとblurを通知する順序が、
- 子のfocus
- 親のfocus
- 子のblur
となったり、もっとひどい場合(子プロセスがビジーな場合)には、
- 子のfocus
- 親のfocus
- 親のblur
- 親のfocus
- 子のblur
といった可能性もあります。これを解決するために、chromeプロセスのIMEStateManagerを通して、nsIWidget::NotifyIME()でNOTIFY_IME_OF_FOCUSとNOTIFY_IME_OF_BLURを通知するようにし、IMEがフォーカスを持っているかどうかを記録しておくことにしました。
これにより、IMEがフォーカスを持っている場合に再度NOTIFY_IME_OF_FOCUSを通知しようとした場合にはNOTIFY_IME_OF_BLURを先に通知するようなり、後から遅れてくるNOTIFY_IME_OF_BLURや、子プロセスから来る不要な他の通知も破棄するようになりました。