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

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

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

2010年11月13日

Bug-org 604455 Checkin for bug 601440 caused 2.3% Ts regression on 10.4 初回投稿日時: 2010年11月13日12時49分49秒
カテゴリ: Mozilla Core バグ修正
固定リンク: id=2010111300
SNS: (list)

Bug-org 601440の修正でMacOS X 10.4でスタートアップのパフォーマンスが2.3%も下がった、というバグです。

原因はKeyScript() APIが10.4では遅かったことです。何度も書いていますが、MacOS Xでは10.5以降でキーボードレイアウトの取り扱いが一新されたため、このレガシーAPIのパフォーマンスにも大きな影響があったようです。ちなみに、パフォーマンスが下がった例としては、Bug-org 517549なんてのもあり、興味深いです。

修正方法としてはある意味、チートしています。Flashのバグ対策で全廃した最適化を一部、元に戻し、スタートアップ時にはKeyScript()が呼ばれないように戻しています。

Bug-org 548964 [DW] Spellchecker's underline is rendered incorrectly for one line text input fields. Most of the line is out of view 初回投稿日時: 2010年11月13日13時00分33秒
カテゴリ: Mozilla Core バグ修正
固定リンク: id=2010111301
SNS: (list)

DirectWriteを有効にしていると、<input>でスペルチェッカーを有効にした時、波線の下部が切れることが多いというバグです。

原因はDW固有のmetricsの計算処理が何故か端数の出てしまうかけ算を行っていたため、四捨五入によってinternal leading値が不足することがあったのが原因でした。

このバグの修正により、一部のフォントのline-height: normal;時の行高が1px高くなっていることがあります。

Bug-org 591890 Focus element from mouseDown event doesn't work when the focus is set to an chrome element 初回投稿日時: 2010年11月13日13時11分27秒
カテゴリ: Mozilla Core バグ修正
固定リンク: id=2010111302
SNS: (list)

Bug 6609の修正によるregressionで、chromeにフォーカスがある時に、contentのmousedownイベントハンドラで、同じdocument内の別の要素にフォーカスをセットしようとしてもできない、というバグです。

chromeにフォーカスがある場合、contentはフォーカスを奪えなくなりましたが、ここにタイミングの問題がありました。

Geckoはmousedownイベントの処理の最終段階、つまり、全関連要素でmousedownイベントが発生した後の処理でフォーカスの移動処理を行います。このため、chromeにフォーカスがある場合に、content内のどこかでマウスのボタンを押しても、そのmousedowneイベントのハンドラが呼ばれた段階では、まだchromeがフォーカスを持っていて、そのハンドラの権限ではフォーカスを奪うことができない、という形でハマってしまっていました。

今回の修正では、mousedownイベントの内部処理の初期段階でnsFocusManagerにmousedown中のdocumentを通知するようにしました。そしてnsFocusManagerでは、mousedownイベント中のdocumentのハンドラがフォーカス移動処理の呼び出しもとであるなら、chromeからのフォーカス奪取を許可するように修正しました。

2010年11月19日

Bug-org 608515 After nVidia driver is crashed, Aero glass isn't recovered if Firefox button is visible #2 初回投稿日時: 2010年11月19日15時57分36秒
カテゴリ: Firefox Mozilla Core バグ修正
固定リンク: id=2010111900
SNS: (list)

Firefoxボタンを表示している状態で、nVidiaのドライバがクラッシュして、ドライバが回復された時に、Aero Glassがそのウインドウでは復元されず、タイトルバーにある閉じるボタン等が使えなくなる、というバグです(Firefoxボタンの無いウインドウ、例えば、ダウンロードマネージャ等では問題ありません)。

修正したつもりですが、明確な原因は特定できていないので、まだバグが残っている可能性はあります。

クラッシュからリカバリする時に、デスクトップコンポジションが一端無効になり、その後有効になりますが、メッセージの処理中に状態が変化し、おかしくなる現象を発見しました。今までは、描画に関わるメソッドがシステムに直接、コンポジションが有効かどうかを問い合わせていましたが、WM_DWMCOMPOSITIONCHANGEDメッセージを受信したタイミングで内部にキャッシュし、一連の処理中に齟齬が発生しないように修正しました。

もしもまだ再現するようであれば、バグを登録してください。クラッシュするタイミングで何をしようとしたのか(例えばリンクをクリックした瞬間とか)、問題のウインドウはクラッシュ時にアクティブだったのか、そうじゃなかったのかを書いておいてもらえると助かります。

2010年11月27日

Fwd: MNGMNGってお前はMNGキチか!って話 初回投稿日時: 2010年11月27日02時46分54秒
カテゴリ: Firefox Mozilla Core SeaMonkey 雑談
固定リンク: id=2010112700
SNS: (list)

こういう組織なので完全な一枚岩というのはあり得ないという大人の話をさっ引いても、Web標準を啓蒙しているというMozillaの矛盾だと言えばそうなのかもしれません。

