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

Unified Diff: chrome/browser/ui/tab_contents/tab_contents.h

Issue 10868072: Make TabContents ctor private; poke hole for existing callers. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: all green Created 8 years, 4 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/tab_contents/tab_contents.h
diff --git a/chrome/browser/ui/tab_contents/tab_contents.h b/chrome/browser/ui/tab_contents/tab_contents.h
index 0ad429c041889748801cd99a540083e36ddc35b2..121c380f983abec2e92150a0e1ce37de7c3cd133 100644
--- a/chrome/browser/ui/tab_contents/tab_contents.h
+++ b/chrome/browser/ui/tab_contents/tab_contents.h
@@ -16,18 +16,33 @@ class AutocompleteHistoryManager;
class AutofillManager;
class AutofillExternalDelegate;
class AutomationTabHelper;
+class BasePanelBrowserTest;
class BlockedContentTabHelper;
class BookmarkTabHelper;
+class Browser;
+class BrowserCommandsTabContentsCreator;
+class BrowserLauncherItemControllerContentsCreator;
+class BrowserTabstripTabContentsCreator;
+class ChromeWebContentsHandler;
+class ConstrainedWebDialogDelegateBase;
class ConstrainedWindowTabHelper;
class CoreTabHelper;
+class ExtensionTabUtil;
class ExternalProtocolObserver;
+class ExternalTabContainerWin;
class FaviconTabHelper;
+class FindBackendTestContentsCreator;
class FindTabHelper;
+class GeolocationPermissionContextTests;
class HistoryTabHelper;
class HungPluginTabHelper;
+class InfoBarControllerContentsCreator;
class InfoBarTabHelper;
+class InstantLoader;
class MetroPinTabHelper;
class NavigationMetricsRecorder;
+class OffscreenTabContentsCreator;
+class OldBasePanelBrowserTest;
class OmniboxSearchHint;
class PasswordManager;
class PasswordManagerDelegate;
@@ -38,12 +53,23 @@ class Profile;
class RestoreTabHelper;
class SadTabHelper;
class SearchEngineTabHelper;
+class ShellWindow;
class SnapshotTabHelper;
class TabContentsSSLHelper;
+class TabContentsTestHarness;
class TabSpecificContentSettings;
+class TabStripModel;
+class TabStripModelContentsCreator;
class ThumbnailGenerator;
class TranslateTabHelper;
+class TranslationInfoBarTestContentsCreator;
+class WebDialogGtk;
+class WebDialogWindowControllerTabContentsCreator;
+class WebIntentInlineDispositionBrowserTest;
+class WebIntentPickerCocoa;
class WebIntentPickerController;
+class WebIntentPickerGtk;
+class WebUITestContentsCreator;
class ZoomController;
#if defined(ENABLE_ONE_CLICK_SIGNIN)
@@ -68,12 +94,19 @@ namespace chrome_browser_net {
class LoadTimeStatsTabHelper;
}
+namespace chromeos {
+class SimpleWebViewDialog;
+class WebUILoginView;
+}
+
namespace extensions {
class TabHelper;
+class WebAuthFlow;
class WebNavigationTabObserver;
}
namespace prerender {
+class PrerenderContents;
class PrerenderTabHelper;
}
@@ -103,14 +136,48 @@ class SafeBrowsingTabObserver;
// least to make easy for other WebContents hosts to include and support.
class TabContents : public content::WebContentsObserver {
public:
- // Takes ownership of |contents|, which must be heap-allocated (as it lives
- // in a scoped_ptr) and can not be NULL.
- explicit TabContents(content::WebContents* contents);
- virtual ~TabContents();
+ class Factory {
+ private:
+ // TabContents is going away <http://crbug.com/107201> so don't allow any
+ // more code to construct instances. Explicitly befriend those who currently
+ // do so.
+
+ friend class BasePanelBrowserTest;
+ friend class Browser;
+ friend class BrowserCommandsTabContentsCreator;
+ friend class BrowserLauncherItemControllerContentsCreator;
+ friend class BrowserTabstripTabContentsCreator;
+ friend class chromeos::SimpleWebViewDialog;
+ friend class chromeos::WebUILoginView;
+ friend class ChromeWebContentsHandler;
+ friend class ConstrainedWebDialogDelegateBase;
+ friend class extensions::WebAuthFlow;
+ friend class ExtensionTabUtil;
+ friend class ExternalTabContainerWin;
+ friend class FindBackendTestContentsCreator;
+ friend class GeolocationPermissionContextTests;
+ friend class InfoBarControllerContentsCreator;
+ friend class InstantLoader;
+ friend class OldBasePanelBrowserTest;
+ friend class OffscreenTabContentsCreator;
+ friend class prerender::PrerenderContents;
+ friend class ShellWindow;
+ friend class TabContentsTestHarness;
+ friend class TabStripModel;
+ friend class TabStripModelContentsCreator;
+ friend class TranslationInfoBarTestContentsCreator;
+ friend class WebDialogGtk;
+ friend class WebDialogWindowControllerTabContentsCreator;
+ friend class WebIntentInlineDispositionBrowserTest;
+ friend class WebIntentPickerCocoa;
+ friend class WebIntentPickerGtk;
+ friend class WebUITestContentsCreator;
+
+ static TabContents* CreateTabContents(content::WebContents* contents);
+ static TabContents* CloneTabContents(TabContents* contents);
+ };
- // Create a TabContents with the same state as this one. The returned
- // heap-allocated pointer is owned by the caller.
- TabContents* Clone();
+ virtual ~TabContents();
// Helper to retrieve the existing instance that owns a given WebContents.
// Returns NULL if there is no such existing instance.
@@ -257,6 +324,16 @@ class TabContents : public content::WebContentsObserver {
virtual void UserAgentOverrideSet(const std::string& user_agent) OVERRIDE;
private:
+ friend class TabContentsFactory;
+
+ // Takes ownership of |contents|, which must be heap-allocated (as it lives
+ // in a scoped_ptr) and can not be NULL.
+ explicit TabContents(content::WebContents* contents);
+
+ // Create a TabContents with the same state as this one. The returned
+ // heap-allocated pointer is owned by the caller.
+ TabContents* Clone();
+
// Tab Helpers ---------------------------------------------------------------
// (These provide API for callers and have a getter function listed in the
// "Tab Helpers" section in the member functions area, above.)
« no previous file with comments | « chrome/browser/ui/panels/old_base_panel_browser_test.cc ('k') | chrome/browser/ui/tab_contents/tab_contents.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698