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

Side by Side Diff: chrome/browser/permissions/permission_context_base_unittest.cc

Issue 2373883002: Clean up PermissionContextBaseTests code. (Closed)
Patch Set: Stop using base::FeatureList::ClearInstanceForTesting() 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/permissions/permission_context_base.h" 5 #include "chrome/browser/permissions/permission_context_base.h"
6 6
7 #include <map>
8 #include <string>
9 #include <utility>
7 #include <vector> 10 #include <vector>
8 11
9 #include "base/bind.h" 12 #include "base/bind.h"
10 #include "base/command_line.h"
11 #include "base/feature_list.h" 13 #include "base/feature_list.h"
12 #include "base/macros.h" 14 #include "base/macros.h"
13 #include "base/memory/ptr_util.h" 15 #include "base/memory/ptr_util.h"
14 #include "base/metrics/field_trial.h" 16 #include "base/metrics/field_trial.h"
15 #include "base/test/histogram_tester.h" 17 #include "base/test/histogram_tester.h"
16 #include "base/test/mock_entropy_provider.h" 18 #include "base/test/mock_entropy_provider.h"
17 #include "base/test/scoped_feature_list.h" 19 #include "base/test/scoped_feature_list.h"
18 #include "build/build_config.h" 20 #include "build/build_config.h"
19 #include "chrome/browser/content_settings/host_content_settings_map_factory.h" 21 #include "chrome/browser/content_settings/host_content_settings_map_factory.h"
20 #include "chrome/browser/infobars/infobar_service.h" 22 #include "chrome/browser/infobars/infobar_service.h"
21 #include "chrome/browser/permissions/permission_decision_auto_blocker.h" 23 #include "chrome/browser/permissions/permission_decision_auto_blocker.h"
22 #include "chrome/browser/permissions/permission_queue_controller.h" 24 #include "chrome/browser/permissions/permission_queue_controller.h"
23 #include "chrome/browser/permissions/permission_request_id.h" 25 #include "chrome/browser/permissions/permission_request_id.h"
24 #include "chrome/browser/permissions/permission_util.h" 26 #include "chrome/browser/permissions/permission_util.h"
25 #include "chrome/common/chrome_features.h" 27 #include "chrome/common/chrome_features.h"
26 #include "chrome/common/chrome_switches.h" 28 #include "chrome/common/chrome_switches.h"
27 #include "chrome/test/base/chrome_render_view_host_test_harness.h" 29 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
28 #include "chrome/test/base/testing_profile.h" 30 #include "chrome/test/base/testing_profile.h"
29 #include "components/content_settings/core/browser/host_content_settings_map.h" 31 #include "components/content_settings/core/browser/host_content_settings_map.h"
30 #include "components/content_settings/core/common/content_settings.h" 32 #include "components/content_settings/core/common/content_settings.h"
31 #include "components/content_settings/core/common/content_settings_types.h" 33 #include "components/content_settings/core/common/content_settings_types.h"
32 #include "components/variations/variations_associated_data.h" 34 #include "components/variations/variations_associated_data.h"
33 #include "content/public/browser/permission_type.h" 35 #include "content/public/browser/permission_type.h"
34 #include "content/public/browser/render_frame_host.h" 36 #include "content/public/browser/render_frame_host.h"
35 #include "content/public/browser/web_contents.h" 37 #include "content/public/browser/web_contents.h"
36 #include "content/public/test/mock_render_process_host.h" 38 #include "content/public/test/mock_render_process_host.h"
37 #include "testing/gtest/include/gtest/gtest.h" 39 #include "testing/gtest/include/gtest/gtest.h"
38 40
39 #if defined(OS_ANDROID) 41 #if !defined(OS_ANDROID)
40 #include "chrome/browser/permissions/permission_queue_controller.h"
41 #else
42 #include "chrome/browser/permissions/permission_request_manager.h" 42 #include "chrome/browser/permissions/permission_request_manager.h"
43 #endif 43 #endif
44 44
45 const char* kPermissionsKillSwitchFieldStudy = 45 const char* const kPermissionsKillSwitchFieldStudy =
46 PermissionContextBase::kPermissionsKillSwitchFieldStudy; 46 PermissionContextBase::kPermissionsKillSwitchFieldStudy;
47 const char* kPermissionsKillSwitchBlockedValue = 47 const char* const kPermissionsKillSwitchBlockedValue =
48 PermissionContextBase::kPermissionsKillSwitchBlockedValue; 48 PermissionContextBase::kPermissionsKillSwitchBlockedValue;
49 const char kPermissionsKillSwitchTestGroup[] = "TestGroup"; 49 const char kPermissionsKillSwitchTestGroup[] = "TestGroup";
50 const char* kPromptGroupName = kPermissionsKillSwitchTestGroup; 50 const char* const kPromptGroupName = kPermissionsKillSwitchTestGroup;
51 const char kPromptTrialName[] = "PermissionPromptsUX"; 51 const char kPromptTrialName[] = "PermissionPromptsUX";
52 52
53 class TestPermissionContext : public PermissionContextBase { 53 class TestPermissionContext : public PermissionContextBase {
54 public: 54 public:
55 TestPermissionContext(Profile* profile, 55 TestPermissionContext(Profile* profile,
56 const content::PermissionType permission_type, 56 const content::PermissionType permission_type,
57 const ContentSettingsType content_settings_type) 57 const ContentSettingsType content_settings_type)
58 : PermissionContextBase(profile, permission_type, content_settings_type), 58 : PermissionContextBase(profile, permission_type, content_settings_type),
59 tab_context_updated_(false) {} 59 tab_context_updated_(false) {}
60 60
61 ~TestPermissionContext() override {} 61 ~TestPermissionContext() override {}
62 62
63 #if defined(OS_ANDROID) 63 #if defined(OS_ANDROID)
64 PermissionQueueController* GetInfoBarController() { 64 PermissionQueueController* GetInfoBarController() {
65 return GetQueueController(); 65 return GetQueueController();
66 } 66 }
67 #endif 67 #endif
68 68
69 const std::vector<ContentSetting>& decisions() { return decisions_; } 69 const std::vector<ContentSetting>& decisions() const { return decisions_; }
70 70
71 bool tab_context_updated() { 71 bool tab_context_updated() const { return tab_context_updated_; }
72 return tab_context_updated_;
73 }
74 72
75 void TrackPermissionDecision(ContentSetting content_setting) { 73 void TrackPermissionDecision(ContentSetting content_setting) {
76 decisions_.push_back(content_setting); 74 decisions_.push_back(content_setting);
77 } 75 }
78 76
79 ContentSetting GetContentSettingFromMap(const GURL& url_a, 77 ContentSetting GetContentSettingFromMap(const GURL& url_a,
80 const GURL& url_b) { 78 const GURL& url_b) {
81 return HostContentSettingsMapFactory::GetForProfile(profile()) 79 auto* map = HostContentSettingsMapFactory::GetForProfile(profile());
82 ->GetContentSetting(url_a.GetOrigin(), url_b.GetOrigin(), 80 return map->GetContentSetting(url_a.GetOrigin(), url_b.GetOrigin(),
83 content_settings_type(), std::string()); 81 content_settings_type(), std::string());
84 } 82 }
85 83
86 protected: 84 protected:
87 void UpdateTabContext(const PermissionRequestID& id, 85 void UpdateTabContext(const PermissionRequestID& id,
88 const GURL& requesting_origin, 86 const GURL& requesting_origin,
89 bool allowed) override { 87 bool allowed) override {
90 tab_context_updated_ = true; 88 tab_context_updated_ = true;
91 } 89 }
92 90
93 bool IsRestrictedToSecureOrigins() const override { 91 bool IsRestrictedToSecureOrigins() const override {
94 return false; 92 return false;
95 } 93 }
96 94
97 private: 95 private:
98 std::vector<ContentSetting> decisions_; 96 std::vector<ContentSetting> decisions_;
99 bool tab_context_updated_; 97 bool tab_context_updated_;
98
99 DISALLOW_COPY_AND_ASSIGN(TestPermissionContext);
100 }; 100 };
101 101
102 class TestKillSwitchPermissionContext : public TestPermissionContext { 102 class TestKillSwitchPermissionContext : public TestPermissionContext {
103 public: 103 public:
104 TestKillSwitchPermissionContext( 104 TestKillSwitchPermissionContext(
105 Profile* profile, 105 Profile* profile,
106 const content::PermissionType permission_type, 106 const content::PermissionType permission_type,
107 const ContentSettingsType content_settings_type) 107 const ContentSettingsType content_settings_type)
108 : TestPermissionContext(profile, permission_type, content_settings_type), 108 : TestPermissionContext(profile, permission_type, content_settings_type),
109 field_trial_list_( 109 field_trial_list_(base::MakeUnique<base::FieldTrialList>(
110 new base::FieldTrialList( 110 base::MakeUnique<base::MockEntropyProvider>())) {}
111 base::MakeUnique<base::MockEntropyProvider>())) {}
112 111
113 void ResetFieldTrialList() { 112 void ResetFieldTrialList() {
114 // Destroy the existing FieldTrialList before creating a new one to avoid 113 // Destroy the existing FieldTrialList before creating a new one to avoid
115 // a DCHECK. 114 // a DCHECK.
116 field_trial_list_.reset(); 115 field_trial_list_.reset();
117 field_trial_list_.reset(new base::FieldTrialList( 116 field_trial_list_ = base::MakeUnique<base::FieldTrialList>(
118 base::MakeUnique<base::MockEntropyProvider>())); 117 base::MakeUnique<base::MockEntropyProvider>());
119 variations::testing::ClearAllVariationParams(); 118 variations::testing::ClearAllVariationParams();
120 } 119 }
121 120
122 private: 121 private:
123 std::unique_ptr<base::FieldTrialList> field_trial_list_; 122 std::unique_ptr<base::FieldTrialList> field_trial_list_;
123
124 DISALLOW_COPY_AND_ASSIGN(TestKillSwitchPermissionContext);
124 }; 125 };
125 126
126 class PermissionContextBaseTests : public ChromeRenderViewHostTestHarness { 127 class PermissionContextBaseTests : public ChromeRenderViewHostTestHarness {
127 protected: 128 protected:
128 PermissionContextBaseTests() {} 129 PermissionContextBaseTests() {}
130 ~PermissionContextBaseTests() override {}
129 131
130 // Accept or dismiss the permission bubble or infobar. 132 // Accept or dismiss the permission bubble or infobar.
131 void RespondToPermission(TestPermissionContext* context, 133 void RespondToPermission(TestPermissionContext* context,
132 const PermissionRequestID& id, 134 const PermissionRequestID& id,
133 const GURL& url, 135 const GURL& url,
134 bool persist, 136 bool persist,
135 ContentSetting response) { 137 ContentSetting response) {
136 DCHECK(response == CONTENT_SETTING_ALLOW || 138 DCHECK(response == CONTENT_SETTING_ALLOW ||
137 response == CONTENT_SETTING_BLOCK || 139 response == CONTENT_SETTING_BLOCK ||
138 response == CONTENT_SETTING_ASK); 140 response == CONTENT_SETTING_ASK);
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
178 web_contents()->GetRenderProcessHost()->GetID(), 180 web_contents()->GetRenderProcessHost()->GetID(),
179 web_contents()->GetMainFrame()->GetRoutingID(), 181 web_contents()->GetMainFrame()->GetRoutingID(),
180 -1); 182 -1);
181 permission_context.RequestPermission( 183 permission_context.RequestPermission(
182 web_contents(), 184 web_contents(),
183 id, url, true /* user_gesture */, 185 id, url, true /* user_gesture */,
184 base::Bind(&TestPermissionContext::TrackPermissionDecision, 186 base::Bind(&TestPermissionContext::TrackPermissionDecision,
185 base::Unretained(&permission_context))); 187 base::Unretained(&permission_context)));
186 188
187 RespondToPermission(&permission_context, id, url, persist, decision); 189 RespondToPermission(&permission_context, id, url, persist, decision);
188 EXPECT_EQ(1u, permission_context.decisions().size()); 190 ASSERT_EQ(1u, permission_context.decisions().size());
189 EXPECT_EQ(decision, permission_context.decisions()[0]); 191 EXPECT_EQ(decision, permission_context.decisions()[0]);
190 EXPECT_TRUE(permission_context.tab_context_updated()); 192 EXPECT_TRUE(permission_context.tab_context_updated());
191 193
192 std::string decision_string = ""; 194 std::string decision_string;
193 if (decision == CONTENT_SETTING_ALLOW) 195 if (decision == CONTENT_SETTING_ALLOW)
194 decision_string = "Accepted"; 196 decision_string = "Accepted";
195 else if (decision == CONTENT_SETTING_BLOCK) 197 else if (decision == CONTENT_SETTING_BLOCK)
196 decision_string = "Denied"; 198 decision_string = "Denied";
197 else if (decision == CONTENT_SETTING_ASK) 199 else if (decision == CONTENT_SETTING_ASK)
198 decision_string = "Dismissed"; 200 decision_string = "Dismissed";
199 201
200 if (decision_string.size()) { 202 if (decision_string.size()) {
201 histograms.ExpectUniqueSample( 203 histograms.ExpectUniqueSample(
202 "Permissions.Prompt." + decision_string + ".PriorDismissCount." + 204 "Permissions.Prompt." + decision_string + ".PriorDismissCount." +
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
244 CONTENT_SETTING_ASK); 246 CONTENT_SETTING_ASK);
245 histograms.ExpectTotalCount( 247 histograms.ExpectTotalCount(
246 "Permissions.Prompt.Dismissed.PriorDismissCount." + 248 "Permissions.Prompt.Dismissed.PriorDismissCount." +
247 PermissionUtil::GetPermissionString(permission_type), 249 PermissionUtil::GetPermissionString(permission_type),
248 i + 1); 250 i + 1);
249 histograms.ExpectBucketCount( 251 histograms.ExpectBucketCount(
250 "Permissions.Prompt.Dismissed.PriorDismissCount." + 252 "Permissions.Prompt.Dismissed.PriorDismissCount." +
251 PermissionUtil::GetPermissionString(permission_type), 253 PermissionUtil::GetPermissionString(permission_type),
252 i, 1); 254 i, 1);
253 255
254 EXPECT_EQ(1u, permission_context.decisions().size()); 256 ASSERT_EQ(1u, permission_context.decisions().size());
255 EXPECT_EQ(expected, permission_context.decisions()[0]); 257 EXPECT_EQ(expected, permission_context.decisions()[0]);
256 EXPECT_TRUE(permission_context.tab_context_updated()); 258 EXPECT_TRUE(permission_context.tab_context_updated());
257 EXPECT_EQ(expected, 259 EXPECT_EQ(expected,
258 permission_context.GetContentSettingFromMap(url, url)); 260 permission_context.GetContentSettingFromMap(url, url));
259 } 261 }
260 262
261 // Ensure that we finish in the block state. 263 // Ensure that we finish in the block state.
262 TestPermissionContext permission_context( 264 TestPermissionContext permission_context(
263 profile(), permission_type, content_settings_type); 265 profile(), permission_type, content_settings_type);
264 EXPECT_EQ(CONTENT_SETTING_BLOCK, 266 EXPECT_EQ(CONTENT_SETTING_BLOCK,
(...skipping 19 matching lines...) Expand all
284 base::Bind(&TestPermissionContext::TrackPermissionDecision, 286 base::Bind(&TestPermissionContext::TrackPermissionDecision,
285 base::Unretained(&permission_context))); 287 base::Unretained(&permission_context)));
286 288
287 RespondToPermission(&permission_context, id, url, false, /* persist */ 289 RespondToPermission(&permission_context, id, url, false, /* persist */
288 CONTENT_SETTING_ASK); 290 CONTENT_SETTING_ASK);
289 histograms.ExpectTotalCount( 291 histograms.ExpectTotalCount(
290 "Permissions.Prompt.Dismissed.PriorDismissCount.Geolocation", 292 "Permissions.Prompt.Dismissed.PriorDismissCount.Geolocation",
291 i + 1); 293 i + 1);
292 histograms.ExpectBucketCount( 294 histograms.ExpectBucketCount(
293 "Permissions.Prompt.Dismissed.PriorDismissCount.Geolocation", i, 1); 295 "Permissions.Prompt.Dismissed.PriorDismissCount.Geolocation", i, 1);
294 EXPECT_EQ(1u, permission_context.decisions().size()); 296 ASSERT_EQ(1u, permission_context.decisions().size());
295 EXPECT_EQ(CONTENT_SETTING_ASK, permission_context.decisions()[0]); 297 EXPECT_EQ(CONTENT_SETTING_ASK, permission_context.decisions()[0]);
296 EXPECT_TRUE(permission_context.tab_context_updated()); 298 EXPECT_TRUE(permission_context.tab_context_updated());
297 EXPECT_EQ(CONTENT_SETTING_ASK, 299 EXPECT_EQ(CONTENT_SETTING_ASK,
298 permission_context.GetContentSettingFromMap(url, url)); 300 permission_context.GetContentSettingFromMap(url, url));
299 } 301 }
300 302
301 // Flush the dismissal counts. Enable the block on too many dismissals 303 // Flush the dismissal counts. Enable the block on too many dismissals
302 // feature, which is disabled by default. 304 // feature, which is disabled by default.
303 HostContentSettingsMapFactory::GetForProfile(profile()) 305 auto* map = HostContentSettingsMapFactory::GetForProfile(profile());
304 ->ClearSettingsForOneType( 306 map->ClearSettingsForOneType(
305 CONTENT_SETTINGS_TYPE_PROMPT_NO_DECISION_COUNT); 307 CONTENT_SETTINGS_TYPE_PROMPT_NO_DECISION_COUNT);
306 308
307 base::test::ScopedFeatureList feature_list; 309 base::test::ScopedFeatureList feature_list;
308 feature_list.InitAndEnableFeature(features::kBlockPromptsIfDismissedOften); 310 feature_list.InitAndEnableFeature(features::kBlockPromptsIfDismissedOften);
309 311
310 EXPECT_TRUE( 312 EXPECT_TRUE(
311 base::FeatureList::IsEnabled(features::kBlockPromptsIfDismissedOften)); 313 base::FeatureList::IsEnabled(features::kBlockPromptsIfDismissedOften));
312 314
313 // Sanity check independence per permission type by checking two of them. 315 // Sanity check independence per permission type by checking two of them.
314 DismissMultipleTimesAndExpectBlock(url, 316 DismissMultipleTimesAndExpectBlock(url,
315 content::PermissionType::GEOLOCATION, 317 content::PermissionType::GEOLOCATION,
316 CONTENT_SETTINGS_TYPE_GEOLOCATION, 3); 318 CONTENT_SETTINGS_TYPE_GEOLOCATION, 3);
317 DismissMultipleTimesAndExpectBlock(url, 319 DismissMultipleTimesAndExpectBlock(url,
318 content::PermissionType::NOTIFICATIONS, 320 content::PermissionType::NOTIFICATIONS,
319 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, 3); 321 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, 3);
320 } 322 }
321 323
322 void TestVariationBlockOnSeveralDismissals_TestContent() { 324 void TestVariationBlockOnSeveralDismissals_TestContent() {
323 GURL url("https://www.google.com"); 325 GURL url("https://www.google.com");
324 NavigateAndCommit(url); 326 NavigateAndCommit(url);
325 base::HistogramTester histograms; 327 base::HistogramTester histograms;
326 328
327 // Set up the custom parameter and custom value. 329 // Set up the custom parameter and custom value.
328 base::FieldTrialList field_trials_(nullptr); 330 base::FieldTrialList field_trials(nullptr);
329 base::FieldTrial* trial = base::FieldTrialList::CreateFieldTrial( 331 base::FieldTrial* trial = base::FieldTrialList::CreateFieldTrial(
330 kPromptTrialName, kPromptGroupName); 332 kPromptTrialName, kPromptGroupName);
331 std::map<std::string, std::string> params; 333 std::map<std::string, std::string> params;
332 params[PermissionDecisionAutoBlocker::kPromptDismissCountKey] = "5"; 334 params[PermissionDecisionAutoBlocker::kPromptDismissCountKey] = "5";
333 ASSERT_TRUE(variations::AssociateVariationParams( 335 ASSERT_TRUE(variations::AssociateVariationParams(
334 kPromptTrialName, kPromptGroupName, params)); 336 kPromptTrialName, kPromptGroupName, params));
335 337
336 base::FeatureList::ClearInstanceForTesting(); 338 std::unique_ptr<base::FeatureList> feature_list =
337 std::unique_ptr<base::FeatureList> feature_list(new base::FeatureList); 339 base::MakeUnique<base::FeatureList>();
338 feature_list->RegisterFieldTrialOverride( 340 feature_list->RegisterFieldTrialOverride(
339 features::kBlockPromptsIfDismissedOften.name, 341 features::kBlockPromptsIfDismissedOften.name,
340 base::FeatureList::OVERRIDE_ENABLE_FEATURE, trial); 342 base::FeatureList::OVERRIDE_ENABLE_FEATURE, trial);
341 base::FeatureList::SetInstance(std::move(feature_list)); 343
344 base::test::ScopedFeatureList scoped_feature_list;
345 scoped_feature_list.InitWithFeatureList(std::move(feature_list));
346
342 EXPECT_EQ(base::FeatureList::GetFieldTrial( 347 EXPECT_EQ(base::FeatureList::GetFieldTrial(
343 features::kBlockPromptsIfDismissedOften), 348 features::kBlockPromptsIfDismissedOften),
344 trial); 349 trial);
345 350
346 std::map<std::string, std::string> actualParams; 351 {
347 EXPECT_TRUE(variations::GetVariationParamsByFeature( 352 std::map<std::string, std::string> actual_params;
348 features::kBlockPromptsIfDismissedOften, &actualParams)); 353 EXPECT_TRUE(variations::GetVariationParamsByFeature(
349 EXPECT_EQ(params, actualParams); 354 features::kBlockPromptsIfDismissedOften, &actual_params));
355 EXPECT_EQ(params, actual_params);
356 }
350 357
351 for (uint32_t i = 0; i < 5; ++i) { 358 for (uint32_t i = 0; i < 5; ++i) {
352 TestPermissionContext permission_context( 359 TestPermissionContext permission_context(
353 profile(), content::PermissionType::MIDI_SYSEX, 360 profile(), content::PermissionType::MIDI_SYSEX,
354 CONTENT_SETTINGS_TYPE_MIDI_SYSEX); 361 CONTENT_SETTINGS_TYPE_MIDI_SYSEX);
355 362
356 ContentSetting expected = 363 ContentSetting expected =
357 (i < 4) ? CONTENT_SETTING_ASK : CONTENT_SETTING_BLOCK; 364 (i < 4) ? CONTENT_SETTING_ASK : CONTENT_SETTING_BLOCK;
358 const PermissionRequestID id( 365 const PermissionRequestID id(
359 web_contents()->GetRenderProcessHost()->GetID(), 366 web_contents()->GetRenderProcessHost()->GetID(),
360 web_contents()->GetMainFrame()->GetRoutingID(), i); 367 web_contents()->GetMainFrame()->GetRoutingID(), i);
361 permission_context.RequestPermission( 368 permission_context.RequestPermission(
362 web_contents(), id, url, true /* user_gesture */, 369 web_contents(), id, url, true /* user_gesture */,
363 base::Bind(&TestPermissionContext::TrackPermissionDecision, 370 base::Bind(&TestPermissionContext::TrackPermissionDecision,
364 base::Unretained(&permission_context))); 371 base::Unretained(&permission_context)));
365 372
366 RespondToPermission(&permission_context, id, url, false, /* persist */ 373 RespondToPermission(&permission_context, id, url, false, /* persist */
367 CONTENT_SETTING_ASK); 374 CONTENT_SETTING_ASK);
368 EXPECT_EQ(1u, permission_context.decisions().size()); 375 EXPECT_EQ(1u, permission_context.decisions().size());
369 EXPECT_EQ(expected, permission_context.decisions()[0]); 376 ASSERT_EQ(expected, permission_context.decisions()[0]);
370 EXPECT_TRUE(permission_context.tab_context_updated()); 377 EXPECT_TRUE(permission_context.tab_context_updated());
371 EXPECT_EQ(expected, 378 EXPECT_EQ(expected,
372 permission_context.GetContentSettingFromMap(url, url)); 379 permission_context.GetContentSettingFromMap(url, url));
373 380
374 histograms.ExpectTotalCount( 381 histograms.ExpectTotalCount(
375 "Permissions.Prompt.Dismissed.PriorDismissCount.MidiSysEx", i + 1); 382 "Permissions.Prompt.Dismissed.PriorDismissCount.MidiSysEx", i + 1);
376 histograms.ExpectBucketCount( 383 histograms.ExpectBucketCount(
377 "Permissions.Prompt.Dismissed.PriorDismissCount.MidiSysEx", i, 1); 384 "Permissions.Prompt.Dismissed.PriorDismissCount.MidiSysEx", i, 1);
378 } 385 }
379 386
380 // Ensure that we finish in the block state. 387 // Ensure that we finish in the block state.
381 TestPermissionContext permission_context( 388 TestPermissionContext permission_context(
382 profile(), content::PermissionType::MIDI_SYSEX, 389 profile(), content::PermissionType::MIDI_SYSEX,
383 CONTENT_SETTINGS_TYPE_MIDI_SYSEX); 390 CONTENT_SETTINGS_TYPE_MIDI_SYSEX);
384 EXPECT_EQ(CONTENT_SETTING_BLOCK, 391 EXPECT_EQ(CONTENT_SETTING_BLOCK,
385 permission_context.GetContentSettingFromMap(url, url)); 392 permission_context.GetContentSettingFromMap(url, url));
386 base::FeatureList::ClearInstanceForTesting();
387 variations::testing::ClearAllVariationParams(); 393 variations::testing::ClearAllVariationParams();
388 } 394 }
389 395
390 void TestRequestPermissionInvalidUrl( 396 void TestRequestPermissionInvalidUrl(
391 content::PermissionType permission_type, 397 content::PermissionType permission_type,
392 ContentSettingsType content_settings_type) { 398 ContentSettingsType content_settings_type) {
393 TestPermissionContext permission_context(profile(), permission_type, 399 TestPermissionContext permission_context(profile(), permission_type,
394 content_settings_type); 400 content_settings_type);
395 GURL url; 401 GURL url;
396 ASSERT_FALSE(url.is_valid()); 402 ASSERT_FALSE(url.is_valid());
397 NavigateAndCommit(url); 403 NavigateAndCommit(url);
398 404
399 const PermissionRequestID id( 405 const PermissionRequestID id(
400 web_contents()->GetRenderProcessHost()->GetID(), 406 web_contents()->GetRenderProcessHost()->GetID(),
401 web_contents()->GetMainFrame()->GetRoutingID(), 407 web_contents()->GetMainFrame()->GetRoutingID(),
402 -1); 408 -1);
403 permission_context.RequestPermission( 409 permission_context.RequestPermission(
404 web_contents(), 410 web_contents(),
405 id, url, true /* user_gesture */, 411 id, url, true /* user_gesture */,
406 base::Bind(&TestPermissionContext::TrackPermissionDecision, 412 base::Bind(&TestPermissionContext::TrackPermissionDecision,
407 base::Unretained(&permission_context))); 413 base::Unretained(&permission_context)));
408 414
409 EXPECT_EQ(1u, permission_context.decisions().size()); 415 ASSERT_EQ(1u, permission_context.decisions().size());
410 EXPECT_EQ(CONTENT_SETTING_BLOCK, permission_context.decisions()[0]); 416 EXPECT_EQ(CONTENT_SETTING_BLOCK, permission_context.decisions()[0]);
411 EXPECT_TRUE(permission_context.tab_context_updated()); 417 EXPECT_TRUE(permission_context.tab_context_updated());
412 EXPECT_EQ(CONTENT_SETTING_ASK, 418 EXPECT_EQ(CONTENT_SETTING_ASK,
413 permission_context.GetContentSettingFromMap(url, url)); 419 permission_context.GetContentSettingFromMap(url, url));
414 } 420 }
415 421
416 void TestGrantAndRevoke_TestContent(content::PermissionType permission_type, 422 void TestGrantAndRevoke_TestContent(content::PermissionType permission_type,
417 ContentSettingsType content_settings_type, 423 ContentSettingsType content_settings_type,
418 ContentSetting expected_default) { 424 ContentSetting expected_default) {
419 TestPermissionContext permission_context(profile(), permission_type, 425 TestPermissionContext permission_context(profile(), permission_type,
420 content_settings_type); 426 content_settings_type);
421 GURL url("https://www.google.com"); 427 GURL url("https://www.google.com");
422 NavigateAndCommit(url); 428 NavigateAndCommit(url);
423 429
424 const PermissionRequestID id( 430 const PermissionRequestID id(
425 web_contents()->GetRenderProcessHost()->GetID(), 431 web_contents()->GetRenderProcessHost()->GetID(),
426 web_contents()->GetMainFrame()->GetRoutingID(), 432 web_contents()->GetMainFrame()->GetRoutingID(),
427 -1); 433 -1);
428 permission_context.RequestPermission( 434 permission_context.RequestPermission(
429 web_contents(), 435 web_contents(),
430 id, url, true /* user_gesture */, 436 id, url, true /* user_gesture */,
431 base::Bind(&TestPermissionContext::TrackPermissionDecision, 437 base::Bind(&TestPermissionContext::TrackPermissionDecision,
432 base::Unretained(&permission_context))); 438 base::Unretained(&permission_context)));
433 439
434 RespondToPermission(&permission_context, id, url, true, /* persist */ 440 RespondToPermission(&permission_context, id, url, true, /* persist */
435 CONTENT_SETTING_ALLOW); 441 CONTENT_SETTING_ALLOW);
436 EXPECT_EQ(1u, permission_context.decisions().size()); 442 ASSERT_EQ(1u, permission_context.decisions().size());
437 EXPECT_EQ(CONTENT_SETTING_ALLOW, permission_context.decisions()[0]); 443 EXPECT_EQ(CONTENT_SETTING_ALLOW, permission_context.decisions()[0]);
438 EXPECT_TRUE(permission_context.tab_context_updated()); 444 EXPECT_TRUE(permission_context.tab_context_updated());
439 EXPECT_EQ(CONTENT_SETTING_ALLOW, 445 EXPECT_EQ(CONTENT_SETTING_ALLOW,
440 permission_context.GetContentSettingFromMap(url, url)); 446 permission_context.GetContentSettingFromMap(url, url));
441 447
442 // Try to reset permission. 448 // Try to reset permission.
443 permission_context.ResetPermission(url.GetOrigin(), url.GetOrigin()); 449 permission_context.ResetPermission(url.GetOrigin(), url.GetOrigin());
444 ContentSetting setting_after_reset = 450 ContentSetting setting_after_reset =
445 permission_context.GetContentSettingFromMap(url, url); 451 permission_context.GetContentSettingFromMap(url, url);
446 ContentSetting default_setting = 452 ContentSetting default_setting =
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
492 web_contents(), id1, url, true /* user_gesture */, 498 web_contents(), id1, url, true /* user_gesture */,
493 base::Bind(&TestPermissionContext::TrackPermissionDecision, 499 base::Bind(&TestPermissionContext::TrackPermissionDecision,
494 base::Unretained(&permission_context))); 500 base::Unretained(&permission_context)));
495 501
496 EXPECT_EQ(0u, permission_context.decisions().size()); 502 EXPECT_EQ(0u, permission_context.decisions().size());
497 503
498 bool persist = (response == CONTENT_SETTING_ALLOW || 504 bool persist = (response == CONTENT_SETTING_ALLOW ||
499 response == CONTENT_SETTING_BLOCK); 505 response == CONTENT_SETTING_BLOCK);
500 RespondToPermission(&permission_context, id0, url, persist, response); 506 RespondToPermission(&permission_context, id0, url, persist, response);
501 507
502 EXPECT_EQ(2u, permission_context.decisions().size()); 508 ASSERT_EQ(2u, permission_context.decisions().size());
503 EXPECT_EQ(response, permission_context.decisions()[0]); 509 EXPECT_EQ(response, permission_context.decisions()[0]);
504 EXPECT_EQ(response, permission_context.decisions()[1]); 510 EXPECT_EQ(response, permission_context.decisions()[1]);
505 EXPECT_TRUE(permission_context.tab_context_updated()); 511 EXPECT_TRUE(permission_context.tab_context_updated());
506 512
507 EXPECT_EQ(response, permission_context.GetContentSettingFromMap(url, url)); 513 EXPECT_EQ(response, permission_context.GetContentSettingFromMap(url, url));
508 } 514 }
509 515
510 private: 516 private:
511 // ChromeRenderViewHostTestHarness: 517 // ChromeRenderViewHostTestHarness:
512 void SetUp() override { 518 void SetUp() override {
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
656 TestParallelRequests(CONTENT_SETTING_ALLOW); 662 TestParallelRequests(CONTENT_SETTING_ALLOW);
657 } 663 }
658 664
659 TEST_F(PermissionContextBaseTests, TestParallelRequestsBlocked) { 665 TEST_F(PermissionContextBaseTests, TestParallelRequestsBlocked) {
660 TestParallelRequests(CONTENT_SETTING_BLOCK); 666 TestParallelRequests(CONTENT_SETTING_BLOCK);
661 } 667 }
662 668
663 TEST_F(PermissionContextBaseTests, TestParallelRequestsDismissed) { 669 TEST_F(PermissionContextBaseTests, TestParallelRequestsDismissed) {
664 TestParallelRequests(CONTENT_SETTING_ASK); 670 TestParallelRequests(CONTENT_SETTING_ASK);
665 } 671 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698