でも実装者が誰も喜ばない仕様というのが、例えば、W3Cの勧告レベルに到達していたとしても本当に価値があるのか、ということを考えてみた時に、そうではないという結論が出るのであれば、そんなものの普及に労力を割くのも変だと思います。そうではないなら、それは標準仕様の啓蒙というより、特定の組織の仕様を啓蒙しているだけだと言えるでしょう。誤解してもらいたくないのは、W3Cの仕様だから標準なのではなくて、実装者とコンテンツ作者の双方から支持されてこそ仕様というものに価値が出てきます、そしてその仕様がオープンであれば標準として扱われるべきだと思います。W3Cの仕様のうち、普及した有名なものはそういった支持があったものであって、策定されても全く見向きもされなかったような仕様も多々あるという事実も知らなければいけません。

まあそれはさておき、画像のデコーダとかのようなコンポーネントはセキュリティリスクもあるので、適切なメンテナンスをする気も無く使い続けるのは、ブラウザベンダがユーザに対して無責任であると言えると思います。そういう観点ではMNGのサポートを切ったのは真っ当な判断だったと今でも思います。

もし本当にMNGがコンテンツ作者に必要とされているのであれば、今後利用が増え続けることでしょう。そうすればブラウザベンダとしてMozillaもそこにリソースを割くべきだという判断になると思います。ですが、こう言うとサポートするブラウザが無いなら普及するはずがないじゃないか、と考える方も居るかもしれません。では、何故、サポートするブラウザが存在しないのかを考えてみるべきです。そうすれば、その答えは簡単に思いつきます。それは、その仕様に未来を感じ、コストをかけて挑戦する価値がある仕様という判断ができない程度の仕様だということです。それが本当にそうであるのかは重要ではなく、ブラウザベンダという実装とコストを天秤にかけなくてはいけない立場の人たちを説得できないのであれば、いかに一部のコンテンツ作者が良いと考えても話は前に進みません。こんな書き方をすると、ブラウザベンダがWebを支配しているのかと思われるかもしれませんが、それは違います。例えばAPNGのように、実装してもコンテンツ作者に使われなければやはり普及はしません。大切なのは、実装者とコンテンツ作者の両方共に有用だと感じることのできる仕様だけが生き残っていけるという事実です。

2010年11月28日

Magical Girl Lyrical NANOHA The MOVIE 1stの54:04 (C23) 初回投稿日時: 2010年11月28日00時40分27秒
カテゴリ: Anime
固定リンク: id=2010112800
SNS: (list)

劇場で何度か見ていても全く気づきませんでしたが、Blu-rayで見ていると何故か一発で気づいてしまいました。このカットに表示されている地図、明らかに京都市内の地図ですね。スクリーンショット出すと著作権的にアレなので、BD or DVDを買った人は確認してみてください。54:04だと国道9号線と西大路通の交差点、西大路五条がほぼ中央に、京都駅が右下にはっきりと確認できます。でも、なんで京都なんだろう……

Bug-org 613810 Undo(ctrl+z) does not work continuously after committing IME 初回投稿日時: 2010年11月28日00時45分37秒
カテゴリ: Mozilla Core バグ修正
固定リンク: id=2010112801
SNS: (list)

リファクタリング時にundoスタックを自動で作ってくれていた行を誤って消してしまっていたため、複数のIMEのトランザクションを生成するとundoスタックが壊れる、というバグでした。すでに修正は終わっています。

Bug-org 608515 After nVidia driver is crashed, Aero glass isn't recovered if Firefox button is visible #3 初回投稿日時: 2010年11月28日01時34分10秒
カテゴリ: Mozilla Core
固定リンク: id=2010112802
SNS: (list)

reopenする気は無いのですが、どうもまだごく希に再現することがありますね。ただ、狙って再現させることはできませんし、再現したときのマウスの位置や画面の状況を見ていても、何が特殊なのか、何が条件となっているのか、そういったことの想像がまったくつきません。グラフィックカードのドライバはLiveメッセンジャーや、BD再生ソフトなんかもクラッシュの原因となっているので、出来る限りこのバグは完全に修正しておきたいのですが……

2010年11月30日

クラシコがまさかの展開 初回投稿日時: 2010年11月30日08時02分18秒
カテゴリ: 雑談
固定リンク: id=2010113000
SNS: (list)

バルセロニスタとしてはうれしい限りですが、クラシコがまさかの一方的な展開に

とにかく前線からのバルサの守備が効きまくり、レアル・マドリーの試合全体でのポゼッションはなんと33%。後半だけならもっとひどい数字だったのではないでしょうか。バルサの良いところばかりが目立ち、レアルの良さがとにかく消されてしまったこの大一番でしたが、モウリーニョが次の試合でどう立て直してくるのか、またカカが復帰するとどうなるのか、今期のリーガがますます面白くなってきました。