render_frame_impl.h revision 558790d6acca3451cf3a6b497803a5f07d0bec58
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 const WebKit::WebURLRequest& request, 75 WebKit::WebNavigationType type, 76 WebKit::WebNavigationPolicy default_policy, 77 bool is_redirect); 78 virtual void willSendSubmitEvent(WebKit::WebFrame* frame, 79 const WebKit::WebFormElement& form); 80 virtual void willSubmitForm(WebKit::WebFrame* frame, 81 const WebKit::WebFormElement& form); 82 virtual void willPerformClientRedirect(WebKit::WebFrame* frame, 83 const WebKit::WebURL& from, 84 const WebKit::WebURL& to, 85 double interval, 86 double fire_time); 87 virtual void didCancelClientRedirect(WebKit::WebFrame* frame); 88 virtual void didCompleteClientRedirect(WebKit::WebFrame* frame, 89 const WebKit::WebURL& from); 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 openFileSystem( 157 WebKit::WebFrame* frame, 158 WebKit::WebFileSystemType type, 159 long long size, 160 bool create, 161 WebKit::WebFileSystemCallbacks* callbacks); 162 virtual void deleteFileSystem( 163 WebKit::WebFrame* frame, 164 WebKit::WebFileSystemType type, 165 WebKit::WebFileSystemCallbacks* callbacks); 166 virtual void queryStorageUsageAndQuota( 167 WebKit::WebFrame* frame, 168 WebKit::WebStorageQuotaType type, 169 WebKit::WebStorageQuotaCallbacks* callbacks); 170 virtual void requestStorageQuota( 171 WebKit::WebFrame* frame, 172 WebKit::WebStorageQuotaType type, 173 unsigned long long requested_size, 174 WebKit::WebStorageQuotaCallbacks* callbacks); 175 virtual void willOpenSocketStream( 176 WebKit::WebSocketStreamHandle* handle); 177 virtual void willStartUsingPeerConnectionHandler( 178 WebKit::WebFrame* frame, 179 WebKit::WebRTCPeerConnectionHandler* handler); 180 virtual bool willCheckAndDispatchMessageEvent( 181 WebKit::WebFrame* sourceFrame, 182 WebKit::WebFrame* targetFrame, 183 WebKit::WebSecurityOrigin targetOrigin, 184 WebKit::WebDOMMessageEvent event); 185 virtual WebKit::WebString userAgentOverride( 186 WebKit::WebFrame* frame, 187 const WebKit::WebURL& url); 188 virtual WebKit::WebString doNotTrackValue(WebKit::WebFrame* frame); 189 virtual bool allowWebGL(WebKit::WebFrame* frame, bool default_value); 190 virtual void didLoseWebGLContext(WebKit::WebFrame* frame, 191 int arb_robustness_status_code); 192 193 // RenderFrameImpl methods 194 int GetRoutingID() const; 195 196 protected: 197 RenderFrameImpl(RenderViewImpl* render_view, int32 routing_id); 198 199 private: 200 RenderViewImpl* render_view_; 201 int routing_id_; 202 203 DISALLOW_COPY_AND_ASSIGN(RenderFrameImpl); 204}; 205 206} // namespace content 207 208#endif // CONTENT_RENDERER_RENDER_FRAME_IMPL_H_ 209