render_frame_impl.h revision 986a0553b65ddb17fe466f5f201753c0e9060cde
1// Copyright 2013 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 CONTENT_RENDERER_RENDER_FRAME_IMPL_H_ 6#define CONTENT_RENDERER_RENDER_FRAME_IMPL_H_ 7 8#include "base/basictypes.h" 9#include "content/public/renderer/render_frame.h" 10#include "ipc/ipc_message.h" 11#include "third_party/WebKit/public/web/WebDataSource.h" 12#include "third_party/WebKit/public/web/WebFrameClient.h" 13 14namespace content { 15 16class RenderViewImpl; 17 18class CONTENT_EXPORT RenderFrameImpl 19 : public RenderFrame, 20 NON_EXPORTED_BASE(public WebKit::WebFrameClient) { 21 public: 22 // Creates a new RenderFrame. |render_view| is the RenderView object that this 23 // frame belongs to. 24 static RenderFrameImpl* Create(RenderViewImpl* render_view, int32 routing_id); 25 26 // Used by content_layouttest_support to hook into the creation of 27 // RenderFrameImpls. 28 static void InstallCreateHook( 29 RenderFrameImpl* (*create_render_frame_impl)(RenderViewImpl*, int32)); 30 31 virtual ~RenderFrameImpl(); 32 33 // IPC::Sender 34 virtual bool Send(IPC::Message* msg) OVERRIDE; 35 36 // IPC::Listener 37 virtual bool OnMessageReceived(const IPC::Message& msg) OVERRIDE; 38 39 // WebKit::WebFrameClient implementation ------------------------------------- 40 virtual WebKit::WebPlugin* createPlugin( 41 WebKit::WebFrame* frame, 42 const WebKit::WebPluginParams& params); 43 virtual WebKit::WebSharedWorker* createSharedWorker( 44 WebKit::WebFrame* frame, 45 const WebKit::WebURL& url, 46 const WebKit::WebString& name, 47 unsigned long long document_id); 48 virtual WebKit::WebMediaPlayer* createMediaPlayer( 49 WebKit::WebFrame* frame, 50 const WebKit::WebURL& url, 51 WebKit::WebMediaPlayerClient* client); 52 virtual WebKit::WebApplicationCacheHost* createApplicationCacheHost( 53 WebKit::WebFrame* frame, 54 WebKit::WebApplicationCacheHostClient* client); 55 virtual WebKit::WebCookieJar* cookieJar(WebKit::WebFrame* frame); 56 virtual void didAccessInitialDocument(WebKit::WebFrame* frame); 57 virtual void didCreateFrame(WebKit::WebFrame* parent, 58 WebKit::WebFrame* child); 59 virtual void didDisownOpener(WebKit::WebFrame* frame); 60 virtual void frameDetached(WebKit::WebFrame* frame); 61 virtual void willClose(WebKit::WebFrame* frame); 62 virtual void didChangeName(WebKit::WebFrame* frame, 63 const WebKit::WebString& name); 64 virtual void loadURLExternally(WebKit::WebFrame* frame, 65 const WebKit::WebURLRequest& request, 66 WebKit::WebNavigationPolicy policy); 67 virtual void loadURLExternally( 68 WebKit::WebFrame* frame, 69 const WebKit::WebURLRequest& request, 70 WebKit::WebNavigationPolicy policy, 71 const WebKit::WebString& suggested_name); 72 virtual WebKit::WebNavigationPolicy decidePolicyForNavigation( 73 WebKit::WebFrame* frame, 74 WebKit::WebDataSource::ExtraData* extra_data, 75 const WebKit::WebURLRequest& request, 76 WebKit::WebNavigationType type, 77 WebKit::WebNavigationPolicy default_policy, 78 bool is_redirect); 79 // DEPRECATED 80 virtual WebKit::WebNavigationPolicy decidePolicyForNavigation( 81 WebKit::WebFrame* frame, 82 const WebKit::WebURLRequest& request, 83 WebKit::WebNavigationType type, 84 WebKit::WebNavigationPolicy default_policy, 85 bool is_redirect); 86 virtual bool shouldAbortNavigationAfterUrlResolve(const WebKit::WebURL& base, 87 const WebKit::WebString& fragment, 88 const WebKit::WebURL& result) OVERRIDE; 89 virtual void willSendSubmitEvent(WebKit::WebFrame* frame, 90 const WebKit::WebFormElement& form); 91 virtual void willSubmitForm(WebKit::WebFrame* frame, 92 const WebKit::WebFormElement& form); 93 virtual void didCreateDataSource(WebKit::WebFrame* frame, 94 WebKit::WebDataSource* datasource); 95 virtual void didStartProvisionalLoad(WebKit::WebFrame* frame); 96 virtual void didReceiveServerRedirectForProvisionalLoad( 97 WebKit::WebFrame* frame); 98 virtual void didFailProvisionalLoad( 99 WebKit::WebFrame* frame, 100 const WebKit::WebURLError& error); 101 virtual void didCommitProvisionalLoad(WebKit::WebFrame* frame, 102 bool is_new_navigation); 103 virtual void didClearWindowObject(WebKit::WebFrame* frame); 104 virtual void didCreateDocumentElement(WebKit::WebFrame* frame); 105 virtual void didReceiveTitle(WebKit::WebFrame* frame, 106 const WebKit::WebString& title, 107 WebKit::WebTextDirection direction); 108 virtual void didChangeIcon(WebKit::WebFrame* frame, 109 WebKit::WebIconURL::Type icon_type); 110 virtual void didFinishDocumentLoad(WebKit::WebFrame* frame); 111 virtual void didHandleOnloadEvents(WebKit::WebFrame* frame); 112 virtual void didFailLoad(WebKit::WebFrame* frame, 113 const WebKit::WebURLError& error); 114 virtual void didFinishLoad(WebKit::WebFrame* frame); 115 virtual void didNavigateWithinPage(WebKit::WebFrame* frame, 116 bool is_new_navigation); 117 virtual void didUpdateCurrentHistoryItem(WebKit::WebFrame* frame); 118 virtual void willRequestAfterPreconnect(WebKit::WebFrame* frame, 119 WebKit::WebURLRequest& request); 120 virtual void willSendRequest( 121 WebKit::WebFrame* frame, 122 unsigned identifier, 123 WebKit::WebURLRequest& request, 124 const WebKit::WebURLResponse& redirect_response); 125 virtual void didReceiveResponse( 126 WebKit::WebFrame* frame, 127 unsigned identifier, 128 const WebKit::WebURLResponse& response); 129 virtual void didFinishResourceLoad(WebKit::WebFrame* frame, 130 unsigned identifier); 131 virtual void didLoadResourceFromMemoryCache( 132 WebKit::WebFrame* frame, 133 const WebKit::WebURLRequest& request, 134 const WebKit::WebURLResponse& response); 135 virtual void didDisplayInsecureContent(WebKit::WebFrame* frame); 136 virtual void didRunInsecureContent(WebKit::WebFrame* frame, 137 const WebKit::WebSecurityOrigin& origin, 138 const WebKit::WebURL& target); 139 virtual void didExhaustMemoryAvailableForScript( 140 WebKit::WebFrame* frame); 141 virtual void didCreateScriptContext(WebKit::WebFrame* frame, 142 v8::Handle<v8::Context> context, 143 int extension_group, 144 int world_id); 145 virtual void willReleaseScriptContext(WebKit::WebFrame* frame, 146 v8::Handle<v8::Context> context, 147 int world_id); 148 virtual void didFirstVisuallyNonEmptyLayout(WebKit::WebFrame* frame); 149 virtual void didChangeContentsSize(WebKit::WebFrame* frame, 150 const WebKit::WebSize& size); 151 virtual void didChangeScrollOffset(WebKit::WebFrame* frame); 152 virtual void willInsertBody(WebKit::WebFrame* frame); 153 virtual void reportFindInPageMatchCount(int request_id, 154 int count, 155 bool final_update); 156 virtual void reportFindInPageSelection(int request_id, 157 int active_match_ordinal, 158 const WebKit::WebRect& sel); 159 virtual void openFileSystem( 160 WebKit::WebFrame* frame, 161 WebKit::WebFileSystemType type, 162 long long size, 163 bool create, 164 WebKit::WebFileSystemCallbacks* callbacks); 165 virtual void deleteFileSystem( 166 WebKit::WebFrame* frame, 167 WebKit::WebFileSystemType type, 168 WebKit::WebFileSystemCallbacks* callbacks); 169 virtual void requestStorageQuota( 170 WebKit::WebFrame* frame, 171 WebKit::WebStorageQuotaType type, 172 unsigned long long requested_size, 173 WebKit::WebStorageQuotaCallbacks* callbacks); 174 virtual void willOpenSocketStream( 175 WebKit::WebSocketStreamHandle* handle); 176 virtual void willStartUsingPeerConnectionHandler( 177 WebKit::WebFrame* frame, 178 WebKit::WebRTCPeerConnectionHandler* handler); 179 virtual bool willCheckAndDispatchMessageEvent( 180 WebKit::WebFrame* sourceFrame, 181 WebKit::WebFrame* targetFrame, 182 WebKit::WebSecurityOrigin targetOrigin, 183 WebKit::WebDOMMessageEvent event); 184 virtual WebKit::WebString userAgentOverride( 185 WebKit::WebFrame* frame, 186 const WebKit::WebURL& url); 187 virtual WebKit::WebString doNotTrackValue(WebKit::WebFrame* frame); 188 virtual bool allowWebGL(WebKit::WebFrame* frame, bool default_value); 189 virtual void didLoseWebGLContext(WebKit::WebFrame* frame, 190 int arb_robustness_status_code); 191 192 // RenderFrameImpl methods 193 int GetRoutingID() const; 194 195 protected: 196 RenderFrameImpl(RenderViewImpl* render_view, int32 routing_id); 197 198 private: 199 RenderViewImpl* render_view_; 200 int routing_id_; 201 202 DISALLOW_COPY_AND_ASSIGN(RenderFrameImpl); 203}; 204 205} // namespace content 206 207#endif // CONTENT_RENDERER_RENDER_FRAME_IMPL_H_ 208