1 /* 2 * Copyright (C) 2009, 2012 Google Inc. All rights reserved. 3 * Copyright (C) 2011 Apple Inc. All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions are 7 * met: 8 * 9 * * Redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer. 11 * * Redistributions in binary form must reproduce the above 12 * copyright notice, this list of conditions and the following disclaimer 13 * in the documentation and/or other materials provided with the 14 * distribution. 15 * * Neither the name of Google Inc. nor the names of its 16 * contributors may be used to endorse or promote products derived from 17 * this software without specific prior written permission. 18 * 19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 */ 31 32 #ifndef FrameLoaderClientImpl_h 33 #define FrameLoaderClientImpl_h 34 35 #include "core/loader/FrameLoaderClient.h" 36 #include "platform/weborigin/KURL.h" 37 #include "wtf/PassOwnPtr.h" 38 #include "wtf/RefPtr.h" 39 40 namespace blink { 41 42 class WebLocalFrameImpl; 43 class WebPluginContainerImpl; 44 class WebPluginLoadObserver; 45 46 class FrameLoaderClientImpl FINAL : public WebCore::FrameLoaderClient { 47 public: 48 FrameLoaderClientImpl(WebLocalFrameImpl* webFrame); 49 virtual ~FrameLoaderClientImpl(); 50 webFrame()51 WebLocalFrameImpl* webFrame() const { return m_webFrame; } 52 53 // WebCore::FrameLoaderClient ---------------------------------------------- 54 55 // Notifies the WebView delegate that the JS window object has been cleared, 56 // giving it a chance to bind native objects to the window before script 57 // parsing begins. 58 virtual void dispatchDidClearWindowObjectInMainWorld() OVERRIDE; 59 virtual void documentElementAvailable() OVERRIDE; 60 61 virtual void didCreateScriptContext(v8::Handle<v8::Context>, int extensionGroup, int worldId) OVERRIDE; 62 virtual void willReleaseScriptContext(v8::Handle<v8::Context>, int worldId) OVERRIDE; 63 64 // Returns true if we should allow the given V8 extension to be added to 65 // the script context at the currently loading page and given extension group. 66 virtual bool allowScriptExtension(const String& extensionName, int extensionGroup, int worldId) OVERRIDE; 67 68 virtual bool hasWebView() const OVERRIDE; 69 virtual WebCore::Frame* opener() const OVERRIDE; 70 virtual void setOpener(WebCore::Frame*) OVERRIDE; 71 virtual WebCore::Frame* parent() const OVERRIDE; 72 virtual WebCore::Frame* top() const OVERRIDE; 73 virtual WebCore::Frame* previousSibling() const OVERRIDE; 74 virtual WebCore::Frame* nextSibling() const OVERRIDE; 75 virtual WebCore::Frame* firstChild() const OVERRIDE; 76 virtual WebCore::Frame* lastChild() const OVERRIDE; 77 virtual void detachedFromParent() OVERRIDE; 78 virtual void dispatchWillRequestAfterPreconnect(WebCore::ResourceRequest&) OVERRIDE; 79 virtual void dispatchWillSendRequest(WebCore::DocumentLoader*, unsigned long identifier, WebCore::ResourceRequest&, const WebCore::ResourceResponse& redirectResponse) OVERRIDE; 80 virtual void dispatchDidReceiveResponse(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ResourceResponse&) OVERRIDE; 81 virtual void dispatchDidChangeResourcePriority(unsigned long identifier, WebCore::ResourceLoadPriority, int intraPriorityValue) OVERRIDE; 82 virtual void dispatchDidFinishLoading(WebCore::DocumentLoader*, unsigned long identifier) OVERRIDE; 83 virtual void dispatchDidLoadResourceFromMemoryCache(const WebCore::ResourceRequest&, const WebCore::ResourceResponse&) OVERRIDE; 84 virtual void dispatchDidHandleOnloadEvents() OVERRIDE; 85 virtual void dispatchDidReceiveServerRedirectForProvisionalLoad() OVERRIDE; 86 virtual void dispatchDidNavigateWithinPage(WebCore::HistoryItem*, WebCore::HistoryCommitType) OVERRIDE; 87 virtual void dispatchWillClose() OVERRIDE; 88 virtual void dispatchDidStartProvisionalLoad() OVERRIDE; 89 virtual void dispatchDidReceiveTitle(const String&) OVERRIDE; 90 virtual void dispatchDidChangeIcons(WebCore::IconType) OVERRIDE; 91 virtual void dispatchDidCommitLoad(WebCore::LocalFrame*, WebCore::HistoryItem*, WebCore::HistoryCommitType) OVERRIDE; 92 virtual void dispatchDidFailProvisionalLoad(const WebCore::ResourceError&) OVERRIDE; 93 virtual void dispatchDidFailLoad(const WebCore::ResourceError&) OVERRIDE; 94 virtual void dispatchDidFinishDocumentLoad() OVERRIDE; 95 virtual void dispatchDidFinishLoad() OVERRIDE; 96 virtual void dispatchDidFirstVisuallyNonEmptyLayout() OVERRIDE; 97 virtual void dispatchDidChangeThemeColor() OVERRIDE; 98 virtual WebCore::NavigationPolicy decidePolicyForNavigation(const WebCore::ResourceRequest&, WebCore::DocumentLoader*, WebCore::NavigationPolicy) OVERRIDE; 99 virtual void dispatchWillRequestResource(WebCore::FetchRequest*) OVERRIDE; 100 virtual void dispatchWillSendSubmitEvent(WebCore::HTMLFormElement*) OVERRIDE; 101 virtual void dispatchWillSubmitForm(WebCore::HTMLFormElement*) OVERRIDE; 102 virtual void didStartLoading(WebCore::LoadStartType) OVERRIDE; 103 virtual void didStopLoading() OVERRIDE; 104 virtual void progressEstimateChanged(double progressEstimate) OVERRIDE; 105 virtual void loadURLExternally(const WebCore::ResourceRequest&, WebCore::NavigationPolicy, const String& suggestedName = String()) OVERRIDE; 106 virtual bool navigateBackForward(int offset) const OVERRIDE; 107 virtual void didAccessInitialDocument() OVERRIDE; 108 virtual void didDisplayInsecureContent() OVERRIDE; 109 virtual void didRunInsecureContent(WebCore::SecurityOrigin*, const WebCore::KURL& insecureURL) OVERRIDE; 110 virtual void didDetectXSS(const WebCore::KURL&, bool didBlockEntirePage) OVERRIDE; 111 virtual void didDispatchPingLoader(const WebCore::KURL&) OVERRIDE; 112 virtual void selectorMatchChanged(const Vector<String>& addedSelectors, const Vector<String>& removedSelectors) OVERRIDE; 113 virtual PassRefPtr<WebCore::DocumentLoader> createDocumentLoader(WebCore::LocalFrame*, const WebCore::ResourceRequest&, const WebCore::SubstituteData&) OVERRIDE; 114 virtual WTF::String userAgent(const WebCore::KURL&) OVERRIDE; 115 virtual WTF::String doNotTrackValue() OVERRIDE; 116 virtual void transitionToCommittedForNewPage() OVERRIDE; 117 virtual PassRefPtr<WebCore::LocalFrame> createFrame(const WebCore::KURL&, const WTF::AtomicString& name, const WebCore::Referrer&, WebCore::HTMLFrameOwnerElement*) OVERRIDE; 118 virtual bool canCreatePluginWithoutRenderer(const String& mimeType) const; 119 virtual PassRefPtr<WebCore::Widget> createPlugin( 120 WebCore::HTMLPlugInElement*, const WebCore::KURL&, 121 const Vector<WTF::String>&, const Vector<WTF::String>&, 122 const WTF::String&, bool loadManually, DetachedPluginPolicy) OVERRIDE; 123 virtual PassRefPtr<WebCore::Widget> createJavaAppletWidget( 124 WebCore::HTMLAppletElement*, 125 const WebCore::KURL& /* base_url */, 126 const Vector<WTF::String>& paramNames, 127 const Vector<WTF::String>& paramValues) OVERRIDE; 128 virtual WebCore::ObjectContentType objectContentType( 129 const WebCore::KURL&, const WTF::String& mimeType, bool shouldPreferPlugInsForImages) OVERRIDE; 130 virtual void didChangeScrollOffset() OVERRIDE; 131 virtual void didUpdateCurrentHistoryItem() OVERRIDE; 132 virtual bool allowScript(bool enabledPerSettings) OVERRIDE; 133 virtual bool allowScriptFromSource(bool enabledPerSettings, const WebCore::KURL& scriptURL) OVERRIDE; 134 virtual bool allowPlugins(bool enabledPerSettings) OVERRIDE; 135 virtual bool allowImage(bool enabledPerSettings, const WebCore::KURL& imageURL) OVERRIDE; 136 virtual bool allowDisplayingInsecureContent(bool enabledPerSettings, WebCore::SecurityOrigin*, const WebCore::KURL&) OVERRIDE; 137 virtual bool allowRunningInsecureContent(bool enabledPerSettings, WebCore::SecurityOrigin*, const WebCore::KURL&) OVERRIDE; 138 virtual void didNotAllowScript() OVERRIDE; 139 virtual void didNotAllowPlugins() OVERRIDE; 140 141 virtual WebCookieJar* cookieJar() const OVERRIDE; 142 virtual bool willCheckAndDispatchMessageEvent(WebCore::SecurityOrigin* target, WebCore::MessageEvent*) const OVERRIDE; 143 virtual void didChangeName(const String&) OVERRIDE; 144 145 virtual void dispatchWillOpenSocketStream(WebCore::SocketStreamHandle*) OVERRIDE; 146 virtual void dispatchWillOpenWebSocket(blink::WebSocketHandle*) OVERRIDE; 147 148 virtual void dispatchWillStartUsingPeerConnectionHandler(blink::WebRTCPeerConnectionHandler*) OVERRIDE; 149 150 virtual void didRequestAutocomplete(WebCore::HTMLFormElement*) OVERRIDE; 151 152 virtual bool allowWebGL(bool enabledPerSettings) OVERRIDE; 153 virtual void didLoseWebGLContext(int arbRobustnessContextLostReason) OVERRIDE; 154 155 virtual void dispatchWillInsertBody() OVERRIDE; 156 157 virtual PassOwnPtr<WebServiceWorkerProvider> createServiceWorkerProvider() OVERRIDE; 158 virtual WebCore::SharedWorkerRepositoryClient* sharedWorkerRepositoryClient() OVERRIDE; 159 160 virtual PassOwnPtr<WebApplicationCacheHost> createApplicationCacheHost(WebApplicationCacheHostClient*) OVERRIDE; 161 162 virtual void didStopAllLoaders() OVERRIDE; 163 164 virtual void dispatchDidChangeManifest() OVERRIDE; 165 166 private: isFrameLoaderClientImpl()167 virtual bool isFrameLoaderClientImpl() const OVERRIDE { return true; } 168 169 PassOwnPtr<WebPluginLoadObserver> pluginLoadObserver(WebCore::DocumentLoader*); 170 171 // The WebFrame that owns this object and manages its lifetime. Therefore, 172 // the web frame object is guaranteed to exist. 173 WebLocalFrameImpl* m_webFrame; 174 }; 175 176 DEFINE_TYPE_CASTS(FrameLoaderClientImpl, WebCore::FrameLoaderClient, client, client->isFrameLoaderClientImpl(), client.isFrameLoaderClientImpl()); 177 178 } // namespace blink 179 180 #endif 181