Index: chrome/browser/content_setting_bubble_model.cc |
diff --git a/chrome/browser/content_setting_bubble_model.cc b/chrome/browser/content_setting_bubble_model.cc |
index 3f9cbb7a8369779d52aec82de4c219aa6bab10a1..71889d8febbc0238a046b9137895f1064b1dba1a 100644 |
--- a/chrome/browser/content_setting_bubble_model.cc |
+++ b/chrome/browser/content_setting_bubble_model.cc |
@@ -25,8 +25,9 @@ |
class ContentSettingTitleAndLinkModel : public ContentSettingBubbleModel { |
public: |
- ContentSettingTitleAndLinkModel(TabContents* tab_contents, Profile* profile, |
- ContentSettingsType content_type) |
+ ContentSettingTitleAndLinkModel(TabContents* tab_contents, |
+ Profile* profile, |
+ ContentSettingsType content_type) |
: ContentSettingBubbleModel(tab_contents, profile, content_type) { |
// Notifications do not have a bubble. |
DCHECK_NE(content_type, CONTENT_SETTINGS_TYPE_NOTIFICATIONS); |
@@ -118,52 +119,45 @@ class ContentSettingTitleAndLinkModel : public ContentSettingBubbleModel { |
} |
}; |
-class ContentSettingTitleLinkAndInfoModel |
+class ContentSettingTitleLinkAndCustomModel |
: public ContentSettingTitleAndLinkModel { |
public: |
- ContentSettingTitleLinkAndInfoModel(TabContents* tab_contents, |
- Profile* profile, |
- ContentSettingsType content_type) |
+ ContentSettingTitleLinkAndCustomModel(TabContents* tab_contents, |
+ Profile* profile, |
+ ContentSettingsType content_type) |
: ContentSettingTitleAndLinkModel(tab_contents, profile, content_type) { |
- SetInfoLink(); |
+ SetCustomLink(); |
} |
private: |
- void SetInfoLink() { |
- static const int kInfoIDs[] = { |
+ void SetCustomLink() { |
+ static const int kCustomIDs[] = { |
IDS_BLOCKED_COOKIES_INFO, |
- 0, // Images do not have an info link. |
- 0, // Javascript doesn't have an info link. |
- 0, // Plugins do not have an info link. |
- 0, // Popups do not have an info link. |
- 0, // Geolocation does not have an info link. |
+ 0, // Images do not have a custom link. |
+ 0, // Javascript doesn't have a custom link. |
+ IDS_BLOCKED_PLUGINS_LOAD_ALL, |
+ 0, // Popups do not have a custom link. |
+ 0, // Geolocation custom links are set within that class. |
0, // Notifications do not have a bubble. |
}; |
- COMPILE_ASSERT(arraysize(kInfoIDs) == CONTENT_SETTINGS_NUM_TYPES, |
+ COMPILE_ASSERT(arraysize(kCustomIDs) == CONTENT_SETTINGS_NUM_TYPES, |
Need_a_setting_for_every_content_settings_type); |
- if (kInfoIDs[content_type()]) |
- set_info_link(l10n_util::GetStringUTF8(kInfoIDs[content_type()])); |
+ if (kCustomIDs[content_type()]) |
+ set_custom_link(l10n_util::GetStringUTF8(kCustomIDs[content_type()])); |
} |
- virtual void OnInfoLinkClicked() { |
- DCHECK(content_type() == CONTENT_SETTINGS_TYPE_COOKIES); |
- if (tab_contents()) { |
- NotificationService::current()->Notify( |
- NotificationType::COLLECTED_COOKIES_SHOWN, |
- Source<TabSpecificContentSettings>( |
- tab_contents()->GetTabSpecificContentSettings()), |
- NotificationService::NoDetails()); |
- tab_contents()->delegate()->ShowCollectedCookiesDialog(tab_contents()); |
- } |
- } |
+ virtual void OnCustomLinkClicked() {} |
}; |
-class ContentSettingSingleRadioGroup : public ContentSettingTitleAndLinkModel { |
+class ContentSettingSingleRadioGroup |
+ : public ContentSettingTitleLinkAndCustomModel { |
public: |
- ContentSettingSingleRadioGroup(TabContents* tab_contents, Profile* profile, |
- ContentSettingsType content_type) |
- : ContentSettingTitleAndLinkModel(tab_contents, profile, content_type), |
+ ContentSettingSingleRadioGroup(TabContents* tab_contents, |
+ Profile* profile, |
+ ContentSettingsType content_type) |
+ : ContentSettingTitleLinkAndCustomModel(tab_contents, profile, |
+ content_type), |
block_setting_(CONTENT_SETTING_BLOCK) { |
SetRadioGroup(); |
} |
@@ -286,37 +280,58 @@ class ContentSettingSingleRadioGroup : public ContentSettingTitleAndLinkModel { |
} |
}; |
+class ContentSettingCookiesBubbleModel |
+ : public ContentSettingTitleLinkAndCustomModel { |
+ public: |
+ ContentSettingCookiesBubbleModel(TabContents* tab_contents, |
+ Profile* profile, |
+ ContentSettingsType content_type) |
+ : ContentSettingTitleLinkAndCustomModel(tab_contents, profile, |
+ content_type) { |
+ DCHECK_EQ(CONTENT_SETTINGS_TYPE_COOKIES, content_type); |
+ set_custom_link_enabled(true); |
+ } |
+ |
+ private: |
+ virtual void OnCustomLinkClicked() OVERRIDE { |
+ if (tab_contents()) { |
+ NotificationService::current()->Notify( |
+ NotificationType::COLLECTED_COOKIES_SHOWN, |
+ Source<TabSpecificContentSettings>( |
+ tab_contents()->GetTabSpecificContentSettings()), |
+ NotificationService::NoDetails()); |
+ tab_contents()->delegate()->ShowCollectedCookiesDialog(tab_contents()); |
+ } |
+ } |
+}; |
+ |
class ContentSettingPluginBubbleModel : public ContentSettingSingleRadioGroup { |
public: |
- ContentSettingPluginBubbleModel(TabContents* tab_contents, Profile* profile, |
+ ContentSettingPluginBubbleModel(TabContents* tab_contents, |
+ Profile* profile, |
ContentSettingsType content_type) |
: ContentSettingSingleRadioGroup(tab_contents, profile, content_type) { |
DCHECK_EQ(content_type, CONTENT_SETTINGS_TYPE_PLUGINS); |
- SetLoadPluginsLinkTitle(); |
+ set_custom_link_enabled(tab_contents && tab_contents-> |
+ GetTabSpecificContentSettings()->load_plugins_link_enabled()); |
} |
private: |
- void SetLoadPluginsLinkTitle() { |
- set_load_plugins_link_title( |
- l10n_util::GetStringUTF8(IDS_BLOCKED_PLUGINS_LOAD_ALL)); |
- } |
- |
- virtual void OnLoadPluginsLinkClicked() { |
+ virtual void OnCustomLinkClicked() OVERRIDE { |
UserMetrics::RecordAction(UserMetricsAction("ClickToPlay_LoadAll_Bubble")); |
- if (tab_contents()) { |
- tab_contents()->render_view_host()->LoadBlockedPlugins(); |
- } |
- set_load_plugins_link_enabled(false); |
- TabSpecificContentSettings* settings = |
- tab_contents()->GetTabSpecificContentSettings(); |
- settings->set_load_plugins_link_enabled(false); |
+ DCHECK(tab_contents()); |
+ tab_contents()->render_view_host()->LoadBlockedPlugins(); |
+ set_custom_link_enabled(false); |
+ tab_contents()->GetTabSpecificContentSettings()-> |
+ set_load_plugins_link_enabled(false); |
} |
}; |
class ContentSettingPopupBubbleModel : public ContentSettingSingleRadioGroup { |
public: |
- ContentSettingPopupBubbleModel(TabContents* tab_contents, Profile* profile, |
- ContentSettingsType content_type) |
+ ContentSettingPopupBubbleModel(TabContents* tab_contents, |
+ Profile* profile, |
+ ContentSettingsType content_type) |
: ContentSettingSingleRadioGroup(tab_contents, profile, content_type) { |
SetPopups(); |
} |
@@ -361,7 +376,7 @@ class ContentSettingDomainListBubbleModel |
: ContentSettingTitleAndLinkModel(tab_contents, profile, content_type) { |
DCHECK_EQ(CONTENT_SETTINGS_TYPE_GEOLOCATION, content_type) << |
"SetDomains currently only supports geolocation content type"; |
- SetDomainsAndClearLink(); |
+ SetDomainsAndCustomLink(); |
} |
private: |
@@ -373,7 +388,7 @@ class ContentSettingDomainListBubbleModel |
add_domain_list(domain_list); |
} |
} |
- void SetDomainsAndClearLink() { |
+ void SetDomainsAndCustomLink() { |
TabSpecificContentSettings* content_settings = |
tab_contents()->GetTabSpecificContentSettings(); |
const GeolocationSettingsState& settings = |
@@ -390,21 +405,16 @@ class ContentSettingDomainListBubbleModel |
IDS_GEOLOCATION_BUBBLE_SECTION_DENIED); |
if (tab_state_flags & GeolocationSettingsState::TABSTATE_HAS_EXCEPTION) { |
- set_clear_link( |
- l10n_util::GetStringUTF8(IDS_GEOLOCATION_BUBBLE_CLEAR_LINK)); |
+ set_custom_link(l10n_util::GetStringUTF8( |
+ IDS_GEOLOCATION_BUBBLE_CLEAR_LINK)); |
+ set_custom_link_enabled(true); |
} else if (tab_state_flags & |
GeolocationSettingsState::TABSTATE_HAS_CHANGED) { |
- // It is a slight abuse of the domain list field to use it for the reload |
- // hint, but works fine for now. TODO(joth): If we need to style it |
- // differently, consider adding an explicit field, or generalize the |
- // domain list to be a flat list of style formatted lines. |
- DomainList reload_section; |
- reload_section.title = l10n_util::GetStringUTF8( |
- IDS_GEOLOCATION_BUBBLE_REQUIRE_RELOAD_TO_CLEAR); |
- add_domain_list(reload_section); |
+ set_custom_link(l10n_util::GetStringUTF8( |
+ IDS_GEOLOCATION_BUBBLE_REQUIRE_RELOAD_TO_CLEAR)); |
} |
} |
- virtual void OnClearLinkClicked() { |
+ virtual void OnCustomLinkClicked() OVERRIDE { |
if (!tab_contents()) |
return; |
// Reset this embedder's entry to default for each of the requesting |
@@ -431,8 +441,8 @@ ContentSettingBubbleModel* |
Profile* profile, |
ContentSettingsType content_type) { |
if (content_type == CONTENT_SETTINGS_TYPE_COOKIES) { |
- return new ContentSettingTitleLinkAndInfoModel(tab_contents, profile, |
- content_type); |
+ return new ContentSettingCookiesBubbleModel(tab_contents, profile, |
+ content_type); |
} |
if (content_type == CONTENT_SETTINGS_TYPE_POPUPS) { |
return new ContentSettingPopupBubbleModel(tab_contents, profile, |
@@ -451,17 +461,12 @@ ContentSettingBubbleModel* |
} |
ContentSettingBubbleModel::ContentSettingBubbleModel( |
- TabContents* tab_contents, Profile* profile, |
+ TabContents* tab_contents, |
+ Profile* profile, |
ContentSettingsType content_type) |
- : tab_contents_(tab_contents), profile_(profile), |
+ : tab_contents_(tab_contents), |
+ profile_(profile), |
content_type_(content_type) { |
- if (tab_contents) { |
- TabSpecificContentSettings* settings = |
- tab_contents->GetTabSpecificContentSettings(); |
- set_load_plugins_link_enabled(settings->load_plugins_link_enabled()); |
- } else { |
- set_load_plugins_link_enabled(true); |
- } |
registrar_.Add(this, NotificationType::TAB_CONTENTS_DESTROYED, |
Source<TabContents>(tab_contents)); |
} |
@@ -478,7 +483,7 @@ ContentSettingBubbleModel::DomainList::DomainList() {} |
ContentSettingBubbleModel::DomainList::~DomainList() {} |
ContentSettingBubbleModel::BubbleContent::BubbleContent() |
- : load_plugins_link_enabled(false) { |
+ : custom_link_enabled(false) { |
} |
ContentSettingBubbleModel::BubbleContent::~BubbleContent() {} |