15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/* 25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2009, 2012 Google Inc. All rights reserved. 35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2011 Apple Inc. All rights reserved. 45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Redistribution and use in source and binary forms, with or without 65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * modification, are permitted provided that the following conditions are 75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * met: 85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * * Redistributions of source code must retain the above copyright 105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * notice, this list of conditions and the following disclaimer. 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * * Redistributions in binary form must reproduce the above 125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * copyright notice, this list of conditions and the following disclaimer 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * in the documentation and/or other materials provided with the 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * distribution. 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * * Neither the name of Google Inc. nor the names of its 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * contributors may be used to endorse or promote products derived from 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * this software without specific prior written permission. 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "config.h" 33f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include "web/FrameLoaderClientImpl.h" 345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 35197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "bindings/core/v8/ScriptController.h" 3676c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)#include "core/HTMLNames.h" 37c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)#include "core/dom/Document.h" 389e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)#include "core/dom/Fullscreen.h" 3906f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)#include "core/events/MessageEvent.h" 4006f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)#include "core/events/MouseEvent.h" 41f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include "core/frame/FrameView.h" 42f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include "core/frame/Settings.h" 43c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)#include "core/html/HTMLAppletElement.h" 44c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)#include "core/loader/DocumentLoader.h" 45c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)#include "core/loader/FrameLoadRequest.h" 46c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)#include "core/loader/FrameLoader.h" 4709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)#include "core/loader/HistoryItem.h" 48c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)#include "core/page/Chrome.h" 49c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)#include "core/page/EventHandler.h" 50c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)#include "core/page/Page.h" 5153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/page/WindowFeatures.h" 52c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)#include "core/rendering/HitTestResult.h" 53d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)#include "modules/device_light/DeviceLightController.h" 54c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)#include "modules/device_orientation/DeviceMotionController.h" 5551b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)#include "modules/device_orientation/DeviceOrientationController.h" 5607a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch#include "modules/gamepad/NavigatorGamepad.h" 57323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)#include "modules/serviceworkers/NavigatorServiceWorker.h" 5851b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)#include "platform/MIMETypeRegistry.h" 5976c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)#include "platform/RuntimeEnabledFeatures.h" 601e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)#include "platform/UserGestureIndicator.h" 6119cde67944066db31e633d9e386f2aa9bf9fadb3Torne (Richard Coles)#include "platform/exported/WrappedResourceRequest.h" 6219cde67944066db31e633d9e386f2aa9bf9fadb3Torne (Richard Coles)#include "platform/exported/WrappedResourceResponse.h" 631e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)#include "platform/network/HTTPParsers.h" 641e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)#include "platform/network/SocketStreamHandleInternal.h" 6551b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)#include "platform/plugins/PluginData.h" 665267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#include "public/platform/Platform.h" 67d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#include "public/platform/WebApplicationCacheHost.h" 685267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#include "public/platform/WebMimeRegistry.h" 6909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)#include "public/platform/WebRTCPeerConnectionHandler.h" 701e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)#include "public/platform/WebServiceWorkerProvider.h" 711e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)#include "public/platform/WebServiceWorkerProviderClient.h" 725267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#include "public/platform/WebSocketStreamHandle.h" 735267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#include "public/platform/WebURL.h" 745267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#include "public/platform/WebURLError.h" 755267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#include "public/platform/WebVector.h" 76f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include "public/web/WebAutofillClient.h" 77f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include "public/web/WebCachedURLRequest.h" 78f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include "public/web/WebDOMEvent.h" 79f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include "public/web/WebDocument.h" 80f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include "public/web/WebFormElement.h" 81f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include "public/web/WebFrameClient.h" 82f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include "public/web/WebNode.h" 83f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include "public/web/WebPermissionClient.h" 84f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include "public/web/WebPlugin.h" 85f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include "public/web/WebPluginParams.h" 86f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include "public/web/WebSecurityOrigin.h" 87f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include "public/web/WebViewClient.h" 88f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include "web/SharedWorkerRepositoryClientImpl.h" 89f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include "web/WebDataSourceImpl.h" 90f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include "web/WebDevToolsAgentPrivate.h" 91f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include "web/WebLocalFrameImpl.h" 92f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include "web/WebPluginContainerImpl.h" 93f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include "web/WebPluginLoadObserver.h" 94f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include "web/WebViewImpl.h" 95591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch#include "wtf/StringExtras.h" 96591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch#include "wtf/text/CString.h" 97591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch#include "wtf/text/WTFString.h" 98c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)#include <v8.h> 995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10051b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)namespace blink { 1015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10210f88d5669dbd969c059d61ba09fa37dd72ac559Ben MurdochFrameLoaderClientImpl::FrameLoaderClientImpl(WebLocalFrameImpl* frame) 1035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) : m_webFrame(frame) 1045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)FrameLoaderClientImpl::~FrameLoaderClientImpl() 1085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 111323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)void FrameLoaderClientImpl::dispatchDidClearWindowObjectInMainWorld() 1125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 113c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) if (m_webFrame->client()) { 114323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) m_webFrame->client()->didClearWindowObject(m_webFrame); 1158abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) Document* document = m_webFrame->frame()->document(); 1168abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) if (document) { 117d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) DeviceMotionController::from(*document); 118d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) DeviceOrientationController::from(*document); 119d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) if (RuntimeEnabledFeatures::deviceLightEnabled()) 120d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) DeviceLightController::from(*document); 12107a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch if (RuntimeEnabledFeatures::gamepadEnabled()) 12207a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch NavigatorGamepad::from(*document); 123323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) if (RuntimeEnabledFeatures::serviceWorkerEnabled()) 124323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) NavigatorServiceWorker::from(*document); 1258abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) } 126c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) } 1275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void FrameLoaderClientImpl::documentElementAvailable() 1305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (m_webFrame->client()) 1325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_webFrame->client()->didCreateDocumentElement(m_webFrame); 1335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void FrameLoaderClientImpl::didCreateScriptContext(v8::Handle<v8::Context> context, int extensionGroup, int worldId) 1365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebViewImpl* webview = m_webFrame->viewImpl(); 1385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (webview->devToolsAgentPrivate()) 1395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) webview->devToolsAgentPrivate()->didCreateScriptContext(m_webFrame, worldId); 1405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (m_webFrame->client()) 1415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_webFrame->client()->didCreateScriptContext(m_webFrame, context, extensionGroup, worldId); 1425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void FrameLoaderClientImpl::willReleaseScriptContext(v8::Handle<v8::Context> context, int worldId) 1455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (m_webFrame->client()) 1475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_webFrame->client()->willReleaseScriptContext(m_webFrame, context, worldId); 1485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool FrameLoaderClientImpl::allowScriptExtension(const String& extensionName, 1515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) int extensionGroup, 1525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) int worldId) 1535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 15409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) if (m_webFrame->permissionClient()) 155a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch return m_webFrame->permissionClient()->allowScriptExtension(extensionName, extensionGroup, worldId); 1565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return true; 1585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void FrameLoaderClientImpl::didChangeScrollOffset() 1615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (m_webFrame->client()) 1635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_webFrame->client()->didChangeScrollOffset(m_webFrame); 1645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 166d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)void FrameLoaderClientImpl::didUpdateCurrentHistoryItem() 167d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){ 168d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) if (m_webFrame->client()) 169d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_webFrame->client()->didUpdateCurrentHistoryItem(m_webFrame); 170d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)} 171d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 172e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)void FrameLoaderClientImpl::didRemoveAllPendingStylesheet() 173e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles){ 174e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) WebViewImpl* webview = m_webFrame->viewImpl(); 175e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) if (webview) 176e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) webview->didRemoveAllPendingStylesheet(m_webFrame); 177e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)} 178e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) 1795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool FrameLoaderClientImpl::allowScript(bool enabledPerSettings) 1805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 18109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) if (m_webFrame->permissionClient()) 182a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch return m_webFrame->permissionClient()->allowScript(enabledPerSettings); 1835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return enabledPerSettings; 1855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool FrameLoaderClientImpl::allowScriptFromSource(bool enabledPerSettings, const KURL& scriptURL) 1885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 18909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) if (m_webFrame->permissionClient()) 190a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch return m_webFrame->permissionClient()->allowScriptFromSource(enabledPerSettings, scriptURL); 1915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return enabledPerSettings; 1935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool FrameLoaderClientImpl::allowPlugins(bool enabledPerSettings) 1965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 19709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) if (m_webFrame->permissionClient()) 198a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch return m_webFrame->permissionClient()->allowPlugins(enabledPerSettings); 1995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return enabledPerSettings; 2015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 2025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool FrameLoaderClientImpl::allowImage(bool enabledPerSettings, const KURL& imageURL) 2045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 20509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) if (m_webFrame->permissionClient()) 206a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch return m_webFrame->permissionClient()->allowImage(enabledPerSettings, imageURL); 2075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return enabledPerSettings; 2095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 2105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 211197021e6b966cfb06891637935ef33fff06433d1Ben Murdochbool FrameLoaderClientImpl::allowMedia(const KURL& mediaURL) 212197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch{ 213197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch if (m_webFrame->permissionClient()) 214197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch return m_webFrame->permissionClient()->allowMedia(mediaURL); 215197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 216197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch return true; 217197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch} 218197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 2195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool FrameLoaderClientImpl::allowDisplayingInsecureContent(bool enabledPerSettings, SecurityOrigin* context, const KURL& url) 2205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 22109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) if (m_webFrame->permissionClient()) 222a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch return m_webFrame->permissionClient()->allowDisplayingInsecureContent(enabledPerSettings, WebSecurityOrigin(context), WebURL(url)); 2235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return enabledPerSettings; 2255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 2265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool FrameLoaderClientImpl::allowRunningInsecureContent(bool enabledPerSettings, SecurityOrigin* context, const KURL& url) 2285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 22909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) if (m_webFrame->permissionClient()) 230a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch return m_webFrame->permissionClient()->allowRunningInsecureContent(enabledPerSettings, WebSecurityOrigin(context), WebURL(url)); 2315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return enabledPerSettings; 2335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 2345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void FrameLoaderClientImpl::didNotAllowScript() 2365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 23709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) if (m_webFrame->permissionClient()) 238a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch m_webFrame->permissionClient()->didNotAllowScript(); 2395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 2405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void FrameLoaderClientImpl::didNotAllowPlugins() 2425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 24309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) if (m_webFrame->permissionClient()) 244a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch m_webFrame->permissionClient()->didNotAllowPlugins(); 2455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 2475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool FrameLoaderClientImpl::hasWebView() const 2495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 2505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return m_webFrame->viewImpl(); 2515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 2525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 253d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)Frame* FrameLoaderClientImpl::opener() const 254d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){ 255e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) return toCoreFrame(m_webFrame->opener()); 256d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)} 257d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 258d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)void FrameLoaderClientImpl::setOpener(Frame* opener) 259d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){ 2607242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci m_webFrame->setOpener(WebFrame::fromFrame(opener)); 261d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)} 262d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 26309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)Frame* FrameLoaderClientImpl::parent() const 2645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 265e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) return toCoreFrame(m_webFrame->parent()); 2665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 2675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 26809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)Frame* FrameLoaderClientImpl::top() const 2695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 270e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) return toCoreFrame(m_webFrame->top()); 27109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)} 2725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 27309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)Frame* FrameLoaderClientImpl::previousSibling() const 27409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles){ 275e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) return toCoreFrame(m_webFrame->previousSibling()); 27609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)} 27709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 27809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)Frame* FrameLoaderClientImpl::nextSibling() const 27909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles){ 280e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) return toCoreFrame(m_webFrame->nextSibling()); 28109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)} 28209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 28309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)Frame* FrameLoaderClientImpl::firstChild() const 28409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles){ 285e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) return toCoreFrame(m_webFrame->firstChild()); 28609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)} 28709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 28809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)Frame* FrameLoaderClientImpl::lastChild() const 28909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles){ 290e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) return toCoreFrame(m_webFrame->lastChild()); 29109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)} 29209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 29309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)void FrameLoaderClientImpl::detachedFromParent() 29409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles){ 2955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Alert the client that the frame is being detached. This is the last 2965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // chance we have to communicate with the client. 2977242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci RefPtrWillBeRawPtr<WebLocalFrameImpl> protector(m_webFrame); 29809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 29909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) WebFrameClient* client = m_webFrame->client(); 30009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) if (!client) 30109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return; 30209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 30309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) m_webFrame->willDetachParent(); 3045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 30509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) // Signal that no further communication with WebFrameClient should take 30609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) // place at this point since we are no longer associated with the Page. 3075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_webFrame->setClient(0); 30809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 30909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) client->frameDetached(m_webFrame); 310e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) // Clear our reference to LocalFrame at the very end, in case the client 31109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) // refers to it. 312e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) m_webFrame->setCoreFrame(nullptr); 3135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void FrameLoaderClientImpl::dispatchWillSendRequest( 3165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) DocumentLoader* loader, unsigned long identifier, ResourceRequest& request, 3175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const ResourceResponse& redirectResponse) 3185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 3195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Give the WebFrameClient a crack at the request. 3205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (m_webFrame->client()) { 3215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WrappedResourceRequest webreq(request); 3225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WrappedResourceResponse webresp(redirectResponse); 3235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_webFrame->client()->willSendRequest( 3245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_webFrame, identifier, webreq, webresp); 3255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void FrameLoaderClientImpl::dispatchDidReceiveResponse(DocumentLoader* loader, 3295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) unsigned long identifier, 3305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const ResourceResponse& response) 3315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 3325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (m_webFrame->client()) { 3335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WrappedResourceResponse webresp(response); 3345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_webFrame->client()->didReceiveResponse(m_webFrame, identifier, webresp); 3355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 33707a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 33807a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdochvoid FrameLoaderClientImpl::dispatchDidChangeResourcePriority(unsigned long identifier, ResourceLoadPriority priority, int intraPriorityValue) 339926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 340926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (m_webFrame->client()) 341e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) m_webFrame->client()->didChangeResourcePriority(m_webFrame, identifier, static_cast<WebURLRequest::Priority>(priority), intraPriorityValue); 342926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 343926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 3445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Called when a particular resource load completes 3455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void FrameLoaderClientImpl::dispatchDidFinishLoading(DocumentLoader* loader, 3465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) unsigned long identifier) 3475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 3485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (m_webFrame->client()) 3495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_webFrame->client()->didFinishResourceLoad(m_webFrame, identifier); 3505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void FrameLoaderClientImpl::dispatchDidFinishDocumentLoad() 3535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 3545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (m_webFrame->client()) 3555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_webFrame->client()->didFinishDocumentLoad(m_webFrame); 3565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3588abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)void FrameLoaderClientImpl::dispatchDidLoadResourceFromMemoryCache(const ResourceRequest& request, const ResourceResponse& response) 3595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 3608abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) if (m_webFrame->client()) 3618abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) m_webFrame->client()->didLoadResourceFromMemoryCache(m_webFrame, WrappedResourceRequest(request), WrappedResourceResponse(response)); 3625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void FrameLoaderClientImpl::dispatchDidHandleOnloadEvents() 3655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 3665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (m_webFrame->client()) 3675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_webFrame->client()->didHandleOnloadEvents(m_webFrame); 3685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void FrameLoaderClientImpl::dispatchDidReceiveServerRedirectForProvisionalLoad() 3715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 3725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (m_webFrame->client()) 3735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_webFrame->client()->didReceiveServerRedirectForProvisionalLoad(m_webFrame); 3745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 37609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)void FrameLoaderClientImpl::dispatchDidNavigateWithinPage(HistoryItem* item, HistoryCommitType commitType) 3775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 37809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) bool shouldCreateHistoryEntry = commitType == StandardCommit; 379a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) m_webFrame->viewImpl()->didCommitLoad(shouldCreateHistoryEntry, true); 3805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (m_webFrame->client()) 381a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch m_webFrame->client()->didNavigateWithinPage(m_webFrame, WebHistoryItem(item), static_cast<WebHistoryCommitType>(commitType)); 3825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void FrameLoaderClientImpl::dispatchWillClose() 3855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 3865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (m_webFrame->client()) 3875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_webFrame->client()->willClose(m_webFrame); 3885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 390197021e6b966cfb06891637935ef33fff06433d1Ben Murdochvoid FrameLoaderClientImpl::dispatchDidStartProvisionalLoad(bool isTransitionNavigation) 3915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 392e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch if (m_webFrame->client()) 393197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch m_webFrame->client()->didStartProvisionalLoad(m_webFrame, isTransitionNavigation); 3945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 396c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)void FrameLoaderClientImpl::dispatchDidReceiveTitle(const String& title) 3975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 3985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (m_webFrame->client()) 399c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) m_webFrame->client()->didReceiveTitle(m_webFrame, title, WebTextDirectionLeftToRight); 4005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 4015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 402e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)void FrameLoaderClientImpl::dispatchDidChangeIcons(IconType type) 4035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 4045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (m_webFrame->client()) 4055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_webFrame->client()->didChangeIcon(m_webFrame, static_cast<WebIconURL::Type>(type)); 4065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 4075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 408d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)void FrameLoaderClientImpl::dispatchDidCommitLoad(LocalFrame* frame, HistoryItem* item, HistoryCommitType commitType) 4095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 41009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) m_webFrame->viewImpl()->didCommitLoad(commitType == StandardCommit, false); 4115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (m_webFrame->client()) 412a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch m_webFrame->client()->didCommitProvisionalLoad(m_webFrame, WebHistoryItem(item), static_cast<WebHistoryCommitType>(commitType)); 4135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 4145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void FrameLoaderClientImpl::dispatchDidFailProvisionalLoad( 4165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const ResourceError& error) 4175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 41809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) OwnPtr<WebPluginLoadObserver> observer = pluginLoadObserver(m_webFrame->frame()->loader().provisionalDocumentLoader()); 4195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_webFrame->didFail(error, true); 4205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (observer) 4215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) observer->didFailLoading(error); 4225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 4235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void FrameLoaderClientImpl::dispatchDidFailLoad(const ResourceError& error) 4255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 42609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) OwnPtr<WebPluginLoadObserver> observer = pluginLoadObserver(m_webFrame->frame()->loader().documentLoader()); 4275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_webFrame->didFail(error, false); 4285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (observer) 4295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) observer->didFailLoading(error); 4305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Don't clear the redirect chain, this will happen in the middle of client 4325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // redirects, and we need the context. The chain will be cleared when the 4335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // provisional load succeeds or fails, not the "real" one. 4345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 4355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void FrameLoaderClientImpl::dispatchDidFinishLoad() 4375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 43809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) OwnPtr<WebPluginLoadObserver> observer = pluginLoadObserver(m_webFrame->frame()->loader().documentLoader()); 4395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (m_webFrame->client()) 4415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_webFrame->client()->didFinishLoad(m_webFrame); 4425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (observer) 4445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) observer->didFinishLoading(); 4455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Don't clear the redirect chain, this will happen in the middle of client 4475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // redirects, and we need the context. The chain will be cleared when the 4485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // provisional load succeeds or fails, not the "real" one. 4495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 4505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4511e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)void FrameLoaderClientImpl::dispatchDidFirstVisuallyNonEmptyLayout() 4525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 4531e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) if (m_webFrame->client()) 4545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_webFrame->client()->didFirstVisuallyNonEmptyLayout(m_webFrame); 4555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 4565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 457197021e6b966cfb06891637935ef33fff06433d1Ben Murdochvoid FrameLoaderClientImpl::dispatchDidChangeThemeColor() 4585d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles){ 4595d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) if (m_webFrame->client()) 460197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch m_webFrame->client()->didChangeThemeColor(); 4615d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)} 4625d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) 463197021e6b966cfb06891637935ef33fff06433d1Ben MurdochNavigationPolicy FrameLoaderClientImpl::decidePolicyForNavigation(const ResourceRequest& request, DocumentLoader* loader, NavigationPolicy policy, bool isTransitionNavigation) 464e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch{ 465e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch if (!m_webFrame->client()) 466e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch return NavigationPolicyIgnore; 467e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) WebDataSourceImpl* ds = WebDataSourceImpl::fromDocumentLoader(loader); 468197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 469197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch WrappedResourceRequest wrappedResourceRequest(request); 470197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch WebFrameClient::NavigationPolicyInfo navigationInfo(wrappedResourceRequest); 471197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch navigationInfo.frame = m_webFrame; 472197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch navigationInfo.extraData = ds->extraData(); 473197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch navigationInfo.navigationType = ds->navigationType(); 474197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch navigationInfo.defaultPolicy = static_cast<WebNavigationPolicy>(policy); 475197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch navigationInfo.isRedirect = ds->isRedirect(); 476197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch navigationInfo.isTransitionNavigation = isTransitionNavigation; 477197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 478197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch WebNavigationPolicy webPolicy = m_webFrame->client()->decidePolicyForNavigation(navigationInfo); 479e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch return static_cast<NavigationPolicy>(webPolicy); 4805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 4815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 482197021e6b966cfb06891637935ef33fff06433d1Ben Murdochvoid FrameLoaderClientImpl::dispatchAddNavigationTransitionData(const String& allowedDestinationOrigin, const String& selector, const String& markup) 483197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch{ 484197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch if (m_webFrame->client()) 485197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch m_webFrame->client()->addNavigationTransitionData(allowedDestinationOrigin, selector, markup); 486197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch} 487197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 4883464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdochvoid FrameLoaderClientImpl::dispatchWillRequestResource(FetchRequest* request) 489926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 490926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (m_webFrame->client()) { 491926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) WebCachedURLRequest urlRequest(request); 492926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) m_webFrame->client()->willRequestResource(m_webFrame, urlRequest); 493926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 494926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 495926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 496d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)void FrameLoaderClientImpl::dispatchWillSendSubmitEvent(HTMLFormElement* form) 4975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 4985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (m_webFrame->client()) 499d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_webFrame->client()->willSendSubmitEvent(m_webFrame, WebFormElement(form)); 5005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 5015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 502d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)void FrameLoaderClientImpl::dispatchWillSubmitForm(HTMLFormElement* form) 5035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 5045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (m_webFrame->client()) 505d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_webFrame->client()->willSubmitForm(m_webFrame, WebFormElement(form)); 5065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 5075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 50807a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdochvoid FrameLoaderClientImpl::didStartLoading(LoadStartType loadStartType) 5095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 51007a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch if (m_webFrame->client()) 51107a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch m_webFrame->client()->didStartLoading(loadStartType == NavigationToDifferentDocument); 5125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 5135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 51407a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdochvoid FrameLoaderClientImpl::progressEstimateChanged(double progressEstimate) 5155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 51607a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch if (m_webFrame->client()) 51707a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch m_webFrame->client()->didChangeLoadProgress(progressEstimate); 5185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 5195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 52007a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdochvoid FrameLoaderClientImpl::didStopLoading() 5215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 52207a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch if (m_webFrame->client()) 52307a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch m_webFrame->client()->didStopLoading(); 5245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 5255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 526e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdochvoid FrameLoaderClientImpl::loadURLExternally(const ResourceRequest& request, NavigationPolicy policy, const String& suggestedName) 5275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 5285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (m_webFrame->client()) { 529d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) ASSERT(m_webFrame->frame()->document()); 5309e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) Fullscreen::fullyExitFullscreen(*m_webFrame->frame()->document()); 5315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WrappedResourceRequest webreq(request); 5325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_webFrame->client()->loadURLExternally( 533e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch m_webFrame, webreq, static_cast<WebNavigationPolicy>(policy), suggestedName); 5345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 5355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 5365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 537bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles)bool FrameLoaderClientImpl::navigateBackForward(int offset) const 5385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 5395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebViewImpl* webview = m_webFrame->viewImpl(); 540bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) if (!webview->client()) 541bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) return false; 542bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 543bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) ASSERT(offset); 544bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) offset = std::min(offset, webview->client()->historyForwardListCount()); 545bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) offset = std::max(offset, -webview->client()->historyBackListCount()); 546bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) if (!offset) 547bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) return false; 548bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) webview->client()->navigateBackForwardSoon(offset); 549bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) return true; 5505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 5515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 552926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)void FrameLoaderClientImpl::didAccessInitialDocument() 553926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 554926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (m_webFrame->client()) 555926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) m_webFrame->client()->didAccessInitialDocument(m_webFrame); 556926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 557926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 5585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void FrameLoaderClientImpl::didDisplayInsecureContent() 5595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 5605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (m_webFrame->client()) 5615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_webFrame->client()->didDisplayInsecureContent(m_webFrame); 5625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 5635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void FrameLoaderClientImpl::didRunInsecureContent(SecurityOrigin* origin, const KURL& insecureURL) 5655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 5665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (m_webFrame->client()) 5675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_webFrame->client()->didRunInsecureContent(m_webFrame, WebSecurityOrigin(origin), insecureURL); 5685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 5695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void FrameLoaderClientImpl::didDetectXSS(const KURL& insecureURL, bool didBlockEntirePage) 5715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 5725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (m_webFrame->client()) 5735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_webFrame->client()->didDetectXSS(m_webFrame, insecureURL, didBlockEntirePage); 5745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 5755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5761fad5ca6c42d689812b66fc493992aa6d747a6fbBen Murdochvoid FrameLoaderClientImpl::didDispatchPingLoader(const KURL& url) 5771fad5ca6c42d689812b66fc493992aa6d747a6fbBen Murdoch{ 5781fad5ca6c42d689812b66fc493992aa6d747a6fbBen Murdoch if (m_webFrame->client()) 5791fad5ca6c42d689812b66fc493992aa6d747a6fbBen Murdoch m_webFrame->client()->didDispatchPingLoader(m_webFrame, url); 5801fad5ca6c42d689812b66fc493992aa6d747a6fbBen Murdoch} 5811fad5ca6c42d689812b66fc493992aa6d747a6fbBen Murdoch 5821e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)void FrameLoaderClientImpl::selectorMatchChanged(const Vector<String>& addedSelectors, const Vector<String>& removedSelectors) 5831e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles){ 5841e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) if (WebFrameClient* client = m_webFrame->client()) 5851e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) client->didMatchCSS(m_webFrame, WebVector<WebString>(addedSelectors), WebVector<WebString>(removedSelectors)); 5861e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)} 5871e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) 588d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)PassRefPtr<DocumentLoader> FrameLoaderClientImpl::createDocumentLoader(LocalFrame* frame, const ResourceRequest& request, const SubstituteData& data) 5895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 59009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) RefPtr<WebDataSourceImpl> ds = WebDataSourceImpl::create(frame, request, data); 5915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (m_webFrame->client()) 5925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_webFrame->client()->didCreateDataSource(m_webFrame, ds.get()); 5935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ds.release(); 5945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 5955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)String FrameLoaderClientImpl::userAgent(const KURL& url) 5975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 5985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebString override = m_webFrame->client()->userAgentOverride(m_webFrame, WebURL(url)); 5995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!override.isEmpty()) 6005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return override; 6015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 602e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) return Platform::current()->userAgent(); 6035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 6045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 60553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)String FrameLoaderClientImpl::doNotTrackValue() 6065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 60753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) WebString doNotTrack = m_webFrame->client()->doNotTrackValue(m_webFrame); 60853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) if (!doNotTrack.isEmpty()) 60953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) return doNotTrack; 61053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) return String(); 6115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 6125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Called when the FrameLoader goes into a state in which a new page load 6145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// will occur. 615a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)void FrameLoaderClientImpl::transitionToCommittedForNewPage() 6165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 61753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) m_webFrame->createFrameView(); 6185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 6195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6207242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano TucciPassRefPtrWillBeRawPtr<LocalFrame> FrameLoaderClientImpl::createFrame( 6215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const KURL& url, 62209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) const AtomicString& name, 62309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) const Referrer& referrer, 624c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) HTMLFrameOwnerElement* ownerElement) 6255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 62609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) FrameLoadRequest frameRequest(m_webFrame->frame()->document(), 6275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ResourceRequest(url, referrer), name); 6285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return m_webFrame->createChildFrame(frameRequest, ownerElement); 6295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 6305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 631a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdochbool FrameLoaderClientImpl::canCreatePluginWithoutRenderer(const String& mimeType) const 632a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch{ 633a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch if (!m_webFrame->client()) 634a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch return false; 635a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch 636a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch return m_webFrame->client()->canCreatePluginWithoutRenderer(mimeType); 637a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch} 638a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch 6395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)PassRefPtr<Widget> FrameLoaderClientImpl::createPlugin( 6405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) HTMLPlugInElement* element, 6415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const KURL& url, 6425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const Vector<String>& paramNames, 6435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const Vector<String>& paramValues, 6445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const String& mimeType, 645d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool loadManually, 646d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) DetachedPluginPolicy policy) 6475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 6485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!m_webFrame->client()) 649d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) return nullptr; 6505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebPluginParams params; 6525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) params.url = url; 6535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) params.mimeType = mimeType; 6545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) params.attributeNames = paramNames; 6555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) params.attributeValues = paramValues; 6565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) params.loadManually = loadManually; 6575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebPlugin* webPlugin = m_webFrame->client()->createPlugin(m_webFrame, params); 6595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!webPlugin) 660d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) return nullptr; 6615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // The container takes ownership of the WebPlugin. 6635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) RefPtr<WebPluginContainerImpl> container = 6645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebPluginContainerImpl::create(element, webPlugin); 6655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!webPlugin->initialize(container.get())) 667d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) return nullptr; 6685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 669d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) if (policy != AllowDetachedPlugin && !element->renderer()) 670d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) return nullptr; 6715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return container; 6735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 6745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)PassRefPtr<Widget> FrameLoaderClientImpl::createJavaAppletWidget( 6765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) HTMLAppletElement* element, 6775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const KURL& /* baseURL */, 6785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const Vector<String>& paramNames, 6795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const Vector<String>& paramValues) 6805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 681d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) return createPlugin(element, KURL(), paramNames, paramValues, 682d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) "application/x-java-applet", false, FailOnDetachedPlugin); 6835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 6845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)ObjectContentType FrameLoaderClientImpl::objectContentType( 6865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const KURL& url, 6875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const String& explicitMimeType, 6885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool shouldPreferPlugInsForImages) 6895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 6905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // This code is based on Apple's implementation from 6915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // WebCoreSupport/WebFrameBridge.mm. 6925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) String mimeType = explicitMimeType; 6945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (mimeType.isEmpty()) { 6955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Try to guess the MIME type based off the extension. 6965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) String filename = url.lastPathComponent(); 6975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) int extensionPos = filename.reverseFind('.'); 6985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (extensionPos >= 0) { 6995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) String extension = filename.substring(extensionPos + 1); 7005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) mimeType = MIMETypeRegistry::getMIMETypeForExtension(extension); 7015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (mimeType.isEmpty()) { 7025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If there's no mimetype registered for the extension, check to see 7035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // if a plugin can handle the extension. 7045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) mimeType = getPluginMimeTypeFromExtension(extension); 7055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 7065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 7075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (mimeType.isEmpty()) 7095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ObjectContentFrame; 7105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 7115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If Chrome is started with the --disable-plugins switch, pluginData is 0. 7135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) PluginData* pluginData = m_webFrame->frame()->page()->pluginData(); 7145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool plugInSupportsMIMEType = pluginData && pluginData->supportsMimeType(mimeType); 7155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (MIMETypeRegistry::isSupportedImageMIMEType(mimeType)) 7175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return shouldPreferPlugInsForImages && plugInSupportsMIMEType ? ObjectContentNetscapePlugin : ObjectContentImage; 7185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (plugInSupportsMIMEType) 7205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ObjectContentNetscapePlugin; 7215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (MIMETypeRegistry::isSupportedNonImageMIMEType(mimeType)) 7235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ObjectContentFrame; 7245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ObjectContentNone; 7265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 7275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 72809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)PassOwnPtr<WebPluginLoadObserver> FrameLoaderClientImpl::pluginLoadObserver(DocumentLoader* loader) 7295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 73009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return WebDataSourceImpl::fromDocumentLoader(loader)->releasePluginLoadObserver(); 7315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 7325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7335267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)WebCookieJar* FrameLoaderClientImpl::cookieJar() const 7345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 7355267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) if (!m_webFrame->client()) 7365267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) return 0; 7375267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) return m_webFrame->client()->cookieJar(m_webFrame); 7385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 7395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool FrameLoaderClientImpl::willCheckAndDispatchMessageEvent( 7417242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci SecurityOrigin* target, MessageEvent* event, LocalFrame* sourceFrame) const 7425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 7435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!m_webFrame->client()) 7445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 7455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return m_webFrame->client()->willCheckAndDispatchMessageEvent( 7467242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci WebLocalFrameImpl::fromFrame(sourceFrame), m_webFrame, WebSecurityOrigin(target), WebDOMMessageEvent(event)); 7475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 7485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 749926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)void FrameLoaderClientImpl::didChangeName(const String& name) 750926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 7515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!m_webFrame->client()) 7525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 753926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) m_webFrame->client()->didChangeName(m_webFrame, name); 7545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 7555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void FrameLoaderClientImpl::dispatchWillOpenSocketStream(SocketStreamHandle* handle) 7575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 7585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_webFrame->client()->willOpenSocketStream(SocketStreamHandleInternal::toWebSocketStreamHandle(handle)); 7595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 7605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 761e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)void FrameLoaderClientImpl::dispatchWillOpenWebSocket(WebSocketHandle* handle) 762f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles){ 763f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) m_webFrame->client()->willOpenWebSocket(handle); 764f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)} 765f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) 766e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)void FrameLoaderClientImpl::dispatchWillStartUsingPeerConnectionHandler(WebRTCPeerConnectionHandler* handler) 7675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 76809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) m_webFrame->client()->willStartUsingPeerConnectionHandler(webFrame(), handler); 7695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 7705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 771f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)void FrameLoaderClientImpl::didRequestAutocomplete(HTMLFormElement* form) 7725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 7735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (m_webFrame->viewImpl() && m_webFrame->viewImpl()->autofillClient()) 774f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) m_webFrame->viewImpl()->autofillClient()->didRequestAutocomplete(WebFormElement(form)); 7755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 7765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 777926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)bool FrameLoaderClientImpl::allowWebGL(bool enabledPerSettings) 778926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 779926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (m_webFrame->client()) 780926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return m_webFrame->client()->allowWebGL(m_webFrame, enabledPerSettings); 781926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 782926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return enabledPerSettings; 783926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 784926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 785926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)void FrameLoaderClientImpl::didLoseWebGLContext(int arbRobustnessContextLostReason) 786926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 787926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (m_webFrame->client()) 788926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) m_webFrame->client()->didLoseWebGLContext(m_webFrame, arbRobustnessContextLostReason); 789926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 790926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 791926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)void FrameLoaderClientImpl::dispatchWillInsertBody() 792926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 793926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (m_webFrame->client()) 794926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) m_webFrame->client()->willInsertBody(m_webFrame); 795d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 796d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) if (m_webFrame->viewImpl()) 797d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_webFrame->viewImpl()->willInsertBody(m_webFrame); 798926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 799926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 800d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)PassOwnPtr<WebServiceWorkerProvider> FrameLoaderClientImpl::createServiceWorkerProvider() 8019bbd2f5e390b01907d97ecffde80aa1b06113aacTorne (Richard Coles){ 8029bbd2f5e390b01907d97ecffde80aa1b06113aacTorne (Richard Coles) if (!m_webFrame->client()) 8031e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) return nullptr; 804d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) return adoptPtr(m_webFrame->client()->createServiceWorkerProvider(m_webFrame)); 80506f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)} 80606f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) 8077242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tuccibool FrameLoaderClientImpl::isControlledByServiceWorker() 8087242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci{ 8097242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci return m_webFrame->client() && m_webFrame->client()->isControlledByServiceWorker(); 8107242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci} 8117242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 81209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)SharedWorkerRepositoryClient* FrameLoaderClientImpl::sharedWorkerRepositoryClient() 81309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles){ 81409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return m_webFrame->sharedWorkerRepositoryClient(); 81509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)} 81609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 817d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)PassOwnPtr<WebApplicationCacheHost> FrameLoaderClientImpl::createApplicationCacheHost(WebApplicationCacheHostClient* client) 818d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){ 819d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) if (!m_webFrame->client()) 820d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) return nullptr; 821d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) return adoptPtr(m_webFrame->client()->createApplicationCacheHost(m_webFrame, client)); 822d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)} 823d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 82406f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)void FrameLoaderClientImpl::didStopAllLoaders() 82506f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles){ 82606f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) if (m_webFrame->client()) 82706f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) m_webFrame->client()->didAbortLoading(m_webFrame); 8289bbd2f5e390b01907d97ecffde80aa1b06113aacTorne (Richard Coles)} 8299bbd2f5e390b01907d97ecffde80aa1b06113aacTorne (Richard Coles) 830323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)void FrameLoaderClientImpl::dispatchDidChangeManifest() 831323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles){ 832323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) if (m_webFrame->client()) 833323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) m_webFrame->client()->didChangeManifest(m_webFrame); 834323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)} 835323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) 83651b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)} // namespace blink 837