1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef WebRemoteFrameImpl_h 6#define WebRemoteFrameImpl_h 7 8#include "public/web/WebRemoteFrame.h" 9#include "web/RemoteFrameClient.h" 10#include "wtf/HashMap.h" 11#include "wtf/OwnPtr.h" 12#include "wtf/RefCounted.h" 13 14namespace WebCore { 15class FrameOwner; 16class Page; 17class RemoteFrame; 18} 19 20namespace blink { 21 22class WebRemoteFrameImpl : public WebRemoteFrame, public RefCounted<WebRemoteFrameImpl> { 23public: 24 WebRemoteFrameImpl(); 25 virtual ~WebRemoteFrameImpl(); 26 27 // WebRemoteFrame methods. 28 virtual bool isWebLocalFrame() const OVERRIDE; 29 virtual WebLocalFrame* toWebLocalFrame() OVERRIDE; 30 virtual bool isWebRemoteFrame() const OVERRIDE; 31 virtual WebRemoteFrame* toWebRemoteFrame() OVERRIDE; 32 virtual void close() OVERRIDE; 33 virtual WebString uniqueName() const OVERRIDE; 34 virtual WebString assignedName() const OVERRIDE; 35 virtual void setName(const WebString&) OVERRIDE; 36 virtual WebVector<WebIconURL> iconURLs(int iconTypesMask) const OVERRIDE; 37 virtual void setIsRemote(bool) OVERRIDE; 38 virtual void setRemoteWebLayer(WebLayer*) OVERRIDE; 39 virtual void setPermissionClient(WebPermissionClient*) OVERRIDE; 40 virtual void setSharedWorkerRepositoryClient(WebSharedWorkerRepositoryClient*) OVERRIDE; 41 virtual void setCanHaveScrollbars(bool) OVERRIDE; 42 virtual WebSize scrollOffset() const OVERRIDE; 43 virtual void setScrollOffset(const WebSize&) OVERRIDE; 44 virtual WebSize minimumScrollOffset() const OVERRIDE; 45 virtual WebSize maximumScrollOffset() const OVERRIDE; 46 virtual WebSize contentsSize() const OVERRIDE; 47 virtual bool hasVisibleContent() const OVERRIDE; 48 virtual WebRect visibleContentRect() const OVERRIDE; 49 virtual bool hasHorizontalScrollbar() const OVERRIDE; 50 virtual bool hasVerticalScrollbar() const OVERRIDE; 51 virtual WebView* view() const OVERRIDE; 52 virtual void removeChild(WebFrame*) OVERRIDE; 53 virtual WebDocument document() const OVERRIDE; 54 virtual WebPerformance performance() const OVERRIDE; 55 virtual bool dispatchBeforeUnloadEvent() OVERRIDE; 56 virtual void dispatchUnloadEvent() OVERRIDE; 57 virtual NPObject* windowObject() const OVERRIDE; 58 virtual void bindToWindowObject(const WebString& name, NPObject*) OVERRIDE; 59 virtual void bindToWindowObject(const WebString& name, NPObject*, void*) OVERRIDE; 60 virtual void executeScript(const WebScriptSource&) OVERRIDE; 61 virtual void executeScriptInIsolatedWorld( 62 int worldID, const WebScriptSource* sources, unsigned numSources, 63 int extensionGroup) OVERRIDE; 64 virtual void setIsolatedWorldSecurityOrigin(int worldID, const WebSecurityOrigin&) OVERRIDE; 65 virtual void setIsolatedWorldContentSecurityPolicy(int worldID, const WebString&) OVERRIDE; 66 virtual void addMessageToConsole(const WebConsoleMessage&) OVERRIDE; 67 virtual void collectGarbage() OVERRIDE; 68 virtual bool checkIfRunInsecureContent(const WebURL&) const OVERRIDE; 69 virtual v8::Handle<v8::Value> executeScriptAndReturnValue( 70 const WebScriptSource&) OVERRIDE; 71 virtual void executeScriptInIsolatedWorld( 72 int worldID, const WebScriptSource* sourcesIn, unsigned numSources, 73 int extensionGroup, WebVector<v8::Local<v8::Value> >* results) OVERRIDE; 74 virtual v8::Handle<v8::Value> callFunctionEvenIfScriptDisabled( 75 v8::Handle<v8::Function>, 76 v8::Handle<v8::Value>, 77 int argc, 78 v8::Handle<v8::Value> argv[]) OVERRIDE; 79 virtual v8::Local<v8::Context> mainWorldScriptContext() const OVERRIDE; 80 virtual void reload(bool ignoreCache) OVERRIDE; 81 virtual void reloadWithOverrideURL(const WebURL& overrideUrl, bool ignoreCache) OVERRIDE; 82 virtual void loadRequest(const WebURLRequest&) OVERRIDE; 83 virtual void loadHistoryItem(const WebHistoryItem&, WebHistoryLoadType, WebURLRequest::CachePolicy) OVERRIDE; 84 virtual void loadData( 85 const WebData&, const WebString& mimeType, const WebString& textEncoding, 86 const WebURL& baseURL, const WebURL& unreachableURL, bool replace) OVERRIDE; 87 virtual void loadHTMLString( 88 const WebData& html, const WebURL& baseURL, const WebURL& unreachableURL, 89 bool replace) OVERRIDE; 90 virtual bool isLoading() const OVERRIDE; 91 virtual void stopLoading() OVERRIDE; 92 virtual WebDataSource* provisionalDataSource() const OVERRIDE; 93 virtual WebDataSource* dataSource() const OVERRIDE; 94 virtual void enableViewSourceMode(bool enable) OVERRIDE; 95 virtual bool isViewSourceModeEnabled() const OVERRIDE; 96 virtual void setReferrerForRequest(WebURLRequest&, const WebURL& referrer) OVERRIDE; 97 virtual void dispatchWillSendRequest(WebURLRequest&) OVERRIDE; 98 virtual WebURLLoader* createAssociatedURLLoader(const WebURLLoaderOptions&) OVERRIDE; 99 virtual unsigned unloadListenerCount() const OVERRIDE; 100 virtual void replaceSelection(const WebString&) OVERRIDE; 101 virtual void insertText(const WebString&) OVERRIDE; 102 virtual void setMarkedText(const WebString&, unsigned location, unsigned length) OVERRIDE; 103 virtual void unmarkText() OVERRIDE; 104 virtual bool hasMarkedText() const OVERRIDE; 105 virtual WebRange markedRange() const OVERRIDE; 106 virtual bool firstRectForCharacterRange(unsigned location, unsigned length, WebRect&) const OVERRIDE; 107 virtual size_t characterIndexForPoint(const WebPoint&) const OVERRIDE; 108 virtual bool executeCommand(const WebString&, const WebNode& = WebNode()) OVERRIDE; 109 virtual bool executeCommand(const WebString&, const WebString& value, const WebNode& = WebNode()) OVERRIDE; 110 virtual bool isCommandEnabled(const WebString&) const OVERRIDE; 111 virtual void enableContinuousSpellChecking(bool) OVERRIDE; 112 virtual bool isContinuousSpellCheckingEnabled() const OVERRIDE; 113 virtual void requestTextChecking(const WebElement&) OVERRIDE; 114 virtual void replaceMisspelledRange(const WebString&) OVERRIDE; 115 virtual void removeSpellingMarkers() OVERRIDE; 116 virtual bool hasSelection() const OVERRIDE; 117 virtual WebRange selectionRange() const OVERRIDE; 118 virtual WebString selectionAsText() const OVERRIDE; 119 virtual WebString selectionAsMarkup() const OVERRIDE; 120 virtual bool selectWordAroundCaret() OVERRIDE; 121 virtual void selectRange(const WebPoint& base, const WebPoint& extent) OVERRIDE; 122 virtual void selectRange(const WebRange&) OVERRIDE; 123 virtual void moveRangeSelection(const WebPoint& base, const WebPoint& extent) OVERRIDE; 124 virtual void moveCaretSelection(const WebPoint&) OVERRIDE; 125 virtual bool setEditableSelectionOffsets(int start, int end) OVERRIDE; 126 virtual bool setCompositionFromExistingText(int compositionStart, int compositionEnd, const WebVector<WebCompositionUnderline>& underlines) OVERRIDE; 127 virtual void extendSelectionAndDelete(int before, int after) OVERRIDE; 128 virtual void setCaretVisible(bool) OVERRIDE; 129 virtual int printBegin(const WebPrintParams&, const WebNode& constrainToNode) OVERRIDE; 130 virtual float printPage(int pageToPrint, WebCanvas*) OVERRIDE; 131 virtual float getPrintPageShrink(int page) OVERRIDE; 132 virtual void printEnd() OVERRIDE; 133 virtual bool isPrintScalingDisabledForPlugin(const WebNode&) OVERRIDE; 134 virtual bool hasCustomPageSizeStyle(int pageIndex) OVERRIDE; 135 virtual bool isPageBoxVisible(int pageIndex) OVERRIDE; 136 virtual void pageSizeAndMarginsInPixels( 137 int pageIndex, 138 WebSize& pageSize, 139 int& marginTop, 140 int& marginRight, 141 int& marginBottom, 142 int& marginLeft) OVERRIDE; 143 virtual WebString pageProperty(const WebString& propertyName, int pageIndex) OVERRIDE; 144 virtual void printPagesWithBoundaries(WebCanvas*, const WebSize&) OVERRIDE; 145 virtual bool find( 146 int identifier, const WebString& searchText, const WebFindOptions&, 147 bool wrapWithinFrame, WebRect* selectionRect) OVERRIDE; 148 virtual void stopFinding(bool clearSelection) OVERRIDE; 149 virtual void scopeStringMatches( 150 int identifier, const WebString& searchText, const WebFindOptions&, 151 bool reset) OVERRIDE; 152 virtual void cancelPendingScopingEffort() OVERRIDE; 153 virtual void increaseMatchCount(int count, int identifier) OVERRIDE; 154 virtual void resetMatchCount() OVERRIDE; 155 virtual int findMatchMarkersVersion() const OVERRIDE; 156 virtual WebFloatRect activeFindMatchRect() OVERRIDE; 157 virtual void findMatchRects(WebVector<WebFloatRect>&) OVERRIDE; 158 virtual int selectNearestFindMatch(const WebFloatPoint&, WebRect* selectionRect) OVERRIDE; 159 virtual void setTickmarks(const WebVector<WebRect>&) OVERRIDE; 160 161 virtual void sendOrientationChangeEvent() OVERRIDE; 162 163 virtual void dispatchMessageEventWithOriginCheck( 164 const WebSecurityOrigin& intendedTargetOrigin, 165 const WebDOMEvent&) OVERRIDE; 166 167 virtual WebString contentAsText(size_t maxChars) const OVERRIDE; 168 virtual WebString contentAsMarkup() const OVERRIDE; 169 virtual WebString renderTreeAsText(RenderAsTextControls toShow = RenderAsTextNormal) const OVERRIDE; 170 virtual WebString markerTextForListItem(const WebElement&) const OVERRIDE; 171 virtual WebRect selectionBoundsRect() const OVERRIDE; 172 173 virtual bool selectionStartHasSpellingMarkerFor(int from, int length) const OVERRIDE; 174 virtual WebString layerTreeAsText(bool showDebugInfo = false) const OVERRIDE; 175 176 virtual WebLocalFrame* createLocalChild(const WebString& name, WebFrameClient*) OVERRIDE; 177 virtual WebRemoteFrame* createRemoteChild(const WebString& name, WebFrameClient*) OVERRIDE; 178 179 void initializeAsMainFrame(WebCore::Page*); 180 181 void setWebCoreFrame(PassRefPtr<WebCore::RemoteFrame>); 182 WebCore::RemoteFrame* frame() const { return m_frame.get(); } 183 184 static WebRemoteFrameImpl* fromFrame(WebCore::RemoteFrame&); 185 186private: 187 RemoteFrameClient m_frameClient; 188 RefPtr<WebCore::RemoteFrame> m_frame; 189 190 HashMap<WebFrame*, OwnPtr<WebCore::FrameOwner> > m_ownersForChildren; 191}; 192 193DEFINE_TYPE_CASTS(WebRemoteFrameImpl, WebFrame, frame, frame->isWebRemoteFrame(), frame.isWebRemoteFrame()); 194 195} // namespace blink 196 197#endif // WebRemoteFrameImpl_h 198