Index: chrome/browser/permissions/permission_context_base_unittest.cc |
diff --git a/chrome/browser/permissions/permission_context_base_unittest.cc b/chrome/browser/permissions/permission_context_base_unittest.cc |
index 3b130f4bb2e49ac06199a5e766806136b1f5ef9b..25cd98b23f15eb2fb9777640f04d08cfe4d2ca70 100644 |
--- a/chrome/browser/permissions/permission_context_base_unittest.cc |
+++ b/chrome/browser/permissions/permission_context_base_unittest.cc |
@@ -128,23 +128,23 @@ class PermissionContextBaseTests : public ChromeRenderViewHostTestHarness { |
void RespondToPermission(TestPermissionContext* context, |
const PermissionRequestID& id, |
const GURL& url, |
+ bool persist, |
ContentSetting response) { |
DCHECK(response == CONTENT_SETTING_ALLOW || |
response == CONTENT_SETTING_BLOCK || |
response == CONTENT_SETTING_ASK); |
#if defined(OS_ANDROID) |
- bool update_content_setting = response != CONTENT_SETTING_ASK; |
PermissionAction decision = DISMISSED; |
if (response == CONTENT_SETTING_ALLOW) |
decision = GRANTED; |
else if (response == CONTENT_SETTING_BLOCK) |
decision = DENIED; |
context->GetInfoBarController()->OnPermissionSet( |
- id, url, url, false /* user_gesture */, update_content_setting, |
- decision); |
+ id, url, url, false /* user_gesture */, persist, decision); |
#else |
PermissionRequestManager* manager = |
PermissionRequestManager::FromWebContents(web_contents()); |
+ manager->TogglePersist(persist); |
switch (response) { |
case CONTENT_SETTING_ALLOW: |
manager->Accept(); |
@@ -161,11 +161,13 @@ class PermissionContextBaseTests : public ChromeRenderViewHostTestHarness { |
#endif |
} |
- void TestAskAndGrant_TestContent() { |
- TestPermissionContext permission_context( |
- profile(), content::PermissionType::NOTIFICATIONS, |
- CONTENT_SETTINGS_TYPE_NOTIFICATIONS); |
- GURL url("http://www.google.com"); |
+ void TestAskAndDecide_TestContent(content::PermissionType permission, |
+ ContentSettingsType content_settings_type, |
+ ContentSetting decision, |
+ bool persist) { |
+ TestPermissionContext permission_context(profile(), permission, |
+ content_settings_type); |
+ GURL url("https://www.google.com"); |
NavigateAndCommit(url); |
base::HistogramTester histograms; |
@@ -179,48 +181,37 @@ class PermissionContextBaseTests : public ChromeRenderViewHostTestHarness { |
base::Bind(&TestPermissionContext::TrackPermissionDecision, |
base::Unretained(&permission_context))); |
- RespondToPermission(&permission_context, id, url, CONTENT_SETTING_ALLOW); |
+ RespondToPermission(&permission_context, id, url, persist, decision); |
EXPECT_EQ(1u, permission_context.decisions().size()); |
- EXPECT_EQ(CONTENT_SETTING_ALLOW, permission_context.decisions()[0]); |
+ EXPECT_EQ(decision, permission_context.decisions()[0]); |
EXPECT_TRUE(permission_context.tab_context_updated()); |
- EXPECT_EQ(CONTENT_SETTING_ALLOW, |
- permission_context.GetContentSettingFromMap(url, url)); |
- |
- histograms.ExpectUniqueSample( |
- "Permissions.Prompt.Accepted.PriorDismissCount.Notifications", 0, 1); |
- histograms.ExpectUniqueSample( |
- "Permissions.Prompt.Accepted.PriorIgnoreCount.Notifications", 0, 1); |
- } |
- void TestAskAndDismiss_TestContent() { |
- TestPermissionContext permission_context( |
- profile(), content::PermissionType::MIDI_SYSEX, |
- CONTENT_SETTINGS_TYPE_MIDI_SYSEX); |
- GURL url("http://www.google.es"); |
- NavigateAndCommit(url); |
- base::HistogramTester histograms; |
- |
- const PermissionRequestID id( |
- web_contents()->GetRenderProcessHost()->GetID(), |
- web_contents()->GetMainFrame()->GetRoutingID(), |
- -1); |
- permission_context.RequestPermission( |
- web_contents(), |
- id, url, true /* user_gesture */, |
- base::Bind(&TestPermissionContext::TrackPermissionDecision, |
- base::Unretained(&permission_context))); |
- |
- RespondToPermission(&permission_context, id, url, CONTENT_SETTING_ASK); |
- EXPECT_EQ(1u, permission_context.decisions().size()); |
- EXPECT_EQ(CONTENT_SETTING_ASK, permission_context.decisions()[0]); |
- EXPECT_TRUE(permission_context.tab_context_updated()); |
- EXPECT_EQ(CONTENT_SETTING_ASK, |
- permission_context.GetContentSettingFromMap(url, url)); |
+ std::string decision_string = ""; |
+ if (decision == CONTENT_SETTING_ALLOW) |
+ decision_string = "Accepted"; |
+ else if (decision == CONTENT_SETTING_BLOCK) |
+ decision_string = "Denied"; |
+ else if (decision == CONTENT_SETTING_ASK) |
+ decision_string = "Dismissed"; |
+ |
+ if (decision_string.size()) { |
+ histograms.ExpectUniqueSample( |
+ "Permissions.Prompt." + decision_string + ".PriorDismissCount." + |
+ PermissionUtil::GetPermissionString(permission), |
+ 0, 1); |
+ histograms.ExpectUniqueSample( |
+ "Permissions.Prompt." + decision_string + ".PriorIgnoreCount." + |
+ PermissionUtil::GetPermissionString(permission), |
+ 0, 1); |
+ } |
- histograms.ExpectUniqueSample( |
- "Permissions.Prompt.Dismissed.PriorDismissCount.MidiSysEx", 0, 1); |
- histograms.ExpectUniqueSample( |
- "Permissions.Prompt.Dismissed.PriorIgnoreCount.MidiSysEx", 0, 1); |
+ if (persist) { |
+ EXPECT_EQ(decision, |
+ permission_context.GetContentSettingFromMap(url, url)); |
+ } else { |
+ EXPECT_EQ(CONTENT_SETTING_ASK, |
+ permission_context.GetContentSettingFromMap(url, url)); |
+ } |
} |
void DismissMultipleTimesAndExpectBlock( |
@@ -246,7 +237,8 @@ class PermissionContextBaseTests : public ChromeRenderViewHostTestHarness { |
base::Bind(&TestPermissionContext::TrackPermissionDecision, |
base::Unretained(&permission_context))); |
- RespondToPermission(&permission_context, id, url, CONTENT_SETTING_ASK); |
+ RespondToPermission(&permission_context, id, url, false, /* persist */ |
+ CONTENT_SETTING_ASK); |
histograms.ExpectTotalCount( |
"Permissions.Prompt.Dismissed.PriorDismissCount." + |
PermissionUtil::GetPermissionString(permission_type), |
@@ -289,7 +281,8 @@ class PermissionContextBaseTests : public ChromeRenderViewHostTestHarness { |
base::Bind(&TestPermissionContext::TrackPermissionDecision, |
base::Unretained(&permission_context))); |
- RespondToPermission(&permission_context, id, url, CONTENT_SETTING_ASK); |
+ RespondToPermission(&permission_context, id, url, false, /* persist */ |
+ CONTENT_SETTING_ASK); |
histograms.ExpectTotalCount( |
"Permissions.Prompt.Dismissed.PriorDismissCount.Geolocation", |
i + 1); |
@@ -379,7 +372,8 @@ class PermissionContextBaseTests : public ChromeRenderViewHostTestHarness { |
base::Bind(&TestPermissionContext::TrackPermissionDecision, |
base::Unretained(&permission_context))); |
- RespondToPermission(&permission_context, id, url, CONTENT_SETTING_ASK); |
+ RespondToPermission(&permission_context, id, url, false, /* persist */ |
+ CONTENT_SETTING_ASK); |
EXPECT_EQ(1u, permission_context.decisions().size()); |
EXPECT_EQ(expected, permission_context.decisions()[0]); |
EXPECT_TRUE(permission_context.tab_context_updated()); |
@@ -446,7 +440,8 @@ class PermissionContextBaseTests : public ChromeRenderViewHostTestHarness { |
base::Bind(&TestPermissionContext::TrackPermissionDecision, |
base::Unretained(&permission_context))); |
- RespondToPermission(&permission_context, id, url, CONTENT_SETTING_ALLOW); |
+ RespondToPermission(&permission_context, id, url, true, /* persist */ |
+ CONTENT_SETTING_ALLOW); |
EXPECT_EQ(1u, permission_context.decisions().size()); |
EXPECT_EQ(CONTENT_SETTING_ALLOW, permission_context.decisions()[0]); |
EXPECT_TRUE(permission_context.tab_context_updated()); |
@@ -509,7 +504,9 @@ class PermissionContextBaseTests : public ChromeRenderViewHostTestHarness { |
EXPECT_EQ(0u, permission_context.decisions().size()); |
- RespondToPermission(&permission_context, id0, url, response); |
+ bool persist = (response == CONTENT_SETTING_ALLOW || |
+ response == CONTENT_SETTING_BLOCK); |
+ RespondToPermission(&permission_context, id0, url, persist, response); |
EXPECT_EQ(2u, permission_context.decisions().size()); |
EXPECT_EQ(response, permission_context.decisions()[0]); |
@@ -535,14 +532,41 @@ class PermissionContextBaseTests : public ChromeRenderViewHostTestHarness { |
// Simulates clicking Accept. The permission should be granted and |
// saved for future use. |
-TEST_F(PermissionContextBaseTests, TestAskAndGrant) { |
- TestAskAndGrant_TestContent(); |
+TEST_F(PermissionContextBaseTests, TestAskAndGrantPersist) { |
+ TestAskAndDecide_TestContent(content::PermissionType::NOTIFICATIONS, |
+ CONTENT_SETTINGS_TYPE_NOTIFICATIONS, |
+ CONTENT_SETTING_ALLOW, true); |
+} |
+ |
+// Simulates clicking Accept. The permission should be granted, but not |
+// persisted. |
+TEST_F(PermissionContextBaseTests, TestAskAndGrantNoPersist) { |
+ TestAskAndDecide_TestContent(content::PermissionType::NOTIFICATIONS, |
+ CONTENT_SETTINGS_TYPE_NOTIFICATIONS, |
+ CONTENT_SETTING_ALLOW, false); |
+} |
+ |
+// Simulates clicking Block. The permission should be denied and |
+// saved for future use. |
+TEST_F(PermissionContextBaseTests, TestAskAndBlockPersist) { |
+ TestAskAndDecide_TestContent(content::PermissionType::GEOLOCATION, |
+ CONTENT_SETTINGS_TYPE_GEOLOCATION, |
+ CONTENT_SETTING_BLOCK, true); |
+} |
+ |
+// Simulates clicking Block. The permission should be denied, but not persisted. |
+TEST_F(PermissionContextBaseTests, TestAskAndBlockNoPersist) { |
+ TestAskAndDecide_TestContent(content::PermissionType::GEOLOCATION, |
+ CONTENT_SETTINGS_TYPE_GEOLOCATION, |
+ CONTENT_SETTING_BLOCK, false); |
} |
// Simulates clicking Dismiss (X) in the infobar/bubble. |
// The permission should be denied but not saved for future use. |
TEST_F(PermissionContextBaseTests, TestAskAndDismiss) { |
- TestAskAndDismiss_TestContent(); |
+ TestAskAndDecide_TestContent(content::PermissionType::MIDI_SYSEX, |
+ CONTENT_SETTINGS_TYPE_MIDI_SYSEX, |
+ CONTENT_SETTING_ASK, false); |
} |
// Simulates clicking Dismiss (X) in the infobar/bubble with the block on too |