summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/WebKit/Source/web/FrameLoaderClientImpl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/WebKit/Source/web/FrameLoaderClientImpl.cpp')
-rw-r--r--chromium/third_party/WebKit/Source/web/FrameLoaderClientImpl.cpp404
1 files changed, 199 insertions, 205 deletions
diff --git a/chromium/third_party/WebKit/Source/web/FrameLoaderClientImpl.cpp b/chromium/third_party/WebKit/Source/web/FrameLoaderClientImpl.cpp
index d61ccfbdb14..97a53af5987 100644
--- a/chromium/third_party/WebKit/Source/web/FrameLoaderClientImpl.cpp
+++ b/chromium/third_party/WebKit/Source/web/FrameLoaderClientImpl.cpp
@@ -30,53 +30,33 @@
*/
#include "config.h"
-#include "FrameLoaderClientImpl.h"
-
-#include "HTMLNames.h"
-#include "RuntimeEnabledFeatures.h"
-#include "WebAutofillClient.h"
-#include "WebCachedURLRequest.h"
-#include "WebDOMEvent.h"
-#include "WebDataSourceImpl.h"
-#include "WebDevToolsAgentPrivate.h"
-#include "WebDocument.h"
-#include "WebFormElement.h"
-#include "WebFrameClient.h"
-#include "WebFrameImpl.h"
-#include "WebNode.h"
-#include "WebPermissionClient.h"
-#include "WebPlugin.h"
-#include "WebPluginContainerImpl.h"
-#include "WebPluginLoadObserver.h"
-#include "WebPluginParams.h"
-#include "WebSecurityOrigin.h"
-#include "WebViewClient.h"
-#include "WebViewImpl.h"
+#include "web/FrameLoaderClientImpl.h"
+
#include "bindings/v8/ScriptController.h"
+#include "core/HTMLNames.h"
#include "core/dom/Document.h"
#include "core/dom/DocumentFullscreen.h"
#include "core/events/MessageEvent.h"
#include "core/events/MouseEvent.h"
-#include "core/dom/WheelController.h"
-#include "core/history/HistoryItem.h"
+#include "core/frame/FrameView.h"
+#include "core/frame/Settings.h"
#include "core/html/HTMLAppletElement.h"
-#include "core/html/HTMLFormElement.h" // needed by core/loader/FormState.h
#include "core/loader/DocumentLoader.h"
-#include "core/loader/FormState.h"
#include "core/loader/FrameLoadRequest.h"
#include "core/loader/FrameLoader.h"
-#include "core/loader/ProgressTracker.h"
+#include "core/loader/HistoryItem.h"
#include "core/page/Chrome.h"
#include "core/page/EventHandler.h"
-#include "core/frame/FrameView.h"
#include "core/page/Page.h"
-#include "core/frame/Settings.h"
#include "core/page/WindowFeatures.h"
-#include "core/platform/mediastream/RTCPeerConnectionHandler.h"
#include "core/rendering/HitTestResult.h"
+#include "modules/device_light/DeviceLightController.h"
#include "modules/device_orientation/DeviceMotionController.h"
#include "modules/device_orientation/DeviceOrientationController.h"
+#include "modules/gamepad/NavigatorGamepad.h"
+#include "modules/serviceworkers/NavigatorServiceWorker.h"
#include "platform/MIMETypeRegistry.h"
+#include "platform/RuntimeEnabledFeatures.h"
#include "platform/UserGestureIndicator.h"
#include "platform/exported/WrappedResourceRequest.h"
#include "platform/exported/WrappedResourceResponse.h"
@@ -84,13 +64,34 @@
#include "platform/network/SocketStreamHandleInternal.h"
#include "platform/plugins/PluginData.h"
#include "public/platform/Platform.h"
+#include "public/platform/WebApplicationCacheHost.h"
#include "public/platform/WebMimeRegistry.h"
+#include "public/platform/WebRTCPeerConnectionHandler.h"
#include "public/platform/WebServiceWorkerProvider.h"
#include "public/platform/WebServiceWorkerProviderClient.h"
#include "public/platform/WebSocketStreamHandle.h"
#include "public/platform/WebURL.h"
#include "public/platform/WebURLError.h"
#include "public/platform/WebVector.h"
+#include "public/web/WebAutofillClient.h"
+#include "public/web/WebCachedURLRequest.h"
+#include "public/web/WebDOMEvent.h"
+#include "public/web/WebDocument.h"
+#include "public/web/WebFormElement.h"
+#include "public/web/WebFrameClient.h"
+#include "public/web/WebNode.h"
+#include "public/web/WebPermissionClient.h"
+#include "public/web/WebPlugin.h"
+#include "public/web/WebPluginParams.h"
+#include "public/web/WebSecurityOrigin.h"
+#include "public/web/WebViewClient.h"
+#include "web/SharedWorkerRepositoryClientImpl.h"
+#include "web/WebDataSourceImpl.h"
+#include "web/WebDevToolsAgentPrivate.h"
+#include "web/WebLocalFrameImpl.h"
+#include "web/WebPluginContainerImpl.h"
+#include "web/WebPluginLoadObserver.h"
+#include "web/WebViewImpl.h"
#include "wtf/StringExtras.h"
#include "wtf/text/CString.h"
#include "wtf/text/WTFString.h"
@@ -100,7 +101,7 @@ using namespace WebCore;
namespace blink {
-FrameLoaderClientImpl::FrameLoaderClientImpl(WebFrameImpl* frame)
+FrameLoaderClientImpl::FrameLoaderClientImpl(WebLocalFrameImpl* frame)
: m_webFrame(frame)
{
}
@@ -109,28 +110,20 @@ FrameLoaderClientImpl::~FrameLoaderClientImpl()
{
}
-void FrameLoaderClientImpl::frameLoaderDestroyed()
-{
- // When the WebFrame was created, it had an extra reference given to it on
- // behalf of the Frame. Since the WebFrame owns us, this extra ref also
- // serves to keep us alive until the FrameLoader is done with us. The
- // FrameLoader calls this method when it's going away. Therefore, we balance
- // out that extra reference, which may cause 'this' to be deleted.
- ASSERT(!m_webFrame->frame());
- m_webFrame->deref();
-}
-
-void FrameLoaderClientImpl::dispatchDidClearWindowObjectInWorld(DOMWrapperWorld*)
+void FrameLoaderClientImpl::dispatchDidClearWindowObjectInMainWorld()
{
if (m_webFrame->client()) {
m_webFrame->client()->didClearWindowObject(m_webFrame);
Document* document = m_webFrame->frame()->document();
if (document) {
- WheelController::from(document);
- if (RuntimeEnabledFeatures::deviceMotionEnabled())
- DeviceMotionController::from(document);
- if (RuntimeEnabledFeatures::deviceOrientationEnabled())
- DeviceOrientationController::from(document);
+ DeviceMotionController::from(*document);
+ DeviceOrientationController::from(*document);
+ if (RuntimeEnabledFeatures::deviceLightEnabled())
+ DeviceLightController::from(*document);
+ if (RuntimeEnabledFeatures::gamepadEnabled())
+ NavigatorGamepad::from(*document);
+ if (RuntimeEnabledFeatures::serviceWorkerEnabled())
+ NavigatorServiceWorker::from(*document);
}
}
}
@@ -141,12 +134,6 @@ void FrameLoaderClientImpl::documentElementAvailable()
m_webFrame->client()->didCreateDocumentElement(m_webFrame);
}
-void FrameLoaderClientImpl::didExhaustMemoryAvailableForScript()
-{
- if (m_webFrame->client())
- m_webFrame->client()->didExhaustMemoryAvailableForScript(m_webFrame);
-}
-
void FrameLoaderClientImpl::didCreateScriptContext(v8::Handle<v8::Context> context, int extensionGroup, int worldId)
{
WebViewImpl* webview = m_webFrame->viewImpl();
@@ -167,11 +154,7 @@ bool FrameLoaderClientImpl::allowScriptExtension(const String& extensionName,
int worldId)
{
if (m_webFrame->permissionClient())
- return m_webFrame->permissionClient()->allowScriptExtension(m_webFrame, extensionName, extensionGroup, worldId);
-
- WebViewImpl* webview = m_webFrame->viewImpl();
- if (webview && webview->permissionClient())
- return webview->permissionClient()->allowScriptExtension(m_webFrame, extensionName, extensionGroup, worldId);
+ return m_webFrame->permissionClient()->allowScriptExtension(extensionName, extensionGroup, worldId);
return true;
}
@@ -182,14 +165,16 @@ void FrameLoaderClientImpl::didChangeScrollOffset()
m_webFrame->client()->didChangeScrollOffset(m_webFrame);
}
+void FrameLoaderClientImpl::didUpdateCurrentHistoryItem()
+{
+ if (m_webFrame->client())
+ m_webFrame->client()->didUpdateCurrentHistoryItem(m_webFrame);
+}
+
bool FrameLoaderClientImpl::allowScript(bool enabledPerSettings)
{
if (m_webFrame->permissionClient())
- return m_webFrame->permissionClient()->allowScript(m_webFrame, enabledPerSettings);
-
- WebViewImpl* webview = m_webFrame->viewImpl();
- if (webview && webview->permissionClient())
- return webview->permissionClient()->allowScript(m_webFrame, enabledPerSettings);
+ return m_webFrame->permissionClient()->allowScript(enabledPerSettings);
return enabledPerSettings;
}
@@ -197,11 +182,7 @@ bool FrameLoaderClientImpl::allowScript(bool enabledPerSettings)
bool FrameLoaderClientImpl::allowScriptFromSource(bool enabledPerSettings, const KURL& scriptURL)
{
if (m_webFrame->permissionClient())
- return m_webFrame->permissionClient()->allowScriptFromSource(m_webFrame, enabledPerSettings, scriptURL);
-
- WebViewImpl* webview = m_webFrame->viewImpl();
- if (webview && webview->permissionClient())
- return webview->permissionClient()->allowScriptFromSource(m_webFrame, enabledPerSettings, scriptURL);
+ return m_webFrame->permissionClient()->allowScriptFromSource(enabledPerSettings, scriptURL);
return enabledPerSettings;
}
@@ -209,11 +190,7 @@ bool FrameLoaderClientImpl::allowScriptFromSource(bool enabledPerSettings, const
bool FrameLoaderClientImpl::allowPlugins(bool enabledPerSettings)
{
if (m_webFrame->permissionClient())
- return m_webFrame->permissionClient()->allowPlugins(m_webFrame, enabledPerSettings);
-
- WebViewImpl* webview = m_webFrame->viewImpl();
- if (webview && webview->permissionClient())
- return webview->permissionClient()->allowPlugins(m_webFrame, enabledPerSettings);
+ return m_webFrame->permissionClient()->allowPlugins(enabledPerSettings);
return enabledPerSettings;
}
@@ -221,11 +198,7 @@ bool FrameLoaderClientImpl::allowPlugins(bool enabledPerSettings)
bool FrameLoaderClientImpl::allowImage(bool enabledPerSettings, const KURL& imageURL)
{
if (m_webFrame->permissionClient())
- return m_webFrame->permissionClient()->allowImage(m_webFrame, enabledPerSettings, imageURL);
-
- WebViewImpl* webview = m_webFrame->viewImpl();
- if (webview && webview->permissionClient())
- return webview->permissionClient()->allowImage(m_webFrame, enabledPerSettings, imageURL);
+ return m_webFrame->permissionClient()->allowImage(enabledPerSettings, imageURL);
return enabledPerSettings;
}
@@ -233,11 +206,7 @@ bool FrameLoaderClientImpl::allowImage(bool enabledPerSettings, const KURL& imag
bool FrameLoaderClientImpl::allowDisplayingInsecureContent(bool enabledPerSettings, SecurityOrigin* context, const KURL& url)
{
if (m_webFrame->permissionClient())
- return m_webFrame->permissionClient()->allowDisplayingInsecureContent(m_webFrame, enabledPerSettings, WebSecurityOrigin(context), WebURL(url));
-
- WebViewImpl* webview = m_webFrame->viewImpl();
- if (webview && webview->permissionClient())
- return webview->permissionClient()->allowDisplayingInsecureContent(m_webFrame, enabledPerSettings, WebSecurityOrigin(context), WebURL(url));
+ return m_webFrame->permissionClient()->allowDisplayingInsecureContent(enabledPerSettings, WebSecurityOrigin(context), WebURL(url));
return enabledPerSettings;
}
@@ -245,11 +214,7 @@ bool FrameLoaderClientImpl::allowDisplayingInsecureContent(bool enabledPerSettin
bool FrameLoaderClientImpl::allowRunningInsecureContent(bool enabledPerSettings, SecurityOrigin* context, const KURL& url)
{
if (m_webFrame->permissionClient())
- return m_webFrame->permissionClient()->allowRunningInsecureContent(m_webFrame, enabledPerSettings, WebSecurityOrigin(context), WebURL(url));
-
- WebViewImpl* webview = m_webFrame->viewImpl();
- if (webview && webview->permissionClient())
- return webview->permissionClient()->allowRunningInsecureContent(m_webFrame, enabledPerSettings, WebSecurityOrigin(context), WebURL(url));
+ return m_webFrame->permissionClient()->allowRunningInsecureContent(enabledPerSettings, WebSecurityOrigin(context), WebURL(url));
return enabledPerSettings;
}
@@ -257,21 +222,13 @@ bool FrameLoaderClientImpl::allowRunningInsecureContent(bool enabledPerSettings,
void FrameLoaderClientImpl::didNotAllowScript()
{
if (m_webFrame->permissionClient())
- m_webFrame->permissionClient()->didNotAllowScript(m_webFrame);
-
- WebViewImpl* webview = m_webFrame->viewImpl();
- if (webview && webview->permissionClient())
- webview->permissionClient()->didNotAllowScript(m_webFrame);
+ m_webFrame->permissionClient()->didNotAllowScript();
}
void FrameLoaderClientImpl::didNotAllowPlugins()
{
if (m_webFrame->permissionClient())
- m_webFrame->permissionClient()->didNotAllowPlugins(m_webFrame);
-
- WebViewImpl* webview = m_webFrame->viewImpl();
- if (webview && webview->permissionClient())
- webview->permissionClient()->didNotAllowPlugins(m_webFrame);
+ m_webFrame->permissionClient()->didNotAllowPlugins();
}
@@ -280,32 +237,67 @@ bool FrameLoaderClientImpl::hasWebView() const
return m_webFrame->viewImpl();
}
-bool FrameLoaderClientImpl::hasFrameView() const
+Frame* FrameLoaderClientImpl::opener() const
{
- // The Mac port has this notion of a WebFrameView, which seems to be
- // some wrapper around an NSView. Since our equivalent is HWND, I guess
- // we have a "frameview" whenever we have the toplevel HWND.
- return m_webFrame->viewImpl();
+ return toWebCoreFrame(m_webFrame->opener());
}
-void FrameLoaderClientImpl::detachedFromParent()
+void FrameLoaderClientImpl::setOpener(Frame* opener)
+{
+ // FIXME: Temporary hack to stage converting locations that really should be Frame.
+ m_webFrame->setOpener(WebLocalFrameImpl::fromFrame(toLocalFrame(opener)));
+}
+
+Frame* FrameLoaderClientImpl::parent() const
+{
+ return toWebCoreFrame(m_webFrame->parent());
+}
+
+Frame* FrameLoaderClientImpl::top() const
+{
+ return toWebCoreFrame(m_webFrame->top());
+}
+
+Frame* FrameLoaderClientImpl::previousSibling() const
+{
+ return toWebCoreFrame(m_webFrame->previousSibling());
+}
+
+Frame* FrameLoaderClientImpl::nextSibling() const
+{
+ return toWebCoreFrame(m_webFrame->nextSibling());
+}
+
+Frame* FrameLoaderClientImpl::firstChild() const
{
- // Close down the proxy. The purpose of this change is to make the
- // call to ScriptController::clearWindowShell a no-op when called from
- // Frame::pageDestroyed. Without this change, this call to clearWindowShell
- // will cause a crash. If you remove/modify this, just ensure that you can
- // go to a page and then navigate to a new page without getting any asserts
- // or crashes.
- m_webFrame->frame()->script().clearForClose();
+ return toWebCoreFrame(m_webFrame->firstChild());
+}
+Frame* FrameLoaderClientImpl::lastChild() const
+{
+ return toWebCoreFrame(m_webFrame->lastChild());
+}
+
+void FrameLoaderClientImpl::detachedFromParent()
+{
// Alert the client that the frame is being detached. This is the last
// chance we have to communicate with the client.
- if (m_webFrame->client())
- m_webFrame->client()->frameDetached(m_webFrame);
+ RefPtr<WebLocalFrameImpl> protector(m_webFrame);
+
+ WebFrameClient* client = m_webFrame->client();
+ if (!client)
+ return;
+
+ m_webFrame->willDetachParent();
- // Stop communicating with the WebFrameClient at this point since we are no
- // longer associated with the Page.
+ // Signal that no further communication with WebFrameClient should take
+ // place at this point since we are no longer associated with the Page.
m_webFrame->setClient(0);
+
+ client->frameDetached(m_webFrame);
+ // Clear our reference to WebCore::LocalFrame at the very end, in case the client
+ // refers to it.
+ m_webFrame->setWebCoreFrame(nullptr);
}
void FrameLoaderClientImpl::dispatchWillRequestAfterPreconnect(ResourceRequest& request)
@@ -338,11 +330,11 @@ void FrameLoaderClientImpl::dispatchDidReceiveResponse(DocumentLoader* loader,
m_webFrame->client()->didReceiveResponse(m_webFrame, identifier, webresp);
}
}
-void FrameLoaderClientImpl::dispatchDidChangeResourcePriority(unsigned long identifier,
- ResourceLoadPriority priority)
+
+void FrameLoaderClientImpl::dispatchDidChangeResourcePriority(unsigned long identifier, ResourceLoadPriority priority, int intraPriorityValue)
{
if (m_webFrame->client())
- m_webFrame->client()->didChangeResourcePriority(m_webFrame, identifier, static_cast<blink::WebURLRequest::Priority>(priority));
+ m_webFrame->client()->didChangeResourcePriority(m_webFrame, identifier, static_cast<blink::WebURLRequest::Priority>(priority), intraPriorityValue);
}
// Called when a particular resource load completes
@@ -375,17 +367,14 @@ void FrameLoaderClientImpl::dispatchDidReceiveServerRedirectForProvisionalLoad()
{
if (m_webFrame->client())
m_webFrame->client()->didReceiveServerRedirectForProvisionalLoad(m_webFrame);
- m_webFrame->frame()->page()->historyController().removeChildrenForRedirect(m_webFrame->frame());
}
-void FrameLoaderClientImpl::dispatchDidNavigateWithinPage(NavigationHistoryPolicy navigationHistoryPolicy, HistoryItem* item)
+void FrameLoaderClientImpl::dispatchDidNavigateWithinPage(HistoryItem* item, HistoryCommitType commitType)
{
- bool shouldCreateHistoryEntry = navigationHistoryPolicy == NavigationCreatedHistoryEntry;
- if (shouldCreateHistoryEntry)
- m_webFrame->frame()->page()->historyController().updateBackForwardListForFragmentScroll(m_webFrame->frame(), item);
+ bool shouldCreateHistoryEntry = commitType == StandardCommit;
m_webFrame->viewImpl()->didCommitLoad(shouldCreateHistoryEntry, true);
if (m_webFrame->client())
- m_webFrame->client()->didNavigateWithinPage(m_webFrame, shouldCreateHistoryEntry);
+ m_webFrame->client()->didNavigateWithinPage(m_webFrame, WebHistoryItem(item), static_cast<WebHistoryCommitType>(commitType));
}
void FrameLoaderClientImpl::dispatchWillClose()
@@ -412,18 +401,17 @@ void FrameLoaderClientImpl::dispatchDidChangeIcons(WebCore::IconType type)
m_webFrame->client()->didChangeIcon(m_webFrame, static_cast<WebIconURL::Type>(type));
}
-void FrameLoaderClientImpl::dispatchDidCommitLoad(Frame* frame, HistoryItem* item, NavigationHistoryPolicy navigationHistoryPolicy)
+void FrameLoaderClientImpl::dispatchDidCommitLoad(LocalFrame* frame, HistoryItem* item, HistoryCommitType commitType)
{
- m_webFrame->frame()->page()->historyController().updateForCommit(frame, item);
- m_webFrame->viewImpl()->didCommitLoad(navigationHistoryPolicy == NavigationCreatedHistoryEntry, false);
+ m_webFrame->viewImpl()->didCommitLoad(commitType == StandardCommit, false);
if (m_webFrame->client())
- m_webFrame->client()->didCommitProvisionalLoad(m_webFrame, navigationHistoryPolicy == NavigationCreatedHistoryEntry);
+ m_webFrame->client()->didCommitProvisionalLoad(m_webFrame, WebHistoryItem(item), static_cast<WebHistoryCommitType>(commitType));
}
void FrameLoaderClientImpl::dispatchDidFailProvisionalLoad(
const ResourceError& error)
{
- OwnPtr<WebPluginLoadObserver> observer = pluginLoadObserver();
+ OwnPtr<WebPluginLoadObserver> observer = pluginLoadObserver(m_webFrame->frame()->loader().provisionalDocumentLoader());
m_webFrame->didFail(error, true);
if (observer)
observer->didFailLoading(error);
@@ -431,7 +419,7 @@ void FrameLoaderClientImpl::dispatchDidFailProvisionalLoad(
void FrameLoaderClientImpl::dispatchDidFailLoad(const ResourceError& error)
{
- OwnPtr<WebPluginLoadObserver> observer = pluginLoadObserver();
+ OwnPtr<WebPluginLoadObserver> observer = pluginLoadObserver(m_webFrame->frame()->loader().documentLoader());
m_webFrame->didFail(error, false);
if (observer)
observer->didFailLoading(error);
@@ -443,7 +431,7 @@ void FrameLoaderClientImpl::dispatchDidFailLoad(const ResourceError& error)
void FrameLoaderClientImpl::dispatchDidFinishLoad()
{
- OwnPtr<WebPluginLoadObserver> observer = pluginLoadObserver();
+ OwnPtr<WebPluginLoadObserver> observer = pluginLoadObserver(m_webFrame->frame()->loader().documentLoader());
if (m_webFrame->client())
m_webFrame->client()->didFinishLoad(m_webFrame);
@@ -462,6 +450,12 @@ void FrameLoaderClientImpl::dispatchDidFirstVisuallyNonEmptyLayout()
m_webFrame->client()->didFirstVisuallyNonEmptyLayout(m_webFrame);
}
+void FrameLoaderClientImpl::dispatchDidChangeThemeColor()
+{
+ if (m_webFrame->client())
+ m_webFrame->client()->didChangeThemeColor();
+}
+
NavigationPolicy FrameLoaderClientImpl::decidePolicyForNavigation(const ResourceRequest& request, DocumentLoader* loader, NavigationPolicy policy)
{
if (!m_webFrame->client())
@@ -480,46 +474,41 @@ void FrameLoaderClientImpl::dispatchWillRequestResource(FetchRequest* request)
}
}
-void FrameLoaderClientImpl::dispatchWillSendSubmitEvent(PassRefPtr<FormState> prpFormState)
+void FrameLoaderClientImpl::dispatchWillSendSubmitEvent(HTMLFormElement* form)
{
if (m_webFrame->client())
- m_webFrame->client()->willSendSubmitEvent(m_webFrame, WebFormElement(prpFormState->form()));
+ m_webFrame->client()->willSendSubmitEvent(m_webFrame, WebFormElement(form));
}
-void FrameLoaderClientImpl::dispatchWillSubmitForm(PassRefPtr<FormState> formState)
+void FrameLoaderClientImpl::dispatchWillSubmitForm(HTMLFormElement* form)
{
if (m_webFrame->client())
- m_webFrame->client()->willSubmitForm(m_webFrame, WebFormElement(formState->form()));
+ m_webFrame->client()->willSubmitForm(m_webFrame, WebFormElement(form));
}
-void FrameLoaderClientImpl::postProgressStartedNotification()
+void FrameLoaderClientImpl::didStartLoading(LoadStartType loadStartType)
{
- WebViewImpl* webview = m_webFrame->viewImpl();
- if (webview && webview->client())
- webview->client()->didStartLoading();
+ if (m_webFrame->client())
+ m_webFrame->client()->didStartLoading(loadStartType == NavigationToDifferentDocument);
}
-void FrameLoaderClientImpl::postProgressEstimateChangedNotification()
+void FrameLoaderClientImpl::progressEstimateChanged(double progressEstimate)
{
- WebViewImpl* webview = m_webFrame->viewImpl();
- if (webview && webview->client()) {
- webview->client()->didChangeLoadProgress(
- m_webFrame, m_webFrame->frame()->page()->progress().estimatedProgress());
- }
+ if (m_webFrame->client())
+ m_webFrame->client()->didChangeLoadProgress(progressEstimate);
}
-void FrameLoaderClientImpl::postProgressFinishedNotification()
+void FrameLoaderClientImpl::didStopLoading()
{
- // FIXME: why might the webview be null? http://b/1234461
- WebViewImpl* webview = m_webFrame->viewImpl();
- if (webview && webview->client())
- webview->client()->didStopLoading();
+ if (m_webFrame->client())
+ m_webFrame->client()->didStopLoading();
}
void FrameLoaderClientImpl::loadURLExternally(const ResourceRequest& request, NavigationPolicy policy, const String& suggestedName)
{
if (m_webFrame->client()) {
- DocumentFullscreen::webkitCancelFullScreen(m_webFrame->frame()->document());
+ ASSERT(m_webFrame->frame()->document());
+ DocumentFullscreen::webkitCancelFullScreen(*m_webFrame->frame()->document());
WrappedResourceRequest webreq(request);
m_webFrame->client()->loadURLExternally(
m_webFrame, webreq, static_cast<WebNavigationPolicy>(policy), suggestedName);
@@ -547,12 +536,6 @@ void FrameLoaderClientImpl::didAccessInitialDocument()
m_webFrame->client()->didAccessInitialDocument(m_webFrame);
}
-void FrameLoaderClientImpl::didDisownOpener()
-{
- if (m_webFrame->client())
- m_webFrame->client()->didDisownOpener(m_webFrame);
-}
-
void FrameLoaderClientImpl::didDisplayInsecureContent()
{
if (m_webFrame->client())
@@ -583,11 +566,9 @@ void FrameLoaderClientImpl::selectorMatchChanged(const Vector<String>& addedSele
client->didMatchCSS(m_webFrame, WebVector<WebString>(addedSelectors), WebVector<WebString>(removedSelectors));
}
-PassRefPtr<DocumentLoader> FrameLoaderClientImpl::createDocumentLoader(
- const ResourceRequest& request,
- const SubstituteData& data)
+PassRefPtr<DocumentLoader> FrameLoaderClientImpl::createDocumentLoader(LocalFrame* frame, const ResourceRequest& request, const SubstituteData& data)
{
- RefPtr<WebDataSourceImpl> ds = WebDataSourceImpl::create(request, data);
+ RefPtr<WebDataSourceImpl> ds = WebDataSourceImpl::create(frame, request, data);
if (m_webFrame->client())
m_webFrame->client()->didCreateDataSource(m_webFrame, ds.get());
return ds.release();
@@ -599,7 +580,7 @@ String FrameLoaderClientImpl::userAgent(const KURL& url)
if (!override.isEmpty())
return override;
- return blink::Platform::current()->userAgent(url);
+ return blink::Platform::current()->userAgent();
}
String FrameLoaderClientImpl::doNotTrackValue()
@@ -617,10 +598,10 @@ void FrameLoaderClientImpl::transitionToCommittedForNewPage()
m_webFrame->createFrameView();
}
-PassRefPtr<Frame> FrameLoaderClientImpl::createFrame(
+PassRefPtr<LocalFrame> FrameLoaderClientImpl::createFrame(
const KURL& url,
- const String& name,
- const String& referrer,
+ const AtomicString& name,
+ const Referrer& referrer,
HTMLFrameOwnerElement* ownerElement)
{
FrameLoadRequest frameRequest(m_webFrame->frame()->document(),
@@ -628,17 +609,25 @@ PassRefPtr<Frame> FrameLoaderClientImpl::createFrame(
return m_webFrame->createChildFrame(frameRequest, ownerElement);
}
+bool FrameLoaderClientImpl::canCreatePluginWithoutRenderer(const String& mimeType) const
+{
+ if (!m_webFrame->client())
+ return false;
+
+ return m_webFrame->client()->canCreatePluginWithoutRenderer(mimeType);
+}
+
PassRefPtr<Widget> FrameLoaderClientImpl::createPlugin(
- const IntSize& size, // FIXME: how do we use this?
HTMLPlugInElement* element,
const KURL& url,
const Vector<String>& paramNames,
const Vector<String>& paramValues,
const String& mimeType,
- bool loadManually)
+ bool loadManually,
+ DetachedPluginPolicy policy)
{
if (!m_webFrame->client())
- return 0;
+ return nullptr;
WebPluginParams params;
params.url = url;
@@ -649,31 +638,29 @@ PassRefPtr<Widget> FrameLoaderClientImpl::createPlugin(
WebPlugin* webPlugin = m_webFrame->client()->createPlugin(m_webFrame, params);
if (!webPlugin)
- return 0;
+ return nullptr;
// The container takes ownership of the WebPlugin.
RefPtr<WebPluginContainerImpl> container =
WebPluginContainerImpl::create(element, webPlugin);
if (!webPlugin->initialize(container.get()))
- return 0;
+ return nullptr;
- // The element might have been removed during plugin initialization!
- if (!element->renderer())
- return 0;
+ if (policy != AllowDetachedPlugin && !element->renderer())
+ return nullptr;
return container;
}
PassRefPtr<Widget> FrameLoaderClientImpl::createJavaAppletWidget(
- const IntSize& size,
HTMLAppletElement* element,
const KURL& /* baseURL */,
const Vector<String>& paramNames,
const Vector<String>& paramValues)
{
- return createPlugin(size, element, KURL(), paramNames, paramValues,
- "application/x-java-applet", false);
+ return createPlugin(element, KURL(), paramNames, paramValues,
+ "application/x-java-applet", false, FailOnDetachedPlugin);
}
ObjectContentType FrameLoaderClientImpl::objectContentType(
@@ -719,17 +706,9 @@ ObjectContentType FrameLoaderClientImpl::objectContentType(
return ObjectContentNone;
}
-PassOwnPtr<WebPluginLoadObserver> FrameLoaderClientImpl::pluginLoadObserver()
+PassOwnPtr<WebPluginLoadObserver> FrameLoaderClientImpl::pluginLoadObserver(DocumentLoader* loader)
{
- WebDataSourceImpl* ds = WebDataSourceImpl::fromDocumentLoader(
- m_webFrame->frame()->loader().activeDocumentLoader());
- if (!ds) {
- // We can arrive here if a popstate event handler detaches this frame.
- // FIXME: Remove this code once http://webkit.org/b/36202 is fixed.
- ASSERT(!m_webFrame->frame()->page());
- return nullptr;
- }
- return ds->releasePluginLoadObserver();
+ return WebDataSourceImpl::fromDocumentLoader(loader)->releasePluginLoadObserver();
}
WebCookieJar* FrameLoaderClientImpl::cookieJar() const
@@ -745,9 +724,9 @@ bool FrameLoaderClientImpl::willCheckAndDispatchMessageEvent(
if (!m_webFrame->client())
return false;
- WebFrame* source = 0;
+ WebLocalFrame* source = 0;
if (event && event->source() && event->source()->toDOMWindow() && event->source()->toDOMWindow()->document())
- source = WebFrameImpl::fromFrame(event->source()->toDOMWindow()->document()->frame());
+ source = WebLocalFrameImpl::fromFrame(event->source()->toDOMWindow()->document()->frame());
return m_webFrame->client()->willCheckAndDispatchMessageEvent(
source, m_webFrame, WebSecurityOrigin(target), WebDOMMessageEvent(event));
}
@@ -764,15 +743,20 @@ void FrameLoaderClientImpl::dispatchWillOpenSocketStream(SocketStreamHandle* han
m_webFrame->client()->willOpenSocketStream(SocketStreamHandleInternal::toWebSocketStreamHandle(handle));
}
-void FrameLoaderClientImpl::dispatchWillStartUsingPeerConnectionHandler(RTCPeerConnectionHandler* handler)
+void FrameLoaderClientImpl::dispatchWillOpenWebSocket(blink::WebSocketHandle* handle)
+{
+ m_webFrame->client()->willOpenWebSocket(handle);
+}
+
+void FrameLoaderClientImpl::dispatchWillStartUsingPeerConnectionHandler(blink::WebRTCPeerConnectionHandler* handler)
{
- m_webFrame->client()->willStartUsingPeerConnectionHandler(webFrame(), RTCPeerConnectionHandler::toWebRTCPeerConnectionHandler(handler));
+ m_webFrame->client()->willStartUsingPeerConnectionHandler(webFrame(), handler);
}
-void FrameLoaderClientImpl::didRequestAutocomplete(PassRefPtr<FormState> formState)
+void FrameLoaderClientImpl::didRequestAutocomplete(HTMLFormElement* form)
{
if (m_webFrame->viewImpl() && m_webFrame->viewImpl()->autofillClient())
- m_webFrame->viewImpl()->autofillClient()->didRequestAutocomplete(m_webFrame, WebFormElement(formState->form()));
+ m_webFrame->viewImpl()->autofillClient()->didRequestAutocomplete(WebFormElement(form));
}
bool FrameLoaderClientImpl::allowWebGL(bool enabledPerSettings)
@@ -789,28 +773,32 @@ void FrameLoaderClientImpl::didLoseWebGLContext(int arbRobustnessContextLostReas
m_webFrame->client()->didLoseWebGLContext(m_webFrame, arbRobustnessContextLostReason);
}
-bool FrameLoaderClientImpl::allowWebGLDebugRendererInfo()
+void FrameLoaderClientImpl::dispatchWillInsertBody()
{
- if (m_webFrame->permissionClient())
- return m_webFrame->permissionClient()->allowWebGLDebugRendererInfo(m_webFrame);
+ if (m_webFrame->client())
+ m_webFrame->client()->willInsertBody(m_webFrame);
- WebViewImpl* webview = m_webFrame->viewImpl();
- if (webview && webview->permissionClient())
- return webview->permissionClient()->allowWebGLDebugRendererInfo(m_webFrame);
- return false;
+ if (m_webFrame->viewImpl())
+ m_webFrame->viewImpl()->willInsertBody(m_webFrame);
}
-void FrameLoaderClientImpl::dispatchWillInsertBody()
+PassOwnPtr<WebServiceWorkerProvider> FrameLoaderClientImpl::createServiceWorkerProvider()
{
- if (m_webFrame->client())
- m_webFrame->client()->willInsertBody(m_webFrame);
+ if (!m_webFrame->client())
+ return nullptr;
+ return adoptPtr(m_webFrame->client()->createServiceWorkerProvider(m_webFrame));
}
-PassOwnPtr<WebServiceWorkerProvider> FrameLoaderClientImpl::createServiceWorkerProvider(PassOwnPtr<WebServiceWorkerProviderClient> client)
+SharedWorkerRepositoryClient* FrameLoaderClientImpl::sharedWorkerRepositoryClient()
+{
+ return m_webFrame->sharedWorkerRepositoryClient();
+}
+
+PassOwnPtr<WebApplicationCacheHost> FrameLoaderClientImpl::createApplicationCacheHost(WebApplicationCacheHostClient* client)
{
if (!m_webFrame->client())
return nullptr;
- return adoptPtr(m_webFrame->client()->createServiceWorkerProvider(m_webFrame, client.leakPtr()));
+ return adoptPtr(m_webFrame->client()->createApplicationCacheHost(m_webFrame, client));
}
void FrameLoaderClientImpl::didStopAllLoaders()
@@ -819,4 +807,10 @@ void FrameLoaderClientImpl::didStopAllLoaders()
m_webFrame->client()->didAbortLoading(m_webFrame);
}
+void FrameLoaderClientImpl::dispatchDidChangeManifest()
+{
+ if (m_webFrame->client())
+ m_webFrame->client()->didChangeManifest(m_webFrame);
+}
+
} // namespace blink