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/heap/Handle.h" 37 #include "platform/weborigin/KURL.h" 38 #include "wtf/PassOwnPtr.h" 39 #include "wtf/RefPtr.h" 40 41 namespace blink { 42 43 class WebLocalFrameImpl; 44 class WebPluginContainerImpl; 45 class WebPluginLoadObserver; 46 47 class FrameLoaderClientImpl FINAL : public FrameLoaderClient { 48 public: 49 explicit FrameLoaderClientImpl(WebLocalFrameImpl* webFrame); 50 virtual ~FrameLoaderClientImpl(); 51 52 WebLocalFrameImpl* webFrame() const { return m_webFrame; } 53 54 // FrameLoaderClient ---------------------------------------------- 55 56 // Notifies the WebView delegate that the JS window object has been cleared, 57 // giving it a chance to bind native objects to the window before script 58 // parsing begins. 59 virtual void dispatchDidClearWindowObjectInMainWorld() OVERRIDE; 60 virtual void documentElementAvailable() OVERRIDE; 61 62 virtual void didCreateScriptContext(v8::Handle<v8::Context>, int extensionGroup, int worldId) OVERRIDE; 63 virtual void willReleaseScriptContext(v8::Handle<v8::Context>, int worldId) OVERRIDE; 64 65 // Returns true if we should allow the given V8 extension to be added to 66 // the script context at the currently loading page and given extension group. 67 virtual bool allowScriptExtension(const String& extensionName, int extensionGroup, int worldId) OVERRIDE; 68 69 virtual bool hasWebView() const OVERRIDE; 70 virtual Frame* opener() const OVERRIDE; 71 virtual void setOpener(Frame*) OVERRIDE; 72 virtual Frame* parent() const OVERRIDE; 73 virtual Frame* top() const OVERRIDE; 74 virtual Frame* previousSibling() const OVERRIDE; 75 virtual Frame* nextSibling() const OVERRIDE; 76 virtual Frame* firstChild() const OVERRIDE; 77 virtual Frame* lastChild() const OVERRIDE; 78 virtual void detachedFromParent() OVERRIDE; 79 virtual void dispatchWillSendRequest(DocumentLoader*, unsigned long identifier, ResourceRequest&, const ResourceResponse& redirectResponse) OVERRIDE; 80 virtual void dispatchDidReceiveResponse(DocumentLoader*, unsigned long identifier, const ResourceResponse&) OVERRIDE; 81 virtual void dispatchDidChangeResourcePriority(unsigned long identifier, ResourceLoadPriority, int intraPriorityValue) OVERRIDE; 82 virtual void dispatchDidFinishLoading(DocumentLoader*, unsigned long identifier) OVERRIDE; 83 virtual void dispatchDidLoadResourceFromMemoryCache(const ResourceRequest&, const ResourceResponse&) OVERRIDE; 84 virtual void dispatchDidHandleOnloadEvents() OVERRIDE; 85 virtual void dispatchDidReceiveServerRedirectForProvisionalLoad() OVERRIDE; 86 virtual void dispatchDidNavigateWithinPage(HistoryItem*, HistoryCommitType) OVERRIDE; 87 virtual void dispatchWillClose() OVERRIDE; 88 virtual void dispatchDidStartProvisionalLoad(bool isTransitionNavigation) OVERRIDE; 89 virtual void dispatchDidReceiveTitle(const String&) OVERRIDE; 90 virtual void dispatchDidChangeIcons(IconType) OVERRIDE; 91 virtual void dispatchDidCommitLoad(LocalFrame*, HistoryItem*, HistoryCommitType) OVERRIDE; 92 virtual void dispatchDidFailProvisionalLoad(const ResourceError&) OVERRIDE; 93 virtual void dispatchDidFailLoad(const ResourceError&) OVERRIDE; 94 virtual void dispatchDidFinishDocumentLoad() OVERRIDE; 95 virtual void dispatchDidFinishLoad() OVERRIDE; 96 virtual void dispatchDidFirstVisuallyNonEmptyLayout() OVERRIDE; 97 98 virtual void dispatchDidChangeThemeColor() OVERRIDE; 99 virtual NavigationPolicy decidePolicyForNavigation(const ResourceRequest&, DocumentLoader*, NavigationPolicy, bool isTransitionNavigation) OVERRIDE; 100 virtual void dispatchAddNavigationTransitionData(const String& allowedDestinationOrigin, const String& selector, const String& markup) OVERRIDE; 101 virtual void dispatchWillRequestResource(FetchRequest*) OVERRIDE; 102 virtual void dispatchWillSendSubmitEvent(HTMLFormElement*) OVERRIDE; 103 virtual void dispatchWillSubmitForm(HTMLFormElement*) OVERRIDE; 104 virtual void didStartLoading(LoadStartType) OVERRIDE; 105 virtual void didStopLoading() OVERRIDE; 106 virtual void progressEstimateChanged(double progressEstimate) OVERRIDE; 107 virtual void loadURLExternally(const ResourceRequest&, NavigationPolicy, const String& suggestedName = String()) OVERRIDE; 108 virtual bool navigateBackForward(int offset) const OVERRIDE; 109 virtual void didAccessInitialDocument() OVERRIDE; 110 virtual void didDisplayInsecureContent() OVERRIDE; 111 virtual void didRunInsecureContent(SecurityOrigin*, const KURL& insecureURL) OVERRIDE; 112 virtual void didDetectXSS(const KURL&, bool didBlockEntirePage) OVERRIDE; 113 virtual void didDispatchPingLoader(const KURL&) OVERRIDE; 114 virtual void selectorMatchChanged(const Vector<String>& addedSelectors, const Vector<String>& removedSelectors) OVERRIDE; 115 virtual PassRefPtr<DocumentLoader> createDocumentLoader(LocalFrame*, const ResourceRequest&, const SubstituteData&) OVERRIDE; 116 virtual WTF::String userAgent(const KURL&) OVERRIDE; 117 virtual WTF::String doNotTrackValue() OVERRIDE; 118 virtual void transitionToCommittedForNewPage() OVERRIDE; 119 virtual PassRefPtrWillBeRawPtr<LocalFrame> createFrame(const KURL&, const WTF::AtomicString& name, const Referrer&, HTMLFrameOwnerElement*) OVERRIDE; 120 virtual bool canCreatePluginWithoutRenderer(const String& mimeType) const; 121 virtual PassRefPtr<Widget> createPlugin( 122 HTMLPlugInElement*, const KURL&, 123 const Vector<WTF::String>&, const Vector<WTF::String>&, 124 const WTF::String&, bool loadManually, DetachedPluginPolicy) OVERRIDE; 125 virtual PassRefPtr<Widget> createJavaAppletWidget( 126 HTMLAppletElement*, 127 const KURL& /* base_url */, 128 const Vector<WTF::String>& paramNames, 129 const Vector<WTF::String>& paramValues) OVERRIDE; 130 virtual ObjectContentType objectContentType( 131 const KURL&, const WTF::String& mimeType, bool shouldPreferPlugInsForImages) OVERRIDE; 132 virtual void didChangeScrollOffset() OVERRIDE; 133 virtual void didUpdateCurrentHistoryItem() OVERRIDE; 134 virtual void didRemoveAllPendingStylesheet() OVERRIDE; 135 virtual bool allowScript(bool enabledPerSettings) OVERRIDE; 136 virtual bool allowScriptFromSource(bool enabledPerSettings, const KURL& scriptURL) OVERRIDE; 137 virtual bool allowPlugins(bool enabledPerSettings) OVERRIDE; 138 virtual bool allowImage(bool enabledPerSettings, const KURL& imageURL) OVERRIDE; 139 virtual bool allowMedia(const KURL& mediaURL) OVERRIDE; 140 virtual bool allowDisplayingInsecureContent(bool enabledPerSettings, SecurityOrigin*, const KURL&) OVERRIDE; 141 virtual bool allowRunningInsecureContent(bool enabledPerSettings, SecurityOrigin*, const KURL&) OVERRIDE; 142 virtual void didNotAllowScript() OVERRIDE; 143 virtual void didNotAllowPlugins() OVERRIDE; 144 145 virtual WebCookieJar* cookieJar() const OVERRIDE; 146 virtual bool willCheckAndDispatchMessageEvent(SecurityOrigin* target, MessageEvent*, LocalFrame* sourceFrame) const OVERRIDE; 147 virtual void didChangeName(const String&) OVERRIDE; 148 149 virtual void dispatchWillOpenSocketStream(SocketStreamHandle*) OVERRIDE; 150 virtual void dispatchWillOpenWebSocket(WebSocketHandle*) OVERRIDE; 151 152 virtual void dispatchWillStartUsingPeerConnectionHandler(WebRTCPeerConnectionHandler*) OVERRIDE; 153 154 virtual void didRequestAutocomplete(HTMLFormElement*) OVERRIDE; 155 156 virtual bool allowWebGL(bool enabledPerSettings) OVERRIDE; 157 virtual void didLoseWebGLContext(int arbRobustnessContextLostReason) OVERRIDE; 158 159 virtual void dispatchWillInsertBody() OVERRIDE; 160 161 virtual PassOwnPtr<WebServiceWorkerProvider> createServiceWorkerProvider() OVERRIDE; 162 virtual bool isControlledByServiceWorker() OVERRIDE; 163 virtual SharedWorkerRepositoryClient* sharedWorkerRepositoryClient() OVERRIDE; 164 165 virtual PassOwnPtr<WebApplicationCacheHost> createApplicationCacheHost(WebApplicationCacheHostClient*) OVERRIDE; 166 167 virtual void didStopAllLoaders() OVERRIDE; 168 169 virtual void dispatchDidChangeManifest() OVERRIDE; 170 171 private: 172 virtual bool isFrameLoaderClientImpl() const OVERRIDE { return true; } 173 174 PassOwnPtr<WebPluginLoadObserver> pluginLoadObserver(DocumentLoader*); 175 176 // The WebFrame that owns this object and manages its lifetime. Therefore, 177 // the web frame object is guaranteed to exist. 178 WebLocalFrameImpl* m_webFrame; 179 }; 180 181 DEFINE_TYPE_CASTS(FrameLoaderClientImpl, FrameLoaderClient, client, client->isFrameLoaderClientImpl(), client.isFrameLoaderClientImpl()); 182 183 } // namespace blink 184 185 #endif 186