Chromium Code Reviews| Index: chrome/browser/safe_browsing/permission_reporter_browsertest.cc |
| diff --git a/chrome/browser/safe_browsing/permission_reporter_browsertest.cc b/chrome/browser/safe_browsing/permission_reporter_browsertest.cc |
| index 256d2422ea64608b2b375206123d07bb0ea4ce3e..cc35007af23ac13a6945686be6a1910206f3516d 100644 |
| --- a/chrome/browser/safe_browsing/permission_reporter_browsertest.cc |
| +++ b/chrome/browser/safe_browsing/permission_reporter_browsertest.cc |
| @@ -131,4 +131,76 @@ IN_PROC_BROWSER_TEST_F(PermissionReporterBrowserTest, |
| EXPECT_EQ(0, permission_report.num_prior_ignores()); |
| } |
| +IN_PROC_BROWSER_TEST_F(PermissionReporterBrowserTest, |
| + PermissionActionReportingPriorIgnoreCount) { |
| + // Set up the Sync client. |
| + ASSERT_TRUE(SetupSync()); |
| + Profile* profile = GetProfile(0); |
| + Browser* browser = CreateBrowser(profile); |
| + |
| + // Set up mock permission manager and prompt factory. |
| + PermissionRequestManager* manager = GetPermissionRequestManager(browser); |
| + std::unique_ptr<MockPermissionPromptFactory> mock_permission_prompt_factory = |
| + base::MakeUnique<MockPermissionPromptFactory>(manager); |
| + manager->DisplayPendingRequests(); |
| + |
| + ASSERT_TRUE(embedded_test_server()->Start()); |
| + ui_test_utils::NavigateToURLBlockUntilNavigationsComplete( |
| + browser, embedded_test_server()->GetURL("/permissions/request.html"), |
| + 1); |
| + |
| + mock_permission_prompt_factory->WaitForPermissionBubble(); |
| + EXPECT_TRUE(mock_permission_prompt_factory->is_visible()); |
| + |
| + // Ignore this prompt and navigate away. |
| + ui_test_utils::NavigateToURLBlockUntilNavigationsComplete( |
| + browser, embedded_test_server()->GetURL("/permissions/request.html"), |
| + 1); |
| + |
| + mock_permission_prompt_factory->WaitForPermissionBubble(); |
| + EXPECT_TRUE(mock_permission_prompt_factory->is_visible()); |
| + |
| + // We don't need to call mock_report_sender()->WaitForReportSent() here |
| + // because the report has already been sent during the second call to |
| + // NavigateToURLBlockUntilNavigationsComplete(). |
| + EXPECT_EQ(1, mock_report_sender()->GetAndResetNumberOfReportsSent()); |
| + |
| + PermissionReport permission_report; |
| + ASSERT_TRUE( |
| + permission_report.ParseFromString(mock_report_sender()->latest_report())); |
| + EXPECT_EQ(PermissionReport::GEOLOCATION, permission_report.permission()); |
| + EXPECT_EQ(PermissionReport::IGNORED, permission_report.action()); |
| + EXPECT_EQ(embedded_test_server()->base_url().spec(), |
| + permission_report.origin()); |
| + EXPECT_EQ(PermissionReport::DESKTOP_PLATFORM, |
|
Nathan Parker
2016/09/01 18:58:50
This got me thinking... are browser tests run on A
|
| + permission_report.platform_type()); |
| + EXPECT_EQ(PermissionReport::NO_GESTURE, permission_report.gesture()); |
| + EXPECT_EQ(PermissionReport::PERSIST_DECISION_UNSPECIFIED, |
| + permission_report.persisted()); |
| + EXPECT_EQ(0, permission_report.num_prior_dismissals()); |
| + EXPECT_EQ(0, permission_report.num_prior_ignores()); |
| + |
| + // Now accept the prompt. |
| + AcceptBubble(browser); |
| + |
| + EXPECT_FALSE(mock_permission_prompt_factory->is_visible()); |
| + mock_report_sender()->WaitForReportSent(); |
| + EXPECT_EQ(1, mock_report_sender()->GetAndResetNumberOfReportsSent()); |
| + |
| + ASSERT_TRUE( |
| + permission_report.ParseFromString(mock_report_sender()->latest_report())); |
| + EXPECT_EQ(PermissionReport::GEOLOCATION, permission_report.permission()); |
| + EXPECT_EQ(PermissionReport::GRANTED, permission_report.action()); |
| + EXPECT_EQ(embedded_test_server()->base_url().spec(), |
| + permission_report.origin()); |
| + EXPECT_EQ(PermissionReport::DESKTOP_PLATFORM, |
| + permission_report.platform_type()); |
| + EXPECT_EQ(PermissionReport::NO_GESTURE, permission_report.gesture()); |
| + EXPECT_EQ(PermissionReport::PERSIST_DECISION_UNSPECIFIED, |
| + permission_report.persisted()); |
| + EXPECT_EQ(0, permission_report.num_prior_dismissals()); |
| + // Ensure that we correctly record one prior ignore. |
| + EXPECT_EQ(1, permission_report.num_prior_ignores()); |
| +} |
| + |
| } // namespace safe_browsing |