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

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

Issue 1771743002: Move geolocation and permission mojoms into WebKit/public/platform. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 9 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
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/permissions/permission_manager.h" 5 #include "chrome/browser/permissions/permission_manager.h"
6 6
7 #include "base/macros.h" 7 #include "base/macros.h"
8 #include "build/build_config.h" 8 #include "build/build_config.h"
9 #include "chrome/browser/content_settings/host_content_settings_map_factory.h" 9 #include "chrome/browser/content_settings/host_content_settings_map_factory.h"
10 #include "chrome/browser/permissions/permission_manager_factory.h" 10 #include "chrome/browser/permissions/permission_manager_factory.h"
11 #include "chrome/test/base/testing_profile.h" 11 #include "chrome/test/base/testing_profile.h"
12 #include "components/content_settings/core/browser/host_content_settings_map.h" 12 #include "components/content_settings/core/browser/host_content_settings_map.h"
13 #include "content/public/browser/permission_type.h" 13 #include "content/public/browser/permission_type.h"
14 #include "content/public/test/test_browser_thread_bundle.h" 14 #include "content/public/test/test_browser_thread_bundle.h"
15 #include "testing/gtest/include/gtest/gtest.h" 15 #include "testing/gtest/include/gtest/gtest.h"
16 16
17 using blink::mojom::PermissionStatus;
17 using content::PermissionType; 18 using content::PermissionType;
18 using content::PermissionStatus;
19 19
20 namespace { 20 namespace {
21 21
22 class PermissionManagerTestingProfile final : public TestingProfile { 22 class PermissionManagerTestingProfile final : public TestingProfile {
23 public: 23 public:
24 PermissionManagerTestingProfile() {} 24 PermissionManagerTestingProfile() {}
25 ~PermissionManagerTestingProfile() override {} 25 ~PermissionManagerTestingProfile() override {}
26 26
27 PermissionManager* GetPermissionManager() override { 27 PermissionManager* GetPermissionManager() override {
28 return PermissionManagerFactory::GetForProfile(this); 28 return PermissionManagerFactory::GetForProfile(this);
29 } 29 }
30 30
31 DISALLOW_COPY_AND_ASSIGN(PermissionManagerTestingProfile); 31 DISALLOW_COPY_AND_ASSIGN(PermissionManagerTestingProfile);
32 }; 32 };
33 33
34 } // anonymous namespace 34 } // anonymous namespace
35 35
36 class PermissionManagerTest : public testing::Test { 36 class PermissionManagerTest : public testing::Test {
37 public: 37 public:
38 void OnPermissionChange(PermissionStatus permission) { 38 void OnPermissionChange(PermissionStatus permission) {
39 callback_called_ = true; 39 callback_called_ = true;
40 callback_result_ = permission; 40 callback_result_ = permission;
41 } 41 }
42 42
43 protected: 43 protected:
44 PermissionManagerTest() 44 PermissionManagerTest()
45 : url_("https://example.com"), 45 : url_("https://example.com"),
46 other_url_("https://foo.com"), 46 other_url_("https://foo.com"),
47 callback_called_(false), 47 callback_called_(false),
48 callback_result_(content::PermissionStatus::ASK) {} 48 callback_result_(PermissionStatus::ASK) {}
49 49
50 PermissionManager* GetPermissionManager() { 50 PermissionManager* GetPermissionManager() {
51 return profile_.GetPermissionManager(); 51 return profile_.GetPermissionManager();
52 } 52 }
53 53
54 HostContentSettingsMap* GetHostContentSettingsMap() { 54 HostContentSettingsMap* GetHostContentSettingsMap() {
55 return HostContentSettingsMapFactory::GetForProfile(&profile_); 55 return HostContentSettingsMapFactory::GetForProfile(&profile_);
56 } 56 }
57 57
58 void CheckPermissionStatus(PermissionType type, 58 void CheckPermissionStatus(PermissionType type,
(...skipping 18 matching lines...) Expand all
77 } 77 }
78 78
79 bool callback_called() const { 79 bool callback_called() const {
80 return callback_called_; 80 return callback_called_;
81 } 81 }
82 82
83 PermissionStatus callback_result() const { return callback_result_; } 83 PermissionStatus callback_result() const { return callback_result_; }
84 84
85 void Reset() { 85 void Reset() {
86 callback_called_ = false; 86 callback_called_ = false;
87 callback_result_ = content::PermissionStatus::ASK; 87 callback_result_ = PermissionStatus::ASK;
88 } 88 }
89 89
90 private: 90 private:
91 const GURL url_; 91 const GURL url_;
92 const GURL other_url_; 92 const GURL other_url_;
93 bool callback_called_; 93 bool callback_called_;
94 PermissionStatus callback_result_; 94 PermissionStatus callback_result_;
95 content::TestBrowserThreadBundle thread_bundle_; 95 content::TestBrowserThreadBundle thread_bundle_;
96 PermissionManagerTestingProfile profile_; 96 PermissionManagerTestingProfile profile_;
97 }; 97 };
98 98
99 TEST_F(PermissionManagerTest, GetPermissionStatusDefault) { 99 TEST_F(PermissionManagerTest, GetPermissionStatusDefault) {
100 CheckPermissionStatus(PermissionType::MIDI_SYSEX, 100 CheckPermissionStatus(PermissionType::MIDI_SYSEX, PermissionStatus::ASK);
101 content::PermissionStatus::ASK); 101 CheckPermissionStatus(PermissionType::PUSH_MESSAGING, PermissionStatus::ASK);
102 CheckPermissionStatus(PermissionType::PUSH_MESSAGING, 102 CheckPermissionStatus(PermissionType::NOTIFICATIONS, PermissionStatus::ASK);
103 content::PermissionStatus::ASK); 103 CheckPermissionStatus(PermissionType::GEOLOCATION, PermissionStatus::ASK);
104 CheckPermissionStatus(PermissionType::NOTIFICATIONS,
105 content::PermissionStatus::ASK);
106 CheckPermissionStatus(PermissionType::GEOLOCATION,
107 content::PermissionStatus::ASK);
108 #if defined(OS_ANDROID) 104 #if defined(OS_ANDROID)
109 CheckPermissionStatus(PermissionType::PROTECTED_MEDIA_IDENTIFIER, 105 CheckPermissionStatus(PermissionType::PROTECTED_MEDIA_IDENTIFIER,
110 content::PermissionStatus::ASK); 106 PermissionStatus::ASK);
111 #endif 107 #endif
112 } 108 }
113 109
114 TEST_F(PermissionManagerTest, GetPermissionStatusAfterSet) { 110 TEST_F(PermissionManagerTest, GetPermissionStatusAfterSet) {
115 SetPermission(CONTENT_SETTINGS_TYPE_GEOLOCATION, CONTENT_SETTING_ALLOW); 111 SetPermission(CONTENT_SETTINGS_TYPE_GEOLOCATION, CONTENT_SETTING_ALLOW);
116 CheckPermissionStatus(PermissionType::GEOLOCATION, 112 CheckPermissionStatus(PermissionType::GEOLOCATION, PermissionStatus::GRANTED);
117 content::PermissionStatus::GRANTED);
118 113
119 SetPermission(CONTENT_SETTINGS_TYPE_NOTIFICATIONS, CONTENT_SETTING_ALLOW); 114 SetPermission(CONTENT_SETTINGS_TYPE_NOTIFICATIONS, CONTENT_SETTING_ALLOW);
120 CheckPermissionStatus(PermissionType::NOTIFICATIONS, 115 CheckPermissionStatus(PermissionType::NOTIFICATIONS,
121 content::PermissionStatus::GRANTED); 116 PermissionStatus::GRANTED);
122 117
123 SetPermission(CONTENT_SETTINGS_TYPE_MIDI_SYSEX, CONTENT_SETTING_ALLOW); 118 SetPermission(CONTENT_SETTINGS_TYPE_MIDI_SYSEX, CONTENT_SETTING_ALLOW);
124 CheckPermissionStatus(PermissionType::MIDI_SYSEX, 119 CheckPermissionStatus(PermissionType::MIDI_SYSEX, PermissionStatus::GRANTED);
125 content::PermissionStatus::GRANTED);
126 120
127 SetPermission(CONTENT_SETTINGS_TYPE_PUSH_MESSAGING, CONTENT_SETTING_ALLOW); 121 SetPermission(CONTENT_SETTINGS_TYPE_PUSH_MESSAGING, CONTENT_SETTING_ALLOW);
128 CheckPermissionStatus(PermissionType::PUSH_MESSAGING, 122 CheckPermissionStatus(PermissionType::PUSH_MESSAGING,
129 content::PermissionStatus::GRANTED); 123 PermissionStatus::GRANTED);
130 124
131 #if defined(OS_ANDROID) 125 #if defined(OS_ANDROID)
132 SetPermission(CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER, 126 SetPermission(CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER,
133 CONTENT_SETTING_ALLOW); 127 CONTENT_SETTING_ALLOW);
134 CheckPermissionStatus(PermissionType::PROTECTED_MEDIA_IDENTIFIER, 128 CheckPermissionStatus(PermissionType::PROTECTED_MEDIA_IDENTIFIER,
135 content::PermissionStatus::GRANTED); 129 PermissionStatus::GRANTED);
136 #endif 130 #endif
137 } 131 }
138 132
139 TEST_F(PermissionManagerTest, SameTypeChangeNotifies) { 133 TEST_F(PermissionManagerTest, SameTypeChangeNotifies) {
140 int subscription_id = GetPermissionManager()->SubscribePermissionStatusChange( 134 int subscription_id = GetPermissionManager()->SubscribePermissionStatusChange(
141 PermissionType::GEOLOCATION, url(), url(), 135 PermissionType::GEOLOCATION, url(), url(),
142 base::Bind(&PermissionManagerTest::OnPermissionChange, 136 base::Bind(&PermissionManagerTest::OnPermissionChange,
143 base::Unretained(this))); 137 base::Unretained(this)));
144 138
145 GetHostContentSettingsMap()->SetContentSetting( 139 GetHostContentSettingsMap()->SetContentSetting(
146 ContentSettingsPattern::FromURLNoWildcard(url()), 140 ContentSettingsPattern::FromURLNoWildcard(url()),
147 ContentSettingsPattern::FromURLNoWildcard(url()), 141 ContentSettingsPattern::FromURLNoWildcard(url()),
148 CONTENT_SETTINGS_TYPE_GEOLOCATION, 142 CONTENT_SETTINGS_TYPE_GEOLOCATION,
149 std::string(), 143 std::string(),
150 CONTENT_SETTING_ALLOW); 144 CONTENT_SETTING_ALLOW);
151 145
152 EXPECT_TRUE(callback_called()); 146 EXPECT_TRUE(callback_called());
153 EXPECT_EQ(content::PermissionStatus::GRANTED, callback_result()); 147 EXPECT_EQ(PermissionStatus::GRANTED, callback_result());
154 148
155 GetPermissionManager()->UnsubscribePermissionStatusChange(subscription_id); 149 GetPermissionManager()->UnsubscribePermissionStatusChange(subscription_id);
156 } 150 }
157 151
158 TEST_F(PermissionManagerTest, DifferentTypeChangeDoesNotNotify) { 152 TEST_F(PermissionManagerTest, DifferentTypeChangeDoesNotNotify) {
159 int subscription_id = GetPermissionManager()->SubscribePermissionStatusChange( 153 int subscription_id = GetPermissionManager()->SubscribePermissionStatusChange(
160 PermissionType::GEOLOCATION, url(), url(), 154 PermissionType::GEOLOCATION, url(), url(),
161 base::Bind(&PermissionManagerTest::OnPermissionChange, 155 base::Bind(&PermissionManagerTest::OnPermissionChange,
162 base::Unretained(this))); 156 base::Unretained(this)));
163 157
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
234 base::Unretained(this))); 228 base::Unretained(this)));
235 229
236 GetHostContentSettingsMap()->SetContentSetting( 230 GetHostContentSettingsMap()->SetContentSetting(
237 ContentSettingsPattern::Wildcard(), 231 ContentSettingsPattern::Wildcard(),
238 ContentSettingsPattern::Wildcard(), 232 ContentSettingsPattern::Wildcard(),
239 CONTENT_SETTINGS_TYPE_GEOLOCATION, 233 CONTENT_SETTINGS_TYPE_GEOLOCATION,
240 std::string(), 234 std::string(),
241 CONTENT_SETTING_ALLOW); 235 CONTENT_SETTING_ALLOW);
242 236
243 EXPECT_TRUE(callback_called()); 237 EXPECT_TRUE(callback_called());
244 EXPECT_EQ(content::PermissionStatus::GRANTED, callback_result()); 238 EXPECT_EQ(PermissionStatus::GRANTED, callback_result());
245 239
246 GetPermissionManager()->UnsubscribePermissionStatusChange(subscription_id); 240 GetPermissionManager()->UnsubscribePermissionStatusChange(subscription_id);
247 } 241 }
248 242
249 TEST_F(PermissionManagerTest, ClearSettingsNotifies) { 243 TEST_F(PermissionManagerTest, ClearSettingsNotifies) {
250 GetHostContentSettingsMap()->SetContentSetting( 244 GetHostContentSettingsMap()->SetContentSetting(
251 ContentSettingsPattern::FromURLNoWildcard(url()), 245 ContentSettingsPattern::FromURLNoWildcard(url()),
252 ContentSettingsPattern::FromURLNoWildcard(url()), 246 ContentSettingsPattern::FromURLNoWildcard(url()),
253 CONTENT_SETTINGS_TYPE_GEOLOCATION, 247 CONTENT_SETTINGS_TYPE_GEOLOCATION,
254 std::string(), 248 std::string(),
255 CONTENT_SETTING_ALLOW); 249 CONTENT_SETTING_ALLOW);
256 250
257 int subscription_id = GetPermissionManager()->SubscribePermissionStatusChange( 251 int subscription_id = GetPermissionManager()->SubscribePermissionStatusChange(
258 PermissionType::GEOLOCATION, url(), url(), 252 PermissionType::GEOLOCATION, url(), url(),
259 base::Bind(&PermissionManagerTest::OnPermissionChange, 253 base::Bind(&PermissionManagerTest::OnPermissionChange,
260 base::Unretained(this))); 254 base::Unretained(this)));
261 255
262 GetHostContentSettingsMap()->ClearSettingsForOneType( 256 GetHostContentSettingsMap()->ClearSettingsForOneType(
263 CONTENT_SETTINGS_TYPE_GEOLOCATION); 257 CONTENT_SETTINGS_TYPE_GEOLOCATION);
264 258
265 EXPECT_TRUE(callback_called()); 259 EXPECT_TRUE(callback_called());
266 EXPECT_EQ(content::PermissionStatus::ASK, callback_result()); 260 EXPECT_EQ(PermissionStatus::ASK, callback_result());
267 261
268 GetPermissionManager()->UnsubscribePermissionStatusChange(subscription_id); 262 GetPermissionManager()->UnsubscribePermissionStatusChange(subscription_id);
269 } 263 }
270 264
271 TEST_F(PermissionManagerTest, NewValueCorrectlyPassed) { 265 TEST_F(PermissionManagerTest, NewValueCorrectlyPassed) {
272 int subscription_id = GetPermissionManager()->SubscribePermissionStatusChange( 266 int subscription_id = GetPermissionManager()->SubscribePermissionStatusChange(
273 PermissionType::GEOLOCATION, url(), url(), 267 PermissionType::GEOLOCATION, url(), url(),
274 base::Bind(&PermissionManagerTest::OnPermissionChange, 268 base::Bind(&PermissionManagerTest::OnPermissionChange,
275 base::Unretained(this))); 269 base::Unretained(this)));
276 270
277 GetHostContentSettingsMap()->SetContentSetting( 271 GetHostContentSettingsMap()->SetContentSetting(
278 ContentSettingsPattern::FromURLNoWildcard(url()), 272 ContentSettingsPattern::FromURLNoWildcard(url()),
279 ContentSettingsPattern::FromURLNoWildcard(url()), 273 ContentSettingsPattern::FromURLNoWildcard(url()),
280 CONTENT_SETTINGS_TYPE_GEOLOCATION, 274 CONTENT_SETTINGS_TYPE_GEOLOCATION,
281 std::string(), 275 std::string(),
282 CONTENT_SETTING_BLOCK); 276 CONTENT_SETTING_BLOCK);
283 277
284 EXPECT_TRUE(callback_called()); 278 EXPECT_TRUE(callback_called());
285 EXPECT_EQ(content::PermissionStatus::DENIED, callback_result()); 279 EXPECT_EQ(PermissionStatus::DENIED, callback_result());
286 280
287 GetPermissionManager()->UnsubscribePermissionStatusChange(subscription_id); 281 GetPermissionManager()->UnsubscribePermissionStatusChange(subscription_id);
288 } 282 }
289 283
290 TEST_F(PermissionManagerTest, ChangeWithoutPermissionChangeDoesNotNotify) { 284 TEST_F(PermissionManagerTest, ChangeWithoutPermissionChangeDoesNotNotify) {
291 GetHostContentSettingsMap()->SetContentSetting( 285 GetHostContentSettingsMap()->SetContentSetting(
292 ContentSettingsPattern::FromURLNoWildcard(url()), 286 ContentSettingsPattern::FromURLNoWildcard(url()),
293 ContentSettingsPattern::FromURLNoWildcard(url()), 287 ContentSettingsPattern::FromURLNoWildcard(url()),
294 CONTENT_SETTINGS_TYPE_GEOLOCATION, 288 CONTENT_SETTINGS_TYPE_GEOLOCATION,
295 std::string(), 289 std::string(),
(...skipping 30 matching lines...) Expand all
326 base::Unretained(this))); 320 base::Unretained(this)));
327 321
328 GetHostContentSettingsMap()->SetContentSetting( 322 GetHostContentSettingsMap()->SetContentSetting(
329 ContentSettingsPattern::FromURLNoWildcard(url()), 323 ContentSettingsPattern::FromURLNoWildcard(url()),
330 ContentSettingsPattern::FromURLNoWildcard(url()), 324 ContentSettingsPattern::FromURLNoWildcard(url()),
331 CONTENT_SETTINGS_TYPE_GEOLOCATION, 325 CONTENT_SETTINGS_TYPE_GEOLOCATION,
332 std::string(), 326 std::string(),
333 CONTENT_SETTING_ALLOW); 327 CONTENT_SETTING_ALLOW);
334 328
335 EXPECT_TRUE(callback_called()); 329 EXPECT_TRUE(callback_called());
336 EXPECT_EQ(content::PermissionStatus::GRANTED, callback_result()); 330 EXPECT_EQ(PermissionStatus::GRANTED, callback_result());
337 331
338 Reset(); 332 Reset();
339 333
340 GetHostContentSettingsMap()->SetContentSetting( 334 GetHostContentSettingsMap()->SetContentSetting(
341 ContentSettingsPattern::FromURLNoWildcard(url()), 335 ContentSettingsPattern::FromURLNoWildcard(url()),
342 ContentSettingsPattern::FromURLNoWildcard(url()), 336 ContentSettingsPattern::FromURLNoWildcard(url()),
343 CONTENT_SETTINGS_TYPE_GEOLOCATION, 337 CONTENT_SETTINGS_TYPE_GEOLOCATION,
344 std::string(), 338 std::string(),
345 CONTENT_SETTING_ASK); 339 CONTENT_SETTING_ASK);
346 340
347 EXPECT_TRUE(callback_called()); 341 EXPECT_TRUE(callback_called());
348 EXPECT_EQ(content::PermissionStatus::ASK, callback_result()); 342 EXPECT_EQ(PermissionStatus::ASK, callback_result());
349 343
350 GetPermissionManager()->UnsubscribePermissionStatusChange(subscription_id); 344 GetPermissionManager()->UnsubscribePermissionStatusChange(subscription_id);
351 } 345 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698