Remove support for "magic" iframe
https://bugs.webkit.org/show_bug.cgi?id=81590
Reviewed by Eric Seidel.
Source/WebCore:
This patch removes support for "magic" iframe, which previously allowed
an iframe to be transfered from one document to another without
reloading the iframe. The idea behind this feature was to let sites
create "pop out" windows that could outlive their parents by
transfering state to these windows via these magic iframes.
Unforuntately, this feature was never implemented by other browsers and
has been the source of a series of security vulnerabilities. Although
we have fixed each vulnerability as it has been discovered, the feature
is still a complex corner case that isn't widely exercised on the web.
For that reason, it's likely to have more vulnerabilities in the
future.
I'm not aware of any web sites that use this feature anymore. There
were a handful of them, but we appear to have been successful in
evangalizing them to move away from "magic" iframe.
(WebCore::Document::adoptNode):
- html/HTMLFrameElementBase.cpp:
(WebCore):
(WebCore::HTMLFrameElementBase::HTMLFrameElementBase):
(WebCore::HTMLFrameElementBase::insertedIntoDocument):
- html/HTMLFrameElementBase.h:
(HTMLFrameElementBase):
- loader/DocumentLoader.cpp:
(WebCore):
(DocumentLoader):
(WebCore::EmptyFrameLoaderClient::createFrame):
(WebCore):
(FrameLoader):
- loader/FrameLoaderClient.h:
(FrameLoaderClient):
- loader/ResourceLoadNotifier.cpp:
(WebCore):
- loader/ResourceLoadNotifier.h:
(ResourceLoadNotifier):
(WebCore):
(Frame):
Source/WebKit/blackberry:
Remove FrameLoaderClient methods that no longer exist.
- WebCoreSupport/FrameLoaderClientBlackBerry.cpp:
(WebCore):
- WebCoreSupport/FrameLoaderClientBlackBerry.h:
(FrameLoaderClientBlackBerry):
(WebCore::FrameLoaderClientBlackBerry::didDetectXSS):
Source/WebKit/chromium:
Remove FrameLoaderClient methods that no longer exist.
(WebFrameClient):
- src/FrameLoaderClientImpl.cpp:
(WebKit):
- src/FrameLoaderClientImpl.h:
(FrameLoaderClientImpl):
Source/WebKit/efl:
Remove FrameLoaderClient methods that no longer exist.
- WebCoreSupport/FrameLoaderClientEfl.cpp:
(WebCore):
- WebCoreSupport/FrameLoaderClientEfl.h:
(FrameLoaderClientEfl):
Source/WebKit/gtk:
Remove FrameLoaderClient methods that no longer exist.
- WebCoreSupport/FrameLoaderClientGtk.cpp:
(WebKit):
- WebCoreSupport/FrameLoaderClientGtk.h:
(FrameLoaderClient):
Source/WebKit/mac:
Remove FrameLoaderClient methods that no longer exist.
- WebCoreSupport/WebFrameLoaderClient.h:
- WebCoreSupport/WebFrameLoaderClient.mm:
Source/WebKit/qt:
Remove FrameLoaderClient methods that no longer exist.
- WebCoreSupport/FrameLoaderClientQt.cpp:
(WebCore):
- WebCoreSupport/FrameLoaderClientQt.h:
(FrameLoaderClientQt):
Source/WebKit/win:
Remove FrameLoaderClient methods that no longer exist.
- WebCoreSupport/WebFrameLoaderClient.cpp:
- WebCoreSupport/WebFrameLoaderClient.h:
(WebFrameLoaderClient):
Source/WebKit/wince:
Remove FrameLoaderClient methods that no longer exist.
- WebCoreSupport/FrameLoaderClientWinCE.cpp:
(WebKit):
- WebCoreSupport/FrameLoaderClientWinCE.h:
(FrameLoaderClientWinCE):
Source/WebKit/wx:
Remove FrameLoaderClient methods that no longer exist.
- WebKitSupport/FrameLoaderClientWx.cpp:
(WebCore):
- WebKitSupport/FrameLoaderClientWx.h:
(FrameLoaderClientWx):
Source/WebKit2:
Remove FrameLoaderClient methods that no longer exist.
- WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit):
- WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
LayoutTests:
Remove tests of magic iframe. These tests don't reall make sense to
keep without the feature.
- fast/frames/adopt-iframe-into-itself-expected.txt: Added.
- fast/frames/adopt-iframe-into-itself.html: Added.
- I've added a test about adopting an iframe into itself. We might
already have a test for this, but it covers a mistake I made in
an earlier iteration of this patch.
- fast/frames/iframe-reparenting-adopt-node-expected.txt: Removed.
- fast/frames/iframe-reparenting-adopt-node.html: Removed.
- fast/frames/iframe-reparenting-embed-elements-expected.txt: Removed.
- fast/frames/iframe-reparenting-embed-elements.html: Removed.
- fast/frames/iframe-reparenting-expected.txt: Removed.
- fast/frames/iframe-reparenting-fail-load-expected.txt: Removed.
- fast/frames/iframe-reparenting-fail-load.html: Removed.
- fast/frames/iframe-reparenting-new-page-expected.txt: Removed.
- fast/frames/iframe-reparenting-new-page.html: Removed.
- fast/frames/iframe-reparenting-plugins-expected.txt: Removed.
- fast/frames/iframe-reparenting-plugins.html: Removed.
- fast/frames/iframe-reparenting.html: Removed.
- fast/frames/resources/iframe-reparenting-adopt-node-iframe-content.html: Removed.
- fast/frames/resources/iframe-reparenting-adopt-node-new-page.html: Removed.
- fast/frames/resources/iframe-reparenting-embed-frame1.html: Removed.
- fast/frames/resources/iframe-reparenting-embed-iframe.html: Removed.
- fast/frames/resources/iframe-reparenting-frame1.html: Removed.
- fast/frames/resources/iframe-reparenting-frame2.html: Removed.
- fast/frames/resources/iframe-reparenting-iframe-content.html: Removed.
- fast/frames/resources/iframe-reparenting-new-page-1.html: Removed.
- fast/frames/resources/iframe-reparenting-new-page-2.html: Removed.
- fast/frames/resources/iframe-reparenting-new-page-iframe.html: Removed.
- fast/frames/resources/iframe-reparenting-plugins-iframe-content.html: Removed.
- fast/frames/resources/iframe-reparenting-plugins-new-page.html: Removed.
- fast/frames/script-tests/iframe-reparenting-new-page.js: Removed.