宣伝。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。 以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能!
現時点までで、以下の設定項目が新設されたところまでは把握してる。
以下は削除された、と。
が、どれがどんな風に働くのかがごちゃごちゃして分からんようになってきた……
browser.urlbar.default.behavior(フラグを指定しておくことで、restrictとかmatchとかの指定をしたのと同じ状態から検索をスタートする)に3を指定するのと、browser.urlbar.search.sourcesに3を指定するのとの、違いがいまいち分からない。ので、ソースをあちこち辿ってみた。見てみた感じでは、どうやらnsNavHistoryのProcessTokensForSpecialSearchメソッドが鍵になってるっぽい。
検索対象のテーブルの指定や絞り込みの条件は、すべてmAutoCompleteCurrentBehaviorという1つの変数にフラグとして格納される。
これらを踏まえて、以下の順で処理されている。
ああややこしい……
その場での入力とデフォルト設定のどっちが優先されるのか、がパッと分からないのってどうかと思うんだけど……XUL/Migemoのスマートロケーションバー周りの挙動をこれに合わせないといけないんだけど、こういうわかりにくい挙動をそのまま再現するというのは、モチベーションが上がらないなあ。(ていうかバグ立ってそう)
21日追記。browser.urlbar.search.sourcesが廃止されてこのエントリの内容のかなりの部分は無駄になりました。
当ブログを参照していただいて、ありがとうございます。
mozilla.dev.apps.firefoxで、browser.urlbar.search.sourcesとbrowser.urlbar.default.behaviorの関係がわけわからんといってる人を見かけました。 ご参考までに。
http://groups.google.com/group/mozilla.dev.apps.firefox/browse_thread/thread/8a01e7e75314fef9#
何で混乱するのか分かりました。
search.sourcesの方は、出発点の0が「検索ソースなし」=「検索を無効にする」でフラグが増えれば増えるほど検索範囲が広がっていくのに対して、
default.behaviorの方は、出発点の0が「フィルタリングなし」=「全てを検索の対象にする」でフラグが増えれば増えるほど検索範囲が狭まっていくということで、
認識が真逆なんですね。
この二つを統合するのなら、default.behaviorの方に統合した方がいい……というかそうせざるを得ない気がしてきました。
その上で、default.behavior用のビットの一つとしてDENY_ALLみたいなのを新設して、そのビットが立ってたらsearch.sources=0と同じと扱う、という感じにしたらいいんじゃないかなあ。
で、設定パネルのsearch.sourcesに対応してた項目は、default.behaviorの値を見てUIを初期化したり、UIの状態の変化に応じてdefault.behaviorのビットを立てたり寝かせたりする。みたいな。
ってこういう話はbugzillaに書けって感じですね。
https://bugzilla.mozilla.org/show_bug.cgi?id=472943
ダメ元で。
記事を再度読ませていただいたのですが、2点疑問に思ったところがあるので、質問させてください。
1点目。本文の最後から二番目の段落の、第二文目ですが、「前者が0(検索機能自体が無効になっている)以外で、後者が3の時は……」とあります。指示語をそのまま受け取ると、「前者」はbrowser.urlbar.default.behaviorを指すように見えますが、文脈からするとbrowser.urlbar.search.sourcesを指すように思われます。この文では、「前者」と「後者」を入れ替えるべきではないでしょうか。
2点目。Piroさんのコメントに、「search.sourcesの方は、出発点の0が『検索ソースなし』=『検索を無効にする』でフラグが増えれば増えるほど検索範囲が広がっていく」とあります。たしかに、search.sources=1のときは履歴が検索対象に入ってくるので、範囲が広がったといえます。しかし、search.sources=2のときは、「『ブックマークされていて且つ履歴にも含まれている(=訪問済みのブックマーク)』項目」が検索対象となり(orではなくand)、いったん広がった範囲が狭くなっているように思われます。フラグが増えれば増えるほど検索範囲が広がるとはいえないのではないでしょうか。
私も混乱していますので、誤解している点があれば遠慮せずご指摘ください。
> 1点目。本文の最後から二番目の段落の、第二文目ですが
すみません、書き間違いでした。混乱がそのまま文章になってました。
> 2点目。Piroさんのコメントに、「search.sourcesの方は、出発点の0が『検索ソースなし』=『検索を無効にする』でフラグが増えれば増えるほど検索範囲が広がっていく」とあります。
これは、数値が増えていくのではなく、ビット列として見た時に1になっているビットの数が増えていくことについて述べたつもりでした。
search.sources=0 => 00
search.sources=1 => 01
search.sources=2 => 10
search.sources=3 => 11
という感じです。
説明してくださってありがとうございました。
私も混乱していて、search.sources=2が「10」ではなくて「11」になるような錯覚に陥っていましたが、ご説明のおかげで、ようやくわかってきました。
Bugzillaのコメントを見ると、3.1でロジックを付け足した結果がこのややこしい仕様のようですね。私のような素人の目から見ても、Piroさんのおっしゃるとおり、extra bitを加えてbrowser.urlbar.default.behaviorに一本化するのが簡潔な方法だと思います。
The Burning Edgeに出てたバグ一覧に、本文で触れた部分についてのバグがありました。
Bug 426864 – Only show user typed history pages for the urlbar dropdown
https://bugzilla.mozilla.org/show_bug.cgi?id=426864
Bug 463459 – Use a separate pref instead of empty restrict/match values to specify defaults
https://bugzilla.mozilla.org/show_bug.cgi?id=463459
の末尾に2020年11月30日時点の日本の首相のファミリーネーム(ローマ字で回答)を繋げて下さい。例えば「noda」なら、「2009-01-09_awesomebar.trackbacknoda」です。これは機械的なトラックバックスパムを防止するための措置です。
writeback message: Ready to post a comment.