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)#ifndef FrameLoaderClientImpl_h
335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define FrameLoaderClientImpl_h
345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/loader/FrameLoaderClient.h"
367242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "platform/heap/Handle.h"
3751b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)#include "platform/weborigin/KURL.h"
38521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)#include "wtf/PassOwnPtr.h"
39521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)#include "wtf/RefPtr.h"
405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
4151b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)namespace blink {
425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
4310f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdochclass WebLocalFrameImpl;
445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class WebPluginContainerImpl;
455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class WebPluginLoadObserver;
465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
47e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)class FrameLoaderClientImpl FINAL : public FrameLoaderClient {
485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)public:
49c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)    explicit FrameLoaderClientImpl(WebLocalFrameImpl* webFrame);
5009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual ~FrameLoaderClientImpl();
515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
5210f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch    WebLocalFrameImpl* webFrame() const { return m_webFrame; }
535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
54e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    // FrameLoaderClient ----------------------------------------------
555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    // Notifies the WebView delegate that the JS window object has been cleared,
575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    // giving it a chance to bind native objects to the window before script
585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    // parsing begins.
59323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)    virtual void dispatchDidClearWindowObjectInMainWorld() OVERRIDE;
6009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void documentElementAvailable() OVERRIDE;
615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
6209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void didCreateScriptContext(v8::Handle<v8::Context>, int extensionGroup, int worldId) OVERRIDE;
6309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void willReleaseScriptContext(v8::Handle<v8::Context>, int worldId) OVERRIDE;
645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    // Returns true if we should allow the given V8 extension to be added to
665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    // the script context at the currently loading page and given extension group.
6709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual bool allowScriptExtension(const String& extensionName, int extensionGroup, int worldId) OVERRIDE;
6809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)
6909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual bool hasWebView() const OVERRIDE;
70e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    virtual Frame* opener() const OVERRIDE;
71e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    virtual void setOpener(Frame*) OVERRIDE;
72e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    virtual Frame* parent() const OVERRIDE;
73e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    virtual Frame* top() const OVERRIDE;
74e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    virtual Frame* previousSibling() const OVERRIDE;
75e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    virtual Frame* nextSibling() const OVERRIDE;
76e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    virtual Frame* firstChild() const OVERRIDE;
77e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    virtual Frame* lastChild() const OVERRIDE;
7809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void detachedFromParent() OVERRIDE;
79e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    virtual void dispatchWillSendRequest(DocumentLoader*, unsigned long identifier, ResourceRequest&, const ResourceResponse& redirectResponse) OVERRIDE;
80e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    virtual void dispatchDidReceiveResponse(DocumentLoader*, unsigned long identifier, const ResourceResponse&) OVERRIDE;
81e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    virtual void dispatchDidChangeResourcePriority(unsigned long identifier, ResourceLoadPriority, int intraPriorityValue) OVERRIDE;
82e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    virtual void dispatchDidFinishLoading(DocumentLoader*, unsigned long identifier) OVERRIDE;
83e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    virtual void dispatchDidLoadResourceFromMemoryCache(const ResourceRequest&, const ResourceResponse&) OVERRIDE;
8409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void dispatchDidHandleOnloadEvents() OVERRIDE;
8509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void dispatchDidReceiveServerRedirectForProvisionalLoad() OVERRIDE;
86e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    virtual void dispatchDidNavigateWithinPage(HistoryItem*, HistoryCommitType) OVERRIDE;
8709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void dispatchWillClose() OVERRIDE;
88197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    virtual void dispatchDidStartProvisionalLoad(bool isTransitionNavigation) OVERRIDE;
8909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void dispatchDidReceiveTitle(const String&) OVERRIDE;
90e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    virtual void dispatchDidChangeIcons(IconType) OVERRIDE;
91e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    virtual void dispatchDidCommitLoad(LocalFrame*, HistoryItem*, HistoryCommitType) OVERRIDE;
92e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    virtual void dispatchDidFailProvisionalLoad(const ResourceError&) OVERRIDE;
93e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    virtual void dispatchDidFailLoad(const ResourceError&) OVERRIDE;
9409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void dispatchDidFinishDocumentLoad() OVERRIDE;
9509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void dispatchDidFinishLoad() OVERRIDE;
961e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)    virtual void dispatchDidFirstVisuallyNonEmptyLayout() OVERRIDE;
97197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch
98197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    virtual void dispatchDidChangeThemeColor() OVERRIDE;
99e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    virtual NavigationPolicy decidePolicyForNavigation(const ResourceRequest&, DocumentLoader*, NavigationPolicy, bool isTransitionNavigation) OVERRIDE;
100197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    virtual void dispatchAddNavigationTransitionData(const String& allowedDestinationOrigin, const String& selector, const String& markup) OVERRIDE;
101e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    virtual void dispatchWillRequestResource(FetchRequest*) OVERRIDE;
102e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    virtual void dispatchWillSendSubmitEvent(HTMLFormElement*) OVERRIDE;
103e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    virtual void dispatchWillSubmitForm(HTMLFormElement*) OVERRIDE;
104e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    virtual void didStartLoading(LoadStartType) OVERRIDE;
10507a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch    virtual void didStopLoading() OVERRIDE;
10607a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch    virtual void progressEstimateChanged(double progressEstimate) OVERRIDE;
107e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    virtual void loadURLExternally(const ResourceRequest&, NavigationPolicy, const String& suggestedName = String()) OVERRIDE;
10809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual bool navigateBackForward(int offset) const OVERRIDE;
10909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void didAccessInitialDocument() OVERRIDE;
11009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void didDisplayInsecureContent() OVERRIDE;
111e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    virtual void didRunInsecureContent(SecurityOrigin*, const KURL& insecureURL) OVERRIDE;
112e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    virtual void didDetectXSS(const KURL&, bool didBlockEntirePage) OVERRIDE;
113e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    virtual void didDispatchPingLoader(const KURL&) OVERRIDE;
11409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void selectorMatchChanged(const Vector<String>& addedSelectors, const Vector<String>& removedSelectors) OVERRIDE;
115e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    virtual PassRefPtr<DocumentLoader> createDocumentLoader(LocalFrame*, const ResourceRequest&, const SubstituteData&) OVERRIDE;
116e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    virtual WTF::String userAgent(const KURL&) OVERRIDE;
11709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual WTF::String doNotTrackValue() OVERRIDE;
11809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void transitionToCommittedForNewPage() OVERRIDE;
1197242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    virtual PassRefPtrWillBeRawPtr<LocalFrame> createFrame(const KURL&, const WTF::AtomicString& name, const Referrer&, HTMLFrameOwnerElement*) OVERRIDE;
120a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch    virtual bool canCreatePluginWithoutRenderer(const String& mimeType) const;
121e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    virtual PassRefPtr<Widget> createPlugin(
122e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)        HTMLPlugInElement*, const KURL&,
1235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        const Vector<WTF::String>&, const Vector<WTF::String>&,
124d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        const WTF::String&, bool loadManually, DetachedPluginPolicy) OVERRIDE;
125e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    virtual PassRefPtr<Widget> createJavaAppletWidget(
126e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)        HTMLAppletElement*,
127e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)        const KURL& /* base_url */,
1285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        const Vector<WTF::String>& paramNames,
12909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)        const Vector<WTF::String>& paramValues) OVERRIDE;
130e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    virtual ObjectContentType objectContentType(
131e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)        const KURL&, const WTF::String& mimeType, bool shouldPreferPlugInsForImages) OVERRIDE;
13209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void didChangeScrollOffset() OVERRIDE;
133d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    virtual void didUpdateCurrentHistoryItem() OVERRIDE;
134e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    virtual void didRemoveAllPendingStylesheet() OVERRIDE;
13509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual bool allowScript(bool enabledPerSettings) OVERRIDE;
136e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    virtual bool allowScriptFromSource(bool enabledPerSettings, const KURL& scriptURL) OVERRIDE;
13709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual bool allowPlugins(bool enabledPerSettings) OVERRIDE;
138e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    virtual bool allowImage(bool enabledPerSettings, const KURL& imageURL) OVERRIDE;
139e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    virtual bool allowMedia(const KURL& mediaURL) OVERRIDE;
140e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    virtual bool allowDisplayingInsecureContent(bool enabledPerSettings, SecurityOrigin*, const KURL&) OVERRIDE;
141e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    virtual bool allowRunningInsecureContent(bool enabledPerSettings, SecurityOrigin*, const KURL&) OVERRIDE;
14209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void didNotAllowScript() OVERRIDE;
14309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void didNotAllowPlugins() OVERRIDE;
14409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)
14509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual WebCookieJar* cookieJar() const OVERRIDE;
1467242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    virtual bool willCheckAndDispatchMessageEvent(SecurityOrigin* target, MessageEvent*, LocalFrame* sourceFrame) const OVERRIDE;
14709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void didChangeName(const String&) OVERRIDE;
1485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
149e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    virtual void dispatchWillOpenSocketStream(SocketStreamHandle*) OVERRIDE;
150e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    virtual void dispatchWillOpenWebSocket(WebSocketHandle*) OVERRIDE;
1515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
152e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    virtual void dispatchWillStartUsingPeerConnectionHandler(WebRTCPeerConnectionHandler*) OVERRIDE;
1535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
154e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    virtual void didRequestAutocomplete(HTMLFormElement*) OVERRIDE;
1555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
156926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    virtual bool allowWebGL(bool enabledPerSettings) OVERRIDE;
157926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    virtual void didLoseWebGLContext(int arbRobustnessContextLostReason) OVERRIDE;
158926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
159926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    virtual void dispatchWillInsertBody() OVERRIDE;
160926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
161d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    virtual PassOwnPtr<WebServiceWorkerProvider> createServiceWorkerProvider() OVERRIDE;
1627242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    virtual bool isControlledByServiceWorker() OVERRIDE;
163e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    virtual SharedWorkerRepositoryClient* sharedWorkerRepositoryClient() OVERRIDE;
16406f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)
165d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    virtual PassOwnPtr<WebApplicationCacheHost> createApplicationCacheHost(WebApplicationCacheHostClient*) OVERRIDE;
166d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
16706f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)    virtual void didStopAllLoaders() OVERRIDE;
1689bbd2f5e390b01907d97ecffde80aa1b06113aacTorne (Richard Coles)
169323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)    virtual void dispatchDidChangeManifest() OVERRIDE;
170323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)
1715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)private:
1721e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)    virtual bool isFrameLoaderClientImpl() const OVERRIDE { return true; }
1731e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)
174e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    PassOwnPtr<WebPluginLoadObserver> pluginLoadObserver(DocumentLoader*);
1755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    // The WebFrame that owns this object and manages its lifetime. Therefore,
1775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    // the web frame object is guaranteed to exist.
17810f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch    WebLocalFrameImpl* m_webFrame;
1795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
1805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
181e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)DEFINE_TYPE_CASTS(FrameLoaderClientImpl, FrameLoaderClient, client, client->isFrameLoaderClientImpl(), client.isFrameLoaderClientImpl());
1821e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)
18351b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)} // namespace blink
1845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif
186