[Webkit-unassigned] [Bug 41155] [Qt] Secure icon is not removed on loading the previous page which is not secure (for cached pages)

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Thu Jun 24 07:30:46 PDT 2010


https://bugs.webkit.org/show_bug.cgi?id=41155





--- Comment #1 from nokiabugz at gmail.com  2010-06-24 07:30:47 PST ---
Additional information from Dinu Jacob:

The issue happens when we attempt to go back when caching is enabled.
When we go back in history with the page cached, in WebCore::FrameLoader::transitionToCommitted, as 'cachePage' is a valid pointer, disptachDidCommitLoad is called (FrameLoader.cpp: 2546 ). At this point , m_URL of FrameLoader has not been updated yet. disptachDidCommitLoad calls client disptachDidCommitLoad which is FrameLoaderClientQt::dispatchDidCommitLoad(). This emits m_webFrame->urlChanged with the url of m_webFrame which is m_URL of FrameLoader ( d->frame->loader()->url() ). As m_URL of FrameLoader has not been updated with the new url, the signal is emitted with the old url. Secureuicontroller is using this url to determine whether to show/hide the secure icon.

FrameLoader sets m_URL to the new value immediately after that in WebCore::FrameLoader::open (to cahcedFrame.url() ):

#0 WebCore::FrameLoader::open (this=0xb25956a8, cachedFrame=@0xb22be244) at /nokia/bs_nmp/groups/s40_builds/viatches/qt-everywhere-opensource-src-4.6.2/src/3rdparty/webkit/WebCore/loader/FrameLoader.cpp:2638
#1 0xb724ed7f in WebCore::CachedFrame::open (this=0xb22be240) at /nokia/bs_nmp/groups/s40_builds/viatches/qt-everywhere-opensource-src-4.6.2/src/3rdparty/webkit/WebCore/history/CachedFrame.cpp:150
#2 0xb724f8ba in WebCore::CachedPage::restore (this=0xb1fc8d40, page=0xb43c16e0) at /nokia/bs_nmp/groups/s40_builds/viatches/qt-everywhere-opensource-src-4.6.2/src/3rdparty/webkit/WebCore/history/CachedPage.cpp:73
#3 0xb732ae28 in WebCore::FrameLoader::open (this=0xb25956a8, cachedPage=@0xb1fc8d40) at /nokia/bs_nmp/groups/s40_builds/viatches/qt-everywhere-opensource-src-4.6.2/src/3rdparty/webkit/WebCore/loader/FrameLoader.cpp:2631
#4 0xb732fff0 in WebCore::FrameLoader::commitProvisionalLoad (this=0xb25956a8, prpCachedPage=@0xbfffbb44) at /nokia/bs_nmp/groups/s40_builds/viatches/qt-everywhere-opensource-src-4.6.2/src/3rdparty/webkit/WebCore/loader/FrameLoader.cpp:2401

m_URL should be set to the new url before the call to disptachDidCommitLoad. In a normal load, m_URL is initially set to the new value in FrameLoader::didOpenURL called from FrameLoader::commitProvisionalLoad to the url value in m_provisionalDocumentLoader. It is set again after getting data in FrameLoader::begin (called from FrameLoader::receivedFirstData() and m_workingURL is passed into begin - this is also set in didOpenURL ). Even though transitionToCommitted is called in the normal case also, dispatchDidCommitLoad() is not called as cachedPage is not valid.

Issue is in Webkit. Fix is:

Before calling dispatchDidCommitLoad in the function FrameLoader::transitionToCommitted(PassRefPtr<CachedPage> cachedPage), need to set m_URL.
m_URL = dl->url();

-- 
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.



More information about the webkit-unassigned mailing list