Comment #7 on issue 21849 by su...@chromium.org:  
AutocompleteEditViewTest.EnterToSearch is flaky
http://code.google.com/p/chromium/issues/detail?id=21849

I debugged this issue and found that the sequence of calls to some of  
RenderView's
methods (from WebFrameClient interface) are suspect:

Sequence of success case:
<press enter with some text in omnibox>
NavigationController::NavigateToPendingEntry
RenderView::didStartProvisionalLoad
RenderView::didFailProvisionalLoad
RenderView::didStartProvisionalLoad
RenderView::didCommitProvisionalLoad
RenderView::didFinishDocumentLoad
RenderView::didFinishLoad
NavigationController::RendererDidNavigate
RenderView::AltErrorPageFinished
RenderView::LoadNavigationErrorPage
RenderView::didStartProvisionalLoad
RenderView::didCommitProvisionalLoad
NavigationController::RendererDidNavigate
RenderView::didFinishDocumentLoad
RenderView::didFinishLoad

Sequence of failure case:
<press enter with some text in omnibox>
NavigationController::NavigateToPendingEntry
RenderView::didStartProvisionalLoad
RenderView::didFailProvisionalLoad
RenderView::didStartProvisionalLoad
RenderView::AltErrorPageFinished
RenderView::LoadNavigationErrorPage
RenderView::didFailProvisionalLoad
RenderView::didStartProvisionalLoad
RenderView::didCommitProvisionalLoad
NavigationController::RendererDidNavigate
<error occurred>

Looking into the source code of RenderView::MaybeLoadAlternateErrorPage(),  
which is
called by RenderView::didFailProvisionalLoad():

...
   // Load an empty page first so there is an immediate response to the  
error,
   // and then kick off a request for the alternate error page.
   frame->loadHTMLString(std::string(),
                         GURL(kUnreachableWebDataURL),
                         error.unreachableURL,
                         replace);

   // Now, create a fetcher for the error page and associate it with the data
   // source we just created via the LoadHTMLString call.  That way if  
another
   // navigation occurs, the fetcher will get destroyed.
   NavigationState* navigation_state =
       NavigationState::FromDataSource(frame->provisionalDataSource());
   navigation_state->set_alt_error_page_fetcher(
       new AltErrorPageResourceFetcher(
           error_page_url, frame, error,
           NewCallback(this, &RenderView::AltErrorPageFinished)));
...

Seems that the reason of the failure is: RenderView::AltErrorPageFinished()  
gets
called before finish loading the empty page.

--
You received this message because you are listed in the owner
or CC fields of this issue, or because you starred this issue.
You may adjust your issue notification preferences at:
http://code.google.com/hosting/settings

--~--~---------~--~----~------------~-------~--~----~
Automated mail from issue updates at http://crbug.com/
Subscription options: http://groups.google.com/group/chromium-bugs
-~----------~----~----~----~------~----~------~--~---

Reply via email to