Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
2010-10-26 Jenn Braithwaite <jennb@chromium.org>
        Reviewed by Dmitry Titov.

        Resource tracking failure when trying to move a frame between documents
        https://bugs.webkit.org/show_bug.cgi?id=44713

        * fast/frames/iframe-reparenting-fail-load-expected.txt: Added.
        * fast/frames/iframe-reparenting-fail-load.html: Added.
        * platform/mac/Skipped:
        Re-enabled test that failed due to this bug.
2010-10-26  Jenn Braithwaite  <jennb@chromium.org>

        Reviewed by Dmitry Titov.

        Resource tracking failure when trying to move a frame between documents
        https://bugs.webkit.org/show_bug.cgi?id=44713

        Test: fast/frames/iframe-reparenting-fail-load.html

        * loader/DocumentLoader.cpp:
        (WebCore::DocumentLoader::transferLoadingResourcesFromPage):
        Added method that notifies the client to update resource tracking for
        loading resources that have been transferred to a different page.
        * loader/DocumentLoader.h:
        * loader/EmptyClients.h:
        (WebCore::EmptyFrameLoaderClient::transferLoadingResourceFromPage):
        Empty method.
        * loader/FrameLoader.h:
        * loader/FrameLoader.cpp:
        Added method that triggers resource tracking updates. This wraps
        the DocumentLoader method as it appears DocumentLoader is opaque
        to Frame.
        * loader/FrameLoaderClient.h:
        Added API to notify the client to update resource tracking for
        a loading resource that has been transferred to a different page.
        * page/Frame.cpp:
        (WebCore::Frame::transferChildFrameToNewDocument):
        Update resource tracking if page has changed.
2010-10-26  Jenn Braithwaite  <jennb@chromium.org>

        Reviewed by Dmitry Titov.

        Resource tracking failure when trying to move a frame between documents
        https://bugs.webkit.org/show_bug.cgi?id=44713

        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::transferLoadingResourceFromPage):
        Empty method.
        * src/FrameLoaderClientImpl.h:
2010-10-26  Jenn Braithwaite  <jennb@chromium.org>

        Reviewed by Dmitry Titov.

        Resource tracking failure when trying to move a frame between documents
        https://bugs.webkit.org/show_bug.cgi?id=44713

        * WebCoreSupport/FrameLoaderClientEfl.cpp:
        (WebCore::FrameLoaderClientEfl::transferLoadingResourceFromPage):
        Empty method.
        * WebCoreSupport/FrameLoaderClientEfl.h:
2010-10-26  Jenn Braithwaite  <jennb@chromium.org>

        Reviewed by Dmitry Titov.

        Resource tracking failure when trying to move a frame between documents
        https://bugs.webkit.org/show_bug.cgi?id=44713

        * WebCoreSupport/FrameLoaderClientGtk.cpp:
        (WebKit::FrameLoaderClient::transferLoadingResourceFromPage):
        Empty method.
        * WebCoreSupport/FrameLoaderClientGtk.h:
2010-10-26  Jenn Braithwaite  <jennb@chromium.org>

        Reviewed by Dmitry Titov.

        Resource tracking failure when trying to move a frame between documents
        https://bugs.webkit.org/show_bug.cgi?id=44713

        * WebCoreSupport/FrameLoaderClientHaiku.cpp:
        (WebCore::FrameLoaderClientHaiku::transferLoadingResourceFromPage):
        Empty method.
        * WebCoreSupport/FrameLoaderClientHaiku.h:
2010-10-26  Jenn Braithwaite  <jennb@chromium.org>

        Reviewed by Dmitry Titov.

        Resource tracking failure when trying to move a frame between documents
        https://bugs.webkit.org/show_bug.cgi?id=44713

        * WebCoreSupport/WebFrameLoaderClient.h:
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::didTransferChildFrameToNewDocument):
        Empty method.
        (WebFrameLoaderClient::transferLoadingResourceFromPage):
        Update resource tracking for a resource load that has been transferred
        to a new page.
