blob: 8a552d08a682066f801b58403b607144f5b16f45 [file] [log] [blame]
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef WebRemoteFrameImpl_h
#define WebRemoteFrameImpl_h
#include "core/frame/RemoteFrame.h"
#include "platform/heap/SelfKeepAlive.h"
#include "public/platform/WebInsecureRequestPolicy.h"
#include "public/web/WebRemoteFrame.h"
#include "public/web/WebRemoteFrameClient.h"
#include "web/RemoteFrameClientImpl.h"
#include "web/WebExport.h"
#include "web/WebFrameImplBase.h"
#include "wtf/Compiler.h"
namespace blink {
class FrameHost;
class FrameOwner;
class RemoteFrame;
enum class WebFrameLoadType;
class WEB_EXPORT WebRemoteFrameImpl final : public WebFrameImplBase, WTF_NON_EXPORTED_BASE(public WebRemoteFrame) {
public:
static WebRemoteFrameImpl* create(WebTreeScopeType, WebRemoteFrameClient*, WebFrame* opener = nullptr);
~WebRemoteFrameImpl() override;
// WebFrame methods:
void close() override;
WebString uniqueName() const override;
WebString assignedName() const override;
void setName(const WebString&) override;
WebVector<WebIconURL> iconURLs(int iconTypesMask) const override;
void setRemoteWebLayer(WebLayer*) override;
void setSharedWorkerRepositoryClient(WebSharedWorkerRepositoryClient*) override;
void setCanHaveScrollbars(bool) override;
WebSize scrollOffset() const override;
void setScrollOffset(const WebSize&) override;
WebSize contentsSize() const override;
bool hasVisibleContent() const override;
WebRect visibleContentRect() const override;
bool hasHorizontalScrollbar() const override;
bool hasVerticalScrollbar() const override;
WebView* view() const override;
WebDocument document() const override;
WebPerformance performance() const override;
void dispatchUnloadEvent() override;
void executeScript(const WebScriptSource&) override;
void executeScriptInIsolatedWorld(
int worldID, const WebScriptSource* sources, unsigned numSources,
int extensionGroup) override;
void setIsolatedWorldSecurityOrigin(int worldID, const WebSecurityOrigin&) override;
void setIsolatedWorldContentSecurityPolicy(int worldID, const WebString&) override;
void addMessageToConsole(const WebConsoleMessage&) override;
void collectGarbage() override;
v8::Local<v8::Value> executeScriptAndReturnValue(
const WebScriptSource&) override;
void executeScriptInIsolatedWorld(
int worldID, const WebScriptSource* sourcesIn, unsigned numSources,
int extensionGroup, WebVector<v8::Local<v8::Value>>* results) override;
v8::Local<v8::Value> callFunctionEvenIfScriptDisabled(
v8::Local<v8::Function>,
v8::Local<v8::Value>,
int argc,
v8::Local<v8::Value> argv[]) override;
v8::Local<v8::Context> mainWorldScriptContext() const override;
v8::Local<v8::Context> deprecatedMainWorldScriptContext() const override;
void reload(WebFrameLoadType) override;
void reloadWithOverrideURL(const WebURL& overrideUrl, WebFrameLoadType) override;
void loadRequest(const WebURLRequest&) override;
void loadHTMLString(
const WebData& html, const WebURL& baseURL, const WebURL& unreachableURL,
bool replace) override;
void stopLoading() override;
WebDataSource* provisionalDataSource() const override;
WebDataSource* dataSource() const override;
void enableViewSourceMode(bool enable) override;
bool isViewSourceModeEnabled() const override;
void setReferrerForRequest(WebURLRequest&, const WebURL& referrer) override;
void dispatchWillSendRequest(WebURLRequest&) override;
WebURLLoader* createAssociatedURLLoader(const WebURLLoaderOptions&) override;
unsigned unloadListenerCount() const override;
int printBegin(const WebPrintParams&, const WebNode& constrainToNode) override;
float printPage(int pageToPrint, WebCanvas*) override;
float getPrintPageShrink(int page) override;
void printEnd() override;
bool isPrintScalingDisabledForPlugin(const WebNode&) override;
void printPagesWithBoundaries(WebCanvas*, const WebSize&) override;
void dispatchMessageEventWithOriginCheck(
const WebSecurityOrigin& intendedTargetOrigin,
const WebDOMEvent&) override;
WebRect selectionBoundsRect() const override;
bool selectionStartHasSpellingMarkerFor(int from, int length) const override;
WebString layerTreeAsText(bool showDebugInfo = false) const override;
WebFrameImplBase* toImplBase() { return this; }
// WebFrameImplBase methods:
void initializeCoreFrame(FrameHost*, FrameOwner*, const AtomicString& name, const AtomicString& uniqueName) override;
RemoteFrame* frame() const override { return m_frame.get(); }
void setCoreFrame(RemoteFrame*);
WebRemoteFrameClient* client() const { return m_client; }
static WebRemoteFrameImpl* fromFrame(RemoteFrame&);
// WebRemoteFrame methods:
WebLocalFrame* createLocalChild(WebTreeScopeType, const WebString& name, const WebString& uniqueName, WebSandboxFlags, WebFrameClient*, WebFrame* previousSibling, const WebFrameOwnerProperties&, WebFrame* opener) override;
WebRemoteFrame* createRemoteChild(WebTreeScopeType, const WebString& name, const WebString& uniqueName, WebSandboxFlags, WebRemoteFrameClient*, WebFrame* opener) override;
void initializeFromFrame(WebLocalFrame*) const override;
void setReplicatedOrigin(const WebSecurityOrigin&) const override;
void setReplicatedSandboxFlags(WebSandboxFlags) const override;
void setReplicatedName(const WebString& name, const WebString& uniqueName) const override;
void addReplicatedContentSecurityPolicyHeader(const WebString& headerValue, WebContentSecurityPolicyType, WebContentSecurityPolicySource) const override;
void resetReplicatedContentSecurityPolicy() const override;
void setReplicatedInsecureRequestPolicy(WebInsecureRequestPolicy) const override;
void setReplicatedPotentiallyTrustworthyUniqueOrigin(bool) const override;
void DispatchLoadEventForFrameOwner() const override;
void didStartLoading() override;
void didStopLoading() override;
bool isIgnoredForHitTest() const override;
void willEnterFullscreen() override;
DECLARE_TRACE();
private:
WebRemoteFrameImpl(WebTreeScopeType, WebRemoteFrameClient*);
// Inherited from WebFrame, but intentionally hidden: it never makes sense
// to call these on a WebRemoteFrameImpl.
bool isWebLocalFrame() const override;
WebLocalFrame* toWebLocalFrame() override;
bool isWebRemoteFrame() const override;
WebRemoteFrame* toWebRemoteFrame() override;
Member<RemoteFrameClientImpl> m_frameClient;
Member<RemoteFrame> m_frame;
WebRemoteFrameClient* m_client;
// Oilpan: WebRemoteFrameImpl must remain alive until close() is called.
// Accomplish that by keeping a self-referential Persistent<>. It is
// cleared upon close().
SelfKeepAlive<WebRemoteFrameImpl> m_selfKeepAlive;
};
DEFINE_TYPE_CASTS(WebRemoteFrameImpl, WebFrame, frame, frame->isWebRemoteFrame(), frame.isWebRemoteFrame());
} // namespace blink
#endif // WebRemoteFrameImpl_h