Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(702)

Side by Side Diff: content/renderer/render_view.h

Issue 6750018: Cleanup: Stop creating RenderViewObservers from chrome/ in RenderViewer. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: fix build on win/mac Created 9 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CONTENT_RENDERER_RENDER_VIEW_H_ 5 #ifndef CONTENT_RENDERER_RENDER_VIEW_H_
6 #define CONTENT_RENDERER_RENDER_VIEW_H_ 6 #define CONTENT_RENDERER_RENDER_VIEW_H_
7 #pragma once 7 #pragma once
8 8
9 #include <deque> 9 #include <deque>
10 #include <map> 10 #include <map>
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 class ExternalHostBindings; 61 class ExternalHostBindings;
62 class ExternalPopupMenu; 62 class ExternalPopupMenu;
63 class FilePath; 63 class FilePath;
64 class GeolocationDispatcher; 64 class GeolocationDispatcher;
65 class GURL; 65 class GURL;
66 class LoadProgressTracker; 66 class LoadProgressTracker;
67 class NavigationState; 67 class NavigationState;
68 class NotificationProvider; 68 class NotificationProvider;
69 class P2PSocketDispatcher; 69 class P2PSocketDispatcher;
70 class PepperDeviceTest; 70 class PepperDeviceTest;
71 class PrintWebViewHelper;
72 class RenderViewObserver; 71 class RenderViewObserver;
73 class RenderViewVisitor; 72 class RenderViewVisitor;
74 class SearchBox; 73 class SearchBox;
75 class SkBitmap; 74 class SkBitmap;
76 class SpeechInputDispatcher; 75 class SpeechInputDispatcher;
77 class SpellCheckProvider;
78 class WebPluginDelegatePepper; 76 class WebPluginDelegatePepper;
79 class WebPluginDelegateProxy; 77 class WebPluginDelegateProxy;
80 class WebUIBindings; 78 class WebUIBindings;
81 struct ContextMenuMediaParams; 79 struct ContextMenuMediaParams;
82 struct ExtensionMsg_ExecuteCode_Params; 80 struct ExtensionMsg_ExecuteCode_Params;
83 struct PP_Flash_NetAddress; 81 struct PP_Flash_NetAddress;
84 struct ThumbnailScore; 82 struct ThumbnailScore;
85 struct ViewHostMsg_GetSearchProviderInstallState_Params; 83 struct ViewHostMsg_GetSearchProviderInstallState_Params;
86 struct ViewHostMsg_PageHasOSDD_Type; 84 struct ViewHostMsg_PageHasOSDD_Type;
87 struct ViewHostMsg_RunFileChooser_Params; 85 struct ViewHostMsg_RunFileChooser_Params;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
125 struct FormData; 123 struct FormData;
126 struct PasswordFormFillData; 124 struct PasswordFormFillData;
127 class ResourceFetcher; 125 class ResourceFetcher;
128 } 126 }
129 127
130 namespace WebKit { 128 namespace WebKit {
131 class WebAccessibilityCache; 129 class WebAccessibilityCache;
132 class WebAccessibilityObject; 130 class WebAccessibilityObject;
133 class WebApplicationCacheHost; 131 class WebApplicationCacheHost;
134 class WebApplicationCacheHostClient; 132 class WebApplicationCacheHostClient;
133 class WebAutoFillClient;
135 class WebDataSource; 134 class WebDataSource;
135 class WebDevToolsAgentClient;
136 class WebDocument; 136 class WebDocument;
137 class WebDragData; 137 class WebDragData;
138 class WebFrame; 138 class WebFrame;
139 class WebGeolocationClient; 139 class WebGeolocationClient;
140 class WebGeolocationServiceInterface; 140 class WebGeolocationServiceInterface;
141 class WebImage; 141 class WebImage;
142 class WebInputElement; 142 class WebInputElement;
143 class WebKeyboardEvent; 143 class WebKeyboardEvent;
144 class WebMediaPlayer; 144 class WebMediaPlayer;
145 class WebMediaPlayerClient; 145 class WebMediaPlayerClient;
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
184 public WebKit::WebPageSerializerClient, 184 public WebKit::WebPageSerializerClient,
185 public webkit::npapi::WebPluginPageDelegate, 185 public webkit::npapi::WebPluginPageDelegate,
186 public base::SupportsWeakPtr<RenderView> { 186 public base::SupportsWeakPtr<RenderView> {
187 public: 187 public:
188 // Creates a new RenderView. The parent_hwnd specifies a HWND to use as the 188 // Creates a new RenderView. The parent_hwnd specifies a HWND to use as the
189 // parent of the WebView HWND that will be created. If this is a constrained 189 // parent of the WebView HWND that will be created. If this is a constrained
190 // popup or as a new tab, opener_id is the routing ID of the RenderView 190 // popup or as a new tab, opener_id is the routing ID of the RenderView
191 // responsible for creating this RenderView (corresponding to parent_hwnd). 191 // responsible for creating this RenderView (corresponding to parent_hwnd).
192 // |counter| is either a currently initialized counter, or NULL (in which case 192 // |counter| is either a currently initialized counter, or NULL (in which case
193 // we treat this RenderView as a top level window). 193 // we treat this RenderView as a top level window).
194 static RenderView* Create( 194 static RenderView* Create(RenderThreadBase* render_thread,
195 RenderThreadBase* render_thread, 195 const WebPreferences& webkit_prefs,
196 gfx::NativeViewId parent_hwnd, 196 SharedRenderViewCounter* counter,
197 int32 opener_id, 197 int32 routing_id,
198 const RendererPreferences& renderer_prefs, 198 int64 session_storage_namespace_id);
199 const WebPreferences& webkit_prefs,
200 SharedRenderViewCounter* counter,
201 int32 routing_id,
202 int64 session_storage_namespace_id,
203 const string16& frame_name);
204 199
205 // Visit all RenderViews with a live WebView (i.e., RenderViews that have 200 // Visit all RenderViews with a live WebView (i.e., RenderViews that have
206 // been closed but not yet destroyed are excluded). 201 // been closed but not yet destroyed are excluded).
207 static void ForEach(RenderViewVisitor* visitor); 202 static void ForEach(RenderViewVisitor* visitor);
208 203
209 // Returns the RenderView containing the given WebView. 204 // Returns the RenderView containing the given WebView.
210 static RenderView* FromWebView(WebKit::WebView* webview); 205 static RenderView* FromWebView(WebKit::WebView* webview);
211 206
212 // Sets the "next page id" counter. 207 // Sets the "next page id" counter.
213 static void SetNextPageID(int32 next_page_id); 208 static void SetNextPageID(int32 next_page_id);
214 209
210 void Init(gfx::NativeViewId parent_hwnd,
211 int32 opener_id,
212 const RendererPreferences& renderer_prefs,
213 const string16& frame_name,
214 WebKit::WebAutoFillClient* autofill_agent,
215 WebKit::WebDevToolsAgentClient* devtools_agent);
216
215 // May return NULL when the view is closing. 217 // May return NULL when the view is closing.
216 WebKit::WebView* webview() const; 218 WebKit::WebView* webview() const;
217 219
218 int browser_window_id() const { 220 int browser_window_id() const {
219 return browser_window_id_; 221 return browser_window_id_;
220 } 222 }
221 223
222 ViewType::Type view_type() const { 224 ViewType::Type view_type() const {
223 return view_type_; 225 return view_type_;
224 } 226 }
(...skipping 15 matching lines...) Expand all
240 } 242 }
241 243
242 // Returns true if we should display scrollbars for the given view size and 244 // Returns true if we should display scrollbars for the given view size and
243 // false if the scrollbars should be hidden. 245 // false if the scrollbars should be hidden.
244 bool should_display_scrollbars(int width, int height) const { 246 bool should_display_scrollbars(int width, int height) const {
245 return (!send_preferred_size_changes_ || 247 return (!send_preferred_size_changes_ ||
246 (disable_scrollbars_size_limit_.width() <= width || 248 (disable_scrollbars_size_limit_.width() <= width ||
247 disable_scrollbars_size_limit_.height() <= height)); 249 disable_scrollbars_size_limit_.height() <= height));
248 } 250 }
249 251
250 SearchBox* searchbox() const { return searchbox_; }
251
252 const WebKit::WebNode& context_menu_node() { return context_menu_node_; } 252 const WebKit::WebNode& context_menu_node() { return context_menu_node_; }
253 253
254 // Current P2PSocketDispatcher. Set to NULL if P2P API is disabled. 254 // Current P2PSocketDispatcher. Set to NULL if P2P API is disabled.
255 P2PSocketDispatcher* p2p_socket_dispatcher() { 255 P2PSocketDispatcher* p2p_socket_dispatcher() {
256 return p2p_socket_dispatcher_; 256 return p2p_socket_dispatcher_;
257 } 257 }
258 258
259 // Functions to add and remove observers for this object. 259 // Functions to add and remove observers for this object.
260 void AddObserver(RenderViewObserver* observer); 260 void AddObserver(RenderViewObserver* observer);
261 void RemoveObserver(RenderViewObserver* observer); 261 void RemoveObserver(RenderViewObserver* observer);
(...skipping 392 matching lines...) Expand 10 before | Expand all | Expand 10 after
654 friend class chrome::ChromeContentRendererClient; 654 friend class chrome::ChromeContentRendererClient;
655 655
656 // For unit tests. 656 // For unit tests.
657 friend class ExternalPopupMenuTest; 657 friend class ExternalPopupMenuTest;
658 friend class PepperDeviceTest; 658 friend class PepperDeviceTest;
659 friend class RenderViewTest; 659 friend class RenderViewTest;
660 660
661 FRIEND_TEST_ALL_PREFIXES(ExternalPopupMenuRemoveTest, RemoveOnChange); 661 FRIEND_TEST_ALL_PREFIXES(ExternalPopupMenuRemoveTest, RemoveOnChange);
662 FRIEND_TEST_ALL_PREFIXES(ExternalPopupMenuTest, NormalCase); 662 FRIEND_TEST_ALL_PREFIXES(ExternalPopupMenuTest, NormalCase);
663 FRIEND_TEST_ALL_PREFIXES(ExternalPopupMenuTest, ShowPopupThenNavigate); 663 FRIEND_TEST_ALL_PREFIXES(ExternalPopupMenuTest, ShowPopupThenNavigate);
664 FRIEND_TEST_ALL_PREFIXES(RenderViewTest, BlockScriptInitiatedPrinting);
665 FRIEND_TEST_ALL_PREFIXES(RenderViewTest, ImeComposition); 664 FRIEND_TEST_ALL_PREFIXES(RenderViewTest, ImeComposition);
666 FRIEND_TEST_ALL_PREFIXES(RenderViewTest, InsertCharacters); 665 FRIEND_TEST_ALL_PREFIXES(RenderViewTest, InsertCharacters);
667 FRIEND_TEST_ALL_PREFIXES(RenderViewTest, JSBlockSentAfterPageLoad); 666 FRIEND_TEST_ALL_PREFIXES(RenderViewTest, JSBlockSentAfterPageLoad);
668 FRIEND_TEST_ALL_PREFIXES(RenderViewTest, LastCommittedUpdateState); 667 FRIEND_TEST_ALL_PREFIXES(RenderViewTest, LastCommittedUpdateState);
669 FRIEND_TEST_ALL_PREFIXES(RenderViewTest, OnHandleKeyboardEvent); 668 FRIEND_TEST_ALL_PREFIXES(RenderViewTest, OnHandleKeyboardEvent);
670 FRIEND_TEST_ALL_PREFIXES(RenderViewTest, OnImeStateChanged); 669 FRIEND_TEST_ALL_PREFIXES(RenderViewTest, OnImeStateChanged);
671 FRIEND_TEST_ALL_PREFIXES(RenderViewTest, OnNavStateChanged); 670 FRIEND_TEST_ALL_PREFIXES(RenderViewTest, OnNavStateChanged);
672 FRIEND_TEST_ALL_PREFIXES(RenderViewTest, OnPrintPages);
673 FRIEND_TEST_ALL_PREFIXES(RenderViewTest, OnSetTextDirection); 671 FRIEND_TEST_ALL_PREFIXES(RenderViewTest, OnSetTextDirection);
674 FRIEND_TEST_ALL_PREFIXES(RenderViewTest, PrintLayoutTest);
675 FRIEND_TEST_ALL_PREFIXES(RenderViewTest, PrintWithIframe);
676 FRIEND_TEST_ALL_PREFIXES(RenderViewTest, UpdateTargetURLWithInvalidURL); 672 FRIEND_TEST_ALL_PREFIXES(RenderViewTest, UpdateTargetURLWithInvalidURL);
677 #if defined(OS_MACOSX) 673 #if defined(OS_MACOSX)
678 FRIEND_TEST_ALL_PREFIXES(RenderViewTest, MacTestCmdUp); 674 FRIEND_TEST_ALL_PREFIXES(RenderViewTest, MacTestCmdUp);
679 #endif 675 #endif
680 676
681 typedef std::map<GURL, ContentSettings> HostContentSettings; 677 typedef std::map<GURL, ContentSettings> HostContentSettings;
682 typedef std::map<GURL, double> HostZoomLevels; 678 typedef std::map<GURL, double> HostZoomLevels;
683 679
684 // Cannot use std::set unfortunately since linked_ptr<> does not support 680 // Cannot use std::set unfortunately since linked_ptr<> does not support
685 // operator<. 681 // operator<.
(...skipping 12 matching lines...) Expand all
698 WebKit::WebAccessibilityNotification type; 694 WebKit::WebAccessibilityNotification type;
699 }; 695 };
700 696
701 enum ErrorPageType { 697 enum ErrorPageType {
702 DNS_ERROR, 698 DNS_ERROR,
703 HTTP_404, 699 HTTP_404,
704 CONNECTION_ERROR, 700 CONNECTION_ERROR,
705 }; 701 };
706 702
707 RenderView(RenderThreadBase* render_thread, 703 RenderView(RenderThreadBase* render_thread,
708 gfx::NativeViewId parent_hwnd,
709 int32 opener_id,
710 const RendererPreferences& renderer_prefs,
711 const WebPreferences& webkit_prefs, 704 const WebPreferences& webkit_prefs,
712 SharedRenderViewCounter* counter, 705 SharedRenderViewCounter* counter,
713 int32 routing_id, 706 int32 routing_id,
714 int64 session_storage_namespace_id, 707 int64 session_storage_namespace_id);
715 const string16& frame_name);
716 708
717 // Do not delete directly. This class is reference counted. 709 // Do not delete directly. This class is reference counted.
718 virtual ~RenderView(); 710 virtual ~RenderView();
719 711
720 void UpdateURL(WebKit::WebFrame* frame); 712 void UpdateURL(WebKit::WebFrame* frame);
721 void UpdateTitle(WebKit::WebFrame* frame, const string16& title); 713 void UpdateTitle(WebKit::WebFrame* frame, const string16& title);
722 void UpdateSessionHistory(WebKit::WebFrame* frame); 714 void UpdateSessionHistory(WebKit::WebFrame* frame);
723 715
724 // Update current main frame's encoding and send it to browser window. 716 // Update current main frame's encoding and send it to browser window.
725 // Since we want to let users see the right encoding info from menu 717 // Since we want to let users see the right encoding info from menu
(...skipping 546 matching lines...) Expand 10 before | Expand all | Expand 10 after
1272 1264
1273 ScopedRunnableMethodFactory<RenderView> page_info_method_factory_; 1265 ScopedRunnableMethodFactory<RenderView> page_info_method_factory_;
1274 ScopedRunnableMethodFactory<RenderView> accessibility_method_factory_; 1266 ScopedRunnableMethodFactory<RenderView> accessibility_method_factory_;
1275 1267
1276 RendererWebCookieJarImpl cookie_jar_; 1268 RendererWebCookieJarImpl cookie_jar_;
1277 1269
1278 // The next group of objects all implement RenderViewObserver, so are deleted 1270 // The next group of objects all implement RenderViewObserver, so are deleted
1279 // along with the RenderView automatically. This is why we just store weak 1271 // along with the RenderView automatically. This is why we just store weak
1280 // references. 1272 // references.
1281 1273
1282 // Provides access to this renderer from the remote Inspector UI.
1283 DevToolsAgent* devtools_agent_;
1284
1285 // DevToolsClient for renderer hosting developer tools UI. It's NULL for other 1274 // DevToolsClient for renderer hosting developer tools UI. It's NULL for other
1286 // render views. 1275 // render views.
1287 DevToolsClient* devtools_client_; 1276 DevToolsClient* devtools_client_;
1288 1277
1289 // Holds a reference to the service which provides desktop notifications. 1278 // Holds a reference to the service which provides desktop notifications.
1290 NotificationProvider* notification_provider_; 1279 NotificationProvider* notification_provider_;
1291 1280
1292 // The geolocation dispatcher attached to this view, lazily initialized. 1281 // The geolocation dispatcher attached to this view, lazily initialized.
1293 GeolocationDispatcher* geolocation_dispatcher_; 1282 GeolocationDispatcher* geolocation_dispatcher_;
1294 1283
1295 // The speech dispatcher attached to this view, lazily initialized. 1284 // The speech dispatcher attached to this view, lazily initialized.
1296 SpeechInputDispatcher* speech_input_dispatcher_; 1285 SpeechInputDispatcher* speech_input_dispatcher_;
1297 1286
1298 // Device orientation dispatcher attached to this view; lazily initialized. 1287 // Device orientation dispatcher attached to this view; lazily initialized.
1299 DeviceOrientationDispatcher* device_orientation_dispatcher_; 1288 DeviceOrientationDispatcher* device_orientation_dispatcher_;
1300 1289
1301 // PrintWebViewHelper handles printing. Weak pointer since it implements
1302 // RenderViewObserver interface.
1303 PrintWebViewHelper* print_helper_;
1304
1305 // Weak pointer since it implements RenderViewObserver interface.
1306 SearchBox* searchbox_;
1307
1308 // spellcheck provider which is registered as a view observer.
1309 // Note that RenderViewObserver subclasses like this will be deleted
1310 // automatically during RenderView destruction.
1311 SpellCheckProvider* spellcheck_provider_;
1312
1313 scoped_refptr<AudioMessageFilter> audio_message_filter_; 1290 scoped_refptr<AudioMessageFilter> audio_message_filter_;
1314 1291
1315 // Handles accessibility requests into the renderer side, as well as 1292 // Handles accessibility requests into the renderer side, as well as
1316 // maintains the cache and other features of the accessibility tree. 1293 // maintains the cache and other features of the accessibility tree.
1317 scoped_ptr<WebKit::WebAccessibilityCache> accessibility_; 1294 scoped_ptr<WebKit::WebAccessibilityCache> accessibility_;
1318 1295
1319 // Collect renderer accessibility notifications until they are ready to be 1296 // Collect renderer accessibility notifications until they are ready to be
1320 // sent to the browser. 1297 // sent to the browser.
1321 std::vector<RendererAccessibilityNotification> 1298 std::vector<RendererAccessibilityNotification>
1322 pending_accessibility_notifications_; 1299 pending_accessibility_notifications_;
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
1414 // bunch of stuff, you should probably create a helper class and put your 1391 // bunch of stuff, you should probably create a helper class and put your
1415 // data and methods on that to avoid bloating RenderView more. You can use 1392 // data and methods on that to avoid bloating RenderView more. You can use
1416 // the Observer interface to filter IPC messages and receive frame change 1393 // the Observer interface to filter IPC messages and receive frame change
1417 // notifications. 1394 // notifications.
1418 // --------------------------------------------------------------------------- 1395 // ---------------------------------------------------------------------------
1419 1396
1420 DISALLOW_COPY_AND_ASSIGN(RenderView); 1397 DISALLOW_COPY_AND_ASSIGN(RenderView);
1421 }; 1398 };
1422 1399
1423 #endif // CONTENT_RENDERER_RENDER_VIEW_H_ 1400 #endif // CONTENT_RENDERER_RENDER_VIEW_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698