2010-10-26  Jenn Braithwaite  <jennb@chromium.org>

        Reviewed by Dmitry Titov.

        Resource tracking failure when trying to move a frame between documents
        https://bugs.webkit.org/show_bug.cgi?id=44713

        * WebCoreSupport/FrameLoaderClientQt.cpp:
        (WebCore::FrameLoaderClientQt::transferLoadingResourceFromPage):
        Emtpy method.
        * WebCoreSupport/FrameLoaderClientQt.h:
2010-10-26  Jenn Braithwaite  <jennb@chromium.org>

        Reviewed by Dmitry Titov.

        Resource tracking failure when trying to move a frame between documents
        https://bugs.webkit.org/show_bug.cgi?id=44713

        * WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebFrameLoaderClient::transferLoadingResourceFromPage):
        Empty method.
        * WebCoreSupport/WebFrameLoaderClient.h:
2010-10-26  Jenn Braithwaite  <jennb@chromium.org>

        Reviewed by Dmitry Titov.

        Resource tracking failure when trying to move a frame between documents
        https://bugs.webkit.org/show_bug.cgi?id=44713

        * WebCoreSupport/FrameLoaderClientWinCE.cpp:
        (WebKit::FrameLoaderClientWinCE::transferLoadingResourceFromPage):
        Empty method.
        * WebCoreSupport/FrameLoaderClientWinCE.h:
2010-10-26  Jenn Braithwaite  <jennb@chromium.org>

        Reviewed by Dmitry Titov.

        Resource tracking failure when trying to move a frame between documents
        https://bugs.webkit.org/show_bug.cgi?id=44713

        * WebKitSupport/FrameLoaderClientWx.cpp:
        (WebCore::FrameLoaderClientWx::transferLoadingResourceFromPage):
        Empty method.
        * WebKitSupport/FrameLoaderClientWx.h:
2010-10-26  Jenn Braithwaite  <jennb@chromium.org>

        Reviewed by Dmitry Titov.

        Resource tracking failure when trying to move a frame between documents
        https://bugs.webkit.org/show_bug.cgi?id=44713

        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::transferLoadingResourceFromPage):
        Empty method.
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:

Canonical link: https://commits.webkit.org/61106@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@70574 268f45cc-cd09-0410-ab3c-d52691b4dbfc
  • Loading branch information
webkit-commit-queue committed Oct 26, 2010
1 parent 4b45e91 commit 1fed608
Show file tree
Hide file tree
Showing 42 changed files with 284 additions and 8 deletions.
12 changes: 12 additions & 0 deletions LayoutTests/ChangeLog
@@ -1,3 +1,15 @@
2010-10-26 Jenn Braithwaite <jennb@chromium.org>

Reviewed by Dmitry Titov.

Resource tracking failure when trying to move a frame between documents
https://bugs.webkit.org/show_bug.cgi?id=44713

* fast/frames/iframe-reparenting-fail-load-expected.txt: Added.
* fast/frames/iframe-reparenting-fail-load.html: Added.
* platform/mac/Skipped:
Re-enabled test that failed due to this bug.

2010-10-26 Nikolas Zimmermann <nzimmermann@rim.com>

Reviewed by Rob Buis.
Expand Down
@@ -0,0 +1 @@
This test adopts an iframe into a second page, then closes that page, cancelling that iframe load. The cancelled load is treated as a failed load. This test will crash if resource tracking has not been updated after the iframe has been adopted to a different page because the failed load will be reported to the wrong place.
22 changes: 22 additions & 0 deletions LayoutTests/fast/frames/iframe-reparenting-fail-load.html
@@ -0,0 +1,22 @@
<html>
<script>
if (window.layoutTestController) {
layoutTestController.dumpAsText();
layoutTestController.waitUntilDone();
layoutTestController.setCanOpenWindows(true);
}

function test()
{
var w = window.open("about:blank");
var f = w.document.adoptNode(document.getElementsByTagName("iframe")[0]);
w.document.body.appendChild(f);
w.close();
if (window.layoutTestController)
layoutTestController.notifyDone();
}
</script>
<body onload="test()">
<iframe src="data:text/html,foo"></iframe>
<p>This test adopts an iframe into a second page, then closes that page, cancelling that iframe load. The cancelled load is treated as a failed load. This test will crash if resource tracking has not been updated after the iframe has been adopted to a different page because the failed load will be reported to the wrong place.</p>
</body>
3 changes: 0 additions & 3 deletions LayoutTests/platform/mac/Skipped
Expand Up @@ -299,9 +299,6 @@ media/context-menu-actions.html
# FileSystem API is not supported.
fast/filesystem

