Bug 43827

Summary: [Qt] Unable to load pages on QtTestBrowser after canceling a page load.
Product: WebKit Reporter: Alexandra Santos <alexandra.1.santos>
Component: New BugsAssignee: Yi Shen <max.hong.shen>
Status: RESOLVED FIXED    
Severity: Normal CC: ademar, commit-queue, cshu, kling, suresh.voruganti, tonikitoo
Priority: P2 Keywords: Qt
Version: 528+ (Nightly build)   
Hardware: S60 Hardware   
OS: S60 3rd edition   
Attachments:
Description Flags
first try none

Alexandra Santos
Reported 2010-08-10 19:28:39 PDT
The user is unable to continue loading pages after cancelling a page load. Steps to reproduce: 1.- Flash the device with symbian 4 platform. 2.- Install and launch QtTestBrowser 3.- Try to load a page and click the "cancel" button before the page finish loading. Actual results: Page loading is cancelled and the "load/reload" button does not get enabled; therefore, unable to continue loading pages. Expected results: After cancelling a page loading, the "load/reload" button would be enabled. Therefore; user would be able to continue loading pages.
Attachments
first try (1.07 KB, patch)
2010-10-18 07:55 PDT, Yi Shen
no flags
Yi Shen
Comment 1 2010-10-18 07:55:16 PDT
Created attachment 71036 [details] first try
Yi Shen
Comment 2 2010-10-18 08:01:07 PDT
After triggered stop action on qwebpage to cancel page loading, the Navigation Actions (back, forward, reload, stop ...) doesn't get updated in most cases. So the patch tries to update navigation actions explicitly after calling mainFrame()->d->frame->loader()->stopForUserCancel().
Antonio Gomes
Comment 3 2010-10-18 08:16:54 PDT
Only STOP breaks it?
Antonio Gomes
Comment 4 2010-10-18 08:19:19 PDT
Comment on attachment 71036 [details] first try It looks sane to me.
Antonio Gomes
Comment 5 2010-10-18 08:19:34 PDT
Any change to have a autotest for it?
Antonio Gomes
Comment 6 2010-10-18 08:20:04 PDT
QT = QuickTime :)
Yi Shen
Comment 7 2010-10-18 08:26:35 PDT
Thanks for super fast review, Antonio :) I don't have any any auto test for it now since there is no such test existing. Only did some tests on the QtTestBrowser.
WebKit Commit Bot
Comment 8 2010-10-18 08:41:32 PDT
Comment on attachment 71036 [details] first try Clearing flags on attachment: 71036 Committed r69961: <http://trac.webkit.org/changeset/69961>
WebKit Commit Bot
Comment 9 2010-10-18 08:41:37 PDT
All reviewed patches have been landed. Closing bug.
Suresh Voruganti
Comment 10 2010-10-20 11:32:25 PDT
Pls cherry pick the fix for Qtwebkit 2.1 as this is Qtwebkit2.1 Basic Acceptance test failure.
Antonio Gomes
Comment 11 2010-10-20 11:35:52 PDT
Kling raised a concern with the patch and suggested we addressing that in FrameLoaderClient side, which I found reasonable. Yi, news on that?
Yi Shen
Comment 12 2010-10-20 12:12:05 PDT
(In reply to comment #11) > Kling raised a concern with the patch and suggested we addressing that in FrameLoaderClient side, which I found reasonable. > > Yi, news on that? Hi Antonio, I checked the FrameLoaderClientQt and FrameLoader, and I think the only place we can updateNav in FrameLoaderClientQt is in frameLoadCompleted(). The down side is that frameLoadCompleted can be called multiple times. void FrameLoaderClientQt::frameLoadCompleted() { // Note: Can be called multiple times. if (!m_loadError.isNull() && m_loadError.isCancellation()) m_webFrame->page()->d->updateNavigationActions(); } Any thoughts?
Antonio Gomes
Comment 13 2010-10-20 12:15:50 PDT
(In reply to comment #12) > (In reply to comment #11) > > Kling raised a concern with the patch and suggested we addressing that in FrameLoaderClient side, which I found reasonable. > > > > Yi, news on that? > > Hi Antonio, I checked the FrameLoaderClientQt and FrameLoader, and I think the only place we can updateNav in FrameLoaderClientQt is in frameLoadCompleted(). The down side is that frameLoadCompleted can be called multiple times. > > void FrameLoaderClientQt::frameLoadCompleted() > { > // Note: Can be called multiple times. > if (!m_loadError.isNull() && m_loadError.isCancellation()) > m_webFrame->page()->d->updateNavigationActions(); > } > > Any thoughts? It gets called multiple times in what situations? like one per frame?
Yi Shen
Comment 14 2010-10-20 12:39:25 PDT
(In reply to comment #13) > (In reply to comment #12) > It gets called multiple times in what situations? like one per frame? No, seems one per sub resource loader. For most often, after user cancel loading, the state of frame is set to FrameStateComplete. Then all the sub resource loaders call FrameLoader::checkLoadCompleteForThisFrame when removing itself from the DocumentLoader. In checkLoadCompleteForThisFrame, it calls the FrameLoaderClientQt::frameLoadCompleted() since the state is FrameStateComplete. e.g, when cancel loading cnn.com, I saw frameLoadCompleted gets called > 30 times.
Ademar Reis
Comment 15 2010-10-20 15:38:04 PDT
Revision r69961 cherry-picked into qtwebkit-2.1 with commit 230afa2 <http://gitorious.org/webkit/qtwebkit/commit/230afa2>
Note You need to log in before you can comment on or make changes to this bug.