Fvision さんが書きました:
EE Times Japanのブックマークが書き換わった後に、ブックマークのバックアップJSONファイルを開いてみたところ
"iconuri":"http://eetimes.jp/favicon.ico"
が
"iconuri":"http://portal.profile.livedoor.com/favicon.ico"
に、変化していました。
これでlivedoorの何処のfaviconに書き換わってしまうのか解りました。
「livedoorプロフィール」のfavconらしいのですが、やはり身に覚えの無いサイトです。
portal.profile.livedoor.com は、ブックマークには無いんですよね。
となると、ハイジャックの被害に遭うmoz_faviconsの行や使われるfaviconのURIは、ブックマークとは直接関係しない、ということでしょう。
TABLE moz_places, id = "456" , uri = "http:// EE Times Japan のURI", title = "EE Times Japan"
favicon_id = "789"
があった時に、
TABLE moz_favicons, id = "789" , uri = "http:// EE Times Japan の .ico" , data = "BLOB (EE T.J のもの )"
のuriが、uri = "http://portal.profile.livedoor.com/favicon.ico" で置き換えられた、ということになります。
その時に、TABLE moz_bookmarks, id = "123" , fk = "456" , title = "EE Times Japanのブックマーク" があって、ブックマークのアイコンが差し替えられたのが見えた、と。
(A) TABLE moz_favicons, id = "789" が期限切れになて消されて、その直後に、portal.profile.livedoor.comへのアアクセスがあって、moz_favicons, id = "789" が使われた、
という可能性もありますが、portal.profile.livedoor.comに見覚えがないようですし、過去にアクセスしたことがあるというだけであって、可能性は低そうに思います。
複数のmoz_placesの行が、一つの moz_faviconsの行を共有していて、
そのうちの一つのmoz_placesの行を使うブックマーク経由でのサイトのアクセスがあって、
その時に、faviconの上の更新があると、それとは無関係なmoz_faviconsの行を更新してしまう、ということかもしれません。
サイトのfaviconのURLを変えた時に、新規にmoz_faviconsの行を追加してそちらを使いますが、
古い方のfaviconのURLに対応するmoz_faviconsの行を消すわけではありません。
従って、moz_placesの行のどれからもポイントされていないmoz_faviconsの行、というのもあり得ます。
サイトにアクセスすれば、link rel="icon", link rel="ishortcut con", ルートのfavicon.ico,の順に見ていって、必ずHTTP GETを出して、moz_faviconsの行も必要なら更新、のはずで、
その時は、単純に、サイトのURIと一対一対応のmoz_placesの行 ⇒ faviconのURIと一対一対応のmoz_faviconsの行、と辿るはずだから、間違ったmoz_faviconsの行を更新することは、ちょっと考えにくい。
表をつないで考えると、複数のmoz_placesの行が一つの moz_faviconsの行を共有していて、そのうちの一つのmoz_placesの行をブックマークが使用している時には、
favicon = A, places-A-#1 , bookmarkなし
favicon = A, places-A-#2 , [ bookmark-A-#2-1, bookmark-A-#2-2 ]
favicon = A, places-A-#3 , bookmark-A-#3
favicon = B, places-B , bookmark-B
favicon = C, placesなし。, bookmarkなし
favicon = D, places-D, bookmark-D
のようになりますが、これを以下のように誤認し、
favicon = A, places-A-#1 , bookmarkなし
favicon = B, places-A-#2 , [ bookmark-A-#2-1, bookmark-A-#2-2 ]
favicon = C, places-A-#3 , bookmark-A-#3
favicon = D, places-B , bookmark-B
favicon-= E, places-D, bookmark-D
favicon = F, ...
bookmark-A-#2-2 の更新で、bookmark-A-#2-2 ⇒ places-A-#2 ⇒ favicon = B, が選ばれてしまい、
その時に、ブックマークとは関係ないmoz_placesの行から辿るmoz_faviconsの行のURI/iconデータが使われることもあり得る、
というようなことがあるのかもしれませんね。
単純にこのようなことだけで起こるのなら、Livedoorのサイトにブックマーク経由で行けば、必ずハイジャックしまくりになるはずだから、
もしこのようなことならば、どこかの行のInsertやDeleteが直前か同時に起こる、というようなことが関係すると思います。
moz_faviconsの行の削除は、ブックマークにあるサイトのlink relを変えて、どのmoz_faviconsの行もポイントしていない状態にした程度では起こりません。
ブックマークの管理の中での「定期的な消去」のような内部処理が必要なのでしょう。