render_frame_impl.h revision 424c4d7b64af9d0d8fd9624f381f469654d5e3d2
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 void willSendSubmitEvent(WebKit::WebFrame* frame, 87 const WebKit::WebFormElement& form); 88 virtual void willSubmitForm(WebKit::WebFrame* frame, 89 const WebKit::WebFormElement& form); 90 virtual void didCreateDataSource(WebKit::WebFrame* frame, 91 WebKit::WebDataSource* datasource); 92 virtual void didStartProvisionalLoad(WebKit::WebFrame* frame); 93 virtual void didReceiveServerRedirectForProvisionalLoad( 94 WebKit::WebFrame* frame); 95 virtual void didFailProvisionalLoad( 96 WebKit::WebFrame* frame, 97 const WebKit::WebURLError& error); 98 virtual void didCommitProvisionalLoad(WebKit::WebFrame* frame, 99 bool is_new_navigation); 100 virtual void didClearWindowObject(WebKit::WebFrame* frame); 101 virtual void didCreateDocumentElement(WebKit::WebFrame* frame); 102 virtual void didReceiveTitle(WebKit::WebFrame* frame, 103 const WebKit::WebString& title, 104 WebKit::WebTextDirection direction); 105 virtual void didChangeIcon(WebKit::WebFrame* frame, 106 WebKit::WebIconURL::Type icon_type); 107 virtual void didFinishDocumentLoad(WebKit::WebFrame* frame); 108 virtual void didHandleOnloadEvents(WebKit::WebFrame* frame); 109 virtual void didFailLoad(WebKit::WebFrame* frame, 110 const WebKit::WebURLError& error); 111 virtual void didFinishLoad(WebKit::WebFrame* frame); 112 virtual void didNavigateWithinPage(WebKit::WebFrame* frame, 113 bool is_new_navigation); 114 virtual void didUpdateCurrentHistoryItem(WebKit::WebFrame* frame); 115 virtual void willRequestAfterPreconnect(WebKit::WebFrame* frame, 116 WebKit::WebURLRequest& request); 117 virtual void willSendRequest( 118 WebKit::WebFrame* frame, 119 unsigned identifier, 120 WebKit::WebURLRequest& request, 121 const WebKit::WebURLResponse& redirect_response); 122 virtual void didReceiveResponse( 123 WebKit::WebFrame* frame, 124 unsigned identifier, 125 const WebKit::WebURLResponse& response); 126 virtual void didFinishResourceLoad(WebKit::WebFrame* frame, 127 unsigned identifier); 128 virtual void didLoadResourceFromMemoryCache( 129 WebKit::WebFrame* frame, 130 const WebKit::WebURLRequest& request, 131 const WebKit::WebURLResponse& response); 132 virtual void didDisplayInsecureContent(WebKit::WebFrame* frame); 133 virtual void didRunInsecureContent(WebKit::WebFrame* frame, 134 const WebKit::WebSecurityOrigin& origin, 135 const WebKit::WebURL& target); 136 virtual void didExhaustMemoryAvailableForScript( 137 WebKit::WebFrame* frame); 138 virtual void didCreateScriptContext(WebKit::WebFrame* frame, 139 v8::Handle<v8::Context> context, 140 int extension_group, 141 int world_id); 142 virtual void willReleaseScriptContext(WebKit::WebFrame* frame, 143 v8::Handle<v8::Context> context, 144 int world_id); 145 virtual void didFirstVisuallyNonEmptyLayout(WebKit::WebFrame* frame); 146 virtual void didChangeContentsSize(WebKit::WebFrame* frame, 147 const WebKit::WebSize& size); 148 virtual void didChangeScrollOffset(WebKit::WebFrame* frame); 149 virtual void willInsertBody(WebKit::WebFrame* frame); 150 virtual void reportFindInPageMatchCount(int request_id, 151 int count, 152 bool final_update); 153 virtual void reportFindInPageSelection(int request_id, 154 int active_match_ordinal, 155 const WebKit::WebRect& sel); 156 virtual void requestStorageQuota( 157 WebKit::WebFrame* frame, 158 WebKit::WebStorageQuotaType type, 159 unsigned long long requested_size, 160 WebKit::WebStorageQuotaCallbacks* callbacks); 161 virtual void willOpenSocketStream( 162 WebKit::WebSocketStreamHandle* handle); 163 virtual void willStartUsingPeerConnectionHandler( 164 WebKit::WebFrame* frame, 165 WebKit::WebRTCPeerConnectionHandler* handler); 166 virtual bool willCheckAndDispatchMessageEvent( 167 WebKit::WebFrame* sourceFrame, 168 WebKit::WebFrame* targetFrame, 169 WebKit::WebSecurityOrigin targetOrigin, 170 WebKit::WebDOMMessageEvent event); 171 virtual WebKit::WebString userAgentOverride( 172 WebKit::WebFrame* frame, 173 const WebKit::WebURL& url); 174 virtual WebKit::WebString doNotTrackValue(WebKit::WebFrame* frame); 175 virtual bool allowWebGL(WebKit::WebFrame* frame, bool default_value); 176 virtual void didLoseWebGLContext(WebKit::WebFrame* frame, 177 int arb_robustness_status_code); 178 179 protected: 180 RenderFrameImpl(RenderViewImpl* render_view, int32 routing_id); 181 182 private: 183 int GetRoutingID() const; 184 185 RenderViewImpl* render_view_; 186 int routing_id_; 187 bool is_swapped_out_; 188 bool is_detaching_; 189 190 DISALLOW_COPY_AND_ASSIGN(RenderFrameImpl); 191}; 192 193} // namespace content 194 195#endif // CONTENT_RENDERER_RENDER_FRAME_IMPL_H_ 196