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_BROWSER_UI_TAB_CONTENTS_TAB_CONTENTS_WRAPPER_H_ | 5 #ifndef CHROME_BROWSER_UI_TAB_CONTENTS_TAB_CONTENTS_WRAPPER_H_ |
6 #define CHROME_BROWSER_UI_TAB_CONTENTS_TAB_CONTENTS_WRAPPER_H_ | 6 #define CHROME_BROWSER_UI_TAB_CONTENTS_TAB_CONTENTS_WRAPPER_H_ |
7 #pragma once | 7 #pragma once |
8 | 8 |
9 #include <string> | 9 #include <string> |
10 #include <vector> | 10 #include <vector> |
11 | 11 |
12 #include "base/basictypes.h" | 12 #include "base/basictypes.h" |
13 #include "base/compiler_specific.h" | 13 #include "base/compiler_specific.h" |
14 #include "base/memory/ref_counted.h" | 14 #include "base/memory/ref_counted.h" |
15 #include "base/memory/scoped_ptr.h" | 15 #include "base/memory/scoped_ptr.h" |
16 #include "chrome/browser/prefs/pref_change_registrar.h" | 16 #include "chrome/browser/prefs/pref_change_registrar.h" |
17 #include "content/browser/tab_contents/tab_contents.h" | 17 #include "content/browser/tab_contents/tab_contents.h" |
18 #include "content/browser/tab_contents/tab_contents_observer.h" | 18 #include "content/browser/tab_contents/tab_contents_observer.h" |
19 #include "content/public/browser/notification_registrar.h" | 19 #include "content/public/browser/notification_registrar.h" |
20 | 20 |
21 class AutocompleteHistoryManager; | 21 class AutocompleteHistoryManager; |
22 class AutofillManager; | 22 class AutofillManager; |
23 class AutofillExternalDelegate; | 23 class AutofillExternalDelegate; |
24 class AutomationTabHelper; | 24 class AutomationTabHelper; |
25 class BlockedContentTabHelper; | 25 class BlockedContentTabHelper; |
26 class BookmarkTabHelper; | 26 class BookmarkTabHelper; |
27 class ConstrainedWindowTabHelper; | 27 class ConstrainedWindowTabHelper; |
| 28 class CoreTabHelper; |
28 class DownloadRequestLimiterObserver; | 29 class DownloadRequestLimiterObserver; |
29 class ExtensionTabHelper; | 30 class ExtensionTabHelper; |
30 class ExtensionWebNavigationTabObserver; | 31 class ExtensionWebNavigationTabObserver; |
31 class ExternalProtocolObserver; | 32 class ExternalProtocolObserver; |
32 class FaviconTabHelper; | 33 class FaviconTabHelper; |
33 class FindTabHelper; | 34 class FindTabHelper; |
34 class HistoryTabHelper; | 35 class HistoryTabHelper; |
35 class InfoBarTabHelper; | 36 class InfoBarTabHelper; |
36 class OmniboxSearchHint; | 37 class OmniboxSearchHint; |
37 class PasswordManager; | 38 class PasswordManager; |
38 class PasswordManagerDelegate; | 39 class PasswordManagerDelegate; |
39 class PluginObserver; | 40 class PluginObserver; |
40 class PrefService; | 41 class PrefService; |
41 class PrefsTabHelper; | 42 class PrefsTabHelper; |
42 class Profile; | 43 class Profile; |
43 class RestoreTabHelper; | 44 class RestoreTabHelper; |
44 class SadTabObserver; | 45 class SadTabObserver; |
45 class SearchEngineTabHelper; | 46 class SearchEngineTabHelper; |
46 class TabContentsSSLHelper; | 47 class TabContentsSSLHelper; |
47 class TabContentsWrapperDelegate; | |
48 class TabContentsWrapperSyncedTabDelegate; | 48 class TabContentsWrapperSyncedTabDelegate; |
49 class TabSpecificContentSettings; | 49 class TabSpecificContentSettings; |
50 class ThumbnailGenerator; | 50 class ThumbnailGenerator; |
51 class TranslateTabHelper; | 51 class TranslateTabHelper; |
52 class WebIntentPickerController; | 52 class WebIntentPickerController; |
53 | 53 |
54 namespace IPC { | 54 namespace IPC { |
55 class Message; | 55 class Message; |
56 } | 56 } |
57 | 57 |
(...skipping 21 matching lines...) Expand all Loading... |
79 public: | 79 public: |
80 // Takes ownership of |contents|, which must be heap-allocated (as it lives | 80 // Takes ownership of |contents|, which must be heap-allocated (as it lives |
81 // in a scoped_ptr) and can not be NULL. | 81 // in a scoped_ptr) and can not be NULL. |
82 explicit TabContentsWrapper(TabContents* contents); | 82 explicit TabContentsWrapper(TabContents* contents); |
83 virtual ~TabContentsWrapper(); | 83 virtual ~TabContentsWrapper(); |
84 | 84 |
85 // Used to retrieve this object from |tab_contents_|, which is placed in | 85 // Used to retrieve this object from |tab_contents_|, which is placed in |
86 // its property bag to avoid adding additional interfaces. | 86 // its property bag to avoid adding additional interfaces. |
87 static base::PropertyAccessor<TabContentsWrapper*>* property_accessor(); | 87 static base::PropertyAccessor<TabContentsWrapper*>* property_accessor(); |
88 | 88 |
89 static void RegisterUserPrefs(PrefService* prefs); | |
90 | |
91 // Initial title assigned to NavigationEntries from Navigate. | |
92 static string16 GetDefaultTitle(); | |
93 | |
94 // Returns a human-readable description the tab's loading state. | |
95 string16 GetStatusText() const; | |
96 | |
97 // Create a TabContentsWrapper with the same state as this one. The returned | 89 // Create a TabContentsWrapper with the same state as this one. The returned |
98 // heap-allocated pointer is owned by the caller. | 90 // heap-allocated pointer is owned by the caller. |
99 TabContentsWrapper* Clone(); | 91 TabContentsWrapper* Clone(); |
100 | 92 |
101 // Captures a snapshot of the page. | |
102 void CaptureSnapshot(); | |
103 | |
104 // Stop this tab rendering in fullscreen mode. | |
105 void ExitFullscreenMode(); | |
106 | |
107 // Helper to retrieve the existing instance that wraps a given TabContents. | 93 // Helper to retrieve the existing instance that wraps a given TabContents. |
108 // Returns NULL if there is no such existing instance. | 94 // Returns NULL if there is no such existing instance. |
109 // NOTE: This is not intended for general use. It is intended for situations | 95 // NOTE: This is not intended for general use. It is intended for situations |
110 // like callbacks from content/ where only a TabContents is available. In the | 96 // like callbacks from content/ where only a TabContents is available. In the |
111 // general case, please do NOT use this; plumb TabContentsWrapper through the | 97 // general case, please do NOT use this; plumb TabContentsWrapper through the |
112 // chrome/ code instead of TabContents. | 98 // chrome/ code instead of TabContents. |
113 static TabContentsWrapper* GetCurrentWrapperForContents( | 99 static TabContentsWrapper* GetCurrentWrapperForContents( |
114 TabContents* contents); | 100 TabContents* contents); |
115 static const TabContentsWrapper* GetCurrentWrapperForContents( | 101 static const TabContentsWrapper* GetCurrentWrapperForContents( |
116 const TabContents* contents); | 102 const TabContents* contents); |
117 | 103 |
118 TabContentsWrapperDelegate* delegate() const { return delegate_; } | |
119 void set_delegate(TabContentsWrapperDelegate* d) { delegate_ = d; } | |
120 | |
121 TabContents* tab_contents() const { return tab_contents_.get(); } | 104 TabContents* tab_contents() const { return tab_contents_.get(); } |
122 NavigationController& controller() const { | 105 NavigationController& controller() const { |
123 return tab_contents()->controller(); | 106 return tab_contents()->controller(); |
124 } | 107 } |
125 TabContentsView* view() const { return tab_contents()->view(); } | 108 TabContentsView* view() const { return tab_contents()->view(); } |
126 RenderViewHost* render_view_host() const { | 109 RenderViewHost* render_view_host() const { |
127 return tab_contents()->render_view_host(); | 110 return tab_contents()->render_view_host(); |
128 } | 111 } |
129 WebUI* web_ui() const { return tab_contents()->web_ui(); } | 112 WebUI* web_ui() const { return tab_contents()->web_ui(); } |
130 | 113 |
(...skipping 17 matching lines...) Expand all Loading... |
148 } | 131 } |
149 | 132 |
150 BookmarkTabHelper* bookmark_tab_helper() { | 133 BookmarkTabHelper* bookmark_tab_helper() { |
151 return bookmark_tab_helper_.get(); | 134 return bookmark_tab_helper_.get(); |
152 } | 135 } |
153 | 136 |
154 ConstrainedWindowTabHelper* constrained_window_tab_helper() { | 137 ConstrainedWindowTabHelper* constrained_window_tab_helper() { |
155 return constrained_window_tab_helper_.get(); | 138 return constrained_window_tab_helper_.get(); |
156 } | 139 } |
157 | 140 |
| 141 CoreTabHelper* core_tab_helper() { return core_tab_helper_.get(); } |
| 142 |
158 ExtensionTabHelper* extension_tab_helper() { | 143 ExtensionTabHelper* extension_tab_helper() { |
159 return extension_tab_helper_.get(); | 144 return extension_tab_helper_.get(); |
160 } | 145 } |
161 | 146 |
162 const ExtensionTabHelper* extension_tab_helper() const { | 147 const ExtensionTabHelper* extension_tab_helper() const { |
163 return extension_tab_helper_.get(); | 148 return extension_tab_helper_.get(); |
164 } | 149 } |
165 | 150 |
166 FaviconTabHelper* favicon_tab_helper() { return favicon_tab_helper_.get(); } | 151 FaviconTabHelper* favicon_tab_helper() { return favicon_tab_helper_.get(); } |
167 FindTabHelper* find_tab_helper() { return find_tab_helper_.get(); } | 152 FindTabHelper* find_tab_helper() { return find_tab_helper_.get(); } |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
208 return translate_tab_helper_.get(); | 193 return translate_tab_helper_.get(); |
209 } | 194 } |
210 | 195 |
211 WebIntentPickerController* web_intent_picker_controller() { | 196 WebIntentPickerController* web_intent_picker_controller() { |
212 return web_intent_picker_controller_.get(); | 197 return web_intent_picker_controller_.get(); |
213 } | 198 } |
214 | 199 |
215 // Overrides ----------------------------------------------------------------- | 200 // Overrides ----------------------------------------------------------------- |
216 | 201 |
217 // TabContentsObserver overrides: | 202 // TabContentsObserver overrides: |
218 virtual void RenderViewCreated(RenderViewHost* render_view_host) OVERRIDE; | |
219 virtual void DidBecomeSelected() OVERRIDE; | |
220 virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE; | |
221 virtual void TabContentsDestroyed(TabContents* tab) OVERRIDE; | 203 virtual void TabContentsDestroyed(TabContents* tab) OVERRIDE; |
222 | 204 |
223 // content::NotificationObserver overrides: | 205 // content::NotificationObserver overrides: |
224 virtual void Observe(int type, | 206 virtual void Observe(int type, |
225 const content::NotificationSource& source, | 207 const content::NotificationSource& source, |
226 const content::NotificationDetails& details) OVERRIDE; | 208 const content::NotificationDetails& details) OVERRIDE; |
227 | 209 |
228 private: | 210 private: |
229 FRIEND_TEST_ALL_PREFIXES( | 211 FRIEND_TEST_ALL_PREFIXES( |
230 PrefsTabHelperTest, OverridePrefsOnViewCreation); | 212 PrefsTabHelperTest, OverridePrefsOnViewCreation); |
231 | 213 |
232 // Internal helpers ---------------------------------------------------------- | 214 // Internal helpers ---------------------------------------------------------- |
233 | 215 |
234 // Message handlers. | |
235 void OnSnapshot(const SkBitmap& bitmap); | |
236 void OnPDFHasUnsupportedFeature(); | |
237 | |
238 // Returns the server that can provide alternate error pages. If the returned | |
239 // URL is empty, the default error page built into WebKit will be used. | |
240 GURL GetAlternateErrorPageURL() const; | |
241 | |
242 // Send the alternate error page URL to the renderer. | |
243 void UpdateAlternateErrorPageURL(RenderViewHost* rvh); | |
244 | |
245 // Create or destroy SafebrowsingDetectionHost as needed if the user's | 216 // Create or destroy SafebrowsingDetectionHost as needed if the user's |
246 // safe browsing preference has changed. | 217 // safe browsing preference has changed. |
247 void UpdateSafebrowsingDetectionHost(); | 218 void UpdateSafebrowsingDetectionHost(); |
248 | 219 |
249 // Data for core operation --------------------------------------------------- | 220 // Data for core operation --------------------------------------------------- |
250 | 221 |
251 // Delegate for notifying our owner about stuff. Not owned by us. | |
252 TabContentsWrapperDelegate* delegate_; | |
253 | |
254 content::NotificationRegistrar registrar_; | 222 content::NotificationRegistrar registrar_; |
255 PrefChangeRegistrar pref_change_registrar_; | 223 PrefChangeRegistrar pref_change_registrar_; |
256 | 224 |
257 // Data for current page ----------------------------------------------------- | 225 // Data for current page ----------------------------------------------------- |
258 | 226 |
259 // Shows an info-bar to users when they search from a known search engine and | 227 // Shows an info-bar to users when they search from a known search engine and |
260 // have never used the omnibox for search before. | 228 // have never used the omnibox for search before. |
261 scoped_ptr<OmniboxSearchHint> omnibox_search_hint_; | 229 scoped_ptr<OmniboxSearchHint> omnibox_search_hint_; |
262 | 230 |
263 // Tab Helpers --------------------------------------------------------------- | 231 // Tab Helpers --------------------------------------------------------------- |
264 // (These provide API for callers and have a getter function listed in the | 232 // (These provide API for callers and have a getter function listed in the |
265 // "Tab Helpers" section in the member functions area, above.) | 233 // "Tab Helpers" section in the member functions area, above.) |
266 | 234 |
267 scoped_ptr<AutocompleteHistoryManager> autocomplete_history_manager_; | 235 scoped_ptr<AutocompleteHistoryManager> autocomplete_history_manager_; |
268 scoped_refptr<AutofillManager> autofill_manager_; | 236 scoped_refptr<AutofillManager> autofill_manager_; |
269 scoped_ptr<AutofillExternalDelegate> autofill_external_delegate_; | 237 scoped_ptr<AutofillExternalDelegate> autofill_external_delegate_; |
270 scoped_ptr<AutomationTabHelper> automation_tab_helper_; | 238 scoped_ptr<AutomationTabHelper> automation_tab_helper_; |
271 scoped_ptr<BlockedContentTabHelper> blocked_content_tab_helper_; | 239 scoped_ptr<BlockedContentTabHelper> blocked_content_tab_helper_; |
272 scoped_ptr<BookmarkTabHelper> bookmark_tab_helper_; | 240 scoped_ptr<BookmarkTabHelper> bookmark_tab_helper_; |
273 scoped_ptr<ConstrainedWindowTabHelper> constrained_window_tab_helper_; | 241 scoped_ptr<ConstrainedWindowTabHelper> constrained_window_tab_helper_; |
| 242 scoped_ptr<CoreTabHelper> core_tab_helper_; |
274 scoped_ptr<ExtensionTabHelper> extension_tab_helper_; | 243 scoped_ptr<ExtensionTabHelper> extension_tab_helper_; |
275 scoped_ptr<FaviconTabHelper> favicon_tab_helper_; | 244 scoped_ptr<FaviconTabHelper> favicon_tab_helper_; |
276 scoped_ptr<FindTabHelper> find_tab_helper_; | 245 scoped_ptr<FindTabHelper> find_tab_helper_; |
277 scoped_ptr<HistoryTabHelper> history_tab_helper_; | 246 scoped_ptr<HistoryTabHelper> history_tab_helper_; |
278 scoped_ptr<InfoBarTabHelper> infobar_tab_helper_; | 247 scoped_ptr<InfoBarTabHelper> infobar_tab_helper_; |
279 | 248 |
280 // PasswordManager and its delegate. The delegate must outlive the manager, | 249 // PasswordManager and its delegate. The delegate must outlive the manager, |
281 // per documentation in password_manager.h. | 250 // per documentation in password_manager.h. |
282 scoped_ptr<PasswordManagerDelegate> password_manager_delegate_; | 251 scoped_ptr<PasswordManagerDelegate> password_manager_delegate_; |
283 scoped_ptr<PasswordManager> password_manager_; | 252 scoped_ptr<PasswordManager> password_manager_; |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
326 | 295 |
327 // The supporting objects need to outlive the TabContents dtor (as they may | 296 // The supporting objects need to outlive the TabContents dtor (as they may |
328 // be called upon during its execution). As a result, this must come last | 297 // be called upon during its execution). As a result, this must come last |
329 // in the list. | 298 // in the list. |
330 scoped_ptr<TabContents> tab_contents_; | 299 scoped_ptr<TabContents> tab_contents_; |
331 | 300 |
332 DISALLOW_COPY_AND_ASSIGN(TabContentsWrapper); | 301 DISALLOW_COPY_AND_ASSIGN(TabContentsWrapper); |
333 }; | 302 }; |
334 | 303 |
335 #endif // CHROME_BROWSER_UI_TAB_CONTENTS_TAB_CONTENTS_WRAPPER_H_ | 304 #endif // CHROME_BROWSER_UI_TAB_CONTENTS_TAB_CONTENTS_WRAPPER_H_ |
OLD | NEW |