[webkit-dev] The mysterious IconDatabase

Patrick Hanna phanna at email.unc.edu
Tue Sep 18 09:53:50 PDT 2007


So I do *not* have the 25557 patch and that will help.

What tools are in place to accomplish the behavior that I want? Is =20
this something that Safari does? I would love to be able to show the =20
google.com icon until I know the real icon but I don't know how to =20
use the IconDatabase to accomplish this. For one thing, I don't want =20
to assume that google.com/search?hl=3Dwhatever uses google.com/=20
favicon.ico. I would rather have either the FrameLoader or the =20
IconDatabase tell me early on what icon or icon url it *thinks* is =20
correct until the real url is known.

Pat

On Sep 18, 2007, at 12:46 PM, Brady Eidson wrote:

> Hi Patrick,
>
> Could you give a little more context?  Are you using ToT WebKit?
>
> On Sep 18, 2007, at 9:27 AM, Patrick Hanna wrote:
>
>> Load www.google.com, FrameLoaderClient::dispatchDidReceiveIcon is =20
>> called. IconDatabase::iconForPageURL returns an icon, this is =20
>> perfect.
>
> Right
>
>> Load www.google.com/search?hl=3Den&q=3Dsome_query&btnG=3DGoogle+Search,=
 =20
>> dispatchDidReceiveIcon is *not* called.
>
> In current ToT WebKit, it should be called for every single page =20
> load.  Specifically as of revision 25557 (http://trac.webkit.org/=20
> projects/webkit/changeset/25557)
>
>> If I call iconForPageURL *before* the load is finished, I won't =20
>> get an icon unless I have already visited the site. If I call it =20
>> after the load has finished, this could potentially show the wrong =20=

>> icon until the load has finished.
>
> This is expected - until you visit a site, the icon database =20
> doesn't know what icon belongs to the site.  You might think it =20
> quite obvious that "www.google.com/search?=20
> hl=3Den&q=3Dsome_query&btnG=3DGoogle+Search" should use the google =
site =20
> icon, but "www.google.com/search?hl=3Den&q=3Dsome_query&btnG=3DGoogle=20=

> +Search" might manually link to "www.foobar.com/favicon.ico" in =20
> it's <head> element - we simply don't know until the sight has =20
> loaded once.
>
> Therefore, until you do actually load the site, iconForPageURL=20
> ("www.google.com/search?hl=3Den&q=3Dsome_query&btnG=3DGoogle+Search") =20=

> should return the default icon.
>
>> Here is the behavior that I want:
>> Load www.google.com, show the default icon until the google =20
>> favicon is loaded and dispatchDidReceiveIcon is called. Load =20
>> www.google.com/search?hl=3Dwhatever, show the google favicon unless =20=

>> dispatchDidReceiveIcon is called. Load www.someothersite.com, show =20=

>> the default icon until dispatchDidReceiveIcon is called. How can I =20=

>> accomplish this behavior when the IconDatabase doesn't know about =20
>> pageUrls->iconUrls until *after* the load has completed?
>
> To accomplish this behavior you'll have to do a little work.
>
> As I said above, it is impossible to know for sure which icon =20
> belongs to a site until you've visited that site once.  But I think =20=

> it's quite reasonable if an API client wants to make assumptions by =20=

> itself and ask for a different icon.
>
> Maybe what you're going for here is to have your API client run =20
> it's own logic that says "Okay, I don't know the icon for http://=20
> www.google.com/search?hl=3Den&q=3Dsome_query&btnG=3DGoogle+Search, but =
I =20
> do know the icon for http://www.google.com/, so I'll show that icon =20=

> instead until I know the http://www.google.com/search?=20
> hl=3Den&q=3Dsome_query&btnG=3DGoogle+Search icon for sure"
>
> And the tools *are* in place to accomplish that now.
>
> Hope this helps,
>
> =F0 Brady
> Safari/WebKit Engineer
>
>> Thanks,
>> Patrick
>> _______________________________________________
>> webkit-dev mailing list
>> webkit-dev at lists.webkit.org
>> http://lists.webkit.org/mailman/listinfo/webkit-dev
>




More information about the webkit-dev mailing list