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

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, 8 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::mojom::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::mojom::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 16 matching lines...) Expand all
75 } 75 }
76 76
77 bool callback_called() const { 77 bool callback_called() const {
78 return callback_called_; 78 return callback_called_;
79 } 79 }
80 80
81 PermissionStatus callback_result() const { return callback_result_; } 81 PermissionStatus callback_result() const { return callback_result_; }
82 82
83 void Reset() { 83 void Reset() {
84 callback_called_ = false; 84 callback_called_ = false;
85 callback_result_ = content::mojom::PermissionStatus::ASK; 85 callback_result_ = PermissionStatus::ASK;
86 } 86 }
87 87
88 private: 88 private:
89 const GURL url_; 89 const GURL url_;
90 const GURL other_url_; 90 const GURL other_url_;
91 bool callback_called_; 91 bool callback_called_;
92 PermissionStatus callback_result_; 92 PermissionStatus callback_result_;
93 content::TestBrowserThreadBundle thread_bundle_; 93 content::TestBrowserThreadBundle thread_bundle_;
94 PermissionManagerTestingProfile profile_; 94 PermissionManagerTestingProfile profile_;
95 }; 95 };
96 96
97 TEST_F(PermissionManagerTest, GetPermissionStatusDefault) { 97 TEST_F(PermissionManagerTest, GetPermissionStatusDefault) {
98 CheckPermissionStatus(PermissionType::MIDI_SYSEX, 98 CheckPermissionStatus(PermissionType::MIDI_SYSEX, PermissionStatus::ASK);
99 content::mojom::PermissionStatus::ASK); 99 CheckPermissionStatus(PermissionType::PUSH_MESSAGING, PermissionStatus::ASK);
100 CheckPermissionStatus(PermissionType::PUSH_MESSAGING, 100 CheckPermissionStatus(PermissionType::NOTIFICATIONS, PermissionStatus::ASK);
101 content::mojom::PermissionStatus::ASK); 101 CheckPermissionStatus(PermissionType::GEOLOCATION, PermissionStatus::ASK);
102 CheckPermissionStatus(PermissionType::NOTIFICATIONS,
103 content::mojom::PermissionStatus::ASK);
104 CheckPermissionStatus(PermissionType::GEOLOCATION,
105 content::mojom::PermissionStatus::ASK);
106 #if defined(OS_ANDROID) 102 #if defined(OS_ANDROID)
107 CheckPermissionStatus(PermissionType::PROTECTED_MEDIA_IDENTIFIER, 103 CheckPermissionStatus(PermissionType::PROTECTED_MEDIA_IDENTIFIER,
108 content::mojom::PermissionStatus::ASK); 104 PermissionStatus::ASK);
109 #endif 105 #endif
110 } 106 }
111 107
112 TEST_F(PermissionManagerTest, GetPermissionStatusAfterSet) { 108 TEST_F(PermissionManagerTest, GetPermissionStatusAfterSet) {
113 SetPermission(CONTENT_SETTINGS_TYPE_GEOLOCATION, CONTENT_SETTING_ALLOW); 109 SetPermission(CONTENT_SETTINGS_TYPE_GEOLOCATION, CONTENT_SETTING_ALLOW);
114 CheckPermissionStatus(PermissionType::GEOLOCATION, 110 CheckPermissionStatus(PermissionType::GEOLOCATION, PermissionStatus::GRANTED);
115 content::mojom::PermissionStatus::GRANTED);
116 111
117 SetPermission(CONTENT_SETTINGS_TYPE_NOTIFICATIONS, CONTENT_SETTING_ALLOW); 112 SetPermission(CONTENT_SETTINGS_TYPE_NOTIFICATIONS, CONTENT_SETTING_ALLOW);
118 CheckPermissionStatus(PermissionType::NOTIFICATIONS, 113 CheckPermissionStatus(PermissionType::NOTIFICATIONS,
119 content::mojom::PermissionStatus::GRANTED); 114 PermissionStatus::GRANTED);
120 115
121 SetPermission(CONTENT_SETTINGS_TYPE_MIDI_SYSEX, CONTENT_SETTING_ALLOW); 116 SetPermission(CONTENT_SETTINGS_TYPE_MIDI_SYSEX, CONTENT_SETTING_ALLOW);
122 CheckPermissionStatus(PermissionType::MIDI_SYSEX, 117 CheckPermissionStatus(PermissionType::MIDI_SYSEX, PermissionStatus::GRANTED);
123 content::mojom::PermissionStatus::GRANTED);
124 118
125 SetPermission(CONTENT_SETTINGS_TYPE_PUSH_MESSAGING, CONTENT_SETTING_ALLOW); 119 SetPermission(CONTENT_SETTINGS_TYPE_PUSH_MESSAGING, CONTENT_SETTING_ALLOW);
126 CheckPermissionStatus(PermissionType::PUSH_MESSAGING, 120 CheckPermissionStatus(PermissionType::PUSH_MESSAGING,
127 content::mojom::PermissionStatus::GRANTED); 121 PermissionStatus::GRANTED);
128 122
129 #if defined(OS_ANDROID) 123 #if defined(OS_ANDROID)
130 SetPermission(CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER, 124 SetPermission(CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER,
131 CONTENT_SETTING_ALLOW); 125 CONTENT_SETTING_ALLOW);
132 CheckPermissionStatus(PermissionType::PROTECTED_MEDIA_IDENTIFIER, 126 CheckPermissionStatus(PermissionType::PROTECTED_MEDIA_IDENTIFIER,
133 content::mojom::PermissionStatus::GRANTED); 127 PermissionStatus::GRANTED);
134 #endif 128 #endif
135 } 129 }
136 130
137 TEST_F(PermissionManagerTest, SameTypeChangeNotifies) { 131 TEST_F(PermissionManagerTest, SameTypeChangeNotifies) {
138 int subscription_id = GetPermissionManager()->SubscribePermissionStatusChange( 132 int subscription_id = GetPermissionManager()->SubscribePermissionStatusChange(
139 PermissionType::GEOLOCATION, url(), url(), 133 PermissionType::GEOLOCATION, url(), url(),
140 base::Bind(&PermissionManagerTest::OnPermissionChange, 134 base::Bind(&PermissionManagerTest::OnPermissionChange,
141 base::Unretained(this))); 135 base::Unretained(this)));
142 136
143 GetHostContentSettingsMap()->SetContentSettingDefaultScope( 137 GetHostContentSettingsMap()->SetContentSettingDefaultScope(
144 url(), url(), CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string(), 138 url(), url(), CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string(),
145 CONTENT_SETTING_ALLOW); 139 CONTENT_SETTING_ALLOW);
146 140
147 EXPECT_TRUE(callback_called()); 141 EXPECT_TRUE(callback_called());
148 EXPECT_EQ(content::mojom::PermissionStatus::GRANTED, callback_result()); 142 EXPECT_EQ(PermissionStatus::GRANTED, callback_result());
149 143
150 GetPermissionManager()->UnsubscribePermissionStatusChange(subscription_id); 144 GetPermissionManager()->UnsubscribePermissionStatusChange(subscription_id);
151 } 145 }
152 146
153 TEST_F(PermissionManagerTest, DifferentTypeChangeDoesNotNotify) { 147 TEST_F(PermissionManagerTest, DifferentTypeChangeDoesNotNotify) {
154 int subscription_id = GetPermissionManager()->SubscribePermissionStatusChange( 148 int subscription_id = GetPermissionManager()->SubscribePermissionStatusChange(
155 PermissionType::GEOLOCATION, url(), url(), 149 PermissionType::GEOLOCATION, url(), url(),
156 base::Bind(&PermissionManagerTest::OnPermissionChange, 150 base::Bind(&PermissionManagerTest::OnPermissionChange,
157 base::Unretained(this))); 151 base::Unretained(this)));
158 152
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
217 base::Unretained(this))); 211 base::Unretained(this)));
218 212
219 GetHostContentSettingsMap()->SetContentSetting( 213 GetHostContentSettingsMap()->SetContentSetting(
220 ContentSettingsPattern::Wildcard(), 214 ContentSettingsPattern::Wildcard(),
221 ContentSettingsPattern::Wildcard(), 215 ContentSettingsPattern::Wildcard(),
222 CONTENT_SETTINGS_TYPE_GEOLOCATION, 216 CONTENT_SETTINGS_TYPE_GEOLOCATION,
223 std::string(), 217 std::string(),
224 CONTENT_SETTING_ALLOW); 218 CONTENT_SETTING_ALLOW);
225 219
226 EXPECT_TRUE(callback_called()); 220 EXPECT_TRUE(callback_called());
227 EXPECT_EQ(content::mojom::PermissionStatus::GRANTED, callback_result()); 221 EXPECT_EQ(PermissionStatus::GRANTED, callback_result());
228 222
229 GetPermissionManager()->UnsubscribePermissionStatusChange(subscription_id); 223 GetPermissionManager()->UnsubscribePermissionStatusChange(subscription_id);
230 } 224 }
231 225
232 TEST_F(PermissionManagerTest, ClearSettingsNotifies) { 226 TEST_F(PermissionManagerTest, ClearSettingsNotifies) {
233 GetHostContentSettingsMap()->SetContentSettingDefaultScope( 227 GetHostContentSettingsMap()->SetContentSettingDefaultScope(
234 url(), url(), CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string(), 228 url(), url(), CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string(),
235 CONTENT_SETTING_ALLOW); 229 CONTENT_SETTING_ALLOW);
236 230
237 int subscription_id = GetPermissionManager()->SubscribePermissionStatusChange( 231 int subscription_id = GetPermissionManager()->SubscribePermissionStatusChange(
238 PermissionType::GEOLOCATION, url(), url(), 232 PermissionType::GEOLOCATION, url(), url(),
239 base::Bind(&PermissionManagerTest::OnPermissionChange, 233 base::Bind(&PermissionManagerTest::OnPermissionChange,
240 base::Unretained(this))); 234 base::Unretained(this)));
241 235
242 GetHostContentSettingsMap()->ClearSettingsForOneType( 236 GetHostContentSettingsMap()->ClearSettingsForOneType(
243 CONTENT_SETTINGS_TYPE_GEOLOCATION); 237 CONTENT_SETTINGS_TYPE_GEOLOCATION);
244 238
245 EXPECT_TRUE(callback_called()); 239 EXPECT_TRUE(callback_called());
246 EXPECT_EQ(content::mojom::PermissionStatus::ASK, callback_result()); 240 EXPECT_EQ(PermissionStatus::ASK, callback_result());
247 241
248 GetPermissionManager()->UnsubscribePermissionStatusChange(subscription_id); 242 GetPermissionManager()->UnsubscribePermissionStatusChange(subscription_id);
249 } 243 }
250 244
251 TEST_F(PermissionManagerTest, NewValueCorrectlyPassed) { 245 TEST_F(PermissionManagerTest, NewValueCorrectlyPassed) {
252 int subscription_id = GetPermissionManager()->SubscribePermissionStatusChange( 246 int subscription_id = GetPermissionManager()->SubscribePermissionStatusChange(
253 PermissionType::GEOLOCATION, url(), url(), 247 PermissionType::GEOLOCATION, url(), url(),
254 base::Bind(&PermissionManagerTest::OnPermissionChange, 248 base::Bind(&PermissionManagerTest::OnPermissionChange,
255 base::Unretained(this))); 249 base::Unretained(this)));
256 250
257 GetHostContentSettingsMap()->SetContentSettingDefaultScope( 251 GetHostContentSettingsMap()->SetContentSettingDefaultScope(
258 url(), url(), CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string(), 252 url(), url(), CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string(),
259 CONTENT_SETTING_BLOCK); 253 CONTENT_SETTING_BLOCK);
260 254
261 EXPECT_TRUE(callback_called()); 255 EXPECT_TRUE(callback_called());
262 EXPECT_EQ(content::mojom::PermissionStatus::DENIED, callback_result()); 256 EXPECT_EQ(PermissionStatus::DENIED, callback_result());
263 257
264 GetPermissionManager()->UnsubscribePermissionStatusChange(subscription_id); 258 GetPermissionManager()->UnsubscribePermissionStatusChange(subscription_id);
265 } 259 }
266 260
267 TEST_F(PermissionManagerTest, ChangeWithoutPermissionChangeDoesNotNotify) { 261 TEST_F(PermissionManagerTest, ChangeWithoutPermissionChangeDoesNotNotify) {
268 GetHostContentSettingsMap()->SetContentSettingDefaultScope( 262 GetHostContentSettingsMap()->SetContentSettingDefaultScope(
269 url(), url(), CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string(), 263 url(), url(), CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string(),
270 CONTENT_SETTING_ALLOW); 264 CONTENT_SETTING_ALLOW);
271 265
272 int subscription_id = GetPermissionManager()->SubscribePermissionStatusChange( 266 int subscription_id = GetPermissionManager()->SubscribePermissionStatusChange(
(...skipping 18 matching lines...) Expand all
291 int subscription_id = GetPermissionManager()->SubscribePermissionStatusChange( 285 int subscription_id = GetPermissionManager()->SubscribePermissionStatusChange(
292 PermissionType::GEOLOCATION, url(), url(), 286 PermissionType::GEOLOCATION, url(), url(),
293 base::Bind(&PermissionManagerTest::OnPermissionChange, 287 base::Bind(&PermissionManagerTest::OnPermissionChange,
294 base::Unretained(this))); 288 base::Unretained(this)));
295 289
296 GetHostContentSettingsMap()->SetContentSettingDefaultScope( 290 GetHostContentSettingsMap()->SetContentSettingDefaultScope(
297 url(), url(), CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string(), 291 url(), url(), CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string(),
298 CONTENT_SETTING_ALLOW); 292 CONTENT_SETTING_ALLOW);
299 293
300 EXPECT_TRUE(callback_called()); 294 EXPECT_TRUE(callback_called());
301 EXPECT_EQ(content::mojom::PermissionStatus::GRANTED, callback_result()); 295 EXPECT_EQ(PermissionStatus::GRANTED, callback_result());
302 296
303 Reset(); 297 Reset();
304 298
305 GetHostContentSettingsMap()->SetContentSettingDefaultScope( 299 GetHostContentSettingsMap()->SetContentSettingDefaultScope(
306 url(), url(), CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string(), 300 url(), url(), CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string(),
307 CONTENT_SETTING_ASK); 301 CONTENT_SETTING_ASK);
308 302
309 EXPECT_TRUE(callback_called()); 303 EXPECT_TRUE(callback_called());
310 EXPECT_EQ(content::mojom::PermissionStatus::ASK, callback_result()); 304 EXPECT_EQ(PermissionStatus::ASK, callback_result());
311 305
312 GetPermissionManager()->UnsubscribePermissionStatusChange(subscription_id); 306 GetPermissionManager()->UnsubscribePermissionStatusChange(subscription_id);
313 } 307 }
OLDNEW
« no previous file with comments | « chrome/browser/permissions/permission_manager.cc ('k') | chrome/browser/permissions/permission_uma_util.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698