diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
commit | 1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch) | |
tree | 46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/WebCore/loader/FrameLoaderClient.h | |
parent | 32761a6cee1d0dee366b885b7b9c777e67885688 (diff) | |
download | WebKitGtk-tarball-master.tar.gz |
webkitgtk-2.16.5HEADwebkitgtk-2.16.5master
Diffstat (limited to 'Source/WebCore/loader/FrameLoaderClient.h')
-rw-r--r-- | Source/WebCore/loader/FrameLoaderClient.h | 519 |
1 files changed, 269 insertions, 250 deletions
diff --git a/Source/WebCore/loader/FrameLoaderClient.h b/Source/WebCore/loader/FrameLoaderClient.h index c81bdba41..66e386e52 100644 --- a/Source/WebCore/loader/FrameLoaderClient.h +++ b/Source/WebCore/loader/FrameLoaderClient.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved. + * Copyright (C) 2006-2017 Apple Inc. All rights reserved. * Copyright (C) 2012 Google Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -11,7 +11,7 @@ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of + * 3. Neither the name of Apple Inc. ("Apple") nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * @@ -27,18 +27,22 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#ifndef FrameLoaderClient_h -#define FrameLoaderClient_h +#pragma once #include "FrameLoaderTypes.h" -#include "IconURL.h" #include "LayoutMilestones.h" +#include "LinkIcon.h" #include "ResourceLoadPriority.h" #include <functional> #include <wtf/Forward.h> #include <wtf/Vector.h> +#include <wtf/text/WTFString.h> -#if PLATFORM(MAC) +#if ENABLE(CONTENT_FILTERING) +#include "ContentFilterUnblockHandler.h" +#endif + +#if PLATFORM(COCOA) #ifdef __OBJC__ #import <Foundation/Foundation.h> typedef id RemoteAXObjectRef; @@ -47,296 +51,311 @@ typedef void* RemoteAXObjectRef; #endif #endif -typedef class _jobject* jobject; - -#if PLATFORM(MAC) && !defined(__OBJC__) -class NSCachedURLResponse; -class NSView; +#if PLATFORM(COCOA) +OBJC_CLASS NSArray; +OBJC_CLASS NSCachedURLResponse; +OBJC_CLASS NSDictionary; +OBJC_CLASS NSView; #endif namespace WebCore { - class AuthenticationChallenge; - class CachedFrame; - class CachedResourceRequest; - class Color; - class DOMWindowExtension; - class DOMWrapperWorld; - class DocumentLoader; - class Element; - class FormState; - class Frame; - class FrameLoader; - class FrameNetworkingContext; - class HistoryItem; - class HTMLAppletElement; - class HTMLFormElement; - class HTMLFrameOwnerElement; -#if ENABLE(PLUGIN_PROXY_FOR_VIDEO) - class HTMLMediaElement; -#endif - class HTMLPlugInElement; - class IntSize; - class URL; - class MessageEvent; - class NavigationAction; - class Page; - class ProtectionSpace; - class PluginView; - class PolicyChecker; - class ResourceError; - class ResourceHandle; - class ResourceRequest; - class ResourceResponse; -#if ENABLE(MEDIA_STREAM) - class RTCPeerConnectionHandler; +class AuthenticationChallenge; +class CachedFrame; +class CachedResourceRequest; +class Color; +class DOMWindowExtension; +class DOMWrapperWorld; +class DocumentLoader; +class Element; +class FormState; +class Frame; +class FrameLoader; +class FrameNetworkingContext; +class HTMLAppletElement; +class HTMLFormElement; +class HTMLFrameOwnerElement; +class HTMLPlugInElement; +class HistoryItem; +class IntSize; +class MessageEvent; +class NavigationAction; +class Page; +class PluginViewBase; +class PolicyChecker; +class ProtectionSpace; +class QuickLookHandleClient; +class RTCPeerConnectionHandler; +class ResourceError; +class ResourceHandle; +class ResourceRequest; +class ResourceResponse; +class SecurityOrigin; +class SessionID; +class SharedBuffer; +class SubstituteData; +class URL; +class Widget; + +struct StringWithDirection; + +typedef std::function<void (PolicyAction)> FramePolicyFunction; + +class WEBCORE_EXPORT FrameLoaderClient { +public: + // An inline function cannot be the first non-abstract virtual function declared + // in the class as it results in the vtable being generated as a weak symbol. + // This hurts performance (in Mac OS X at least, when loadig frameworks), so we + // don't want to do it in WebKit. + virtual bool hasHTMLView() const; + + virtual ~FrameLoaderClient() { } + + virtual void frameLoaderDestroyed() = 0; + + virtual bool hasWebView() const = 0; // mainly for assertions + + virtual void makeRepresentation(DocumentLoader*) = 0; + +#if PLATFORM(IOS) + // Returns true if the client forced the layout. + virtual bool forceLayoutOnRestoreFromPageCache() = 0; #endif - class SecurityOrigin; - class SharedBuffer; - class SocketStreamHandle; - class StringWithDirection; - class SubstituteData; - class Widget; - - typedef std::function<void (PolicyAction)> FramePolicyFunction; + virtual void forceLayoutForNonHTML() = 0; - class FrameLoaderClient { - public: - // An inline function cannot be the first non-abstract virtual function declared - // in the class as it results in the vtable being generated as a weak symbol. - // This hurts performance (in Mac OS X at least, when loadig frameworks), so we - // don't want to do it in WebKit. - virtual bool hasHTMLView() const; + virtual void setCopiesOnScroll() = 0; - virtual ~FrameLoaderClient() { } + virtual void detachedFromParent2() = 0; + virtual void detachedFromParent3() = 0; - virtual void frameLoaderDestroyed() = 0; + virtual void assignIdentifierToInitialRequest(unsigned long identifier, DocumentLoader*, const ResourceRequest&) = 0; - virtual bool hasWebView() const = 0; // mainly for assertions + virtual void dispatchWillSendRequest(DocumentLoader*, unsigned long identifier, ResourceRequest&, const ResourceResponse& redirectResponse) = 0; + virtual bool shouldUseCredentialStorage(DocumentLoader*, unsigned long identifier) = 0; + virtual void dispatchDidReceiveAuthenticationChallenge(DocumentLoader*, unsigned long identifier, const AuthenticationChallenge&) = 0; +#if USE(PROTECTION_SPACE_AUTH_CALLBACK) + virtual bool canAuthenticateAgainstProtectionSpace(DocumentLoader*, unsigned long identifier, const ProtectionSpace&) = 0; +#endif - virtual void makeRepresentation(DocumentLoader*) = 0; - virtual void forceLayout() = 0; #if PLATFORM(IOS) - virtual void forceLayoutWithoutRecalculatingStyles() = 0; + virtual RetainPtr<CFDictionaryRef> connectionProperties(DocumentLoader*, unsigned long identifier) = 0; #endif - virtual void forceLayoutForNonHTML() = 0; - virtual void setCopiesOnScroll() = 0; + virtual void dispatchDidReceiveResponse(DocumentLoader*, unsigned long identifier, const ResourceResponse&) = 0; + virtual void dispatchDidReceiveContentLength(DocumentLoader*, unsigned long identifier, int dataLength) = 0; + virtual void dispatchDidFinishLoading(DocumentLoader*, unsigned long identifier) = 0; + virtual void dispatchDidFailLoading(DocumentLoader*, unsigned long identifier, const ResourceError&) = 0; + virtual bool dispatchDidLoadResourceFromMemoryCache(DocumentLoader*, const ResourceRequest&, const ResourceResponse&, int length) = 0; + + virtual void dispatchDidDispatchOnloadEvents() = 0; + virtual void dispatchDidReceiveServerRedirectForProvisionalLoad() = 0; + virtual void dispatchDidChangeProvisionalURL() { } + virtual void dispatchDidCancelClientRedirect() = 0; + virtual void dispatchWillPerformClientRedirect(const URL&, double interval, double fireDate) = 0; + virtual void dispatchDidNavigateWithinPage() { } + virtual void dispatchDidChangeLocationWithinPage() = 0; + virtual void dispatchDidPushStateWithinPage() = 0; + virtual void dispatchDidReplaceStateWithinPage() = 0; + virtual void dispatchDidPopStateWithinPage() = 0; + virtual void dispatchWillClose() = 0; + virtual void dispatchDidReceiveIcon() = 0; + virtual void dispatchDidStartProvisionalLoad() = 0; + virtual void dispatchDidReceiveTitle(const StringWithDirection&) = 0; + virtual void dispatchDidCommitLoad(std::optional<HasInsecureContent>) = 0; + virtual void dispatchDidFailProvisionalLoad(const ResourceError&) = 0; + virtual void dispatchDidFailLoad(const ResourceError&) = 0; + virtual void dispatchDidFinishDocumentLoad() = 0; + virtual void dispatchDidFinishLoad() = 0; +#if ENABLE(DATA_DETECTION) + virtual void dispatchDidFinishDataDetection(NSArray *detectionResults) = 0; +#endif - virtual void detachedFromParent2() = 0; - virtual void detachedFromParent3() = 0; + virtual void dispatchDidLayout() { } + virtual void dispatchDidReachLayoutMilestone(LayoutMilestones) { } - virtual void assignIdentifierToInitialRequest(unsigned long identifier, DocumentLoader*, const ResourceRequest&) = 0; + virtual Frame* dispatchCreatePage(const NavigationAction&) = 0; + virtual void dispatchShow() = 0; - virtual void dispatchWillSendRequest(DocumentLoader*, unsigned long identifier, ResourceRequest&, const ResourceResponse& redirectResponse) = 0; - virtual bool shouldUseCredentialStorage(DocumentLoader*, unsigned long identifier) = 0; - virtual void dispatchDidReceiveAuthenticationChallenge(DocumentLoader*, unsigned long identifier, const AuthenticationChallenge&) = 0; - virtual void dispatchDidCancelAuthenticationChallenge(DocumentLoader*, unsigned long identifier, const AuthenticationChallenge&) = 0; -#if USE(PROTECTION_SPACE_AUTH_CALLBACK) - virtual bool canAuthenticateAgainstProtectionSpace(DocumentLoader*, unsigned long identifier, const ProtectionSpace&) = 0; -#endif + virtual void dispatchDecidePolicyForResponse(const ResourceResponse&, const ResourceRequest&, FramePolicyFunction) = 0; + virtual void dispatchDecidePolicyForNewWindowAction(const NavigationAction&, const ResourceRequest&, FormState*, const String& frameName, FramePolicyFunction) = 0; + virtual void dispatchDecidePolicyForNavigationAction(const NavigationAction&, const ResourceRequest&, FormState*, FramePolicyFunction) = 0; + virtual void cancelPolicyCheck() = 0; -#if PLATFORM(IOS) - virtual RetainPtr<CFDictionaryRef> connectionProperties(DocumentLoader*, unsigned long identifier) = 0; -#endif + virtual void dispatchUnableToImplementPolicy(const ResourceError&) = 0; - virtual void dispatchDidReceiveResponse(DocumentLoader*, unsigned long identifier, const ResourceResponse&) = 0; - virtual void dispatchDidReceiveContentLength(DocumentLoader*, unsigned long identifier, int dataLength) = 0; - virtual void dispatchDidFinishLoading(DocumentLoader*, unsigned long identifier) = 0; - virtual void dispatchDidFailLoading(DocumentLoader*, unsigned long identifier, const ResourceError&) = 0; - virtual bool dispatchDidLoadResourceFromMemoryCache(DocumentLoader*, const ResourceRequest&, const ResourceResponse&, int length) = 0; - - virtual void dispatchDidHandleOnloadEvents() = 0; - virtual void dispatchDidReceiveServerRedirectForProvisionalLoad() = 0; - virtual void dispatchDidCancelClientRedirect() = 0; - virtual void dispatchWillPerformClientRedirect(const URL&, double interval, double fireDate) = 0; - virtual void dispatchDidNavigateWithinPage() { } - virtual void dispatchDidChangeLocationWithinPage() = 0; - virtual void dispatchDidPushStateWithinPage() = 0; - virtual void dispatchDidReplaceStateWithinPage() = 0; - virtual void dispatchDidPopStateWithinPage() = 0; - virtual void dispatchWillClose() = 0; - virtual void dispatchDidReceiveIcon() = 0; - virtual void dispatchDidStartProvisionalLoad() = 0; - virtual void dispatchDidReceiveTitle(const StringWithDirection&) = 0; - virtual void dispatchDidChangeIcons(IconType) = 0; - virtual void dispatchDidCommitLoad() = 0; - virtual void dispatchDidFailProvisionalLoad(const ResourceError&) = 0; - virtual void dispatchDidFailLoad(const ResourceError&) = 0; - virtual void dispatchDidFinishDocumentLoad() = 0; - virtual void dispatchDidFinishLoad() = 0; - - virtual void dispatchDidLayout() { } - virtual void dispatchDidLayout(LayoutMilestones) { } - - virtual Frame* dispatchCreatePage(const NavigationAction&) = 0; - virtual void dispatchShow() = 0; - - virtual void dispatchDecidePolicyForResponse(const ResourceResponse&, const ResourceRequest&, FramePolicyFunction) = 0; - virtual void dispatchDecidePolicyForNewWindowAction(const NavigationAction&, const ResourceRequest&, PassRefPtr<FormState>, const String& frameName, FramePolicyFunction) = 0; - virtual void dispatchDecidePolicyForNavigationAction(const NavigationAction&, const ResourceRequest&, PassRefPtr<FormState>, FramePolicyFunction) = 0; - virtual void cancelPolicyCheck() = 0; - - virtual void dispatchUnableToImplementPolicy(const ResourceError&) = 0; - - virtual void dispatchWillRequestResource(CachedResourceRequest*) { } - - virtual void dispatchWillSendSubmitEvent(PassRefPtr<FormState>) = 0; - virtual void dispatchWillSubmitForm(PassRefPtr<FormState>, FramePolicyFunction) = 0; - - virtual void revertToProvisionalState(DocumentLoader*) = 0; - virtual void setMainDocumentError(DocumentLoader*, const ResourceError&) = 0; - - virtual void setMainFrameDocumentReady(bool) = 0; - - virtual void startDownload(const ResourceRequest&, const String& suggestedName = String()) = 0; - - virtual void willChangeTitle(DocumentLoader*) = 0; - virtual void didChangeTitle(DocumentLoader*) = 0; - - virtual void committedLoad(DocumentLoader*, const char*, int) = 0; - virtual void finishedLoading(DocumentLoader*) = 0; - - virtual void updateGlobalHistory() = 0; - virtual void updateGlobalHistoryRedirectLinks() = 0; - - virtual bool shouldGoToHistoryItem(HistoryItem*) const = 0; - virtual void updateGlobalHistoryItemForPage() { } - - // This frame has set its opener to null, disowning it for the lifetime of the frame. - // See http://html.spec.whatwg.org/#dom-opener. - // FIXME: JSC should allow disowning opener. - <https://bugs.webkit.org/show_bug.cgi?id=103913>. - virtual void didDisownOpener() { } - - // This frame has displayed inactive content (such as an image) from an - // insecure source. Inactive content cannot spread to other frames. - virtual void didDisplayInsecureContent() = 0; - - // The indicated security origin has run active content (such as a - // script) from an insecure source. Note that the insecure content can - // spread to other frames in the same origin. - virtual void didRunInsecureContent(SecurityOrigin*, const URL&) = 0; - virtual void didDetectXSS(const URL&, bool didBlockEntirePage) = 0; - - virtual ResourceError cancelledError(const ResourceRequest&) = 0; - virtual ResourceError blockedError(const ResourceRequest&) = 0; - virtual ResourceError cannotShowURLError(const ResourceRequest&) = 0; - virtual ResourceError interruptedForPolicyChangeError(const ResourceRequest&) = 0; - - virtual ResourceError cannotShowMIMETypeError(const ResourceResponse&) = 0; - virtual ResourceError fileDoesNotExistError(const ResourceResponse&) = 0; - virtual ResourceError pluginWillHandleLoadError(const ResourceResponse&) = 0; - - virtual bool shouldFallBack(const ResourceError&) = 0; - - virtual bool canHandleRequest(const ResourceRequest&) const = 0; - virtual bool canShowMIMEType(const String& MIMEType) const = 0; - virtual bool canShowMIMETypeAsHTML(const String& MIMEType) const = 0; - virtual bool representationExistsForURLScheme(const String& URLScheme) const = 0; - virtual String generatedMIMETypeForURLScheme(const String& URLScheme) const = 0; - - virtual void frameLoadCompleted() = 0; - virtual void saveViewStateToItem(HistoryItem*) = 0; - virtual void restoreViewState() = 0; - virtual void provisionalLoadStarted() = 0; - virtual void didFinishLoad() = 0; - virtual void prepareForDataSourceReplacement() = 0; - - virtual PassRefPtr<DocumentLoader> createDocumentLoader(const ResourceRequest&, const SubstituteData&) = 0; - virtual void setTitle(const StringWithDirection&, const URL&) = 0; - - virtual String userAgent(const URL&) = 0; - - virtual void savePlatformDataToCachedFrame(CachedFrame*) = 0; - virtual void transitionToCommittedFromCachedFrame(CachedFrame*) = 0; -#if PLATFORM(IOS) - virtual void didRestoreFrameHierarchyForCachedFrame() = 0; + virtual void dispatchWillSendSubmitEvent(Ref<FormState>&&) = 0; + virtual void dispatchWillSubmitForm(FormState&, FramePolicyFunction) = 0; + + virtual void revertToProvisionalState(DocumentLoader*) = 0; + virtual void setMainDocumentError(DocumentLoader*, const ResourceError&) = 0; + + virtual void setMainFrameDocumentReady(bool) = 0; + + virtual void startDownload(const ResourceRequest&, const String& suggestedName = String()) = 0; + + virtual void willChangeTitle(DocumentLoader*) = 0; + virtual void didChangeTitle(DocumentLoader*) = 0; + + virtual void willReplaceMultipartContent() = 0; + virtual void didReplaceMultipartContent() = 0; + + virtual void committedLoad(DocumentLoader*, const char*, int) = 0; + virtual void finishedLoading(DocumentLoader*) = 0; + + virtual void updateGlobalHistory() = 0; + virtual void updateGlobalHistoryRedirectLinks() = 0; + + virtual bool shouldGoToHistoryItem(HistoryItem*) const = 0; + virtual void updateGlobalHistoryItemForPage() { } + + // This frame has set its opener to null, disowning it for the lifetime of the frame. + // See http://html.spec.whatwg.org/#dom-opener. + // FIXME: JSC should allow disowning opener. - <https://bugs.webkit.org/show_bug.cgi?id=103913>. + virtual void didDisownOpener() { } + + // This frame has displayed inactive content (such as an image) from an + // insecure source. Inactive content cannot spread to other frames. + virtual void didDisplayInsecureContent() = 0; + + // The indicated security origin has run active content (such as a + // script) from an insecure source. Note that the insecure content can + // spread to other frames in the same origin. + virtual void didRunInsecureContent(SecurityOrigin&, const URL&) = 0; + virtual void didDetectXSS(const URL&, bool didBlockEntirePage) = 0; + + virtual ResourceError cancelledError(const ResourceRequest&) = 0; + virtual ResourceError blockedError(const ResourceRequest&) = 0; + virtual ResourceError blockedByContentBlockerError(const ResourceRequest&) = 0; + virtual ResourceError cannotShowURLError(const ResourceRequest&) = 0; + virtual ResourceError interruptedForPolicyChangeError(const ResourceRequest&) = 0; +#if ENABLE(CONTENT_FILTERING) + virtual ResourceError blockedByContentFilterError(const ResourceRequest&) = 0; #endif - virtual void transitionToCommittedForNewPage() = 0; - virtual void didSaveToPageCache() = 0; - virtual void didRestoreFromPageCache() = 0; + virtual ResourceError cannotShowMIMETypeError(const ResourceResponse&) = 0; + virtual ResourceError fileDoesNotExistError(const ResourceResponse&) = 0; + virtual ResourceError pluginWillHandleLoadError(const ResourceResponse&) = 0; + + virtual bool shouldFallBack(const ResourceError&) = 0; - virtual void dispatchDidBecomeFrameset(bool) = 0; // Can change due to navigation or DOM modification. + virtual bool canHandleRequest(const ResourceRequest&) const = 0; + virtual bool canShowMIMEType(const String& MIMEType) const = 0; + virtual bool canShowMIMETypeAsHTML(const String& MIMEType) const = 0; + virtual bool representationExistsForURLScheme(const String& URLScheme) const = 0; + virtual String generatedMIMETypeForURLScheme(const String& URLScheme) const = 0; - virtual bool canCachePage() const = 0; - virtual void convertMainResourceLoadToDownload(DocumentLoader*, const ResourceRequest&, const ResourceResponse&) = 0; + virtual void frameLoadCompleted() = 0; + virtual void saveViewStateToItem(HistoryItem&) = 0; + virtual void restoreViewState() = 0; + virtual void provisionalLoadStarted() = 0; + virtual void didFinishLoad() = 0; + virtual void prepareForDataSourceReplacement() = 0; - virtual PassRefPtr<Frame> createFrame(const URL& url, const String& name, HTMLFrameOwnerElement* ownerElement, const String& referrer, bool allowsScrolling, int marginWidth, int marginHeight) = 0; - virtual PassRefPtr<Widget> createPlugin(const IntSize&, HTMLPlugInElement*, const URL&, const Vector<String>&, const Vector<String>&, const String&, bool loadManually) = 0; - virtual void recreatePlugin(Widget*) = 0; - virtual void redirectDataToPlugin(Widget* pluginWidget) = 0; + virtual Ref<DocumentLoader> createDocumentLoader(const ResourceRequest&, const SubstituteData&) = 0; + virtual void updateCachedDocumentLoader(DocumentLoader&) = 0; + virtual void setTitle(const StringWithDirection&, const URL&) = 0; - virtual PassRefPtr<Widget> createJavaAppletWidget(const IntSize&, HTMLAppletElement*, const URL& baseURL, const Vector<String>& paramNames, const Vector<String>& paramValues) = 0; + virtual String userAgent(const URL&) = 0; - virtual void dispatchDidFailToStartPlugin(const PluginView*) const { } -#if ENABLE(PLUGIN_PROXY_FOR_VIDEO) - virtual PassRefPtr<Widget> createMediaPlayerProxyPlugin(const IntSize&, HTMLMediaElement*, const URL&, const Vector<String>&, const Vector<String>&, const String&) = 0; - virtual void hideMediaPlayerProxyPlugin(Widget*) = 0; - virtual void showMediaPlayerProxyPlugin(Widget*) = 0; + virtual String overrideContentSecurityPolicy() const { return String(); } + + virtual void savePlatformDataToCachedFrame(CachedFrame*) = 0; + virtual void transitionToCommittedFromCachedFrame(CachedFrame*) = 0; +#if PLATFORM(IOS) + virtual void didRestoreFrameHierarchyForCachedFrame() = 0; #endif + virtual void transitionToCommittedForNewPage() = 0; + + virtual void didSaveToPageCache() = 0; + virtual void didRestoreFromPageCache() = 0; + + virtual void dispatchDidBecomeFrameset(bool) = 0; // Can change due to navigation or DOM modification. + + virtual bool canCachePage() const = 0; + virtual void convertMainResourceLoadToDownload(DocumentLoader*, SessionID, const ResourceRequest&, const ResourceResponse&) = 0; + + virtual RefPtr<Frame> createFrame(const URL&, const String& name, HTMLFrameOwnerElement&, const String& referrer, bool allowsScrolling, int marginWidth, int marginHeight) = 0; + virtual RefPtr<Widget> createPlugin(const IntSize&, HTMLPlugInElement&, const URL&, const Vector<String>&, const Vector<String>&, const String&, bool loadManually) = 0; + virtual void recreatePlugin(Widget*) = 0; + virtual void redirectDataToPlugin(Widget&) = 0; + + virtual RefPtr<Widget> createJavaAppletWidget(const IntSize&, HTMLAppletElement&, const URL& baseURL, const Vector<String>& paramNames, const Vector<String>& paramValues) = 0; - virtual ObjectContentType objectContentType(const URL&, const String& mimeType, bool shouldPreferPlugInsForImages) = 0; - virtual String overrideMediaType() const = 0; + virtual ObjectContentType objectContentType(const URL&, const String& mimeType) = 0; + virtual String overrideMediaType() const = 0; - virtual void dispatchDidClearWindowObjectInWorld(DOMWrapperWorld&) = 0; + virtual void dispatchDidClearWindowObjectInWorld(DOMWrapperWorld&) = 0; - virtual void registerForIconNotification(bool listen = true) = 0; + virtual void registerForIconNotification(bool listen = true) = 0; -#if PLATFORM(MAC) - // Allow an accessibility object to retrieve a Frame parent if there's no PlatformWidget. - virtual RemoteAXObjectRef accessibilityRemoteObject() = 0; - virtual NSCachedURLResponse* willCacheResponse(DocumentLoader*, unsigned long identifier, NSCachedURLResponse*) const = 0; +#if PLATFORM(COCOA) + // Allow an accessibility object to retrieve a Frame parent if there's no PlatformWidget. + virtual RemoteAXObjectRef accessibilityRemoteObject() = 0; + virtual NSCachedURLResponse* willCacheResponse(DocumentLoader*, unsigned long identifier, NSCachedURLResponse*) const = 0; + virtual NSDictionary *dataDetectionContext() { return nullptr; } #endif -#if PLATFORM(WIN) && USE(CFNETWORK) - // FIXME: Windows should use willCacheResponse - <https://bugs.webkit.org/show_bug.cgi?id=57257>. - virtual bool shouldCacheResponse(DocumentLoader*, unsigned long identifier, const ResourceResponse&, const unsigned char* data, unsigned long long length) = 0; + +#if PLATFORM(WIN) && USE(CFURLCONNECTION) + // FIXME: Windows should use willCacheResponse - <https://bugs.webkit.org/show_bug.cgi?id=57257>. + virtual bool shouldCacheResponse(DocumentLoader*, unsigned long identifier, const ResourceResponse&, const unsigned char* data, unsigned long long length) = 0; #endif - virtual bool shouldAlwaysUsePluginDocument(const String& /*mimeType*/) const { return false; } - virtual bool shouldLoadMediaElementURL(const URL&) const { return true; } + virtual bool shouldAlwaysUsePluginDocument(const String& /*mimeType*/) const { return false; } + virtual bool shouldLoadMediaElementURL(const URL&) const { return true; } - virtual void didChangeScrollOffset() { } + virtual void didChangeScrollOffset() { } - virtual bool allowScript(bool enabledPerSettings) { return enabledPerSettings; } - virtual bool allowScriptFromSource(bool enabledPerSettings, const URL&) { return enabledPerSettings; } - virtual bool allowPlugins(bool enabledPerSettings) { return enabledPerSettings; } - virtual bool allowImage(bool enabledPerSettings, const URL&) { return enabledPerSettings; } - virtual bool allowDisplayingInsecureContent(bool enabledPerSettings, SecurityOrigin*, const URL&) { return enabledPerSettings; } - virtual bool allowRunningInsecureContent(bool enabledPerSettings, SecurityOrigin*, const URL&) { return enabledPerSettings; } + virtual bool allowScript(bool enabledPerSettings) { return enabledPerSettings; } - // Clients that generally disallow universal access can make exceptions for particular URLs. - virtual bool shouldForceUniversalAccessFromLocalURL(const URL&) { return false; } + // Clients that generally disallow universal access can make exceptions for particular URLs. + virtual bool shouldForceUniversalAccessFromLocalURL(const URL&) { return false; } - virtual PassRefPtr<FrameNetworkingContext> createNetworkingContext() = 0; + virtual Ref<FrameNetworkingContext> createNetworkingContext() = 0; - virtual bool shouldPaintBrokenImage(const URL&) const { return true; } +#if ENABLE(REQUEST_AUTOCOMPLETE) + virtual void didRequestAutocomplete(Ref<FormState>&&) = 0; +#endif - virtual void dispatchWillOpenSocketStream(SocketStreamHandle*) { } + virtual bool shouldPaintBrokenImage(const URL&) const { return true; } - virtual void dispatchGlobalObjectAvailable(DOMWrapperWorld&) { } - virtual void dispatchWillDisconnectDOMWindowExtensionFromGlobalObject(DOMWindowExtension*) { } - virtual void dispatchDidReconnectDOMWindowExtensionToGlobalObject(DOMWindowExtension*) { } - virtual void dispatchWillDestroyGlobalObjectForDOMWindowExtension(DOMWindowExtension*) { } + virtual void dispatchGlobalObjectAvailable(DOMWrapperWorld&) { } + virtual void dispatchWillDisconnectDOMWindowExtensionFromGlobalObject(DOMWindowExtension*) { } + virtual void dispatchDidReconnectDOMWindowExtensionToGlobalObject(DOMWindowExtension*) { } + virtual void dispatchWillDestroyGlobalObjectForDOMWindowExtension(DOMWindowExtension*) { } -#if ENABLE(MEDIA_STREAM) - virtual void dispatchWillStartUsingPeerConnectionHandler(RTCPeerConnectionHandler*) { } +#if ENABLE(WEB_RTC) + virtual void dispatchWillStartUsingPeerConnectionHandler(RTCPeerConnectionHandler*) { } #endif #if ENABLE(WEBGL) - virtual bool allowWebGL(bool enabledPerSettings) { return enabledPerSettings; } - // Informs the embedder that a WebGL canvas inside this frame received a lost context - // notification with the given GL_ARB_robustness guilt/innocence code (see Extensions3D.h). - virtual void didLoseWebGLContext(int) { } - virtual WebGLLoadPolicy webGLPolicyForURL(const String&) const { return WebGLAllow; } + virtual bool allowWebGL(bool enabledPerSettings) { return enabledPerSettings; } + // Informs the embedder that a WebGL canvas inside this frame received a lost context + // notification with the given GL_ARB_robustness guilt/innocence code (see Extensions3D.h). + virtual void didLoseWebGLContext(int) { } + virtual WebGLLoadPolicy webGLPolicyForURL(const String&) const { return WebGLAllowCreation; } + virtual WebGLLoadPolicy resolveWebGLPolicyForURL(const String&) const { return WebGLAllowCreation; } #endif - virtual void forcePageTransitionIfNeeded() { } + virtual void forcePageTransitionIfNeeded() { } - // FIXME (bug 116233): We need to get rid of EmptyFrameLoaderClient completely, then this will no longer be needed. - virtual bool isEmptyFrameLoaderClient() { return false; } - }; + // FIXME (bug 116233): We need to get rid of EmptyFrameLoaderClient completely, then this will no longer be needed. + virtual bool isEmptyFrameLoaderClient() { return false; } -} // namespace WebCore +#if USE(QUICK_LOOK) + virtual RefPtr<QuickLookHandleClient> createQuickLookHandleClient(const String&, const String&) = 0; +#endif + +#if ENABLE(CONTENT_FILTERING) + virtual void contentFilterDidBlockLoad(ContentFilterUnblockHandler) { } +#endif + + virtual void prefetchDNS(const String&) = 0; + + virtual void didRestoreScrollPosition() { } -#endif // FrameLoaderClient_h + virtual bool useIconLoadingClient() { return false; } + virtual void getLoadDecisionForIcon(const LinkIcon&, uint64_t) { } + virtual void finishedLoadingIcon(uint64_t, SharedBuffer*) { } +}; + +} // namespace WebCore |