[webkit-dev] FrameLoaderClient notifications

Darin Adler darin at apple.com
Thu Mar 13 07:48:04 PDT 2008


On Mar 13, 2008, at 4:11 AM, Artem Ananiev wrote:

> I work on dispatching web load/progress events for Java port and  
> have some questions about notifications in FrameLoaderClient class.
>
> 1. What is the right method to implement to get a 'page load  
> started' and 'page load finished' events? I tried the following  
> methods:
>
> postProgressStartedNotification()
> postProgressFinishedNotification()
>
> and the problem is they don't accept any params, so I can't get an  
> URL being loaded. If I obtain the URL from frame->loader- 
> >documentLoader, it works for 'progress finished' notification, but  
> returns an old URL for 'progress started'.

I have no idea what you mean by "page load started" and "finished". If  
you look at the Mac port you'll see many different types of calls for  
these purposes. The ones you mention above are best for loading  
progress, as in a progress bar.

> 2. What is the right method to implement to get a 'main document  
> load started'?

dispatchDidStartProvisionalLoad

> 3. As I understand, the right way to handle resources (for example,  
> images) loading is to track methods
>
> assignIdentifierToInitialRequest()
> dispatchWillSendRequest()
> dispatchDidFinishLoading()
>
> The latter two methods provide request identifiers which are  
> assigned in the former one. However, sometimes I see two  
> 'dispatchWillSendRequest' calls with the same ids and different  
> URLs. For example, when loading www.google.com I the first URL is www.google.com 
>  and the second is www.google.co.uk. How is this situation should be  
> handled?

dispatchWillSendRequest will be called repeatedly with different URLs  
when a server does redirection. This is normal. How it should be  
handled depends on what API you've devised.

> 4. There are several notifications about resource loading is finished:
>
> dispatchDidFinishLoading()
> dispatchDidFinishLoad()
> dispatchDidFinishDocumentLoad()
>
> didFinishLoad() - is this a notification?
> finishedLoading() - is this a notification?
>
> Some of them provide DocumentLoader instances, others have no  
> parameters passed. What is the difference between these methods? Are  
> some of them outdated and shouldn't be used at all?

- dispatchDidFinishLoading(DocumentLoader*, unsigned long identifier)

This is called when done loading an individual resource, such as an  
image, script, or the main resource for a page.

- dispatchDidFinishDocumentLoad()

This is called when done loading the document for a frame, usually  
HTML, but not all the resources such as images.

- dispatchDidFinishLoad()

This is called when done loading an entire frame and its resources.  
Like the HTML load event.

     -- Darin



More information about the webkit-dev mailing list