# https://bugs.webkit.org/show_bug.cgi?id=44713
fast/frames/iframe-reparenting-adopt-node.html

# https://bugs.webkit.org/show_bug.cgi?id=46223
# The WebKit plugin implementation does not support iframe shims.
plugins/iframe-shims.html
Expand Down
29 changes: 29 additions & 0 deletions WebCore/ChangeLog
@@ -1,3 +1,32 @@
2010-10-26 Jenn Braithwaite <jennb@chromium.org>

Reviewed by Dmitry Titov.

Resource tracking failure when trying to move a frame between documents
https://bugs.webkit.org/show_bug.cgi?id=44713

Test: fast/frames/iframe-reparenting-fail-load.html

* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::transferLoadingResourcesFromPage):
Added method that notifies the client to update resource tracking for
loading resources that have been transferred to a different page.
* loader/DocumentLoader.h:
* loader/EmptyClients.h:
(WebCore::EmptyFrameLoaderClient::transferLoadingResourceFromPage):
Empty method.
* loader/FrameLoader.h:
* loader/FrameLoader.cpp:
Added method that triggers resource tracking updates. This wraps
the DocumentLoader method as it appears DocumentLoader is opaque
to Frame.
* loader/FrameLoaderClient.h:
Added API to notify the client to update resource tracking for
a loading resource that has been transferred to a different page.
* page/Frame.cpp:
(WebCore::Frame::transferChildFrameToNewDocument):
Update resource tracking if page has changed.

2010-10-26 Nikolas Zimmermann <nzimmermann@rim.com>

Reviewed by Rob Buis.
Expand Down
21 changes: 21 additions & 0 deletions WebCore/loader/DocumentLoader.cpp
Expand Up @@ -787,6 +787,27 @@ void DocumentLoader::subresourceLoaderFinishedLoadingOnePart(ResourceLoader* loa
frame->loader()->checkLoadComplete();
}

void DocumentLoader::transferLoadingResourcesFromPage(Page* oldPage)
{
ASSERT(oldPage != m_frame->page());

FrameLoaderClient* frameLoaderClient = frameLoader()->client();
const ResourceRequest& request = originalRequest();
if (isLoadingMainResource()) {
frameLoaderClient->transferLoadingResourceFromPage(
m_mainResourceLoader->identifier(), this, request, oldPage);
}

if (isLoadingSubresources()) {
ResourceLoaderSet::const_iterator it = m_subresourceLoaders.begin();
ResourceLoaderSet::const_iterator end = m_subresourceLoaders.end();
for (; it != end; ++it) {
frameLoaderClient->transferLoadingResourceFromPage(
(*it)->identifier(), this, request, oldPage);
}
}
}

