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

Side by Side Diff: chrome/browser/notifications/notification_permission_context_unittest.cc

Issue 2587883003: Revert of Force HostContentSettingsMap to be destroyed on its owning thread. (Closed)
Patch Set: Created 4 years 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/notifications/notification_permission_context.h" 5 #include "chrome/browser/notifications/notification_permission_context.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/memory/ptr_util.h" 8 #include "base/message_loop/message_loop.h"
9 #include "base/test/scoped_mock_time_message_loop_task_runner.h" 9 #include "base/test/test_mock_time_task_runner.h"
10 #include "base/threading/thread_task_runner_handle.h"
10 #include "base/time/time.h" 11 #include "base/time/time.h"
11 #include "chrome/browser/content_settings/host_content_settings_map_factory.h" 12 #include "chrome/browser/content_settings/host_content_settings_map_factory.h"
12 #include "chrome/browser/notifications/desktop_notification_profile_util.h" 13 #include "chrome/browser/notifications/desktop_notification_profile_util.h"
13 #include "chrome/browser/permissions/permission_manager.h" 14 #include "chrome/browser/permissions/permission_manager.h"
14 #include "chrome/browser/permissions/permission_manager_factory.h" 15 #include "chrome/browser/permissions/permission_manager_factory.h"
15 #include "chrome/browser/permissions/permission_request_id.h" 16 #include "chrome/browser/permissions/permission_request_id.h"
16 #include "chrome/browser/profiles/profile.h" 17 #include "chrome/browser/profiles/profile.h"
17 #include "chrome/test/base/chrome_render_view_host_test_harness.h" 18 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
18 #include "chrome/test/base/testing_profile.h" 19 #include "chrome/test/base/testing_profile.h"
19 #include "components/content_settings/core/browser/host_content_settings_map.h" 20 #include "components/content_settings/core/browser/host_content_settings_map.h"
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
73 int permission_set_count_; 74 int permission_set_count_;
74 bool last_permission_set_persisted_; 75 bool last_permission_set_persisted_;
75 ContentSetting last_permission_set_setting_; 76 ContentSetting last_permission_set_setting_;
76 }; 77 };
77 78
78 } // namespace 79 } // namespace
79 80
80 class NotificationPermissionContextTest 81 class NotificationPermissionContextTest
81 : public ChromeRenderViewHostTestHarness { 82 : public ChromeRenderViewHostTestHarness {
82 public: 83 public:
84 scoped_refptr<base::TestMockTimeTaskRunner> SwitchToMockTime() {
85 old_task_runner_ = base::ThreadTaskRunnerHandle::Get();
86 scoped_refptr<base::TestMockTimeTaskRunner> task_runner(
87 new base::TestMockTimeTaskRunner(base::Time::Now(),
88 base::TimeTicks::Now()));
89 base::MessageLoop::current()->SetTaskRunner(task_runner);
90 return task_runner;
91 }
92
83 void TearDown() override { 93 void TearDown() override {
84 mock_time_task_runner_.reset(); 94 if (old_task_runner_) {
95 base::MessageLoop::current()->SetTaskRunner(old_task_runner_);
96 old_task_runner_ = nullptr;
97 }
85 ChromeRenderViewHostTestHarness::TearDown(); 98 ChromeRenderViewHostTestHarness::TearDown();
86 } 99 }
87 100
88 protected: 101 protected:
89 base::TestMockTimeTaskRunner* SwitchToMockTime() {
90 EXPECT_FALSE(mock_time_task_runner_);
91 mock_time_task_runner_ =
92 base::MakeUnique<base::ScopedMockTimeMessageLoopTaskRunner>();
93 return mock_time_task_runner_->task_runner();
94 }
95
96 void UpdateContentSetting(NotificationPermissionContext* context, 102 void UpdateContentSetting(NotificationPermissionContext* context,
97 const GURL& requesting_origin, 103 const GURL& requesting_origin,
98 const GURL& embedding_origin, 104 const GURL& embedding_origin,
99 ContentSetting setting) { 105 ContentSetting setting) {
100 context->UpdateContentSetting(requesting_origin, embedding_origin, setting); 106 context->UpdateContentSetting(requesting_origin, embedding_origin, setting);
101 } 107 }
102 108
103 private: 109 private:
104 std::unique_ptr<base::ScopedMockTimeMessageLoopTaskRunner> 110 scoped_refptr<base::SingleThreadTaskRunner> old_task_runner_;
105 mock_time_task_runner_;
106 }; 111 };
107 112
108 // Web Notification permission requests will completely ignore the embedder 113 // Web Notification permission requests will completely ignore the embedder
109 // origin. See https://crbug.com/416894. 114 // origin. See https://crbug.com/416894.
110 TEST_F(NotificationPermissionContextTest, IgnoresEmbedderOrigin) { 115 TEST_F(NotificationPermissionContextTest, IgnoresEmbedderOrigin) {
111 GURL requesting_origin("https://example.com"); 116 GURL requesting_origin("https://example.com");
112 GURL embedding_origin("https://chrome.com"); 117 GURL embedding_origin("https://chrome.com");
113 GURL different_origin("https://foobar.com"); 118 GURL different_origin("https://foobar.com");
114 119
115 NotificationPermissionContext context(profile(), 120 NotificationPermissionContext context(profile(),
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
203 TEST_F(NotificationPermissionContextTest, TestDenyInIncognitoAfterDelay) { 208 TEST_F(NotificationPermissionContextTest, TestDenyInIncognitoAfterDelay) {
204 TestNotificationPermissionContext permission_context( 209 TestNotificationPermissionContext permission_context(
205 profile()->GetOffTheRecordProfile()); 210 profile()->GetOffTheRecordProfile());
206 GURL url("https://www.example.com"); 211 GURL url("https://www.example.com");
207 NavigateAndCommit(url); 212 NavigateAndCommit(url);
208 213
209 const PermissionRequestID id(web_contents()->GetRenderProcessHost()->GetID(), 214 const PermissionRequestID id(web_contents()->GetRenderProcessHost()->GetID(),
210 web_contents()->GetMainFrame()->GetRoutingID(), 215 web_contents()->GetMainFrame()->GetRoutingID(),
211 -1); 216 -1);
212 217
213 base::TestMockTimeTaskRunner* task_runner = SwitchToMockTime(); 218 scoped_refptr<base::TestMockTimeTaskRunner> task_runner(SwitchToMockTime());
214 219
215 ASSERT_EQ(0, permission_context.permission_set_count()); 220 ASSERT_EQ(0, permission_context.permission_set_count());
216 ASSERT_FALSE(permission_context.last_permission_set_persisted()); 221 ASSERT_FALSE(permission_context.last_permission_set_persisted());
217 ASSERT_EQ(CONTENT_SETTING_DEFAULT, 222 ASSERT_EQ(CONTENT_SETTING_DEFAULT,
218 permission_context.last_permission_set_setting()); 223 permission_context.last_permission_set_setting());
219 224
220 permission_context.RequestPermission( 225 permission_context.RequestPermission(
221 web_contents(), id, url, true /* user_gesture */, base::Bind(&DoNothing)); 226 web_contents(), id, url, true /* user_gesture */, base::Bind(&DoNothing));
222 227
223 // Should be blocked after 1-2 seconds, but the timer is reset whenever the 228 // Should be blocked after 1-2 seconds, but the timer is reset whenever the
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
269 TEST_F(NotificationPermissionContextTest, TestCancelledIncognitoRequest) { 274 TEST_F(NotificationPermissionContextTest, TestCancelledIncognitoRequest) {
270 TestNotificationPermissionContext permission_context( 275 TestNotificationPermissionContext permission_context(
271 profile()->GetOffTheRecordProfile()); 276 profile()->GetOffTheRecordProfile());
272 GURL url("https://www.example.com"); 277 GURL url("https://www.example.com");
273 NavigateAndCommit(url); 278 NavigateAndCommit(url);
274 279
275 const PermissionRequestID id(web_contents()->GetRenderProcessHost()->GetID(), 280 const PermissionRequestID id(web_contents()->GetRenderProcessHost()->GetID(),
276 web_contents()->GetMainFrame()->GetRoutingID(), 281 web_contents()->GetMainFrame()->GetRoutingID(),
277 -1); 282 -1);
278 283
279 base::TestMockTimeTaskRunner* task_runner = SwitchToMockTime(); 284 scoped_refptr<base::TestMockTimeTaskRunner> task_runner(SwitchToMockTime());
280 285
281 content::PermissionManager* permission_manager = 286 content::PermissionManager* permission_manager =
282 PermissionManagerFactory::GetForProfile( 287 PermissionManagerFactory::GetForProfile(
283 profile()->GetOffTheRecordProfile()); 288 profile()->GetOffTheRecordProfile());
284 289
285 // Request and cancel the permission via PermissionManager. That way if 290 // Request and cancel the permission via PermissionManager. That way if
286 // https://crbug.com/586944 regresses, then as well as the EXPECT_EQs below 291 // https://crbug.com/586944 regresses, then as well as the EXPECT_EQs below
287 // failing, PermissionManager::OnPermissionsRequestResponseStatus will crash. 292 // failing, PermissionManager::OnPermissionsRequestResponseStatus will crash.
288 int request_id = permission_manager->RequestPermission( 293 int request_id = permission_manager->RequestPermission(
289 content::PermissionType::NOTIFICATIONS, web_contents()->GetMainFrame(), 294 content::PermissionType::NOTIFICATIONS, web_contents()->GetMainFrame(),
(...skipping 16 matching lines...) Expand all
306 NavigateAndCommit(url); 311 NavigateAndCommit(url);
307 web_contents()->WasShown(); 312 web_contents()->WasShown();
308 313
309 const PermissionRequestID id0(web_contents()->GetRenderProcessHost()->GetID(), 314 const PermissionRequestID id0(web_contents()->GetRenderProcessHost()->GetID(),
310 web_contents()->GetMainFrame()->GetRoutingID(), 315 web_contents()->GetMainFrame()->GetRoutingID(),
311 0); 316 0);
312 const PermissionRequestID id1(web_contents()->GetRenderProcessHost()->GetID(), 317 const PermissionRequestID id1(web_contents()->GetRenderProcessHost()->GetID(),
313 web_contents()->GetMainFrame()->GetRoutingID(), 318 web_contents()->GetMainFrame()->GetRoutingID(),
314 1); 319 1);
315 320
316 base::TestMockTimeTaskRunner* task_runner = SwitchToMockTime(); 321 scoped_refptr<base::TestMockTimeTaskRunner> task_runner(SwitchToMockTime());
317 322
318 ASSERT_EQ(0, permission_context.permission_set_count()); 323 ASSERT_EQ(0, permission_context.permission_set_count());
319 ASSERT_FALSE(permission_context.last_permission_set_persisted()); 324 ASSERT_FALSE(permission_context.last_permission_set_persisted());
320 ASSERT_EQ(CONTENT_SETTING_DEFAULT, 325 ASSERT_EQ(CONTENT_SETTING_DEFAULT,
321 permission_context.last_permission_set_setting()); 326 permission_context.last_permission_set_setting());
322 327
323 permission_context.RequestPermission(web_contents(), id0, url, 328 permission_context.RequestPermission(web_contents(), id0, url,
324 true /* user_gesture */, 329 true /* user_gesture */,
325 base::Bind(&DoNothing)); 330 base::Bind(&DoNothing));
326 permission_context.RequestPermission(web_contents(), id1, url, 331 permission_context.RequestPermission(web_contents(), id1, url,
(...skipping 23 matching lines...) Expand all
350 // After another 2.5 seconds, the second permission request should also have 355 // After another 2.5 seconds, the second permission request should also have
351 // received a response. 356 // received a response.
352 task_runner->FastForwardBy(base::TimeDelta::FromMilliseconds(2500)); 357 task_runner->FastForwardBy(base::TimeDelta::FromMilliseconds(2500));
353 EXPECT_EQ(2, permission_context.permission_set_count()); 358 EXPECT_EQ(2, permission_context.permission_set_count());
354 EXPECT_TRUE(permission_context.last_permission_set_persisted()); 359 EXPECT_TRUE(permission_context.last_permission_set_persisted());
355 EXPECT_EQ(CONTENT_SETTING_BLOCK, 360 EXPECT_EQ(CONTENT_SETTING_BLOCK,
356 permission_context.last_permission_set_setting()); 361 permission_context.last_permission_set_setting());
357 EXPECT_EQ(CONTENT_SETTING_BLOCK, 362 EXPECT_EQ(CONTENT_SETTING_BLOCK,
358 permission_context.GetContentSettingFromMap(url, url)); 363 permission_context.GetContentSettingFromMap(url, url));
359 } 364 }
OLDNEW
« no previous file with comments | « base/threading/sequenced_worker_pool.cc ('k') | components/content_settings/core/browser/cookie_settings_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698