この日記はMozillaのプロダクトへの貢献者としての私の成果を中心に、気になったバグやWeb界隈の話題について書いていますが、 断り書きがある場合を除き、いかなる団体のオフィシャルな見解ではありません。あくまでも個人的なものです。 Mozilla Foundation、Mozilla Corporation、及び関連企業の公式情報ではないことに注意してください。

現在、XHTML 1.0 (もどき)から、HTML5なコンテンツに修正中です。古い日記は修正が完了していませんので表示が崩れます。 順次、修正していく予定ですのでしばらくお待ちください。

もずはっく日記(2014年9月)

2014年9月25日

Bug-org 1061810 [TSF] MS-IME 2012 (Win 8.1) sometimes fails to move candidate window to proper position
初回投稿日時: 2014年09月25日00時18分25秒
カテゴリ: Mozilla Core Mozilla35 TSF Windows バグ修正
SNS: (list)

Firefoxの検索ボックスで、MS-IMEを利用していると、時々発生するバグです。

Windows 8.1上で、MS-IMEで候補ウインドウを開いた状態で、スペースキーで順に、変換候補を切り替えていくと、希に、候補ウインドウがディスプレイの左上に表示されてしまうことがあるというバグがあることに気付きました。

早速ログをとってみると、NS_QUERY_CARET_RECTがランダムに失敗している様に見えました。その原因について、色々と考えてみましたが、全く、納得できる答えが発見できず、久々にデバッガに頼りました。

デバッガで失敗した箇所を探してみると、nsRangeでセキュリティチェックに引っかかり、コンテンツへのアクセスに拒否されているケースがあることが分かりました。何故、そのような事が発生するのか、詳しいことは分かりませんが、スタック上には、Javascriptで実装された、autocompleteのタイマーからの呼び出しと思われるメソッドの呼び出しがあり、それによって、TSFに通知が飛び、TSFからnsTextStoreへ文字位置の問い合わせが来ていました。つまり、TSFからのリクエストが、content権限で処理されていたことが原因な様です。

ひとまず、解決策として、nsRangeに新設されていた、内部処理用のメソッドをContentEventHandlerからは利用することで、セキュリティチェックを回避するようにしました。ContentEventHandler自身はJavascriptから呼び出して利用するには、chrome権限が必要ですので、セキュリティ的なチェックがそもそも必要ないためです。

関連するかもしれないエントリ

bug-org 1061810を含むエントリ