Chromium Code Reviews| OLD | NEW |
|---|---|
| 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/safe_browsing/permission_reporter.h" | 5 #include "chrome/browser/safe_browsing/permission_reporter.h" |
| 6 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/memory/ptr_util.h" | 8 #include "base/memory/ptr_util.h" |
| 9 #include "base/memory/ref_counted.h" | 9 #include "base/memory/ref_counted.h" |
| 10 #include "base/run_loop.h" | 10 #include "base/run_loop.h" |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 124 permission_report.origin()); | 124 permission_report.origin()); |
| 125 EXPECT_EQ(PermissionReport::DESKTOP_PLATFORM, | 125 EXPECT_EQ(PermissionReport::DESKTOP_PLATFORM, |
| 126 permission_report.platform_type()); | 126 permission_report.platform_type()); |
| 127 EXPECT_EQ(PermissionReport::NO_GESTURE, permission_report.gesture()); | 127 EXPECT_EQ(PermissionReport::NO_GESTURE, permission_report.gesture()); |
| 128 EXPECT_EQ(PermissionReport::PERSIST_DECISION_UNSPECIFIED, | 128 EXPECT_EQ(PermissionReport::PERSIST_DECISION_UNSPECIFIED, |
| 129 permission_report.persisted()); | 129 permission_report.persisted()); |
| 130 EXPECT_EQ(0, permission_report.num_prior_dismissals()); | 130 EXPECT_EQ(0, permission_report.num_prior_dismissals()); |
| 131 EXPECT_EQ(0, permission_report.num_prior_ignores()); | 131 EXPECT_EQ(0, permission_report.num_prior_ignores()); |
| 132 } | 132 } |
| 133 | 133 |
| 134 IN_PROC_BROWSER_TEST_F(PermissionReporterBrowserTest, | |
| 135 PermissionActionReportingPriorIgnoreCount) { | |
| 136 // Set up the Sync client. | |
| 137 ASSERT_TRUE(SetupSync()); | |
| 138 Profile* profile = GetProfile(0); | |
| 139 Browser* browser = CreateBrowser(profile); | |
| 140 | |
| 141 // Set up mock permission manager and prompt factory. | |
| 142 PermissionRequestManager* manager = GetPermissionRequestManager(browser); | |
| 143 std::unique_ptr<MockPermissionPromptFactory> mock_permission_prompt_factory = | |
| 144 base::MakeUnique<MockPermissionPromptFactory>(manager); | |
| 145 manager->DisplayPendingRequests(); | |
| 146 | |
| 147 ASSERT_TRUE(embedded_test_server()->Start()); | |
| 148 ui_test_utils::NavigateToURLBlockUntilNavigationsComplete( | |
| 149 browser, embedded_test_server()->GetURL("/permissions/request.html"), | |
| 150 1); | |
| 151 | |
| 152 mock_permission_prompt_factory->WaitForPermissionBubble(); | |
| 153 EXPECT_TRUE(mock_permission_prompt_factory->is_visible()); | |
| 154 | |
| 155 // Ignore this prompt and navigate away. | |
| 156 ui_test_utils::NavigateToURLBlockUntilNavigationsComplete( | |
| 157 browser, embedded_test_server()->GetURL("/permissions/request.html"), | |
| 158 1); | |
| 159 | |
| 160 mock_permission_prompt_factory->WaitForPermissionBubble(); | |
| 161 EXPECT_TRUE(mock_permission_prompt_factory->is_visible()); | |
| 162 | |
| 163 // We don't need to call mock_report_sender()->WaitForReportSent() here | |
| 164 // because the report has already been sent during the second call to | |
| 165 // NavigateToURLBlockUntilNavigationsComplete(). | |
| 166 EXPECT_EQ(1, mock_report_sender()->GetAndResetNumberOfReportsSent()); | |
| 167 | |
| 168 PermissionReport permission_report; | |
| 169 ASSERT_TRUE( | |
| 170 permission_report.ParseFromString(mock_report_sender()->latest_report())); | |
| 171 EXPECT_EQ(PermissionReport::GEOLOCATION, permission_report.permission()); | |
| 172 EXPECT_EQ(PermissionReport::IGNORED, permission_report.action()); | |
| 173 EXPECT_EQ(embedded_test_server()->base_url().spec(), | |
| 174 permission_report.origin()); | |
| 175 EXPECT_EQ(PermissionReport::DESKTOP_PLATFORM, | |
|
Nathan Parker
2016/09/01 18:58:50
This got me thinking... are browser tests run on A
| |
| 176 permission_report.platform_type()); | |
| 177 EXPECT_EQ(PermissionReport::NO_GESTURE, permission_report.gesture()); | |
| 178 EXPECT_EQ(PermissionReport::PERSIST_DECISION_UNSPECIFIED, | |
| 179 permission_report.persisted()); | |
| 180 EXPECT_EQ(0, permission_report.num_prior_dismissals()); | |
| 181 EXPECT_EQ(0, permission_report.num_prior_ignores()); | |
| 182 | |
| 183 // Now accept the prompt. | |
| 184 AcceptBubble(browser); | |
| 185 | |
| 186 EXPECT_FALSE(mock_permission_prompt_factory->is_visible()); | |
| 187 mock_report_sender()->WaitForReportSent(); | |
| 188 EXPECT_EQ(1, mock_report_sender()->GetAndResetNumberOfReportsSent()); | |
| 189 | |
| 190 ASSERT_TRUE( | |
| 191 permission_report.ParseFromString(mock_report_sender()->latest_report())); | |
| 192 EXPECT_EQ(PermissionReport::GEOLOCATION, permission_report.permission()); | |
| 193 EXPECT_EQ(PermissionReport::GRANTED, permission_report.action()); | |
| 194 EXPECT_EQ(embedded_test_server()->base_url().spec(), | |
| 195 permission_report.origin()); | |
| 196 EXPECT_EQ(PermissionReport::DESKTOP_PLATFORM, | |
| 197 permission_report.platform_type()); | |
| 198 EXPECT_EQ(PermissionReport::NO_GESTURE, permission_report.gesture()); | |
| 199 EXPECT_EQ(PermissionReport::PERSIST_DECISION_UNSPECIFIED, | |
| 200 permission_report.persisted()); | |
| 201 EXPECT_EQ(0, permission_report.num_prior_dismissals()); | |
| 202 // Ensure that we correctly record one prior ignore. | |
| 203 EXPECT_EQ(1, permission_report.num_prior_ignores()); | |
| 204 } | |
| 205 | |
| 134 } // namespace safe_browsing | 206 } // namespace safe_browsing |
| OLD | NEW |