OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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_BROWSER_TAB_CONTENTS_TAB_CONTENTS_H_ | 5 #ifndef CHROME_BROWSER_TAB_CONTENTS_TAB_CONTENTS_H_ |
6 #define CHROME_BROWSER_TAB_CONTENTS_TAB_CONTENTS_H_ | 6 #define CHROME_BROWSER_TAB_CONTENTS_TAB_CONTENTS_H_ |
7 #pragma once | 7 #pragma once |
8 | 8 |
9 #include "build/build_config.h" | 9 #include "build/build_config.h" |
10 | 10 |
11 #include <deque> | 11 #include <deque> |
12 #include <map> | 12 #include <map> |
13 #include <string> | 13 #include <string> |
14 #include <vector> | 14 #include <vector> |
15 | 15 |
16 #include "base/basictypes.h" | 16 #include "base/basictypes.h" |
17 #include "base/gtest_prod_util.h" | 17 #include "base/gtest_prod_util.h" |
18 #include "base/scoped_ptr.h" | 18 #include "base/scoped_ptr.h" |
19 #include "chrome/browser/cancelable_request.h" | 19 #include "chrome/browser/cancelable_request.h" |
20 #include "chrome/browser/dom_ui/dom_ui_factory.h" | 20 #include "chrome/browser/dom_ui/dom_ui_factory.h" |
21 #include "chrome/browser/download/save_package.h" | 21 #include "chrome/browser/download/save_package.h" |
22 #include "chrome/browser/extensions/image_loading_tracker.h" | 22 #include "chrome/browser/extensions/image_loading_tracker.h" |
23 #include "chrome/browser/fav_icon_helper.h" | 23 #include "chrome/browser/fav_icon_helper.h" |
24 #include "chrome/browser/find_bar_controller.h" | 24 #include "chrome/browser/find_bar_controller.h" |
25 #include "chrome/browser/find_notification_details.h" | 25 #include "chrome/browser/find_notification_details.h" |
26 #include "chrome/browser/js_modal_dialog.h" | 26 #include "chrome/browser/js_modal_dialog.h" |
27 #include "chrome/browser/prefs/pref_change_registrar.h" | 27 #include "chrome/browser/prefs/pref_change_registrar.h" |
28 #include "chrome/browser/password_manager/password_manager_delegate.h" | |
29 #include "chrome/browser/renderer_host/render_view_host_delegate.h" | 28 #include "chrome/browser/renderer_host/render_view_host_delegate.h" |
30 #include "chrome/browser/tab_contents/constrained_window.h" | 29 #include "chrome/browser/tab_contents/constrained_window.h" |
31 #include "chrome/browser/tab_contents/language_state.h" | 30 #include "chrome/browser/tab_contents/language_state.h" |
32 #include "chrome/browser/tab_contents/navigation_controller.h" | 31 #include "chrome/browser/tab_contents/navigation_controller.h" |
33 #include "chrome/browser/tab_contents/navigation_entry.h" | 32 #include "chrome/browser/tab_contents/navigation_entry.h" |
34 #include "chrome/browser/tab_contents/page_navigator.h" | 33 #include "chrome/browser/tab_contents/page_navigator.h" |
35 #include "chrome/browser/tab_contents/render_view_host_manager.h" | 34 #include "chrome/browser/tab_contents/render_view_host_manager.h" |
36 #include "chrome/browser/tab_contents/tab_specific_content_settings.h" | 35 #include "chrome/browser/tab_contents/tab_specific_content_settings.h" |
37 #include "chrome/common/notification_registrar.h" | 36 #include "chrome/common/notification_registrar.h" |
38 #include "chrome/common/property_bag.h" | 37 #include "chrome/common/property_bag.h" |
(...skipping 26 matching lines...) Expand all Loading... |
65 class AutocompleteHistoryManager; | 64 class AutocompleteHistoryManager; |
66 class AutoFillManager; | 65 class AutoFillManager; |
67 class BlockedContentContainer; | 66 class BlockedContentContainer; |
68 class DOMUI; | 67 class DOMUI; |
69 class DownloadItem; | 68 class DownloadItem; |
70 class Extension; | 69 class Extension; |
71 class FileSelectHelper; | 70 class FileSelectHelper; |
72 class InfoBarDelegate; | 71 class InfoBarDelegate; |
73 class LoadNotificationDetails; | 72 class LoadNotificationDetails; |
74 class OmniboxSearchHint; | 73 class OmniboxSearchHint; |
75 class PasswordManager; | |
76 class PluginInstaller; | 74 class PluginInstaller; |
77 class Profile; | 75 class Profile; |
78 struct RendererPreferences; | 76 struct RendererPreferences; |
79 class RenderViewHost; | 77 class RenderViewHost; |
80 class SessionStorageNamespace; | 78 class SessionStorageNamespace; |
81 class SiteInstance; | 79 class SiteInstance; |
82 class SkBitmap; | 80 class SkBitmap; |
83 class TabContents; | 81 class TabContents; |
84 class TabContentsDelegate; | 82 class TabContentsDelegate; |
85 class TabContentsSSLHelper; | 83 class TabContentsSSLHelper; |
86 class TabContentsView; | 84 class TabContentsView; |
87 class URLPattern; | 85 class URLPattern; |
88 struct ThumbnailScore; | 86 struct ThumbnailScore; |
89 struct ViewHostMsg_DomMessage_Params; | 87 struct ViewHostMsg_DomMessage_Params; |
90 struct ViewHostMsg_FrameNavigate_Params; | 88 struct ViewHostMsg_FrameNavigate_Params; |
| 89 class WebNavigationObserver; |
91 struct WebPreferences; | 90 struct WebPreferences; |
92 | 91 |
93 // Describes what goes in the main content area of a tab. TabContents is | 92 // Describes what goes in the main content area of a tab. TabContents is |
94 // the only type of TabContents, and these should be merged together. | 93 // the only type of TabContents, and these should be merged together. |
95 class TabContents : public PageNavigator, | 94 class TabContents : public PageNavigator, |
96 public NotificationObserver, | 95 public NotificationObserver, |
97 public RenderViewHostDelegate, | 96 public RenderViewHostDelegate, |
98 public RenderViewHostDelegate::BrowserIntegration, | 97 public RenderViewHostDelegate::BrowserIntegration, |
99 public RenderViewHostDelegate::Resource, | 98 public RenderViewHostDelegate::Resource, |
100 public RenderViewHostManager::Delegate, | 99 public RenderViewHostManager::Delegate, |
101 public JavaScriptAppModalDialogDelegate, | 100 public JavaScriptAppModalDialogDelegate, |
102 public ImageLoadingTracker::Observer, | 101 public ImageLoadingTracker::Observer, |
103 public PasswordManagerDelegate, | |
104 public TabSpecificContentSettings::Delegate { | 102 public TabSpecificContentSettings::Delegate { |
105 public: | 103 public: |
106 // Flags passed to the TabContentsDelegate.NavigationStateChanged to tell it | 104 // Flags passed to the TabContentsDelegate.NavigationStateChanged to tell it |
107 // what has changed. Combine them to update more than one thing. | 105 // what has changed. Combine them to update more than one thing. |
108 enum InvalidateTypes { | 106 enum InvalidateTypes { |
109 INVALIDATE_URL = 1 << 0, // The URL has changed. | 107 INVALIDATE_URL = 1 << 0, // The URL has changed. |
110 INVALIDATE_TAB = 1 << 1, // The favicon, app icon, or crashed | 108 INVALIDATE_TAB = 1 << 1, // The favicon, app icon, or crashed |
111 // state changed. | 109 // state changed. |
112 INVALIDATE_LOAD = 1 << 2, // The loading state has changed. | 110 INVALIDATE_LOAD = 1 << 2, // The loading state has changed. |
113 INVALIDATE_PAGE_ACTIONS = 1 << 3, // Page action icons have changed. | 111 INVALIDATE_PAGE_ACTIONS = 1 << 3, // Page action icons have changed. |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
150 // Returns the user profile associated with this TabContents (via the | 148 // Returns the user profile associated with this TabContents (via the |
151 // NavigationController). | 149 // NavigationController). |
152 Profile* profile() const { return controller_.profile(); } | 150 Profile* profile() const { return controller_.profile(); } |
153 | 151 |
154 // Returns true if contains content rendered by an extension. | 152 // Returns true if contains content rendered by an extension. |
155 bool HostsExtension() const; | 153 bool HostsExtension() const; |
156 | 154 |
157 // Returns the AutoFillManager, creating it if necessary. | 155 // Returns the AutoFillManager, creating it if necessary. |
158 AutoFillManager* GetAutoFillManager(); | 156 AutoFillManager* GetAutoFillManager(); |
159 | 157 |
160 // Returns the PasswordManager, creating it if necessary. | |
161 PasswordManager* GetPasswordManager(); | |
162 | |
163 // Returns the PluginInstaller, creating it if necessary. | 158 // Returns the PluginInstaller, creating it if necessary. |
164 PluginInstaller* GetPluginInstaller(); | 159 PluginInstaller* GetPluginInstaller(); |
165 | 160 |
166 // Returns the TabContentsSSLHelper, creating it if necessary. | 161 // Returns the TabContentsSSLHelper, creating it if necessary. |
167 TabContentsSSLHelper* GetSSLHelper(); | 162 TabContentsSSLHelper* GetSSLHelper(); |
168 | 163 |
169 // Returns the SavePackage which manages the page saving job. May be NULL. | 164 // Returns the SavePackage which manages the page saving job. May be NULL. |
170 SavePackage* save_package() const { return save_package_.get(); } | 165 SavePackage* save_package() const { return save_package_.get(); } |
171 | 166 |
172 // Return the currently active RenderProcessHost and RenderViewHost. Each of | 167 // Return the currently active RenderProcessHost and RenderViewHost. Each of |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
262 // Returns true if we are not using the default favicon. | 257 // Returns true if we are not using the default favicon. |
263 bool FavIconIsValid() const; | 258 bool FavIconIsValid() const; |
264 | 259 |
265 // Returns whether the favicon should be displayed. If this returns false, no | 260 // Returns whether the favicon should be displayed. If this returns false, no |
266 // space is provided for the favicon, and the favicon is never displayed. | 261 // space is provided for the favicon, and the favicon is never displayed. |
267 virtual bool ShouldDisplayFavIcon(); | 262 virtual bool ShouldDisplayFavIcon(); |
268 | 263 |
269 // Returns a human-readable description the tab's loading state. | 264 // Returns a human-readable description the tab's loading state. |
270 virtual std::wstring GetStatusText() const; | 265 virtual std::wstring GetStatusText() const; |
271 | 266 |
| 267 // Add and remove observers for page navigation notifications. Adding or |
| 268 // removing multiple times has no effect. The order in which notifications |
| 269 // are sent to observers is undefined. Clients must be sure to remove the |
| 270 // observer before they go away. |
| 271 void AddNavigationObserver(WebNavigationObserver* observer); |
| 272 void RemoveNavigationObserver(WebNavigationObserver* observer); |
| 273 |
272 // Return whether this tab contents is loading a resource. | 274 // Return whether this tab contents is loading a resource. |
273 bool is_loading() const { return is_loading_; } | 275 bool is_loading() const { return is_loading_; } |
274 | 276 |
275 // Returns whether this tab contents is waiting for a first-response for the | 277 // Returns whether this tab contents is waiting for a first-response for the |
276 // main resource of the page. This controls whether the throbber state is | 278 // main resource of the page. This controls whether the throbber state is |
277 // "waiting" or "loading." | 279 // "waiting" or "loading." |
278 bool waiting_for_response() const { return waiting_for_response_; } | 280 bool waiting_for_response() const { return waiting_for_response_; } |
279 | 281 |
280 bool is_starred() const { return is_starred_; } | 282 bool is_starred() const { return is_starred_; } |
281 | 283 |
(...skipping 406 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
688 // It is up to callers to call SetBookmarkDragDelegate(NULL) when | 690 // It is up to callers to call SetBookmarkDragDelegate(NULL) when |
689 // |bookmark_drag| is deleted since this class does not take ownership of | 691 // |bookmark_drag| is deleted since this class does not take ownership of |
690 // |bookmark_drag|. | 692 // |bookmark_drag|. |
691 virtual void SetBookmarkDragDelegate( | 693 virtual void SetBookmarkDragDelegate( |
692 RenderViewHostDelegate::BookmarkDrag* bookmark_drag); | 694 RenderViewHostDelegate::BookmarkDrag* bookmark_drag); |
693 | 695 |
694 // The TabSpecificContentSettings object is used to query the blocked content | 696 // The TabSpecificContentSettings object is used to query the blocked content |
695 // state by various UI elements. | 697 // state by various UI elements. |
696 TabSpecificContentSettings* GetTabSpecificContentSettings() const; | 698 TabSpecificContentSettings* GetTabSpecificContentSettings() const; |
697 | 699 |
698 // PasswordManagerDelegate implementation. | |
699 virtual void FillPasswordForm( | |
700 const webkit_glue::PasswordFormFillData& form_data); | |
701 virtual void AddSavePasswordInfoBar(PasswordFormManager* form_to_save); | |
702 virtual Profile* GetProfileForPasswordManager(); | |
703 virtual bool DidLastPageLoadEncounterSSLErrors(); | |
704 | |
705 // Updates history with the specified navigation. This is called by | 700 // Updates history with the specified navigation. This is called by |
706 // OnMsgNavigate to update history state. | 701 // OnMsgNavigate to update history state. |
707 void UpdateHistoryForNavigation( | 702 void UpdateHistoryForNavigation( |
708 scoped_refptr<history::HistoryAddPageArgs> add_page_args); | 703 scoped_refptr<history::HistoryAddPageArgs> add_page_args); |
709 | 704 |
710 // Sends the page title to the history service. This is called when we receive | 705 // Sends the page title to the history service. This is called when we receive |
711 // the page title and we know we want to update history. | 706 // the page title and we know we want to update history. |
712 void UpdateHistoryPageTitle(const NavigationEntry& entry); | 707 void UpdateHistoryPageTitle(const NavigationEntry& entry); |
713 | 708 |
714 // Gets the zoom level for this tab. | 709 // Gets the zoom level for this tab. |
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
975 const std::wstring& default_prompt, | 970 const std::wstring& default_prompt, |
976 const GURL& frame_url, | 971 const GURL& frame_url, |
977 const int flags, | 972 const int flags, |
978 IPC::Message* reply_msg, | 973 IPC::Message* reply_msg, |
979 bool* did_suppress_message); | 974 bool* did_suppress_message); |
980 virtual void RunBeforeUnloadConfirm(const std::wstring& message, | 975 virtual void RunBeforeUnloadConfirm(const std::wstring& message, |
981 IPC::Message* reply_msg); | 976 IPC::Message* reply_msg); |
982 virtual void ShowModalHTMLDialog(const GURL& url, int width, int height, | 977 virtual void ShowModalHTMLDialog(const GURL& url, int width, int height, |
983 const std::string& json_arguments, | 978 const std::string& json_arguments, |
984 IPC::Message* reply_msg); | 979 IPC::Message* reply_msg); |
985 virtual void PasswordFormsFound( | |
986 const std::vector<webkit_glue::PasswordForm>& forms); | |
987 virtual void PasswordFormsVisible( | |
988 const std::vector<webkit_glue::PasswordForm>& visible_forms); | |
989 virtual void PageHasOSDD(RenderViewHost* render_view_host, | 980 virtual void PageHasOSDD(RenderViewHost* render_view_host, |
990 int32 page_id, | 981 int32 page_id, |
991 const GURL& url, | 982 const GURL& url, |
992 const ViewHostMsg_PageHasOSDD_Type& provider_type); | 983 const ViewHostMsg_PageHasOSDD_Type& provider_type); |
993 virtual GURL GetAlternateErrorPageURL() const; | 984 virtual GURL GetAlternateErrorPageURL() const; |
994 virtual RendererPreferences GetRendererPrefs(Profile* profile) const; | 985 virtual RendererPreferences GetRendererPrefs(Profile* profile) const; |
995 virtual WebPreferences GetWebkitPrefs(); | 986 virtual WebPreferences GetWebkitPrefs(); |
996 virtual void OnIgnoredUIEvent(); | 987 virtual void OnIgnoredUIEvent(); |
997 virtual void OnJSOutOfMemory(); | 988 virtual void OnJSOutOfMemory(); |
998 virtual void OnCrossSiteResponse(int new_render_process_host_id, | 989 virtual void OnCrossSiteResponse(int new_render_process_host_id, |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1088 | 1079 |
1089 // SavePackage, lazily created. | 1080 // SavePackage, lazily created. |
1090 scoped_refptr<SavePackage> save_package_; | 1081 scoped_refptr<SavePackage> save_package_; |
1091 | 1082 |
1092 // AutocompleteHistoryManager, lazily created. | 1083 // AutocompleteHistoryManager, lazily created. |
1093 scoped_ptr<AutocompleteHistoryManager> autocomplete_history_manager_; | 1084 scoped_ptr<AutocompleteHistoryManager> autocomplete_history_manager_; |
1094 | 1085 |
1095 // AutoFillManager, lazily created. | 1086 // AutoFillManager, lazily created. |
1096 scoped_ptr<AutoFillManager> autofill_manager_; | 1087 scoped_ptr<AutoFillManager> autofill_manager_; |
1097 | 1088 |
1098 // PasswordManager, lazily created. | |
1099 scoped_ptr<PasswordManager> password_manager_; | |
1100 | |
1101 // PluginInstaller, lazily created. | 1089 // PluginInstaller, lazily created. |
1102 scoped_ptr<PluginInstaller> plugin_installer_; | 1090 scoped_ptr<PluginInstaller> plugin_installer_; |
1103 | 1091 |
1104 // TabContentsSSLHelper, lazily created. | 1092 // TabContentsSSLHelper, lazily created. |
1105 scoped_ptr<TabContentsSSLHelper> ssl_helper_; | 1093 scoped_ptr<TabContentsSSLHelper> ssl_helper_; |
1106 | 1094 |
1107 // FileSelectHelper, lazily created. | 1095 // FileSelectHelper, lazily created. |
1108 scoped_ptr<FileSelectHelper> file_select_helper_; | 1096 scoped_ptr<FileSelectHelper> file_select_helper_; |
1109 | 1097 |
1110 // Handles drag and drop event forwarding to extensions. | 1098 // Handles drag and drop event forwarding to extensions. |
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1297 bool closed_by_user_gesture_; | 1285 bool closed_by_user_gesture_; |
1298 | 1286 |
1299 // Minimum/maximum zoom percent. | 1287 // Minimum/maximum zoom percent. |
1300 int minimum_zoom_percent_; | 1288 int minimum_zoom_percent_; |
1301 int maximum_zoom_percent_; | 1289 int maximum_zoom_percent_; |
1302 // If true, the default zoom limits have been overriden for this tab, in which | 1290 // If true, the default zoom limits have been overriden for this tab, in which |
1303 // case we don't want saved settings to apply to it and we don't want to | 1291 // case we don't want saved settings to apply to it and we don't want to |
1304 // remember it. | 1292 // remember it. |
1305 bool temporary_zoom_settings_; | 1293 bool temporary_zoom_settings_; |
1306 | 1294 |
| 1295 // A list of observers notified when page state changes. Weak references. |
| 1296 ObserverList<WebNavigationObserver> web_navigation_observers_; |
| 1297 |
1307 // Content restrictions, used to disable print/copy etc based on content's | 1298 // Content restrictions, used to disable print/copy etc based on content's |
1308 // (full-page plugins for now only) permissions. | 1299 // (full-page plugins for now only) permissions. |
1309 int content_restrictions_; | 1300 int content_restrictions_; |
1310 | 1301 |
1311 // --------------------------------------------------------------------------- | 1302 // --------------------------------------------------------------------------- |
1312 | 1303 |
1313 DISALLOW_COPY_AND_ASSIGN(TabContents); | 1304 DISALLOW_COPY_AND_ASSIGN(TabContents); |
1314 }; | 1305 }; |
1315 | 1306 |
1316 #endif // CHROME_BROWSER_TAB_CONTENTS_TAB_CONTENTS_H_ | 1307 #endif // CHROME_BROWSER_TAB_CONTENTS_TAB_CONTENTS_H_ |
OLD | NEW |