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

Side by Side Diff: chrome/browser/plugins/chrome_plugin_service_filter_unittest.cc

Issue 2378573005: [HBD] Blanket BLOCK on all non-HTTP(s) and non-FILE URLs for Flash. (Closed)
Patch Set: fix dat merge Created 4 years, 2 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/plugins/chrome_plugin_service_filter.h" 5 #include "chrome/browser/plugins/chrome_plugin_service_filter.h"
6 6
7 #include <map> 7 #include <map>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 19 matching lines...) Expand all
30 #include "components/content_settings/core/browser/host_content_settings_map.h" 30 #include "components/content_settings/core/browser/host_content_settings_map.h"
31 #include "components/content_settings/core/common/pref_names.h" 31 #include "components/content_settings/core/common/pref_names.h"
32 #include "components/syncable_prefs/testing_pref_service_syncable.h" 32 #include "components/syncable_prefs/testing_pref_service_syncable.h"
33 #include "components/variations/variations_associated_data.h" 33 #include "components/variations/variations_associated_data.h"
34 #include "content/public/browser/browser_thread.h" 34 #include "content/public/browser/browser_thread.h"
35 #include "content/public/browser/plugin_service.h" 35 #include "content/public/browser/plugin_service.h"
36 #include "content/public/browser/render_process_host.h" 36 #include "content/public/browser/render_process_host.h"
37 #include "content/public/browser/web_contents.h" 37 #include "content/public/browser/web_contents.h"
38 #include "content/public/common/content_constants.h" 38 #include "content/public/common/content_constants.h"
39 #include "content/public/test/test_utils.h" 39 #include "content/public/test/test_utils.h"
40 #include "url/origin.h"
40 41
41 namespace { 42 namespace {
42 43
43 const char kTrialName[] = "PreferHtmlOverPlugins"; 44 const char kTrialName[] = "PreferHtmlOverPlugins";
44 const char kGroupName[] = "Group1"; 45 const char kGroupName[] = "Group1";
45 46
46 } // namespace 47 } // namespace
47 48
48 class ChromePluginServiceFilterTest : public ChromeRenderViewHostTestHarness { 49 class ChromePluginServiceFilterTest : public ChromeRenderViewHostTestHarness {
49 public: 50 public:
50 ChromePluginServiceFilterTest() 51 ChromePluginServiceFilterTest()
51 : ChromeRenderViewHostTestHarness(), 52 : ChromeRenderViewHostTestHarness(),
52 filter_(nullptr), 53 filter_(nullptr),
53 flash_plugin_path_(FILE_PATH_LITERAL("/path/to/flash")) {} 54 flash_plugin_path_(FILE_PATH_LITERAL("/path/to/flash")) {}
54 55
55 bool IsPluginAvailable(const GURL& plugin_content_url, 56 bool IsPluginAvailable(const GURL& plugin_content_url,
56 const GURL& main_url, 57 const url::Origin& main_frame_origin,
57 const void* resource_context, 58 const void* resource_context,
58 const content::WebPluginInfo& plugin_info) { 59 const content::WebPluginInfo& plugin_info) {
59 bool is_available = false; 60 bool is_available = false;
60 61
61 // ChromePluginServiceFilter::IsPluginAvailable always runs on the IO 62 // ChromePluginServiceFilter::IsPluginAvailable always runs on the IO
62 // thread. Use a RunLoop to ensure this method blocks until it posts back. 63 // thread. Use a RunLoop to ensure this method blocks until it posts back.
63 base::RunLoop run_loop; 64 base::RunLoop run_loop;
64 content::BrowserThread::PostTaskAndReply( 65 content::BrowserThread::PostTaskAndReply(
65 content::BrowserThread::IO, FROM_HERE, 66 content::BrowserThread::IO, FROM_HERE,
66 base::Bind(&ChromePluginServiceFilterTest::IsPluginAvailableOnIOThread, 67 base::Bind(&ChromePluginServiceFilterTest::IsPluginAvailableOnIOThread,
67 base::Unretained(this), plugin_content_url, main_url, 68 base::Unretained(this), plugin_content_url,
68 resource_context, plugin_info, &is_available), 69 main_frame_origin, resource_context, plugin_info,
70 &is_available),
69 run_loop.QuitClosure()); 71 run_loop.QuitClosure());
70 run_loop.Run(); 72 run_loop.Run();
71 73
72 return is_available; 74 return is_available;
73 } 75 }
74 76
75 protected: 77 protected:
76 void SetUp() override { 78 void SetUp() override {
77 ChromeRenderViewHostTestHarness::SetUp(); 79 ChromeRenderViewHostTestHarness::SetUp();
78 SiteEngagementScore::SetParamValuesForTesting(); 80 SiteEngagementScore::SetParamValuesForTesting();
79 // Ensure that the testing profile is registered for creating a PluginPrefs. 81 // Ensure that the testing profile is registered for creating a PluginPrefs.
80 PluginPrefs::GetForTestingProfile(profile()); 82 PluginPrefs::GetForTestingProfile(profile());
81 PluginFinder::GetInstance(); 83 PluginFinder::GetInstance();
82 84
83 filter_ = ChromePluginServiceFilter::GetInstance(); 85 filter_ = ChromePluginServiceFilter::GetInstance();
84 filter_->RegisterResourceContext(profile(), 86 filter_->RegisterResourceContext(profile(),
85 profile()->GetResourceContext()); 87 profile()->GetResourceContext());
86 } 88 }
87 89
88 void IsPluginAvailableOnIOThread(const GURL& plugin_content_url, 90 void IsPluginAvailableOnIOThread(const GURL& plugin_content_url,
89 const GURL& main_url, 91 const url::Origin& main_frame_origin,
90 const void* resource_context, 92 const void* resource_context,
91 content::WebPluginInfo plugin_info, 93 content::WebPluginInfo plugin_info,
92 bool* is_available) { 94 bool* is_available) {
93 *is_available = filter_->IsPluginAvailable( 95 *is_available = filter_->IsPluginAvailable(
94 web_contents()->GetRenderProcessHost()->GetID(), 96 web_contents()->GetRenderProcessHost()->GetID(),
95 web_contents()->GetMainFrame()->GetRoutingID(), resource_context, 97 web_contents()->GetMainFrame()->GetRoutingID(), resource_context,
96 plugin_content_url, main_url, &plugin_info); 98 plugin_content_url, main_frame_origin, &plugin_info);
97 } 99 }
98 100
99 ChromePluginServiceFilter* filter_; 101 ChromePluginServiceFilter* filter_;
100 base::FilePath flash_plugin_path_; 102 base::FilePath flash_plugin_path_;
101 }; 103 };
102 104
103 TEST_F(ChromePluginServiceFilterTest, FlashAvailableByDefault) { 105 TEST_F(ChromePluginServiceFilterTest, FlashAvailableByDefault) {
104 content::WebPluginInfo flash_plugin( 106 content::WebPluginInfo flash_plugin(
105 base::ASCIIToUTF16(content::kFlashPluginName), flash_plugin_path_, 107 base::ASCIIToUTF16(content::kFlashPluginName), flash_plugin_path_,
106 base::ASCIIToUTF16("1"), base::ASCIIToUTF16("The Flash plugin.")); 108 base::ASCIIToUTF16("1"), base::ASCIIToUTF16("The Flash plugin."));
107 EXPECT_TRUE(IsPluginAvailable(GURL(), GURL(), profile()->GetResourceContext(), 109 EXPECT_TRUE(IsPluginAvailable(GURL(), url::Origin(),
108 flash_plugin)); 110 profile()->GetResourceContext(), flash_plugin));
109 } 111 }
110 112
111 TEST_F(ChromePluginServiceFilterTest, PreferHtmlOverPluginsDefault) { 113 TEST_F(ChromePluginServiceFilterTest, PreferHtmlOverPluginsDefault) {
112 content::WebPluginInfo flash_plugin( 114 content::WebPluginInfo flash_plugin(
113 base::ASCIIToUTF16(content::kFlashPluginName), flash_plugin_path_, 115 base::ASCIIToUTF16(content::kFlashPluginName), flash_plugin_path_,
114 base::ASCIIToUTF16("1"), base::ASCIIToUTF16("The Flash plugin.")); 116 base::ASCIIToUTF16("1"), base::ASCIIToUTF16("The Flash plugin."));
115 base::HistogramTester histograms; 117 base::HistogramTester histograms;
116 118
117 // Activate PreferHtmlOverPlugins. 119 // Activate PreferHtmlOverPlugins.
118 base::test::ScopedFeatureList feature_list; 120 base::test::ScopedFeatureList feature_list;
119 feature_list.InitAndEnableFeature(features::kPreferHtmlOverPlugins); 121 feature_list.InitAndEnableFeature(features::kPreferHtmlOverPlugins);
120 122
121 // The default content setting should block Flash, as there should be 0 123 // The default content setting should block Flash, as there should be 0
122 // engagement. 124 // engagement.
123 GURL url("http://www.google.com"); 125 GURL url("http://www.google.com");
124 EXPECT_FALSE(IsPluginAvailable(url, url, profile()->GetResourceContext(), 126 url::Origin main_frame_origin(url);
125 flash_plugin)); 127 EXPECT_FALSE(IsPluginAvailable(
128 url, main_frame_origin, profile()->GetResourceContext(), flash_plugin));
126 129
127 histograms.ExpectUniqueSample( 130 histograms.ExpectUniqueSample(
128 ChromePluginServiceFilter::kEngagementNoSettingHistogram, 0, 1); 131 ChromePluginServiceFilter::kEngagementNoSettingHistogram, 0, 1);
129 132
130 // Block plugins. 133 // Block plugins.
131 HostContentSettingsMap* map = 134 HostContentSettingsMap* map =
132 HostContentSettingsMapFactory::GetForProfile(profile()); 135 HostContentSettingsMapFactory::GetForProfile(profile());
133 map->SetDefaultContentSetting(CONTENT_SETTINGS_TYPE_PLUGINS, 136 map->SetDefaultContentSetting(CONTENT_SETTINGS_TYPE_PLUGINS,
134 CONTENT_SETTING_BLOCK); 137 CONTENT_SETTING_BLOCK);
135 138
136 EXPECT_FALSE(IsPluginAvailable(url, url, profile()->GetResourceContext(), 139 EXPECT_FALSE(IsPluginAvailable(
137 flash_plugin)); 140 url, main_frame_origin, profile()->GetResourceContext(), flash_plugin));
138 141
139 histograms.ExpectUniqueSample( 142 histograms.ExpectUniqueSample(
140 ChromePluginServiceFilter::kEngagementNoSettingHistogram, 0, 1); 143 ChromePluginServiceFilter::kEngagementNoSettingHistogram, 0, 1);
141 histograms.ExpectUniqueSample( 144 histograms.ExpectUniqueSample(
142 ChromePluginServiceFilter::kEngagementSettingBlockedHistogram, 0, 1); 145 ChromePluginServiceFilter::kEngagementSettingBlockedHistogram, 0, 1);
143 146
144 // Allow plugins. 147 // Allow plugins.
145 map->SetDefaultContentSetting(CONTENT_SETTINGS_TYPE_PLUGINS, 148 map->SetDefaultContentSetting(CONTENT_SETTINGS_TYPE_PLUGINS,
146 CONTENT_SETTING_ALLOW); 149 CONTENT_SETTING_ALLOW);
147 150
148 EXPECT_TRUE(IsPluginAvailable(url, url, profile()->GetResourceContext(), 151 EXPECT_TRUE(IsPluginAvailable(url, main_frame_origin,
149 flash_plugin)); 152 profile()->GetResourceContext(), flash_plugin));
150 153
151 histograms.ExpectUniqueSample( 154 histograms.ExpectUniqueSample(
152 ChromePluginServiceFilter::kEngagementNoSettingHistogram, 0, 1); 155 ChromePluginServiceFilter::kEngagementNoSettingHistogram, 0, 1);
153 histograms.ExpectUniqueSample( 156 histograms.ExpectUniqueSample(
154 ChromePluginServiceFilter::kEngagementSettingAllowedHistogram, 0, 1); 157 ChromePluginServiceFilter::kEngagementSettingAllowedHistogram, 0, 1);
155 histograms.ExpectUniqueSample( 158 histograms.ExpectUniqueSample(
156 ChromePluginServiceFilter::kEngagementSettingBlockedHistogram, 0, 1); 159 ChromePluginServiceFilter::kEngagementSettingBlockedHistogram, 0, 1);
157 160
158 // Detect important content should block on 0 engagement. 161 // Detect important content should block on 0 engagement.
159 map->SetDefaultContentSetting(CONTENT_SETTINGS_TYPE_PLUGINS, 162 map->SetDefaultContentSetting(CONTENT_SETTINGS_TYPE_PLUGINS,
160 CONTENT_SETTING_DETECT_IMPORTANT_CONTENT); 163 CONTENT_SETTING_DETECT_IMPORTANT_CONTENT);
161 164
162 EXPECT_FALSE(IsPluginAvailable(url, url, profile()->GetResourceContext(), 165 EXPECT_FALSE(IsPluginAvailable(
163 flash_plugin)); 166 url, main_frame_origin, profile()->GetResourceContext(), flash_plugin));
164 167
165 histograms.ExpectUniqueSample( 168 histograms.ExpectUniqueSample(
166 ChromePluginServiceFilter::kEngagementNoSettingHistogram, 0, 2); 169 ChromePluginServiceFilter::kEngagementNoSettingHistogram, 0, 2);
167 histograms.ExpectUniqueSample( 170 histograms.ExpectUniqueSample(
168 ChromePluginServiceFilter::kEngagementSettingAllowedHistogram, 0, 1); 171 ChromePluginServiceFilter::kEngagementSettingAllowedHistogram, 0, 1);
169 histograms.ExpectUniqueSample( 172 histograms.ExpectUniqueSample(
170 ChromePluginServiceFilter::kEngagementSettingBlockedHistogram, 0, 1); 173 ChromePluginServiceFilter::kEngagementSettingBlockedHistogram, 0, 1);
171 } 174 }
172 175
173 TEST_F(ChromePluginServiceFilterTest, 176 TEST_F(ChromePluginServiceFilterTest,
174 PreferHtmlOverPluginsAllowOrBlockOverrides) { 177 PreferHtmlOverPluginsAllowOrBlockOverrides) {
175 content::WebPluginInfo flash_plugin( 178 content::WebPluginInfo flash_plugin(
176 base::ASCIIToUTF16(content::kFlashPluginName), flash_plugin_path_, 179 base::ASCIIToUTF16(content::kFlashPluginName), flash_plugin_path_,
177 base::ASCIIToUTF16("1"), base::ASCIIToUTF16("The Flash plugin.")); 180 base::ASCIIToUTF16("1"), base::ASCIIToUTF16("The Flash plugin."));
178 base::HistogramTester histograms; 181 base::HistogramTester histograms;
179 182
180 // Activate PreferHtmlOverPlugins. 183 // Activate PreferHtmlOverPlugins.
181 base::test::ScopedFeatureList feature_list; 184 base::test::ScopedFeatureList feature_list;
182 feature_list.InitAndEnableFeature(features::kPreferHtmlOverPlugins); 185 feature_list.InitAndEnableFeature(features::kPreferHtmlOverPlugins);
183 186
184 // Allow plugins by default. 187 // Allow plugins by default.
185 HostContentSettingsMap* map = 188 HostContentSettingsMap* map =
186 HostContentSettingsMapFactory::GetForProfile(profile()); 189 HostContentSettingsMapFactory::GetForProfile(profile());
187 map->SetDefaultContentSetting(CONTENT_SETTINGS_TYPE_PLUGINS, 190 map->SetDefaultContentSetting(CONTENT_SETTINGS_TYPE_PLUGINS,
188 CONTENT_SETTING_ALLOW); 191 CONTENT_SETTING_ALLOW);
189 192
190 // This should respect the content setting and be allowed. 193 // This should respect the content setting and be allowed.
191 GURL url("http://www.google.com"); 194 GURL url("http://www.google.com");
192 EXPECT_TRUE(IsPluginAvailable(url, url, profile()->GetResourceContext(), 195 url::Origin main_frame_origin(url);
193 flash_plugin)); 196 EXPECT_TRUE(IsPluginAvailable(url, main_frame_origin,
197 profile()->GetResourceContext(), flash_plugin));
194 198
195 histograms.ExpectBucketCount( 199 histograms.ExpectBucketCount(
196 ChromePluginServiceFilter::kEngagementSettingAllowedHistogram, 0, 1); 200 ChromePluginServiceFilter::kEngagementSettingAllowedHistogram, 0, 1);
197 201
198 map->SetDefaultContentSetting(CONTENT_SETTINGS_TYPE_PLUGINS, 202 map->SetDefaultContentSetting(CONTENT_SETTINGS_TYPE_PLUGINS,
199 CONTENT_SETTING_DETECT_IMPORTANT_CONTENT); 203 CONTENT_SETTING_DETECT_IMPORTANT_CONTENT);
200 204
201 // This should be blocked due to 0 engagement and a detect content setting. 205 // This should be blocked due to 0 engagement and a detect content setting.
202 EXPECT_FALSE(IsPluginAvailable(url, url, profile()->GetResourceContext(), 206 EXPECT_FALSE(IsPluginAvailable(
203 flash_plugin)); 207 url, main_frame_origin, profile()->GetResourceContext(), flash_plugin));
204 histograms.ExpectBucketCount( 208 histograms.ExpectBucketCount(
205 ChromePluginServiceFilter::kEngagementNoSettingHistogram, 0, 1); 209 ChromePluginServiceFilter::kEngagementNoSettingHistogram, 0, 1);
206 210
207 SiteEngagementService* service = SiteEngagementService::Get(profile()); 211 SiteEngagementService* service = SiteEngagementService::Get(profile());
208 service->ResetScoreForURL(url, 10.0); 212 service->ResetScoreForURL(url, 10.0);
209 213
210 // Should still be blocked. 214 // Should still be blocked.
211 EXPECT_FALSE(IsPluginAvailable(url, url, profile()->GetResourceContext(), 215 EXPECT_FALSE(IsPluginAvailable(
212 flash_plugin)); 216 url, main_frame_origin, profile()->GetResourceContext(), flash_plugin));
213 histograms.ExpectBucketCount( 217 histograms.ExpectBucketCount(
214 ChromePluginServiceFilter::kEngagementNoSettingHistogram, 10, 1); 218 ChromePluginServiceFilter::kEngagementNoSettingHistogram, 10, 1);
215 219
216 // Reaching 30.0 engagement should allow Flash. 220 // Reaching 30.0 engagement should allow Flash.
217 service->ResetScoreForURL(url, 30.0); 221 service->ResetScoreForURL(url, 30.0);
218 EXPECT_TRUE(IsPluginAvailable(url, url, profile()->GetResourceContext(), 222 EXPECT_TRUE(IsPluginAvailable(url, main_frame_origin,
219 flash_plugin)); 223 profile()->GetResourceContext(), flash_plugin));
220 224
221 histograms.ExpectBucketCount( 225 histograms.ExpectBucketCount(
222 ChromePluginServiceFilter::kEngagementNoSettingHistogram, 0, 1); 226 ChromePluginServiceFilter::kEngagementNoSettingHistogram, 0, 1);
223 histograms.ExpectBucketCount( 227 histograms.ExpectBucketCount(
224 ChromePluginServiceFilter::kEngagementNoSettingHistogram, 10, 1); 228 ChromePluginServiceFilter::kEngagementNoSettingHistogram, 10, 1);
225 histograms.ExpectBucketCount( 229 histograms.ExpectBucketCount(
226 ChromePluginServiceFilter::kEngagementNoSettingHistogram, 30, 1); 230 ChromePluginServiceFilter::kEngagementNoSettingHistogram, 30, 1);
227 231
228 // Blocked content setting should override engagement 232 // Blocked content setting should override engagement
229 map->SetDefaultContentSetting(CONTENT_SETTINGS_TYPE_PLUGINS, 233 map->SetDefaultContentSetting(CONTENT_SETTINGS_TYPE_PLUGINS,
230 CONTENT_SETTING_BLOCK); 234 CONTENT_SETTING_BLOCK);
231 EXPECT_FALSE(IsPluginAvailable(url, url, profile()->GetResourceContext(), 235 EXPECT_FALSE(IsPluginAvailable(
232 flash_plugin)); 236 url, main_frame_origin, profile()->GetResourceContext(), flash_plugin));
233 237
234 histograms.ExpectBucketCount( 238 histograms.ExpectBucketCount(
235 ChromePluginServiceFilter::kEngagementSettingBlockedHistogram, 30, 1); 239 ChromePluginServiceFilter::kEngagementSettingBlockedHistogram, 30, 1);
236 } 240 }
237 241
238 TEST_F(ChromePluginServiceFilterTest, PreferHtmlOverPluginsCustomEngagement) { 242 TEST_F(ChromePluginServiceFilterTest, PreferHtmlOverPluginsCustomEngagement) {
239 content::WebPluginInfo flash_plugin( 243 content::WebPluginInfo flash_plugin(
240 base::ASCIIToUTF16(content::kFlashPluginName), flash_plugin_path_, 244 base::ASCIIToUTF16(content::kFlashPluginName), flash_plugin_path_,
241 base::ASCIIToUTF16("1"), base::ASCIIToUTF16("The Flash plugin.")); 245 base::ASCIIToUTF16("1"), base::ASCIIToUTF16("The Flash plugin."));
242 base::HistogramTester histograms; 246 base::HistogramTester histograms;
(...skipping 24 matching lines...) Expand all
267 EXPECT_EQ(params, actualParams); 271 EXPECT_EQ(params, actualParams);
268 272
269 // Set to detect important content by default. 273 // Set to detect important content by default.
270 HostContentSettingsMap* map = 274 HostContentSettingsMap* map =
271 HostContentSettingsMapFactory::GetForProfile(profile()); 275 HostContentSettingsMapFactory::GetForProfile(profile());
272 map->SetDefaultContentSetting(CONTENT_SETTINGS_TYPE_PLUGINS, 276 map->SetDefaultContentSetting(CONTENT_SETTINGS_TYPE_PLUGINS,
273 CONTENT_SETTING_DETECT_IMPORTANT_CONTENT); 277 CONTENT_SETTING_DETECT_IMPORTANT_CONTENT);
274 278
275 // This should be blocked due to 0 engagement. 279 // This should be blocked due to 0 engagement.
276 GURL url("http://www.google.com"); 280 GURL url("http://www.google.com");
277 EXPECT_FALSE(IsPluginAvailable(url, url, profile()->GetResourceContext(), 281 url::Origin main_frame_origin(url);
278 flash_plugin)); 282 EXPECT_FALSE(IsPluginAvailable(
283 url, main_frame_origin, profile()->GetResourceContext(), flash_plugin));
279 284
280 // Should still be blocked until engagement reaches 50. 285 // Should still be blocked until engagement reaches 50.
281 SiteEngagementService* service = SiteEngagementService::Get(profile()); 286 SiteEngagementService* service = SiteEngagementService::Get(profile());
282 service->ResetScoreForURL(url, 0.0); 287 service->ResetScoreForURL(url, 0.0);
283 EXPECT_FALSE(IsPluginAvailable(url, url, profile()->GetResourceContext(), 288 EXPECT_FALSE(IsPluginAvailable(
284 flash_plugin)); 289 url, main_frame_origin, profile()->GetResourceContext(), flash_plugin));
285 service->ResetScoreForURL(url, 10.0); 290 service->ResetScoreForURL(url, 10.0);
286 EXPECT_FALSE(IsPluginAvailable(url, url, profile()->GetResourceContext(), 291 EXPECT_FALSE(IsPluginAvailable(
287 flash_plugin)); 292 url, main_frame_origin, profile()->GetResourceContext(), flash_plugin));
288 service->ResetScoreForURL(url, 40.0); 293 service->ResetScoreForURL(url, 40.0);
289 EXPECT_FALSE(IsPluginAvailable(url, url, profile()->GetResourceContext(), 294 EXPECT_FALSE(IsPluginAvailable(
290 flash_plugin)); 295 url, main_frame_origin, profile()->GetResourceContext(), flash_plugin));
291 service->ResetScoreForURL(url, 60.0); 296 service->ResetScoreForURL(url, 60.0);
292 EXPECT_TRUE(IsPluginAvailable(url, url, profile()->GetResourceContext(), 297 EXPECT_TRUE(IsPluginAvailable(url, main_frame_origin,
293 flash_plugin)); 298 profile()->GetResourceContext(), flash_plugin));
294 299
295 histograms.ExpectBucketCount( 300 histograms.ExpectBucketCount(
296 ChromePluginServiceFilter::kEngagementNoSettingHistogram, 0, 2); 301 ChromePluginServiceFilter::kEngagementNoSettingHistogram, 0, 2);
297 histograms.ExpectBucketCount( 302 histograms.ExpectBucketCount(
298 ChromePluginServiceFilter::kEngagementNoSettingHistogram, 10, 1); 303 ChromePluginServiceFilter::kEngagementNoSettingHistogram, 10, 1);
299 histograms.ExpectBucketCount( 304 histograms.ExpectBucketCount(
300 ChromePluginServiceFilter::kEngagementNoSettingHistogram, 40, 1); 305 ChromePluginServiceFilter::kEngagementNoSettingHistogram, 40, 1);
301 histograms.ExpectBucketCount( 306 histograms.ExpectBucketCount(
302 ChromePluginServiceFilter::kEngagementNoSettingHistogram, 60, 1); 307 ChromePluginServiceFilter::kEngagementNoSettingHistogram, 60, 1);
303 308
(...skipping 14 matching lines...) Expand all
318 feature_list.InitAndEnableFeature(features::kPreferHtmlOverPlugins); 323 feature_list.InitAndEnableFeature(features::kPreferHtmlOverPlugins);
319 324
320 // Block plugins in the original profile. This should inherit into incognito. 325 // Block plugins in the original profile. This should inherit into incognito.
321 HostContentSettingsMap* map = 326 HostContentSettingsMap* map =
322 HostContentSettingsMapFactory::GetForProfile(profile()); 327 HostContentSettingsMapFactory::GetForProfile(profile());
323 map->SetDefaultContentSetting(CONTENT_SETTINGS_TYPE_PLUGINS, 328 map->SetDefaultContentSetting(CONTENT_SETTINGS_TYPE_PLUGINS,
324 CONTENT_SETTING_BLOCK); 329 CONTENT_SETTING_BLOCK);
325 330
326 // We should fail the availablity check in incognito. 331 // We should fail the availablity check in incognito.
327 GURL url("http://www.google.com"); 332 GURL url("http://www.google.com");
328 EXPECT_FALSE(IsPluginAvailable(url, url, incognito->GetResourceContext(), 333 url::Origin main_frame_origin(url);
329 flash_plugin)); 334 EXPECT_FALSE(IsPluginAvailable(
335 url, main_frame_origin, incognito->GetResourceContext(), flash_plugin));
330 336
331 // Add sufficient engagement to allow Flash in the original profile. 337 // Add sufficient engagement to allow Flash in the original profile.
332 SiteEngagementService* service = SiteEngagementService::Get(profile()); 338 SiteEngagementService* service = SiteEngagementService::Get(profile());
333 service->ResetScoreForURL(url, 30.0); 339 service->ResetScoreForURL(url, 30.0);
334 340
335 // We should still fail the engagement check due to the block. 341 // We should still fail the engagement check due to the block.
336 EXPECT_FALSE(IsPluginAvailable(url, url, incognito->GetResourceContext(), 342 EXPECT_FALSE(IsPluginAvailable(
337 flash_plugin)); 343 url, main_frame_origin, incognito->GetResourceContext(), flash_plugin));
338 344
339 // Change to detect important content in the original profile. 345 // Change to detect important content in the original profile.
340 map->SetDefaultContentSetting(CONTENT_SETTINGS_TYPE_PLUGINS, 346 map->SetDefaultContentSetting(CONTENT_SETTINGS_TYPE_PLUGINS,
341 CONTENT_SETTING_DETECT_IMPORTANT_CONTENT); 347 CONTENT_SETTING_DETECT_IMPORTANT_CONTENT);
342 348
343 // Ensure we pass the engagement check in the incognito profile (i.e. it falls 349 // Ensure we pass the engagement check in the incognito profile (i.e. it falls
344 // back to checking engagement from the original profile when nothing is found 350 // back to checking engagement from the original profile when nothing is found
345 // in the incognito profile). 351 // in the incognito profile).
346 EXPECT_TRUE(IsPluginAvailable(url, url, incognito->GetResourceContext(), 352 EXPECT_TRUE(IsPluginAvailable(url, main_frame_origin,
347 flash_plugin)); 353 incognito->GetResourceContext(), flash_plugin));
348 } 354 }
349 355
350 TEST_F(ChromePluginServiceFilterTest, 356 TEST_F(ChromePluginServiceFilterTest,
351 PreferHtmlOverPluginsIncognitoAllowToDetect) { 357 PreferHtmlOverPluginsIncognitoAllowToDetect) {
352 Profile* incognito = profile()->GetOffTheRecordProfile(); 358 Profile* incognito = profile()->GetOffTheRecordProfile();
353 filter_->RegisterResourceContext(incognito, incognito->GetResourceContext()); 359 filter_->RegisterResourceContext(incognito, incognito->GetResourceContext());
354 360
355 content::WebPluginInfo flash_plugin( 361 content::WebPluginInfo flash_plugin(
356 base::ASCIIToUTF16(content::kFlashPluginName), flash_plugin_path_, 362 base::ASCIIToUTF16(content::kFlashPluginName), flash_plugin_path_,
357 base::ASCIIToUTF16("1"), base::ASCIIToUTF16("The Flash plugin.")); 363 base::ASCIIToUTF16("1"), base::ASCIIToUTF16("The Flash plugin."));
358 364
359 // Activate PreferHtmlOverPlugins. 365 // Activate PreferHtmlOverPlugins.
360 base::test::ScopedFeatureList feature_list; 366 base::test::ScopedFeatureList feature_list;
361 feature_list.InitAndEnableFeature(features::kPreferHtmlOverPlugins); 367 feature_list.InitAndEnableFeature(features::kPreferHtmlOverPlugins);
362 368
363 // Allow plugins in the original profile. 369 // Allow plugins in the original profile.
364 HostContentSettingsMap* map = 370 HostContentSettingsMap* map =
365 HostContentSettingsMapFactory::GetForProfile(profile()); 371 HostContentSettingsMapFactory::GetForProfile(profile());
366 map->SetDefaultContentSetting(CONTENT_SETTINGS_TYPE_PLUGINS, 372 map->SetDefaultContentSetting(CONTENT_SETTINGS_TYPE_PLUGINS,
367 CONTENT_SETTING_ALLOW); 373 CONTENT_SETTING_ALLOW);
368 374
369 // We pass the availablity check in incognito based on the original content 375 // We pass the availablity check in incognito based on the original content
370 // setting. 376 // setting.
371 GURL url("http://www.google.com"); 377 GURL url("http://www.google.com");
372 EXPECT_TRUE(IsPluginAvailable(url, url, incognito->GetResourceContext(), 378 url::Origin main_frame_origin(url);
373 flash_plugin)); 379 EXPECT_TRUE(IsPluginAvailable(url, main_frame_origin,
380 incognito->GetResourceContext(), flash_plugin));
374 381
375 map->SetDefaultContentSetting(CONTENT_SETTINGS_TYPE_PLUGINS, 382 map->SetDefaultContentSetting(CONTENT_SETTINGS_TYPE_PLUGINS,
376 CONTENT_SETTING_DETECT_IMPORTANT_CONTENT); 383 CONTENT_SETTING_DETECT_IMPORTANT_CONTENT);
377 384
378 // Now we fail the availability check due to the content setting carrying 385 // Now we fail the availability check due to the content setting carrying
379 // over. 386 // over.
380 EXPECT_FALSE(IsPluginAvailable(url, url, incognito->GetResourceContext(), 387 EXPECT_FALSE(IsPluginAvailable(
381 flash_plugin)); 388 url, main_frame_origin, incognito->GetResourceContext(), flash_plugin));
382 389
383 // Add sufficient engagement to allow Flash in the incognito profile. 390 // Add sufficient engagement to allow Flash in the incognito profile.
384 SiteEngagementService* service = SiteEngagementService::Get(incognito); 391 SiteEngagementService* service = SiteEngagementService::Get(incognito);
385 service->ResetScoreForURL(url, 30.0); 392 service->ResetScoreForURL(url, 30.0);
386 393
387 // Ensure we pass the engagement check in the incognito profile. 394 // Ensure we pass the engagement check in the incognito profile.
388 EXPECT_TRUE(IsPluginAvailable(url, url, incognito->GetResourceContext(), 395 EXPECT_TRUE(IsPluginAvailable(url, main_frame_origin,
389 flash_plugin)); 396 incognito->GetResourceContext(), flash_plugin));
390 } 397 }
391 398
392 TEST_F(ChromePluginServiceFilterTest, BlockIfManagedSetting) { 399 TEST_F(ChromePluginServiceFilterTest, BlockIfManagedSetting) {
393 content::WebPluginInfo flash_plugin( 400 content::WebPluginInfo flash_plugin(
394 base::ASCIIToUTF16(content::kFlashPluginName), flash_plugin_path_, 401 base::ASCIIToUTF16(content::kFlashPluginName), flash_plugin_path_,
395 base::ASCIIToUTF16("1"), base::ASCIIToUTF16("The Flash plugin.")); 402 base::ASCIIToUTF16("1"), base::ASCIIToUTF16("The Flash plugin."));
396 base::HistogramTester histograms; 403 base::HistogramTester histograms;
397 404
398 // Activate PreferHtmlOverPlugins. 405 // Activate PreferHtmlOverPlugins.
399 base::test::ScopedFeatureList feature_list; 406 base::test::ScopedFeatureList feature_list;
400 feature_list.InitAndEnableFeature(features::kPreferHtmlOverPlugins); 407 feature_list.InitAndEnableFeature(features::kPreferHtmlOverPlugins);
401 408
402 HostContentSettingsMap* map = 409 HostContentSettingsMap* map =
403 HostContentSettingsMapFactory::GetForProfile(profile()); 410 HostContentSettingsMapFactory::GetForProfile(profile());
404 map->SetDefaultContentSetting(CONTENT_SETTINGS_TYPE_PLUGINS, 411 map->SetDefaultContentSetting(CONTENT_SETTINGS_TYPE_PLUGINS,
405 CONTENT_SETTING_DETECT_IMPORTANT_CONTENT); 412 CONTENT_SETTING_DETECT_IMPORTANT_CONTENT);
406 413
407 SiteEngagementService* service = SiteEngagementService::Get(profile()); 414 SiteEngagementService* service = SiteEngagementService::Get(profile());
408 // Reaching 30.0 engagement should allow Flash. 415 // Reaching 30.0 engagement should allow Flash.
409 GURL url("http://www.google.com"); 416 GURL url("http://www.google.com");
417 url::Origin main_frame_origin(url);
410 service->ResetScoreForURL(url, 30.0); 418 service->ResetScoreForURL(url, 30.0);
411 EXPECT_TRUE(IsPluginAvailable(url, url, profile()->GetResourceContext(), 419 EXPECT_TRUE(IsPluginAvailable(url, main_frame_origin,
412 flash_plugin)); 420 profile()->GetResourceContext(), flash_plugin));
413 histograms.ExpectUniqueSample( 421 histograms.ExpectUniqueSample(
414 ChromePluginServiceFilter::kEngagementNoSettingHistogram, 30, 1); 422 ChromePluginServiceFilter::kEngagementNoSettingHistogram, 30, 1);
415 423
416 // Enterprise ASK setting should block Flash from being advertised. 424 // Enterprise ASK setting should block Flash from being advertised.
417 syncable_prefs::TestingPrefServiceSyncable* prefs = 425 syncable_prefs::TestingPrefServiceSyncable* prefs =
418 profile()->GetTestingPrefService(); 426 profile()->GetTestingPrefService();
419 prefs->SetManagedPref(prefs::kManagedDefaultPluginsSetting, 427 prefs->SetManagedPref(prefs::kManagedDefaultPluginsSetting,
420 new base::FundamentalValue(CONTENT_SETTING_ASK)); 428 new base::FundamentalValue(CONTENT_SETTING_ASK));
421 429 EXPECT_FALSE(IsPluginAvailable(
422 EXPECT_FALSE(IsPluginAvailable(url, url, profile()->GetResourceContext(), 430 url, main_frame_origin, profile()->GetResourceContext(), flash_plugin));
423 flash_plugin));
424 histograms.ExpectUniqueSample( 431 histograms.ExpectUniqueSample(
425 ChromePluginServiceFilter::kEngagementNoSettingHistogram, 30, 2); 432 ChromePluginServiceFilter::kEngagementNoSettingHistogram, 30, 2);
426 } 433 }
OLDNEW
« no previous file with comments | « chrome/browser/plugins/chrome_plugin_service_filter.cc ('k') | chrome/browser/plugins/flash_download_interception.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698