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

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

もずはっく日記(2010年5月)

2010年5月5日

Bug 6586 input/textareaにフォーカスがある状態でreadonly属性が変更されてもIMEの状態が変更されない 初回投稿日時: 2010年05月05日16時52分36秒
カテゴリ: Mozilla Core バグ修正
固定リンク: id=2010050500
SNS: (list)

フォーカスがエディタにある状態でreadonly属性を変更してもIMEの状態が更新されない、というバグです。自動テストを作っているときに発見したバグで、現実にこれが問題となることは無いと思いますが、このバグで実装するエディタの内部のメソッドが他のバグで使いやすいので修正しました。

エディタの内部フラグが書き換わる段階で、エディタにフォーカスがある場合、新しいIMEの状態を計算し、直接ISMに状態変更を促すようにしました。この修正により、様々なバグの洗い出しやcontenteditable属性まわりの自動テストの拡充ができています。

2010年5月8日

editor/idlのカオス 初回投稿日時: 2010年05月08日17時36分13秒
カテゴリ: Mozilla Core
固定リンク: id=2010050800
SNS: (list)

editor/idlにあるインターフェースが中々にカオスです。前からですが。

nsIEditor.idl
nsEditorにアクセスするための外部インターフェース。
nsIEditorIMESupport.idl
IME関連の機能にアクセスするための外部インターフェース。nsEditorで実装。
nsIEditorMailSupport.idl
引用して貼り付け、等のメール関連に特化した機能だけを集めた外部インターフェース。nsPlaintextEditorで実装。
nsIHTMLEditor.idl
nsHTMLEditorにアクセスするための外部インターフェース。
nsIPlaintextEditor.idl
nsPlaintextEditorにアクセスするための外部インターフェース。

エディタの実装と、その利用に関してはこれらのインターフェースが利用されますが、まず問題の一点目は、実装をもとにインターフェースがデザインされているため、利用者からはさっぱり分からないこの分け方。また、二点目は無駄にnsIEditorからQIが必要なため、コードが無駄に読みにくくなっていることです。

ひとまず、nsIEditorIMESupportnsIEditorに統合しようと企んでいます

それが終われば、nsIEditorMailSupport.idlも同様にできるかなぁとは思いますが、ユーザ次第というところでしょうか(拡張レベルでもこの辺にアクセスしてくるのは希だとは思いますので、そこまでは考えていませんが)。

これをやってしまうと、今度はnsIEditorがふくれあがってきますが、ここには実装に必要なだけのメソッドが大量にあります。これらを別のインターフェースに移して、もうちょっとわかりやすくできないかなぁと考えてるところです。

2010年5月19日

週末までオフライン 初回投稿日時: 2010年05月19日00時56分02秒
カテゴリ: 雑談
固定リンク: id=2010051900
SNS: (list)

私用で週末までオフラインです。

2010年5月27日

Bug-org 568135 IME composition string is committed unexpectedly on Gmail when editor flag was changed by some commands 初回投稿日時: 2010年05月27日11時20分39秒
カテゴリ: Mozilla Core バグ修正
固定リンク: id=2010052700
SNS: (list)

Gmailでリッチテキストエディタでメールを作成する際、最初にIMEで日本語を入力しようとすると強制的に確定されることがあるというバグです。Aliceさんが確認し、regressionの原因を探してくれたので助かりました。ありがとうございます。

デバッグビルドでスタックを見てみると、リッチテキストエディタにはいくつかJavascriptから発行できるコマンドがありますが、そのうちの何かがエディタのフラグを変更していました。フラグ変更時にはいつも、IMEの状態を更新するために強制的に確定を行っていたのがこのバグの原因でした。

今回の修正で実際にIMEの状態が変更されない場合は確定処理や状態変更処理を行わずに処理を中断する様に修正しています。

2010年5月29日