Switch WebContentsUserData to be a friended base.
BUG=107201
TEST=no visible change
Review URL: https://chromiumcodereview.appspot.com/10933105
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@156988 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/extensions/tab_helper.h b/chrome/browser/extensions/tab_helper.h
index cad235e..05a2665 100644
--- a/chrome/browser/extensions/tab_helper.h
+++ b/chrome/browser/extensions/tab_helper.h
@@ -51,9 +51,7 @@
UPDATE_SHORTCUT // Update icon for app shortcut.
};
- explicit TabHelper(content::WebContents* web_contents);
virtual ~TabHelper();
- static int kUserDataKey;
void CreateApplicationShortcuts();
bool CanCreateApplicationShortcuts() const;
@@ -115,6 +113,10 @@
void SetAppIcon(const SkBitmap& app_icon);
private:
+ explicit TabHelper(content::WebContents* web_contents);
+ static int kUserDataKey;
+ friend class WebContentsUserData<TabHelper>;
+
// content::WebContentsObserver overrides.
virtual void RenderViewCreated(
content::RenderViewHost* render_view_host) OVERRIDE;
diff --git a/chrome/browser/sessions/session_tab_helper.h b/chrome/browser/sessions/session_tab_helper.h
index dad21d2d..2e371fd 100644
--- a/chrome/browser/sessions/session_tab_helper.h
+++ b/chrome/browser/sessions/session_tab_helper.h
@@ -15,9 +15,7 @@
class SessionTabHelper : public content::WebContentsObserver,
public WebContentsUserData<SessionTabHelper> {
public:
- explicit SessionTabHelper(content::WebContents* contents);
virtual ~SessionTabHelper();
- static int kUserDataKey;
// Returns the identifier used by session restore for this tab.
const SessionID& session_id() const { return session_id_; }
@@ -32,6 +30,10 @@
virtual void UserAgentOverrideSet(const std::string& user_agent) OVERRIDE;
private:
+ explicit SessionTabHelper(content::WebContents* contents);
+ static int kUserDataKey;
+ friend class WebContentsUserData<SessionTabHelper>;
+
// Unique identifier of the tab for session restore. This id is only unique
// within the current session, and is not guaranteed to be unique across
// sessions.
diff --git a/chrome/browser/tab_contents/web_contents_user_data.h b/chrome/browser/tab_contents/web_contents_user_data.h
index 77d57f2..8126c38 100644
--- a/chrome/browser/tab_contents/web_contents_user_data.h
+++ b/chrome/browser/tab_contents/web_contents_user_data.h
@@ -14,10 +14,13 @@
// --- in foo_tab_helper.h ---
// class FooTabHelper : public WebContentsUserData<FooTabHelper> {
// public:
-// explicit FooTabHelper(content::WebContents* contents);
// virtual ~FooTabHelper();
+// // ... more public stuff here ...
+// private:
+// explicit FooTabHelper(content::WebContents* contents);
// static int kUserDataKey;
-// // ... more stuff here ...
+// friend class WebContentsUserData<FooTabHelper>;
+// // ... more private stuff here ...
// }
// --- in foo_tab_helper.cc ---
// int FooTabHelper::kUserDataKey;
diff --git a/chrome/browser/tab_contents/web_contents_user_data_unittest.cc b/chrome/browser/tab_contents/web_contents_user_data_unittest.cc
index f8ff6c5be..bbba1cd 100644
--- a/chrome/browser/tab_contents/web_contents_user_data_unittest.cc
+++ b/chrome/browser/tab_contents/web_contents_user_data_unittest.cc
@@ -16,17 +16,21 @@
class WebContentsAttachedClass1
: public WebContentsUserData<WebContentsAttachedClass1> {
public:
- explicit WebContentsAttachedClass1(content::WebContents* contents) {}
virtual ~WebContentsAttachedClass1() {}
+ private:
+ explicit WebContentsAttachedClass1(content::WebContents* contents) {}
static int kUserDataKey;
+ friend class WebContentsUserData<WebContentsAttachedClass1>;
};
class WebContentsAttachedClass2
: public WebContentsUserData<WebContentsAttachedClass2> {
public:
- explicit WebContentsAttachedClass2(content::WebContents* contents) {}
virtual ~WebContentsAttachedClass2() {}
+ private:
+ explicit WebContentsAttachedClass2(content::WebContents* contents) {}
static int kUserDataKey;
+ friend class WebContentsUserData<WebContentsAttachedClass2>;
};
int WebContentsAttachedClass1::kUserDataKey;
diff --git a/chrome/browser/ui/metro_pin_tab_helper.h b/chrome/browser/ui/metro_pin_tab_helper.h
index c439414..c04502a 100644
--- a/chrome/browser/ui/metro_pin_tab_helper.h
+++ b/chrome/browser/ui/metro_pin_tab_helper.h
@@ -12,9 +12,7 @@
class MetroPinTabHelper : public content::WebContentsObserver,
public WebContentsUserData<MetroPinTabHelper> {
public:
- explicit MetroPinTabHelper(content::WebContents* tab_contents);
virtual ~MetroPinTabHelper();
- static int kUserDataKey;
bool is_pinned() const { return is_pinned_; }
@@ -26,6 +24,10 @@
const content::FrameNavigateParams& params) OVERRIDE;
private:
+ explicit MetroPinTabHelper(content::WebContents* tab_contents);
+ static int kUserDataKey;
+ friend class WebContentsUserData<MetroPinTabHelper>;
+
// Queries the metro driver about the pinned state of the current URL.
void UpdatePinnedStateForCurrentURL();