OLD | NEW |
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 CHROME_RENDERER_RENDER_VIEW_H_ | 5 #ifndef CHROME_RENDERER_RENDER_VIEW_H_ |
6 #define CHROME_RENDERER_RENDER_VIEW_H_ | 6 #define CHROME_RENDERER_RENDER_VIEW_H_ |
7 #pragma once | 7 #pragma once |
8 | 8 |
9 #include <deque> | 9 #include <deque> |
10 #include <map> | 10 #include <map> |
11 #include <queue> | 11 #include <queue> |
12 #include <set> | 12 #include <set> |
13 #include <string> | 13 #include <string> |
14 #include <vector> | 14 #include <vector> |
15 | 15 |
16 #include "app/surface/transport_dib.h" | 16 #include "app/surface/transport_dib.h" |
17 #include "base/basictypes.h" | 17 #include "base/basictypes.h" |
18 #include "base/gtest_prod_util.h" | 18 #include "base/gtest_prod_util.h" |
19 #include "base/linked_ptr.h" | 19 #include "base/linked_ptr.h" |
| 20 #include "base/observer_list.h" |
20 #include "base/timer.h" | 21 #include "base/timer.h" |
21 #include "base/weak_ptr.h" | 22 #include "base/weak_ptr.h" |
22 #include "build/build_config.h" | 23 #include "build/build_config.h" |
23 #include "chrome/common/content_settings.h" | 24 #include "chrome/common/content_settings.h" |
24 #include "chrome/common/edit_command.h" | 25 #include "chrome/common/edit_command.h" |
25 #include "chrome/common/navigation_gesture.h" | 26 #include "chrome/common/navigation_gesture.h" |
26 #include "chrome/common/page_zoom.h" | 27 #include "chrome/common/page_zoom.h" |
27 #include "chrome/common/render_messages.h" | 28 #include "chrome/common/render_messages.h" |
28 #include "chrome/common/render_messages_params.h" | 29 #include "chrome/common/render_messages_params.h" |
29 #include "chrome/common/renderer_preferences.h" | 30 #include "chrome/common/renderer_preferences.h" |
30 #include "chrome/common/view_types.h" | 31 #include "chrome/common/view_types.h" |
31 #include "chrome/renderer/external_popup_menu.h" | 32 #include "chrome/renderer/external_popup_menu.h" |
32 #include "chrome/renderer/page_load_histograms.h" | 33 #include "chrome/renderer/page_load_histograms.h" |
33 #include "chrome/renderer/pepper_plugin_delegate_impl.h" | 34 #include "chrome/renderer/pepper_plugin_delegate_impl.h" |
34 #include "chrome/renderer/render_widget.h" | 35 #include "chrome/renderer/render_widget.h" |
35 #include "chrome/renderer/renderer_webcookiejar_impl.h" | 36 #include "chrome/renderer/renderer_webcookiejar_impl.h" |
36 #include "chrome/renderer/searchbox.h" | 37 #include "chrome/renderer/searchbox.h" |
37 #include "chrome/renderer/translate_helper.h" | 38 #include "chrome/renderer/translate_helper.h" |
38 #include "third_party/WebKit/WebKit/chromium/public/WebAutoFillClient.h" | |
39 #include "third_party/WebKit/WebKit/chromium/public/WebConsoleMessage.h" | 39 #include "third_party/WebKit/WebKit/chromium/public/WebConsoleMessage.h" |
40 #include "third_party/WebKit/WebKit/chromium/public/WebFileSystem.h" | 40 #include "third_party/WebKit/WebKit/chromium/public/WebFileSystem.h" |
41 #include "third_party/WebKit/WebKit/chromium/public/WebFrameClient.h" | 41 #include "third_party/WebKit/WebKit/chromium/public/WebFrameClient.h" |
42 #include "third_party/WebKit/WebKit/chromium/public/WebMediaPlayerAction.h" | 42 #include "third_party/WebKit/WebKit/chromium/public/WebMediaPlayerAction.h" |
43 #include "third_party/WebKit/WebKit/chromium/public/WebPageSerializerClient.h" | 43 #include "third_party/WebKit/WebKit/chromium/public/WebPageSerializerClient.h" |
44 #include "third_party/WebKit/WebKit/chromium/public/WebTextDirection.h" | 44 #include "third_party/WebKit/WebKit/chromium/public/WebTextDirection.h" |
45 #include "third_party/WebKit/WebKit/chromium/public/WebViewClient.h" | 45 #include "third_party/WebKit/WebKit/chromium/public/WebViewClient.h" |
46 #include "third_party/WebKit/WebKit/chromium/public/WebNavigationType.h" | 46 #include "third_party/WebKit/WebKit/chromium/public/WebNavigationType.h" |
47 #include "webkit/glue/webpreferences.h" | 47 #include "webkit/glue/webpreferences.h" |
48 #include "webkit/plugins/npapi/webplugin_page_delegate.h" | 48 #include "webkit/plugins/npapi/webplugin_page_delegate.h" |
49 | 49 |
50 #if defined(OS_WIN) | 50 #if defined(OS_WIN) |
51 // RenderView is a diamond-shaped hierarchy, with WebWidgetClient at the root. | 51 // RenderView is a diamond-shaped hierarchy, with WebWidgetClient at the root. |
52 // VS warns when we inherit the WebWidgetClient method implementations from | 52 // VS warns when we inherit the WebWidgetClient method implementations from |
53 // RenderWidget. It's safe to ignore that warning. | 53 // RenderWidget. It's safe to ignore that warning. |
54 #pragma warning(disable: 4250) | 54 #pragma warning(disable: 4250) |
55 #endif | 55 #endif |
56 | 56 |
57 class AudioMessageFilter; | 57 class AudioMessageFilter; |
58 class AutoFillHelper; | |
59 class BlockedPlugin; | 58 class BlockedPlugin; |
60 class CustomMenuListener; | 59 class CustomMenuListener; |
61 class DictionaryValue; | 60 class DictionaryValue; |
62 class DeviceOrientationDispatcher; | 61 class DeviceOrientationDispatcher; |
63 class DevToolsAgent; | 62 class DevToolsAgent; |
64 class DevToolsClient; | 63 class DevToolsClient; |
65 class DomAutomationController; | 64 class DomAutomationController; |
66 class DOMUIBindings; | 65 class DOMUIBindings; |
67 class ExternalHostBindings; | 66 class ExternalHostBindings; |
68 class FilePath; | 67 class FilePath; |
69 class GeolocationDispatcher; | 68 class GeolocationDispatcher; |
70 class GeolocationDispatcherOld; | 69 class GeolocationDispatcherOld; |
71 class GURL; | 70 class GURL; |
72 class ListValue; | 71 class ListValue; |
73 class LoadProgressTracker; | 72 class LoadProgressTracker; |
74 class NavigationState; | 73 class NavigationState; |
75 class NotificationProvider; | 74 class NotificationProvider; |
76 class PageClickTracker; | |
77 class PasswordAutocompleteManager; | |
78 class PepperDeviceTest; | 75 class PepperDeviceTest; |
79 class PrintWebViewHelper; | 76 class PrintWebViewHelper; |
| 77 class RenderViewObserver; |
80 class RenderViewVisitor; | 78 class RenderViewVisitor; |
81 class SkBitmap; | 79 class SkBitmap; |
82 class SpeechInputDispatcher; | 80 class SpeechInputDispatcher; |
83 class WebPluginDelegatePepper; | 81 class WebPluginDelegatePepper; |
84 class WebPluginDelegateProxy; | 82 class WebPluginDelegateProxy; |
85 struct ContextMenuMediaParams; | 83 struct ContextMenuMediaParams; |
86 struct PP_Flash_NetAddress; | 84 struct PP_Flash_NetAddress; |
87 struct ThumbnailScore; | 85 struct ThumbnailScore; |
88 struct ViewMsg_ClosePage_Params; | 86 struct ViewMsg_ClosePage_Params; |
89 struct ViewMsg_Navigate_Params; | 87 struct ViewMsg_Navigate_Params; |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
167 // | 165 // |
168 // This is a RefCounted holder of an int because I can't say | 166 // This is a RefCounted holder of an int because I can't say |
169 // scoped_refptr<int>. | 167 // scoped_refptr<int>. |
170 typedef base::RefCountedData<int> SharedRenderViewCounter; | 168 typedef base::RefCountedData<int> SharedRenderViewCounter; |
171 | 169 |
172 // | 170 // |
173 // RenderView is an object that manages a WebView object, and provides a | 171 // RenderView is an object that manages a WebView object, and provides a |
174 // communication interface with an embedding application process | 172 // communication interface with an embedding application process |
175 // | 173 // |
176 class RenderView : public RenderWidget, | 174 class RenderView : public RenderWidget, |
177 public WebKit::WebAutoFillClient, | |
178 public WebKit::WebViewClient, | 175 public WebKit::WebViewClient, |
179 public WebKit::WebFrameClient, | 176 public WebKit::WebFrameClient, |
180 public WebKit::WebPageSerializerClient, | 177 public WebKit::WebPageSerializerClient, |
181 public webkit::npapi::WebPluginPageDelegate, | 178 public webkit::npapi::WebPluginPageDelegate, |
182 public base::SupportsWeakPtr<RenderView> { | 179 public base::SupportsWeakPtr<RenderView> { |
183 public: | 180 public: |
184 // Creates a new RenderView. The parent_hwnd specifies a HWND to use as the | 181 // Creates a new RenderView. The parent_hwnd specifies a HWND to use as the |
185 // parent of the WebView HWND that will be created. If this is a constrained | 182 // parent of the WebView HWND that will be created. If this is a constrained |
186 // popup or as a new tab, opener_id is the routing ID of the RenderView | 183 // popup or as a new tab, opener_id is the routing ID of the RenderView |
187 // responsible for creating this RenderView (corresponding to parent_hwnd). | 184 // responsible for creating this RenderView (corresponding to parent_hwnd). |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
232 } | 229 } |
233 | 230 |
234 const WebPreferences& webkit_preferences() const { | 231 const WebPreferences& webkit_preferences() const { |
235 return webkit_preferences_; | 232 return webkit_preferences_; |
236 } | 233 } |
237 | 234 |
238 void set_send_content_state_immediately(bool value) { | 235 void set_send_content_state_immediately(bool value) { |
239 send_content_state_immediately_ = value; | 236 send_content_state_immediately_ = value; |
240 } | 237 } |
241 | 238 |
242 PageClickTracker* page_click_tracker() const { | |
243 return page_click_tracker_.get(); | |
244 } | |
245 | |
246 // May be NULL if client-side phishing detection is disabled. | 239 // May be NULL if client-side phishing detection is disabled. |
247 safe_browsing::PhishingClassifierDelegate* | 240 safe_browsing::PhishingClassifierDelegate* |
248 phishing_classifier_delegate() const { | 241 phishing_classifier_delegate() const { |
249 return phishing_delegate_.get(); | 242 return phishing_delegate_.get(); |
250 } | 243 } |
251 | 244 |
252 // Returns true if we should display scrollbars for the given view size and | 245 // Returns true if we should display scrollbars for the given view size and |
253 // false if the scrollbars should be hidden. | 246 // false if the scrollbars should be hidden. |
254 bool should_display_scrollbars(int width, int height) const { | 247 bool should_display_scrollbars(int width, int height) const { |
255 return (!send_preferred_size_changes_ || | 248 return (!send_preferred_size_changes_ || |
256 (disable_scrollbars_size_limit_.width() <= width || | 249 (disable_scrollbars_size_limit_.width() <= width || |
257 disable_scrollbars_size_limit_.height() <= height)); | 250 disable_scrollbars_size_limit_.height() <= height)); |
258 } | 251 } |
259 | 252 |
260 const SearchBox& searchbox() const { | 253 const SearchBox& searchbox() const { |
261 return search_box_; | 254 return search_box_; |
262 } | 255 } |
263 | 256 |
| 257 // Functions to add and remove observers for this object. |
| 258 void AddObserver(RenderViewObserver* observer); |
| 259 void RemoveObserver(RenderViewObserver* observer); |
| 260 |
264 // Called from JavaScript window.external.AddSearchProvider() to add a | 261 // Called from JavaScript window.external.AddSearchProvider() to add a |
265 // keyword for a provider described in the given OpenSearch document. | 262 // keyword for a provider described in the given OpenSearch document. |
266 void AddSearchProvider(const std::string& url, | 263 void AddSearchProvider(const std::string& url, |
267 const ViewHostMsg_PageHasOSDD_Type& provider_type); | 264 const ViewHostMsg_PageHasOSDD_Type& provider_type); |
268 | 265 |
269 // Returns the install state for the given search provider url. | 266 // Returns the install state for the given search provider url. |
270 ViewHostMsg_GetSearchProviderInstallState_Params | 267 ViewHostMsg_GetSearchProviderInstallState_Params |
271 GetSearchProviderInstallState(WebKit::WebFrame* frame, | 268 GetSearchProviderInstallState(WebKit::WebFrame* frame, |
272 const std::string& url); | 269 const std::string& url); |
273 | 270 |
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
390 void RegisterPluginDelegate(WebPluginDelegateProxy* delegate); | 387 void RegisterPluginDelegate(WebPluginDelegateProxy* delegate); |
391 void UnregisterPluginDelegate(WebPluginDelegateProxy* delegate); | 388 void UnregisterPluginDelegate(WebPluginDelegateProxy* delegate); |
392 | 389 |
393 void RegisterBlockedPlugin(BlockedPlugin* blocked_plugin); | 390 void RegisterBlockedPlugin(BlockedPlugin* blocked_plugin); |
394 void UnregisterBlockedPlugin(BlockedPlugin* blocked_plugin); | 391 void UnregisterBlockedPlugin(BlockedPlugin* blocked_plugin); |
395 | 392 |
396 // IPC::Channel::Listener implementation ------------------------------------- | 393 // IPC::Channel::Listener implementation ------------------------------------- |
397 | 394 |
398 virtual bool OnMessageReceived(const IPC::Message& msg); | 395 virtual bool OnMessageReceived(const IPC::Message& msg); |
399 | 396 |
400 // WebKit::WebAutoFillClient implementation ---------------------------------- | |
401 virtual void didAcceptAutoFillSuggestion(const WebKit::WebNode& node, | |
402 const WebKit::WebString& value, | |
403 const WebKit::WebString& label, | |
404 int unique_id, | |
405 unsigned index); | |
406 virtual void didSelectAutoFillSuggestion(const WebKit::WebNode& node, | |
407 const WebKit::WebString& value, | |
408 const WebKit::WebString& label, | |
409 int unique_id); | |
410 virtual void didClearAutoFillSelection(const WebKit::WebNode& node); | |
411 virtual void didAcceptAutocompleteSuggestion( | |
412 const WebKit::WebInputElement& element); | |
413 virtual void removeAutocompleteSuggestion(const WebKit::WebString& name, | |
414 const WebKit::WebString& value); | |
415 // TODO(jam): remove this function after WebKit roll | |
416 virtual void removeAutofillSuggestions(const WebKit::WebString& name, | |
417 const WebKit::WebString& value); | |
418 virtual void textFieldDidEndEditing(const WebKit::WebInputElement& element); | |
419 virtual void textFieldDidChange(const WebKit::WebInputElement& element); | |
420 virtual void textFieldDidReceiveKeyDown( | |
421 const WebKit::WebInputElement& element, | |
422 const WebKit::WebKeyboardEvent& event); | |
423 | |
424 // WebKit::WebWidgetClient implementation ------------------------------------ | 397 // WebKit::WebWidgetClient implementation ------------------------------------ |
425 | 398 |
426 // Most methods are handled by RenderWidget. | 399 // Most methods are handled by RenderWidget. |
427 virtual void didFocus(); | 400 virtual void didFocus(); |
428 virtual void didBlur(); | 401 virtual void didBlur(); |
429 virtual void show(WebKit::WebNavigationPolicy policy); | 402 virtual void show(WebKit::WebNavigationPolicy policy); |
430 virtual void closeWidgetSoon(); | 403 virtual void closeWidgetSoon(); |
431 virtual void runModal(); | 404 virtual void runModal(); |
432 | 405 |
433 // WebKit::WebViewClient implementation -------------------------------------- | 406 // WebKit::WebViewClient implementation -------------------------------------- |
(...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
746 ViewHostMsg_AccessibilityNotification_Params::NotificationType type; | 719 ViewHostMsg_AccessibilityNotification_Params::NotificationType type; |
747 }; | 720 }; |
748 | 721 |
749 enum ErrorPageType { | 722 enum ErrorPageType { |
750 DNS_ERROR, | 723 DNS_ERROR, |
751 HTTP_404, | 724 HTTP_404, |
752 CONNECTION_ERROR, | 725 CONNECTION_ERROR, |
753 }; | 726 }; |
754 | 727 |
755 RenderView(RenderThreadBase* render_thread, | 728 RenderView(RenderThreadBase* render_thread, |
756 const WebPreferences& webkit_preferences, | 729 gfx::NativeViewId parent_hwnd, |
757 int64 session_storage_namespace_id); | 730 int32 opener_id, |
| 731 const RendererPreferences& renderer_prefs, |
| 732 const WebPreferences& webkit_prefs, |
| 733 SharedRenderViewCounter* counter, |
| 734 int32 routing_id, |
| 735 int64 session_storage_namespace_id, |
| 736 const string16& frame_name); |
758 | 737 |
759 // Do not delete directly. This class is reference counted. | 738 // Do not delete directly. This class is reference counted. |
760 virtual ~RenderView(); | 739 virtual ~RenderView(); |
761 | 740 |
762 // Initializes this view with the given parent and ID. The |routing_id| can be | |
763 // set to 'MSG_ROUTING_NONE' if the true ID is not yet known. In this case, | |
764 // CompleteInit must be called later with the true ID. | |
765 void Init(gfx::NativeViewId parent, | |
766 int32 opener_id, | |
767 const RendererPreferences& renderer_prefs, | |
768 SharedRenderViewCounter* counter, | |
769 int32 routing_id, | |
770 const string16& frame_name); | |
771 | |
772 void UpdateURL(WebKit::WebFrame* frame); | 741 void UpdateURL(WebKit::WebFrame* frame); |
773 void UpdateTitle(WebKit::WebFrame* frame, const string16& title); | 742 void UpdateTitle(WebKit::WebFrame* frame, const string16& title); |
774 void UpdateSessionHistory(WebKit::WebFrame* frame); | 743 void UpdateSessionHistory(WebKit::WebFrame* frame); |
775 | 744 |
776 // Update current main frame's encoding and send it to browser window. | 745 // Update current main frame's encoding and send it to browser window. |
777 // Since we want to let users see the right encoding info from menu | 746 // Since we want to let users see the right encoding info from menu |
778 // before finishing loading, we call the UpdateEncoding in | 747 // before finishing loading, we call the UpdateEncoding in |
779 // a) function:DidCommitLoadForFrame. When this function is called, | 748 // a) function:DidCommitLoadForFrame. When this function is called, |
780 // that means we have got first data. In here we try to get encoding | 749 // that means we have got first data. In here we try to get encoding |
781 // of page if it has been specified in http header. | 750 // of page if it has been specified in http header. |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
819 std::wstring* result); | 788 std::wstring* result); |
820 | 789 |
821 // Sends a message and runs a nested message loop. | 790 // Sends a message and runs a nested message loop. |
822 bool SendAndRunNestedMessageLoop(IPC::SyncMessage* message); | 791 bool SendAndRunNestedMessageLoop(IPC::SyncMessage* message); |
823 | 792 |
824 // Adds search provider from the given OpenSearch description URL as a | 793 // Adds search provider from the given OpenSearch description URL as a |
825 // keyword search. | 794 // keyword search. |
826 void AddGURLSearchProvider(const GURL& osd_url, | 795 void AddGURLSearchProvider(const GURL& osd_url, |
827 const ViewHostMsg_PageHasOSDD_Type& provider_type); | 796 const ViewHostMsg_PageHasOSDD_Type& provider_type); |
828 | 797 |
829 // Called in a posted task by textFieldDidChange() to work-around a WebKit bug | |
830 // http://bugs.webkit.org/show_bug.cgi?id=16976 | |
831 void TextFieldDidChangeImpl(const WebKit::WebInputElement& element); | |
832 | |
833 // Send queued accessibility notifications from the renderer to the browser. | 798 // Send queued accessibility notifications from the renderer to the browser. |
834 void SendPendingAccessibilityNotifications(); | 799 void SendPendingAccessibilityNotifications(); |
835 | 800 |
836 // IPC message handlers ------------------------------------------------------ | 801 // IPC message handlers ------------------------------------------------------ |
837 // | 802 // |
838 // The documentation for these functions should be in | 803 // The documentation for these functions should be in |
839 // render_messages_internal.h for the message that the function is handling. | 804 // render_messages_internal.h for the message that the function is handling. |
840 | 805 |
841 void OnAccessibilityDoDefaultAction(int acc_obj_id); | 806 void OnAccessibilityDoDefaultAction(int acc_obj_id); |
842 void OnAccessibilityNotificationsAck(); | 807 void OnAccessibilityNotificationsAck(); |
843 void OnAllowBindings(int enabled_bindings_flags); | 808 void OnAllowBindings(int enabled_bindings_flags); |
844 void OnAddMessageToConsole(const string16& frame_xpath, | 809 void OnAddMessageToConsole(const string16& frame_xpath, |
845 const string16& message, | 810 const string16& message, |
846 const WebKit::WebConsoleMessage::Level&); | 811 const WebKit::WebConsoleMessage::Level&); |
847 void OnAdvanceToNextMisspelling(); | 812 void OnAdvanceToNextMisspelling(); |
848 void OnAllowScriptToClose(bool script_can_close); | 813 void OnAllowScriptToClose(bool script_can_close); |
849 void OnAsyncFileOpened(base::PlatformFileError error_code, | 814 void OnAsyncFileOpened(base::PlatformFileError error_code, |
850 IPC::PlatformFileForTransit file_for_transit, | 815 IPC::PlatformFileForTransit file_for_transit, |
851 int message_id); | 816 int message_id); |
852 void OnAutocompleteSuggestionsReturned( | |
853 int query_id, | |
854 const std::vector<string16>& suggestions, | |
855 int default_suggestions_index); | |
856 void OnAutoFillFormDataFilled(int query_id, | |
857 const webkit_glue::FormData& form); | |
858 void OnAutoFillSuggestionsReturned( | |
859 int query_id, | |
860 const std::vector<string16>& values, | |
861 const std::vector<string16>& labels, | |
862 const std::vector<string16>& icons, | |
863 const std::vector<int>& unique_ids); | |
864 void OnCancelDownload(int32 download_id); | 817 void OnCancelDownload(int32 download_id); |
865 void OnClearFocusedNode(); | 818 void OnClearFocusedNode(); |
866 void OnClosePage(const ViewMsg_ClosePage_Params& params); | 819 void OnClosePage(const ViewMsg_ClosePage_Params& params); |
867 #if defined(ENABLE_FLAPPER_HACKS) | 820 #if defined(ENABLE_FLAPPER_HACKS) |
868 void OnConnectTcpACK(int request_id, | 821 void OnConnectTcpACK(int request_id, |
869 IPC::PlatformFileForTransit socket_for_transit, | 822 IPC::PlatformFileForTransit socket_for_transit, |
870 const PP_Flash_NetAddress& local_addr, | 823 const PP_Flash_NetAddress& local_addr, |
871 const PP_Flash_NetAddress& remote_addr); | 824 const PP_Flash_NetAddress& remote_addr); |
872 #endif | 825 #endif |
873 void OnCopy(); | 826 void OnCopy(); |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
932 void OnHandleMessageFromExternalHost(const std::string& message, | 885 void OnHandleMessageFromExternalHost(const std::string& message, |
933 const std::string& origin, | 886 const std::string& origin, |
934 const std::string& target); | 887 const std::string& target); |
935 void OnInstallMissingPlugin(); | 888 void OnInstallMissingPlugin(); |
936 void OnLoadBlockedPlugins(); | 889 void OnLoadBlockedPlugins(); |
937 void OnMediaPlayerActionAt(const gfx::Point& location, | 890 void OnMediaPlayerActionAt(const gfx::Point& location, |
938 const WebKit::WebMediaPlayerAction& action); | 891 const WebKit::WebMediaPlayerAction& action); |
939 void OnMoveOrResizeStarted(); | 892 void OnMoveOrResizeStarted(); |
940 void OnNavigate(const ViewMsg_Navigate_Params& params); | 893 void OnNavigate(const ViewMsg_Navigate_Params& params); |
941 void OnNotifyRendererViewType(ViewType::Type view_type); | 894 void OnNotifyRendererViewType(ViewType::Type view_type); |
942 void OnFillPasswordForm( | |
943 const webkit_glue::PasswordFormFillData& form_data); | |
944 void OnPaste(); | 895 void OnPaste(); |
945 #if defined(OS_MACOSX) | 896 #if defined(OS_MACOSX) |
946 void OnPluginImeCompositionConfirmed(const string16& text, int plugin_id); | 897 void OnPluginImeCompositionConfirmed(const string16& text, int plugin_id); |
947 #endif | 898 #endif |
948 void OnPrintingDone(int document_cookie, bool success); | 899 void OnPrintingDone(int document_cookie, bool success); |
949 void OnPrintPages(); | 900 void OnPrintPages(); |
950 void OnPrintPreview(); | 901 void OnPrintPreview(); |
951 void OnRedo(); | 902 void OnRedo(); |
952 void OnReloadFrame(); | 903 void OnReloadFrame(); |
953 void OnReplace(const string16& text); | 904 void OnReplace(const string16& text); |
(...skipping 415 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1369 // A list of all Pepper v1 plugins that we've created that haven't been | 1320 // A list of all Pepper v1 plugins that we've created that haven't been |
1370 // destroyed yet. Pepper v2 plugins are tracked by the pepper_delegate_. | 1321 // destroyed yet. Pepper v2 plugins are tracked by the pepper_delegate_. |
1371 std::set<WebPluginDelegatePepper*> current_oldstyle_pepper_plugins_; | 1322 std::set<WebPluginDelegatePepper*> current_oldstyle_pepper_plugins_; |
1372 | 1323 |
1373 // A list of all BlockedPlugins so they can all be loaded if needed. | 1324 // A list of all BlockedPlugins so they can all be loaded if needed. |
1374 std::set<BlockedPlugin*> blocked_plugins_; | 1325 std::set<BlockedPlugin*> blocked_plugins_; |
1375 | 1326 |
1376 // Helper objects ------------------------------------------------------------ | 1327 // Helper objects ------------------------------------------------------------ |
1377 | 1328 |
1378 ScopedRunnableMethodFactory<RenderView> page_info_method_factory_; | 1329 ScopedRunnableMethodFactory<RenderView> page_info_method_factory_; |
1379 ScopedRunnableMethodFactory<RenderView> autofill_method_factory_; | |
1380 ScopedRunnableMethodFactory<RenderView> accessibility_method_factory_; | 1330 ScopedRunnableMethodFactory<RenderView> accessibility_method_factory_; |
1381 | 1331 |
1382 // Responsible for translating the page contents to other languages. | 1332 // Responsible for translating the page contents to other languages. |
1383 TranslateHelper translate_helper_; | 1333 TranslateHelper translate_helper_; |
1384 | 1334 |
1385 // Responsible for automatically filling login and password textfields. | |
1386 scoped_ptr<PasswordAutocompleteManager> password_autocomplete_manager_; | |
1387 | |
1388 // Responsible for filling forms (AutoFill) and single text entries | |
1389 // (Autocomplete). | |
1390 scoped_ptr<AutoFillHelper> autofill_helper_; | |
1391 | |
1392 // Tracks when text input controls get clicked. | |
1393 // IMPORTANT: this should be declared after autofill_helper_ and | |
1394 // password_autocomplete_manager_ so the tracker is deleted first (so we won't | |
1395 // run the risk of notifying deleted objects). | |
1396 scoped_ptr<PageClickTracker> page_click_tracker_; | |
1397 | |
1398 RendererWebCookieJarImpl cookie_jar_; | 1335 RendererWebCookieJarImpl cookie_jar_; |
1399 | 1336 |
| 1337 // The next group of objects all implement RenderViewObserver, so are deleted |
| 1338 // along with the RenderView automatically. This is why we just store weak |
| 1339 // references. |
| 1340 |
1400 // Provides access to this renderer from the remote Inspector UI. | 1341 // Provides access to this renderer from the remote Inspector UI. |
1401 scoped_ptr<DevToolsAgent> devtools_agent_; | 1342 DevToolsAgent* devtools_agent_; |
1402 | 1343 |
1403 // DevToolsClient for renderer hosting developer tools UI. It's NULL for other | 1344 // DevToolsClient for renderer hosting developer tools UI. It's NULL for other |
1404 // render views. | 1345 // render views. |
1405 scoped_ptr<DevToolsClient> devtools_client_; | 1346 DevToolsClient* devtools_client_; |
1406 | 1347 |
1407 // Holds a reference to the service which provides desktop notifications. | 1348 // Holds a reference to the service which provides desktop notifications. |
1408 scoped_ptr<NotificationProvider> notification_provider_; | 1349 NotificationProvider* notification_provider_; |
| 1350 |
| 1351 // The geolocation dispatcher attached to this view, lazily initialized. |
| 1352 GeolocationDispatcher* geolocation_dispatcher_; |
| 1353 |
| 1354 // The speech dispatcher attached to this view, lazily initialized. |
| 1355 SpeechInputDispatcher* speech_input_dispatcher_; |
| 1356 |
| 1357 // Device orientation dispatcher attached to this view; lazily initialized. |
| 1358 DeviceOrientationDispatcher* device_orientation_dispatcher_; |
1409 | 1359 |
1410 // PrintWebViewHelper handles printing. Note that this object is constructed | 1360 // PrintWebViewHelper handles printing. Note that this object is constructed |
1411 // when printing for the first time but only destroyed with the RenderView. | 1361 // when printing for the first time but only destroyed with the RenderView. |
1412 scoped_ptr<PrintWebViewHelper> print_helper_; | 1362 scoped_ptr<PrintWebViewHelper> print_helper_; |
1413 | 1363 |
1414 scoped_refptr<AudioMessageFilter> audio_message_filter_; | 1364 scoped_refptr<AudioMessageFilter> audio_message_filter_; |
1415 | 1365 |
1416 // The geolocation dispatcher attached to this view, lazily initialized. | |
1417 scoped_ptr<GeolocationDispatcher> geolocation_dispatcher_; | |
1418 | |
1419 // Handles accessibility requests into the renderer side, as well as | 1366 // Handles accessibility requests into the renderer side, as well as |
1420 // maintains the cache and other features of the accessibility tree. | 1367 // maintains the cache and other features of the accessibility tree. |
1421 scoped_ptr<WebKit::WebAccessibilityCache> accessibility_; | 1368 scoped_ptr<WebKit::WebAccessibilityCache> accessibility_; |
1422 | 1369 |
1423 // Collect renderer accessibility notifications until they are ready to be | 1370 // Collect renderer accessibility notifications until they are ready to be |
1424 // sent to the browser. | 1371 // sent to the browser. |
1425 std::vector<RendererAccessibilityNotification> | 1372 std::vector<RendererAccessibilityNotification> |
1426 pending_accessibility_notifications_; | 1373 pending_accessibility_notifications_; |
1427 | 1374 |
1428 // Set if we are waiting for a accessibility notification ack. | 1375 // Set if we are waiting for a accessibility notification ack. |
1429 bool accessibility_ack_pending_; | 1376 bool accessibility_ack_pending_; |
1430 | 1377 |
1431 // The speech dispatcher attached to this view, lazily initialized. | |
1432 scoped_ptr<SpeechInputDispatcher> speech_input_dispatcher_; | |
1433 | |
1434 // Device orientation dispatcher attached to this view; lazily initialized. | |
1435 scoped_ptr<DeviceOrientationDispatcher> device_orientation_dispatcher_; | |
1436 | |
1437 // Responsible for sending page load related histograms. | 1378 // Responsible for sending page load related histograms. |
1438 PageLoadHistograms page_load_histograms_; | 1379 PageLoadHistograms page_load_histograms_; |
1439 | 1380 |
1440 // Handles the interaction between the RenderView and the phishing | 1381 // Handles the interaction between the RenderView and the phishing |
1441 // classifier. | 1382 // classifier. |
1442 scoped_ptr<safe_browsing::PhishingClassifierDelegate> phishing_delegate_; | 1383 scoped_ptr<safe_browsing::PhishingClassifierDelegate> phishing_delegate_; |
1443 | 1384 |
1444 // Misc ---------------------------------------------------------------------- | 1385 // Misc ---------------------------------------------------------------------- |
1445 | 1386 |
1446 // The current and pending file chooser completion objects. If the queue is | 1387 // The current and pending file chooser completion objects. If the queue is |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1512 | 1453 |
1513 // The external popup for the currently showing select popup. | 1454 // The external popup for the currently showing select popup. |
1514 scoped_ptr<ExternalPopupMenu> external_popup_menu_; | 1455 scoped_ptr<ExternalPopupMenu> external_popup_menu_; |
1515 | 1456 |
1516 // The custom menu event listener, if any. | 1457 // The custom menu event listener, if any. |
1517 CustomMenuListener* custom_menu_listener_; | 1458 CustomMenuListener* custom_menu_listener_; |
1518 | 1459 |
1519 // Reports load progress to the browser. | 1460 // Reports load progress to the browser. |
1520 scoped_ptr<LoadProgressTracker> load_progress_tracker_; | 1461 scoped_ptr<LoadProgressTracker> load_progress_tracker_; |
1521 | 1462 |
| 1463 // All the registered observers. We expect this list to be small, so vector |
| 1464 // is fine. |
| 1465 ObserverList<RenderViewObserver> observers_; |
| 1466 |
1522 // --------------------------------------------------------------------------- | 1467 // --------------------------------------------------------------------------- |
1523 // ADDING NEW DATA? Please see if it fits appropriately in one of the above | 1468 // ADDING NEW DATA? Please see if it fits appropriately in one of the above |
1524 // sections rather than throwing it randomly at the end. If you're adding a | 1469 // sections rather than throwing it randomly at the end. If you're adding a |
1525 // bunch of stuff, you should probably create a helper class and put your | 1470 // bunch of stuff, you should probably create a helper class and put your |
1526 // data and methods on that to avoid bloating RenderView more. | 1471 // data and methods on that to avoid bloating RenderView more. You can use |
| 1472 // the Observer interface to filter IPC messages and receive frame change |
| 1473 // notifications. |
1527 // --------------------------------------------------------------------------- | 1474 // --------------------------------------------------------------------------- |
1528 | 1475 |
1529 DISALLOW_COPY_AND_ASSIGN(RenderView); | 1476 DISALLOW_COPY_AND_ASSIGN(RenderView); |
1530 }; | 1477 }; |
1531 | 1478 |
1532 #endif // CHROME_RENDERER_RENDER_VIEW_H_ | 1479 #endif // CHROME_RENDERER_RENDER_VIEW_H_ |
OLD | NEW |