void DocumentLoader::iconLoadDecisionAvailable()
{
if (m_frame)
Expand Down
5 changes: 4 additions & 1 deletion WebCore/loader/DocumentLoader.h
Expand Up @@ -46,6 +46,7 @@ namespace WebCore {
class Frame;
class FrameLoader;
class MainResourceLoader;
class Page;
class ResourceLoader;
class SchedulePair;
class SharedBuffer;
Expand Down Expand Up @@ -195,7 +196,9 @@ namespace WebCore {
void removePlugInStreamLoader(ResourceLoader*);

void subresourceLoaderFinishedLoadingOnePart(ResourceLoader*);


void transferLoadingResourcesFromPage(Page*);

void setDeferMainResourceDataLoad(bool defer) { m_deferMainResourceDataLoad = defer; }
bool deferMainResourceDataLoad() const { return m_deferMainResourceDataLoad; }

Expand Down
1 change: 1 addition & 0 deletions WebCore/loader/EmptyClients.h
Expand Up @@ -337,6 +337,7 @@ class EmptyFrameLoaderClient : public FrameLoaderClient, public Noncopyable {
virtual void didRunInsecureContent(SecurityOrigin*) { }
virtual PassRefPtr<Frame> createFrame(const KURL&, const String&, HTMLFrameOwnerElement*, const String&, bool, int, int) { return 0; }
virtual void didTransferChildFrameToNewDocument(Page*) { }
virtual void transferLoadingResourceFromPage(unsigned long, DocumentLoader*, const ResourceRequest&, Page*) { }
virtual PassRefPtr<Widget> createPlugin(const IntSize&, HTMLPlugInElement*, const KURL&, const Vector<String>&, const Vector<String>&, const String&, bool) { return 0; }
virtual PassRefPtr<Widget> createJavaAppletWidget(const IntSize&, HTMLAppletElement*, const KURL&, const Vector<String>&, const Vector<String>&) { return 0; }
#if ENABLE(PLUGIN_PROXY_FOR_VIDEO)
Expand Down
7 changes: 7 additions & 0 deletions WebCore/loader/FrameLoader.cpp
Expand Up @@ -1744,6 +1744,13 @@ bool FrameLoader::frameHasLoaded() const
return m_stateMachine.committedFirstRealDocumentLoad() || (m_provisionalDocumentLoader && !m_stateMachine.creatingInitialEmptyDocument());
}

void FrameLoader::transferLoadingResourcesFromPage(Page* oldPage)
{
ASSERT(oldPage != m_frame->page());
if (isLoading())
activeDocumentLoader()->transferLoadingResourcesFromPage(oldPage);
}

void FrameLoader::setDocumentLoader(DocumentLoader* loader)
{
if (!loader && !m_documentLoader)
Expand Down
2 changes: 2 additions & 0 deletions WebCore/loader/FrameLoader.h
Expand Up @@ -68,6 +68,7 @@ class HTMLFormElement;
class IconLoader;
class NavigationAction;
class NetworkingContext;
class Page;
class ProtectionSpace;
class ResourceError;
class ResourceLoader;
Expand Down Expand Up @@ -132,6 +133,7 @@ class FrameLoader : public Noncopyable {
bool isLoadingMainResource() const { return m_isLoadingMainResource; }
bool isLoading() const;
bool frameHasLoaded() const;
void transferLoadingResourcesFromPage(Page*);

int numPendingOrLoadingRequests(bool recurse) const;
String referrer() const;
Expand Down
1 change: 1 addition & 0 deletions WebCore/loader/FrameLoaderClient.h
Expand Up @@ -230,6 +230,7 @@ namespace WebCore {
virtual PassRefPtr<Frame> createFrame(const KURL& url, const String& name, HTMLFrameOwnerElement* ownerElement,
const String& referrer, bool allowsScrolling, int marginWidth, int marginHeight) = 0;
virtual void didTransferChildFrameToNewDocument(Page* oldPage) = 0;
virtual void transferLoadingResourceFromPage(unsigned long identifier, DocumentLoader*, const ResourceRequest&, Page* oldPage) = 0;
virtual PassRefPtr<Widget> createPlugin(const IntSize&, HTMLPlugInElement*, const KURL&, const Vector<String>&, const Vector<String>&, const String&, bool loadManually) = 0;
virtual void redirectDataToPlugin(Widget* pluginWidget) = 0;

Expand Down
4 changes: 4 additions & 0 deletions WebCore/page/Frame.cpp
Expand Up @@ -744,6 +744,10 @@ void Frame::transferChildFrameToNewDocument()
// Let external clients update themselves.
loader()->client()->didTransferChildFrameToNewDocument(oldPage);

// Update resource tracking now that frame could be in a different page.
if (oldPage != newPage)
loader()->transferLoadingResourcesFromPage(oldPage);

// Do the same for all the children.
for (Frame* child = tree()->firstChild(); child; child = child->tree()->nextSibling())
child->transferChildFrameToNewDocument();
Expand Down
12 changes: 12 additions & 0 deletions WebKit/chromium/ChangeLog
@@ -1,3 +1,15 @@
2010-10-26 Jenn Braithwaite <jennb@chromium.org>

Reviewed by Dmitry Titov.

Resource tracking failure when trying to move a frame between documents
https://bugs.webkit.org/show_bug.cgi?id=44713

* src/FrameLoaderClientImpl.cpp:
(WebKit::FrameLoaderClientImpl::transferLoadingResourceFromPage):
Empty method.
* src/FrameLoaderClientImpl.h:

2010-10-26 Satish Sampath <satish@chromium.org>

Reviewed by Jeremy Orlow.
Expand Down
5 changes: 5 additions & 0 deletions WebKit/chromium/src/FrameLoaderClientImpl.cpp
Expand Up @@ -1385,6 +1385,11 @@ void FrameLoaderClientImpl::didTransferChildFrameToNewDocument(Page*)
m_webFrame->setClient(newParent->client());
}

void FrameLoaderClientImpl::transferLoadingResourceFromPage(unsigned long, DocumentLoader*, const ResourceRequest&, Page*)
{
notImplemented();
}

PassRefPtr<Widget> FrameLoaderClientImpl::createPlugin(
const IntSize& size, // FIXME: how do we use this?
HTMLPlugInElement* element,
Expand Down
1 change: 1 addition & 0 deletions WebKit/chromium/src/FrameLoaderClientImpl.h
Expand Up @@ -180,6 +180,7 @@ class FrameLoaderClientImpl : public WebCore::FrameLoaderClient {
const WTF::String& referrer, bool allowsScrolling,
int marginWidth, int marginHeight);
virtual void didTransferChildFrameToNewDocument(WebCore::Page*);
virtual void transferLoadingResourceFromPage(unsigned long, WebCore::DocumentLoader*, const WebCore::ResourceRequest&, WebCore::Page*);
virtual PassRefPtr<WebCore::Widget> createPlugin(
const WebCore::IntSize&, WebCore::HTMLPlugInElement*, const WebCore::KURL&,
const Vector<WTF::String>&, const Vector<WTF::String>&,
Expand Down
12 changes: 12 additions & 0 deletions WebKit/efl/ChangeLog
@@ -1,3 +1,15 @@
2010-10-26 Jenn Braithwaite <jennb@chromium.org>

Reviewed by Dmitry Titov.

Resource tracking failure when trying to move a frame between documents
https://bugs.webkit.org/show_bug.cgi?id=44713

* WebCoreSupport/FrameLoaderClientEfl.cpp:
(WebCore::FrameLoaderClientEfl::transferLoadingResourceFromPage):
Empty method.
* WebCoreSupport/FrameLoaderClientEfl.h:

2010-10-22 Sam Weinig <sam@webkit.org>

Reviewed by Anders Carlsson.
Expand Down
4 changes: 4 additions & 0 deletions WebKit/efl/WebCoreSupport/FrameLoaderClientEfl.cpp
Expand Up @@ -384,6 +384,10 @@ void FrameLoaderClientEfl::didTransferChildFrameToNewDocument(Page*)
{
}

void FrameLoaderClientEfl::transferLoadingResourceFromPage(unsigned long, DocumentLoader*, const ResourceRequest&, Page*)
{
}

void FrameLoaderClientEfl::redirectDataToPlugin(Widget* pluginWidget)
{
ASSERT(!m_pluginView);
Expand Down
1 change: 1 addition & 0 deletions WebKit/efl/WebCoreSupport/FrameLoaderClientEfl.h
Expand Up @@ -135,6 +135,7 @@ class FrameLoaderClientEfl : public FrameLoaderClient {
virtual PassRefPtr<Frame> createFrame(const KURL& url, const String& name, HTMLFrameOwnerElement* ownerElement,
const String& referrer, bool allowsScrolling, int marginWidth, int marginHeight);
virtual void didTransferChildFrameToNewDocument(Page*);
virtual void transferLoadingResourceFromPage(unsigned long, WebCore::DocumentLoader*, const ResourceRequest&, WebCore::Page*);

virtual PassRefPtr<Widget> createPlugin(const IntSize&, HTMLPlugInElement*, const KURL&, const WTF::Vector<String>&, const WTF::Vector<String>&, const String&, bool);
virtual void redirectDataToPlugin(Widget* pluginWidget);
Expand Down
12 changes: 12 additions & 0 deletions WebKit/gtk/ChangeLog
@@ -1,3 +1,15 @@
2010-10-26 Jenn Braithwaite <jennb@chromium.org>

Reviewed by Dmitry Titov.

Resource tracking failure when trying to move a frame between documents
https://bugs.webkit.org/show_bug.cgi?id=44713

* WebCoreSupport/FrameLoaderClientGtk.cpp:
(WebKit::FrameLoaderClient::transferLoadingResourceFromPage):
Empty method.
* WebCoreSupport/FrameLoaderClientGtk.h:

2010-10-26 Mario Sanchez Prada <msanchez@igalia.com>

Reviewed by Chris Fleizach.
Expand Down
4 changes: 4 additions & 0 deletions WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp
Expand Up @@ -619,6 +619,10 @@ void FrameLoaderClient::didTransferChildFrameToNewDocument(WebCore::Page*)
ASSERT(core(getViewFromFrame(m_frame)) == coreFrame->page());
}

void FrameLoaderClient::transferLoadingResourceFromPage(unsigned long, WebCore::DocumentLoader*, const WebCore::ResourceRequest&, WebCore::Page*)
{
}

void FrameLoaderClient::redirectDataToPlugin(Widget* pluginWidget)
{
ASSERT(!m_pluginView);
Expand Down
1 change: 1 addition & 0 deletions WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.h
Expand Up @@ -115,6 +115,7 @@ namespace WebKit {
virtual PassRefPtr<WebCore::Frame> createFrame(const WebCore::KURL& url, const WTF::String& name, WebCore::HTMLFrameOwnerElement* ownerElement,
const WTF::String& referrer, bool allowsScrolling, int marginWidth, int marginHeight);
virtual void didTransferChildFrameToNewDocument(WebCore::Page*);
virtual void transferLoadingResourceFromPage(unsigned long, WebCore::DocumentLoader*, const WebCore::ResourceRequest&, WebCore::Page*);
virtual PassRefPtr<WebCore::Widget> createPlugin(const WebCore::IntSize&, WebCore::HTMLPlugInElement*, const WebCore::KURL&, const WTF::Vector<WTF::String>&, const WTF::Vector<WTF::String>&, const WTF::String&, bool);
virtual void redirectDataToPlugin(WebCore::Widget* pluginWidget);
virtual PassRefPtr<WebCore::Widget> createJavaAppletWidget(const WebCore::IntSize&, WebCore::HTMLAppletElement*, const WebCore::KURL& baseURL, const WTF::Vector<WTF::String>& paramNames, const WTF::Vector<WTF::String>& paramValues);
Expand Down
12 changes: 12 additions & 0 deletions WebKit/haiku/ChangeLog
@@ -1,3 +1,15 @@
2010-10-26 Jenn Braithwaite <jennb@chromium.org>

Reviewed by Dmitry Titov.

Resource tracking failure when trying to move a frame between documents
https://bugs.webkit.org/show_bug.cgi?id=44713

* WebCoreSupport/FrameLoaderClientHaiku.cpp:
(WebCore::FrameLoaderClientHaiku::transferLoadingResourceFromPage):
Empty method.
* WebCoreSupport/FrameLoaderClientHaiku.h:

2010-10-22 Sam Weinig <sam@webkit.org>

Reviewed by Anders Carlsson.
Expand Down
4 changes: 4 additions & 0 deletions WebKit/haiku/WebCoreSupport/FrameLoaderClientHaiku.cpp
Expand Up @@ -745,6 +745,10 @@ void FrameLoaderClientHaiku::didTransferChildFrameToNewDocument(Page*)
{
}

void FrameLoaderClientHaiku::transferLoadingResourceFromPage(unsigned long, DocumentLoader*, const ResourceRequest&, Page*)
{
}

ObjectContentType FrameLoaderClientHaiku::objectContentType(const KURL& url, const String& mimeType)
{
notImplemented();
Expand Down
1 change: 1 addition & 0 deletions WebKit/haiku/WebCoreSupport/FrameLoaderClientHaiku.h
Expand Up @@ -222,6 +222,7 @@ namespace WebCore {
HTMLFrameOwnerElement*, const String& referrer,
bool allowsScrolling, int marginWidth, int marginHeight);
virtual void didTransferChildFrameToNewDocument(WebCore::Page*);
virtual void transferLoadingResourceFromPage(unsigned long, WebCore::DocumentLoader*, const ResourceRequest&, WebCore::Page*);
virtual PassRefPtr<Widget> createPlugin(const IntSize&, HTMLPlugInElement*, const KURL&,
const Vector<String>&, const Vector<String>&, const String&,
bool loadManually);
Expand Down
15 changes: 15 additions & 0 deletions WebKit/mac/ChangeLog
@@ -1,3 +1,18 @@
2010-10-26 Jenn Braithwaite <jennb@chromium.org>

Reviewed by Dmitry Titov.

Resource tracking failure when trying to move a frame between documents
https://bugs.webkit.org/show_bug.cgi?id=44713

* WebCoreSupport/WebFrameLoaderClient.h:
* WebCoreSupport/WebFrameLoaderClient.mm:
(WebFrameLoaderClient::didTransferChildFrameToNewDocument):
Empty method.
(WebFrameLoaderClient::transferLoadingResourceFromPage):
Update resource tracking for a resource load that has been transferred
to a new page.

2010-10-25 Oliver Hunt <oliver@apple.com>

Reviewed by Gavin Barraclough.
Expand Down
1 change: 1 addition & 0 deletions WebKit/mac/WebCoreSupport/WebFrameLoaderClient.h
Expand Up @@ -194,6 +194,7 @@ class WebFrameLoaderClient : public WebCore::FrameLoaderClient {
virtual PassRefPtr<WebCore::Frame> createFrame(const WebCore::KURL& url, const WTF::String& name, WebCore::HTMLFrameOwnerElement*,
const WTF::String& referrer, bool allowsScrolling, int marginWidth, int marginHeight);
virtual void didTransferChildFrameToNewDocument(WebCore::Page* oldPage);
virtual void transferLoadingResourceFromPage(unsigned long identifier, WebCore::DocumentLoader*, const WebCore::ResourceRequest&, WebCore::Page* oldPage);
virtual PassRefPtr<WebCore::Widget> createPlugin(const WebCore::IntSize&, WebCore::HTMLPlugInElement*, const WebCore::KURL&, const Vector<WTF::String>&,
const Vector<WTF::String>&, const WTF::String&, bool);
virtual void redirectDataToPlugin(WebCore::Widget* pluginWidget);
Expand Down
13 changes: 9 additions & 4 deletions WebKit/mac/WebCoreSupport/WebFrameLoaderClient.mm
Expand Up @@ -1385,11 +1385,16 @@ static inline void applyAppleDictionaryApplicationQuirk(WebFrameLoaderClient* cl

void WebFrameLoaderClient::didTransferChildFrameToNewDocument(Page* oldPage)
{
if (oldPage == core(m_webFrame.get())->page())
return;
}

void WebFrameLoaderClient::transferLoadingResourceFromPage(unsigned long identifier, DocumentLoader* loader, const ResourceRequest& request, Page* oldPage)
{
ASSERT(oldPage != core(m_webFrame.get())->page());
ASSERT(![getWebView(m_webFrame.get()) _objectForIdentifier:identifier]);

assignIdentifierToInitialRequest(identifier, loader, request);

// Update resource tracking now that frame is in a different page.
// TODO(jennb): update resource tracking [bug 44713]
[kit(oldPage) _removeObjectForIdentifier:identifier];
}

ObjectContentType WebFrameLoaderClient::objectContentType(const KURL& url, const String& mimeType)
Expand Down
12 changes: 12 additions & 0 deletions WebKit/qt/ChangeLog
@@ -1,3 +1,15 @@
2010-10-26 Jenn Braithwaite <jennb@chromium.org>

Reviewed by Dmitry Titov.

Resource tracking failure when trying to move a frame between documents
https://bugs.webkit.org/show_bug.cgi?id=44713

* WebCoreSupport/FrameLoaderClientQt.cpp:
(WebCore::FrameLoaderClientQt::transferLoadingResourceFromPage):
Emtpy method.
* WebCoreSupport/FrameLoaderClientQt.h:

2010-10-26 Yi Shen <yi.4.shen@nokia.com>

Reviewed by Andreas Kling.
Expand Down

0 comments on commit 1fed608

Please sign in to comment.