Dead Zone

Stand alone.

HTML5test

2015-04-30 10:14:18 | 雑記

Windows 10 The Latest【速報】:Build 2015で明らかになったWindows 10新情報とこれまでのまとめ - @IT
>Windows 10 TPビルド10061で、HTML5の仕様にどれくらい準拠しているかを調べるサイト(http://html5test.com/)を実行した結果
何気にFirefox38b8(beta)でそのサイトにアクセスしてみたら...

Your browser scores 467 out of 555 points

さらに40a1(nightly)では

Your browser scores 478 out of 555 points

でした。
記事によるとIE11は348、ビルド10061のEdgeは390。なんだこの差は...

[追記]
記事が更新されてるみたいで。ビルド10074でのスコアは402に。ガンバレ~

 

コメント

Nightly - APZ

2015-04-23 12:28:37 | 雑記

1154459 – Turn on APZ for Windows for one nightly
特に不具合は感じませんが、Backで元の位置に戻らない(ページトップが表示される)ケースが多発。戻るページと戻らないページとで何が違うのかさっぱりわかりませんが。
bugzillaをあさってみると...
1106280 – Vertical scroll position is not saved when pressing back button
2014-11-29...

もひとつおまけに
1. 新規profileで起動
2. Bookmarks Toolbarを表示させる
3. Bookmarks Toolbarを非表示にする
→カックンカックン
(縦スクロールバーと横スクロールバーが交互に表示される状態になる)
(たぶん 1157579 – Standalone Image vibrates with APZ enabled in Windows)
面白いけど...

 

コメント

続e10sではマウスポインタがおかしく

2015-04-15 10:18:52 | 雑記

(e10sではマウスポインタがおかしく の続き)

これってMouseEnterイベント時には無条件にSetCursorするとかしなきゃいけないんじゃ?と思いつつEventStateManager.cppを眺めていたら。
MouseEnterで処理するのではなく、MouseExit時にキャッシュをクリアする(更新フラグを立てる)という処理が!

>   case NS_MOUSE_EXIT:
>     // If this is a remote frame, we receive NS_MOUSE_EXIT from the parent
>     // the mouse exits our content. Since the parent may update the cursor
>     // while the mouse is outside our frame, and since PuppetWidget caches the
>     // current cursor internally, re-entering our content (say from over a
>     // window edge) wont update the cursor if the cached value and the current
>     // cursor match. So when the mouse exits a remote frame, clear the cached
>     // widget cursor so a proper update will occur when the mouse re-enters.
>     if (XRE_GetProcessType() == GeckoProcessType_Content) {
>       ClearCachedWidgetCursor(mCurrentTarget);
>     }

ちゃんと説明付き!(^^;;
こういう処理があるのなら、PuppetWidget.cppの

> PuppetWidget::SetCursor(nsCursor aCursor)
> {
>   if (mCursor == aCursor && !mUpdateCursor) {
>     return NS_OK;
>   }

ここはすり抜けてカーソルも変更されるはずなんだけど...
謎。

あぁパワフルなマシンが欲しい...(-_-; 「ビルドに5時間」の壁...
クリーンビルドじゃないけど、hg pullして最新版で検証しようとすると更新されたファイルが多すぎて、結局5時間かかるという...

で。動作を覗いてみると。
確かにClearCachedWidgetCursorが呼び出されて更新フラグは立つけれども。
直後になぜかまたSetCursorが呼び出されてしまい、更新フラグもoffになり、次のMouseEnter時にはカーソルは変更されないという次第。
で。ソースをよく見ると。ClearCachedWidgetCursor呼び出し直後に

>     // If the event is not a top-level window exit, then it's not
>     // really an exit --- we may have traversed widget boundaries but
>     // we're still in our toplevel window.
>     if (mouseEvent->exit != WidgetMouseEvent::eTopLevel) {
>       // Treat it as a synthetic move so we don't generate spurious
>       // "exit" or "move" events.  Any necessary "out" or "over" events
>       // will be generated by GenerateMouseEnterExit
>       mouseEvent->message = NS_MOUSE_MOVE;
>       mouseEvent->reason = WidgetMouseEvent::eSynthesized;
>       // then fall through...

fall throughしてUpdateCursor呼び出してSetCursorに行き着いており。ぉぃぉぃ
そこで更新フラグを倒してるから更新フラグ立てる意味無いじゃん。役立たず。

というわけでClearCachedWidgetCursorを処理ブロックの最後に持っていったらマトモに動作するようになったっぽい。マジカ
いやはや。

[4/19追記]
む。本件は
1018639 – [e10s] Mouse cursor indicates a bidirectional resize
で、4/18版Nightlyでfixされたようです。上記とは全然別のアプローチで。結局やっぱりMouseEnterで処理するようになったっぽい。

 

コメント

e10s: Make Link

2015-04-12 10:25:49 | 雑記

Firefox Nightly(40.0a1)のe10sモードでは Make Link :: Add-ons for Firefox が動作しないんですが。
Browser Consoleを見てたらtargetがnullだと。ソースを見ると、target = document.popupNode が失敗しているようで。
このpopupNodeって Document.popupNode - Web API Interfaces | MDN を見るとDeprecatedになってて"it is in the process of being dropped"と。
非e10sモードなら動作するのでpopupNodeが削除されたわけではなく単純にe10sのバグなんだろうけど、Deprecatedなものをサポートするんだろうか(?_?)ギモン
で、triggerNodeを使えってことなので使おうとしたらこれが取得できず...
さんざんググって見つけた解が「document.popupNodeをgContextMenu.targetに置き換える」でした。
javascript - How to get document.popupNode in Firefox Electrolysis windows - Stack Overflow
一応動作してます。

[追記]
そういえば何気にヌルッとmake_link-11.03-fx.xpiをダウンロードしてアーカイブの中のjavascriptを改変してFirefoxにdropしてinstallしたけど...署名付きaddonしかインストールできなくなったらrelease版ではこういうこともできなくなるんだよね?
それはそれで困りもののような...

 

コメント

Nightly: でっかくなっちゃった

2015-04-11 20:01:12 | 雑記

ボタンアイコンが(爆

今朝Firefox Nightlyをupdate(2015-04-10版に)したらツールバーのボタンアイコンが巨大化しており。
やれやれ...と思いつつ関係ありそうなbugfix(=regression)を探しつつCSSが大量に変更されたっぽい話を眺めつつ何が影響を与えたのか追求するのを面倒くさがりつつしかしこれってもしもFirefox側で何かしら仕様変更があったとしてもClassic Theme Restorerが面倒を見てくれたりするんじゃなかろうかと期待しつつとりあえずStylishで該当ボタンのwidthを強制設定してお茶を濁しつつ何気にCTRのsupport forumを覗いてみたらば。
[Ext] Classic Theme Restorer (Customize UI) #2 • mozillaZine Forums
とっくの昔に対処コードが(・・)
素晴らしすぎる

 

コメント

e10sではマウスポインタがおかしく

2015-04-08 16:57:22 | 雑記

e10sでマウスポインタが正しく表示されなくなる件。
1150225 – Mouse cursor sticks to previous appearance from sidebar when over Reader View
Reader Viewとやらに限らずbrowser view(?)でも発生しますが、スライダーやボーダー上でリサイズハンドルに変わったマウスポインタを素早くブラウザペインに移動するとデフォルトに戻らずリサイズハンドルのままになる、という現象ですが。

非e10sの場合、マウスポインタの変更は dom/events/EventStateManager.cpp のEventStateManager::SetCursorでaWidget->SetCursor()から widget/xxx/nsWindow.cpp のnsWindow::SetCursorに飛んで、内部的保持状態と異なっていたらOSコールする、という段取りになっているようですが。
e10sの場合、メインウィンドウやサイドバーでは上記と同じ処理ですが、ブラウザペインでは、EventStateManagerからの飛び先は widget/PuppetWidget.cpp のPuppetWidget::SetCursorに変わり、内部的保持状態と異なっていたらmTabChildに伝えるという段取りに。いやWidget違うし。nsWindowとPuppetWidgetそれぞれが内部的に状態保持して連携が無いから、保持状態と実際のマウスポインタが一致しなくなっても検出できず。結果おかしなことに。
構造的なバグですな。典型的古典的な。
なんだかな。

[4/10追記]
スライダーじゃなくてスプリッターだ(汗;

関係ないけど、昨日、e10sではGYAO Playerがマトモに操作できないことに気付いたんだけども、今朝更新されたNightlyでは直ってた(・・)
The Official Win32 20150409 builds are out • mozillaZine Forums とか毎日の修正バグ件数を眺めてると凄い勢いでバグ潰しされてるなぁ、とは思う。

 

コメント

YouTubeのHTML5Player自動再生

2015-04-06 22:11:13 | 雑記

YouTubeのHTML5Playerがリンクを開いた時に自動的に再生開始しないのは

ABP Japanese filtersの「||youtube.com/annotations_invideo?」のせいだったらしい... 無効にすればOK...ではある(-_-)

 

コメント

メモ

2015-04-05 18:21:14 | 雑記

単なる覚え書き。

Firefox NightlyでE10Sがデフォルトで有効化されたのは20150330.

近頃buggyだなぁと思ったらe10sが有効化されたせいらしい(-_-)
とりあえずe10sの無効化を試すのが吉かも。
Themeがインストールできない 653065 – Make the lightweight theme web installer ready for e10s とか
Adblock Plusが右クリックメニューに出てこないとか
マウスポインタの形状がおかしい 1150225 – Mouse cursor sticks to previous appearance from sidebar when over Reader View とか
Make Linkが(右クリックメニューには出てくるのに)動作しないとか
「戻る」が効かない 1150200 – Can't navigate back to previous page sometimes とか(これはもう直ったけど)

 

コメント

Firefox Bookmarks Iconその後

2015-03-26 17:02:06 | 雑記

前の記事の続きですが。
1137615 – Some icons are not displayed in the bookmarks sidebar
の件で。
反応が無いので業を煮やして注意喚起のつもりでパッチを上げたら即行対応が。スゲ~ (いや偶々何かとタイミングが合っただけなのかもしれませんが)
しかもその対応が単なるバグ修正(目先の対処)ではなく。
このバグの原因は前も書いた通り、戻り値を返すだけの関数を使用しながら肝心の戻り値を使っていないという所にあるんですが、『こういうのは警告を出すようにして捕捉しなきゃいかん』ということで新たにバグエントリされてそこにぶら下げる形になりました。
1147706 – Warn if we don't use the result of const methods on BaseRect and its subclasses
こういうシステマティックな対応に繋がるとは全然思ってなかったので、感心しちゃいました(^^;
私自身は「(Union()を)ソースコード全体に亘ってチェックしなきゃいけないんだろうな〜」くらいにしか思ってなかったんですが、たとえチェックしてその時点でのバグを潰せたとしても「同じ過ちは繰り返される」わけで。警告が出るようになるなら(それを無視しない限りにおいて)バグは防げるかなと。
BaseRectだけじゃなく全体に適用できるような仕掛けがあればもっとよかったのかもしれないけど。

…某Eclipseとは対応力が違うな(爆

 

コメント

Firefoxのビルドは5時間以上かかるので

2015-03-20 21:10:41 | 雑記

ネットブック(atom N270,メモリ1GB)で(爆)

で、Celeron N2830のLinuxMintの上のVM(VirtualBox)(メモリ2GB)でビルドしたら、やっぱり5時間くらいかかるという・・・

ホントのビルドをしたいわけではなくて、トレースをしたいわけで。終わったらばっさり消し去ってしまいたいわけで。C++なんか知らないし。
もちろん
1137615 – Some icons are not displayed in the bookmarks sidebar
の件で。
Linuxの方がビルド環境を作りやすかったのでLinuxを使ってますが。

この不可思議なバグを追っかけてて、解せないのが、image/src/RasterImage.cppの
RasterImage::FinishedSomeDecoding
にて
>       // We need to shut down the decoder first, in order to ensure all
>       // decoding routines have been finished.
>       rv = image->ShutdownDecoder(aReason);
>       if (NS_FAILED(rv)) {
>         image->DoError();
>       }
>
>       // If there were any final changes, grab them.
>       invalidRect.Union(decoder->TakeInvalidRect());
>       progress |= decoder->TakeProgress();
image/x-iconの処理を完了しているのは image->ShutdownDecoder の先なんですが、結果を取り出す invalidRect.Union(decoder->TakeInvalidRect()) が変です。decoder->TakeInvalidRect() は期待される結果(0,0,16,16)を返していますが、これがinvalidRectに反映されません。元の値は(0,0,0,0)なんで、Unionの結果は(0,0,16,16)になるはずですが、なぜか(0,0,0,0)のままです。なのでinvalidateされるべき結果は無いことになり、Notifyされることもなく、faviconは表示されないということになります。
image/pngの場合はそもそも完了のタイミングが異なるようで、処理冒頭の
>    invalidRect = image->mDecoder->TakeInvalidRect();
で値がセットされるので、Notifyされてfaviconが表示されます。
というわけで強制的にinvalidRectにdecoder->TakeInvalidRect()の値をセットしてみたら、無事(?)image/x-iconのfaviconも表示されました。
ホントカヨ(-_-)
nsRectのUnionがおかしいのかと、追求しようとしたら... nsRect.hに変更かけたのでほとんどフルビルドになってるんじゃなかろうか... ビルドが終わりゃしない(-_-)

[3/21追記]
Unionのこのコードのどこがおかしいのかと訝った箇所を通ってなかった(-_-) 道理で...
いったいどこのコードを通っているのかさっぱりわからん(-_-)

[追記]
アホだ...
invalidRect.Unionって単に結合領域を戻り値で返すだけで値の変更はしないんだ... 意味無いじゃん(-_-)
invalidRect = invalidRect.Union(decoder->TakeInvalidRect());
なんじゃないの? と思うけど。けど。...

[追記]
ダメだった...(x_x)
う〜ん...

[3/22追記]
printf入れまくったせいでタイミングが狂った(?)んだろうか...
仕切り直してみたら、上記の『image/x-iconの処理を完了しているのは image->ShutdownDecoder の先』ということはなさそうで。
いずれにせよ非同期処理の連携がうまくいってないのは確かだと思うんだけど...

[3/23追記]
不用意にビルドオプションを追加してリビルドしようとしたら...フルビルドになってしまったらしく... 時間かかってしょうがない(-_-)
というわけで。Unionの使い方がおかしいのは間違ってないだろうとimageディレクトリ下だけgrepしたら。まさに怪しげなdecoders/nsICODecoder.cppとsrc/RasterImage.cppがヒットしたので、それだけ修正してビルドしてみたところ。直ったようです。のように見えます(^^; 36.0.1と36.0.4で確認しました。
やれやれ。

[3/25追記]
うわぁ、mozilla-centralを見たらRasterImage.cppががらっと変わってるし(・・)
いったい何やってんだか。趣味ですか? 趣味のぷろぐらみんぐ。

[追記]
てことで5時間かけてビルドして「不具合変わらず」を確認してnsICODecoder.cppだけ修正して5分以上かけてリビルドして「不具合解消」を確認。

今この瞬間だけ。

 

コメント