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 #include "chrome/browser/content_setting_bubble_model.h" | 5 #include "chrome/browser/content_setting_bubble_model.h" |
6 | 6 |
7 #include "base/auto_reset.h" | 7 #include "base/auto_reset.h" |
8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
9 #include "chrome/browser/browser_thread.h" | 9 #include "chrome/browser/browser_thread.h" |
10 #include "chrome/browser/content_settings/host_content_settings_map.h" | 10 #include "chrome/browser/content_settings/host_content_settings_map.h" |
(...skipping 12 matching lines...) Expand all Loading... |
23 } | 23 } |
24 | 24 |
25 void CheckGeolocationBubble(size_t expected_domains, | 25 void CheckGeolocationBubble(size_t expected_domains, |
26 bool expect_clear_link, | 26 bool expect_clear_link, |
27 bool expect_reload_hint) { | 27 bool expect_reload_hint) { |
28 scoped_ptr<ContentSettingBubbleModel> content_setting_bubble_model( | 28 scoped_ptr<ContentSettingBubbleModel> content_setting_bubble_model( |
29 ContentSettingBubbleModel::CreateContentSettingBubbleModel( | 29 ContentSettingBubbleModel::CreateContentSettingBubbleModel( |
30 contents(), profile_.get(), CONTENT_SETTINGS_TYPE_GEOLOCATION)); | 30 contents(), profile_.get(), CONTENT_SETTINGS_TYPE_GEOLOCATION)); |
31 const ContentSettingBubbleModel::BubbleContent& bubble_content = | 31 const ContentSettingBubbleModel::BubbleContent& bubble_content = |
32 content_setting_bubble_model->bubble_content(); | 32 content_setting_bubble_model->bubble_content(); |
33 EXPECT_EQ(0U, bubble_content.radio_group.radio_items.size()); | 33 EXPECT_TRUE(bubble_content.title.empty()); |
34 EXPECT_EQ(0U, bubble_content.popup_items.size()); | 34 EXPECT_TRUE(bubble_content.radio_group.radio_items.empty()); |
35 // The reload hint is currently implemented as a tacked on domain title, so | 35 EXPECT_TRUE(bubble_content.popup_items.empty()); |
36 // account for this. | |
37 if (expect_reload_hint) | |
38 ++expected_domains; | |
39 EXPECT_EQ(expected_domains, bubble_content.domain_lists.size()); | 36 EXPECT_EQ(expected_domains, bubble_content.domain_lists.size()); |
40 if (expect_clear_link) | 37 EXPECT_NE(expect_clear_link || expect_reload_hint, |
41 EXPECT_NE(std::string(), bubble_content.clear_link); | 38 bubble_content.custom_link.empty()); |
42 else | 39 EXPECT_EQ(expect_clear_link, bubble_content.custom_link_enabled); |
43 EXPECT_EQ(std::string(), bubble_content.clear_link); | 40 EXPECT_FALSE(bubble_content.manage_link.empty()); |
44 EXPECT_NE(std::string(), bubble_content.manage_link); | |
45 EXPECT_EQ(std::string(), bubble_content.info_link); | |
46 EXPECT_EQ(std::string(), bubble_content.title); | |
47 EXPECT_EQ(std::string(), bubble_content.load_plugins_link_title); | |
48 } | 41 } |
49 | 42 |
50 BrowserThread ui_thread_; | 43 BrowserThread ui_thread_; |
51 }; | 44 }; |
52 | 45 |
53 TEST_F(ContentSettingBubbleModelTest, ImageRadios) { | 46 TEST_F(ContentSettingBubbleModelTest, ImageRadios) { |
54 TabSpecificContentSettings* content_settings = | 47 TabSpecificContentSettings* content_settings = |
55 contents()->GetTabSpecificContentSettings(); | 48 contents()->GetTabSpecificContentSettings(); |
56 content_settings->OnContentBlocked(CONTENT_SETTINGS_TYPE_IMAGES, | 49 content_settings->OnContentBlocked(CONTENT_SETTINGS_TYPE_IMAGES, |
57 std::string()); | 50 std::string()); |
58 | 51 |
59 scoped_ptr<ContentSettingBubbleModel> content_setting_bubble_model( | 52 scoped_ptr<ContentSettingBubbleModel> content_setting_bubble_model( |
60 ContentSettingBubbleModel::CreateContentSettingBubbleModel( | 53 ContentSettingBubbleModel::CreateContentSettingBubbleModel( |
61 contents(), profile_.get(), CONTENT_SETTINGS_TYPE_IMAGES)); | 54 contents(), profile_.get(), CONTENT_SETTINGS_TYPE_IMAGES)); |
62 const ContentSettingBubbleModel::BubbleContent& bubble_content = | 55 const ContentSettingBubbleModel::BubbleContent& bubble_content = |
63 content_setting_bubble_model->bubble_content(); | 56 content_setting_bubble_model->bubble_content(); |
| 57 EXPECT_FALSE(bubble_content.title.empty()); |
64 EXPECT_EQ(2U, bubble_content.radio_group.radio_items.size()); | 58 EXPECT_EQ(2U, bubble_content.radio_group.radio_items.size()); |
65 EXPECT_EQ(0, bubble_content.radio_group.default_item); | 59 EXPECT_EQ(0, bubble_content.radio_group.default_item); |
66 EXPECT_NE(std::string(), bubble_content.manage_link); | 60 EXPECT_TRUE(bubble_content.custom_link.empty()); |
67 EXPECT_EQ(std::string(), bubble_content.info_link); | 61 EXPECT_FALSE(bubble_content.manage_link.empty()); |
68 EXPECT_NE(std::string(), bubble_content.title); | |
69 EXPECT_EQ(std::string(), bubble_content.load_plugins_link_title); | |
70 } | 62 } |
71 | 63 |
72 TEST_F(ContentSettingBubbleModelTest, Cookies) { | 64 TEST_F(ContentSettingBubbleModelTest, Cookies) { |
73 TabSpecificContentSettings* content_settings = | 65 TabSpecificContentSettings* content_settings = |
74 contents()->GetTabSpecificContentSettings(); | 66 contents()->GetTabSpecificContentSettings(); |
75 content_settings->OnContentBlocked(CONTENT_SETTINGS_TYPE_COOKIES, | 67 content_settings->OnContentBlocked(CONTENT_SETTINGS_TYPE_COOKIES, |
76 std::string()); | 68 std::string()); |
77 | 69 |
78 scoped_ptr<ContentSettingBubbleModel> content_setting_bubble_model( | 70 scoped_ptr<ContentSettingBubbleModel> content_setting_bubble_model( |
79 ContentSettingBubbleModel::CreateContentSettingBubbleModel( | 71 ContentSettingBubbleModel::CreateContentSettingBubbleModel( |
80 contents(), profile_.get(), CONTENT_SETTINGS_TYPE_COOKIES)); | 72 contents(), profile_.get(), CONTENT_SETTINGS_TYPE_COOKIES)); |
81 const ContentSettingBubbleModel::BubbleContent& bubble_content = | 73 const ContentSettingBubbleModel::BubbleContent& bubble_content = |
82 content_setting_bubble_model->bubble_content(); | 74 content_setting_bubble_model->bubble_content(); |
83 EXPECT_EQ(0U, bubble_content.radio_group.radio_items.size()); | 75 EXPECT_FALSE(bubble_content.title.empty()); |
84 EXPECT_NE(std::string(), bubble_content.manage_link); | 76 EXPECT_TRUE(bubble_content.radio_group.radio_items.empty()); |
85 EXPECT_NE(std::string(), bubble_content.info_link); | 77 EXPECT_FALSE(bubble_content.custom_link.empty()); |
86 EXPECT_NE(std::string(), bubble_content.title); | 78 EXPECT_TRUE(bubble_content.custom_link_enabled); |
87 EXPECT_EQ(std::string(), bubble_content.load_plugins_link_title); | 79 EXPECT_FALSE(bubble_content.manage_link.empty()); |
88 } | 80 } |
89 | 81 |
90 TEST_F(ContentSettingBubbleModelTest, Plugins) { | 82 TEST_F(ContentSettingBubbleModelTest, Plugins) { |
91 TabSpecificContentSettings* content_settings = | 83 TabSpecificContentSettings* content_settings = |
92 contents()->GetTabSpecificContentSettings(); | 84 contents()->GetTabSpecificContentSettings(); |
93 content_settings->OnContentBlocked(CONTENT_SETTINGS_TYPE_PLUGINS, | 85 content_settings->OnContentBlocked(CONTENT_SETTINGS_TYPE_PLUGINS, |
94 std::string()); | 86 std::string()); |
95 | 87 |
96 scoped_ptr<ContentSettingBubbleModel> content_setting_bubble_model( | 88 scoped_ptr<ContentSettingBubbleModel> content_setting_bubble_model( |
97 ContentSettingBubbleModel::CreateContentSettingBubbleModel( | 89 ContentSettingBubbleModel::CreateContentSettingBubbleModel( |
98 contents(), profile_.get(), CONTENT_SETTINGS_TYPE_PLUGINS)); | 90 contents(), profile_.get(), CONTENT_SETTINGS_TYPE_PLUGINS)); |
99 const ContentSettingBubbleModel::BubbleContent& bubble_content = | 91 const ContentSettingBubbleModel::BubbleContent& bubble_content = |
100 content_setting_bubble_model->bubble_content(); | 92 content_setting_bubble_model->bubble_content(); |
| 93 EXPECT_FALSE(bubble_content.title.empty()); |
101 EXPECT_EQ(2U, bubble_content.radio_group.radio_items.size()); | 94 EXPECT_EQ(2U, bubble_content.radio_group.radio_items.size()); |
102 EXPECT_NE(std::string(), bubble_content.manage_link); | 95 EXPECT_FALSE(bubble_content.custom_link.empty()); |
103 EXPECT_EQ(std::string(), bubble_content.info_link); | 96 EXPECT_TRUE(bubble_content.custom_link_enabled); |
104 EXPECT_NE(std::string(), bubble_content.title); | 97 EXPECT_FALSE(bubble_content.manage_link.empty()); |
105 EXPECT_NE(std::string(), bubble_content.load_plugins_link_title); | |
106 } | 98 } |
107 | 99 |
108 TEST_F(ContentSettingBubbleModelTest, MultiplePlugins) { | 100 TEST_F(ContentSettingBubbleModelTest, MultiplePlugins) { |
109 CommandLine* cmd = CommandLine::ForCurrentProcess(); | 101 CommandLine* cmd = CommandLine::ForCurrentProcess(); |
110 AutoReset<CommandLine> auto_reset(cmd, *cmd); | 102 AutoReset<CommandLine> auto_reset(cmd, *cmd); |
111 cmd->AppendSwitch(switches::kEnableResourceContentSettings); | 103 cmd->AppendSwitch(switches::kEnableResourceContentSettings); |
112 cmd->AppendSwitch(switches::kEnableClickToPlay); | 104 cmd->AppendSwitch(switches::kEnableClickToPlay); |
113 | 105 |
114 HostContentSettingsMap* map = profile_->GetHostContentSettingsMap(); | 106 HostContentSettingsMap* map = profile_->GetHostContentSettingsMap(); |
115 std::string fooPlugin = "foo"; | 107 std::string fooPlugin = "foo"; |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
186 CheckGeolocationBubble(1, false, false); | 178 CheckGeolocationBubble(1, false, false); |
187 | 179 |
188 // Second frame denied, but not stored in the content map: requires reload. | 180 // Second frame denied, but not stored in the content map: requires reload. |
189 content_settings->OnGeolocationPermissionSet(frame2_url, false); | 181 content_settings->OnGeolocationPermissionSet(frame2_url, false); |
190 CheckGeolocationBubble(2, false, true); | 182 CheckGeolocationBubble(2, false, true); |
191 | 183 |
192 // Change the default to block: offer a clear link for the persisted frame 1. | 184 // Change the default to block: offer a clear link for the persisted frame 1. |
193 setting_map->SetDefaultContentSetting(CONTENT_SETTING_BLOCK); | 185 setting_map->SetDefaultContentSetting(CONTENT_SETTING_BLOCK); |
194 CheckGeolocationBubble(2, true, false); | 186 CheckGeolocationBubble(2, true, false); |
195 } | 187 } |
OLD | NEW |