|  | // 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 "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" | 
|  | #include "wtf/OwnPtr.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); | 
|  | ~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; | 
|  | bool dispatchBeforeUnloadEvent() 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; | 
|  | void insertText(const WebString&) override; | 
|  | void setMarkedText(const WebString&, unsigned location, unsigned length) override; | 
|  | void unmarkText() override; | 
|  | bool hasMarkedText() const override; | 
|  | WebRange markedRange() const override; | 
|  | bool firstRectForCharacterRange(unsigned location, unsigned length, WebRect&) const override; | 
|  | size_t characterIndexForPoint(const WebPoint&) const override; | 
|  | bool executeCommand(const WebString&) override; | 
|  | bool executeCommand(const WebString&, const WebString& value) override; | 
|  | bool isCommandEnabled(const WebString&) const override; | 
|  | void enableContinuousSpellChecking(bool) override; | 
|  | bool isContinuousSpellCheckingEnabled() const override; | 
|  | void requestTextChecking(const WebElement&) override; | 
|  | void removeSpellingMarkers() override; | 
|  | bool hasSelection() const override; | 
|  | WebRange selectionRange() const override; | 
|  | WebString selectionAsText() const override; | 
|  | WebString selectionAsMarkup() const override; | 
|  | bool selectWordAroundCaret() override; | 
|  | void selectRange(const WebPoint& base, const WebPoint& extent) override; | 
|  | void selectRange(const WebRange&) override; | 
|  | void moveRangeSelection(const WebPoint& base, const WebPoint& extent, WebFrame::TextGranularity = CharacterGranularity) override; | 
|  | void moveCaretSelection(const WebPoint&) override; | 
|  | bool setEditableSelectionOffsets(int start, int end) override; | 
|  | bool setCompositionFromExistingText(int compositionStart, int compositionEnd, const WebVector<WebCompositionUnderline>& underlines) override; | 
|  | void extendSelectionAndDelete(int before, int after) override; | 
|  | void setCaretVisible(bool) 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; | 
|  | bool hasCustomPageSizeStyle(int pageIndex) override; | 
|  | bool isPageBoxVisible(int pageIndex) override; | 
|  | void pageSizeAndMarginsInPixels( | 
|  | int pageIndex, | 
|  | WebSize& pageSize, | 
|  | int& marginTop, | 
|  | int& marginRight, | 
|  | int& marginBottom, | 
|  | int& marginLeft) override; | 
|  | WebString pageProperty(const WebString& propertyName, int pageIndex) 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 setReplicatedShouldEnforceStrictMixedContentChecking(bool) const override; | 
|  | void setReplicatedPotentiallyTrustworthyUniqueOrigin(bool) const override; | 
|  | void DispatchLoadEventForFrameOwner() const override; | 
|  |  | 
|  | void didStartLoading() override; | 
|  | void didStopLoading() override; | 
|  |  | 
|  | bool isIgnoredForHitTest() const 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 |