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

Side by Side Diff: android_webview/native/permission/permission_request_handler_unittest.cc

Issue 274443002: Implement PreauthorizePermission (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: addressed comments Created 6 years, 7 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "android_webview/native/permission/aw_permission_request.h" 5 #include "android_webview/native/permission/aw_permission_request.h"
6 #include "android_webview/native/permission/aw_permission_request_delegate.h" 6 #include "android_webview/native/permission/aw_permission_request_delegate.h"
7 #include "android_webview/native/permission/permission_request_handler.h" 7 #include "android_webview/native/permission/permission_request_handler.h"
8 #include "android_webview/native/permission/permission_request_handler_client.h" 8 #include "android_webview/native/permission/permission_request_handler_client.h"
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/callback.h" 10 #include "base/callback.h"
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 struct Permission { 47 struct Permission {
48 Permission() 48 Permission()
49 :resources(0) {} 49 :resources(0) {}
50 Permission(const GURL& origin, int64 resources) 50 Permission(const GURL& origin, int64 resources)
51 : origin(origin), 51 : origin(origin),
52 resources(resources) {} 52 resources(resources) {}
53 GURL origin; 53 GURL origin;
54 int64 resources; 54 int64 resources;
55 }; 55 };
56 56
57 TestPermissionRequestHandlerClient()
58 : request_(NULL) {}
59
57 virtual void OnPermissionRequest(AwPermissionRequest* request) OVERRIDE { 60 virtual void OnPermissionRequest(AwPermissionRequest* request) OVERRIDE {
58 request_ = request; 61 request_ = request;
59 requested_permission_ = 62 requested_permission_ =
60 Permission(request->GetOrigin(), request->GetResources()); 63 Permission(request->GetOrigin(), request->GetResources());
61 } 64 }
62 65
63 virtual void OnPermissionRequestCanceled( 66 virtual void OnPermissionRequestCanceled(
64 AwPermissionRequest* request) OVERRIDE{ 67 AwPermissionRequest* request) OVERRIDE{
65 canceled_permission_ = 68 canceled_permission_ =
66 Permission(request->GetOrigin(), request->GetResources()); 69 Permission(request->GetOrigin(), request->GetResources());
(...skipping 14 matching lines...) Expand all
81 void Grant() { 84 void Grant() {
82 request_->OnAccept(NULL, NULL, true); 85 request_->OnAccept(NULL, NULL, true);
83 request_ = NULL; 86 request_ = NULL;
84 } 87 }
85 88
86 void Deny() { 89 void Deny() {
87 request_->OnAccept(NULL, NULL, false); 90 request_->OnAccept(NULL, NULL, false);
88 request_ = NULL; 91 request_ = NULL;
89 } 92 }
90 93
94 void Reset() {
95 request_ = NULL;
96 requested_permission_ = Permission();
97 canceled_permission_ = Permission();
98 }
99
91 private: 100 private:
92 AwPermissionRequest* request_; 101 AwPermissionRequest* request_;
93 Permission requested_permission_; 102 Permission requested_permission_;
94 Permission canceled_permission_; 103 Permission canceled_permission_;
95 }; 104 };
96 105
97 class TestPermissionRequestHandler : public PermissionRequestHandler { 106 class TestPermissionRequestHandler : public PermissionRequestHandler {
98 public: 107 public:
99 TestPermissionRequestHandler(PermissionRequestHandlerClient* client) 108 TestPermissionRequestHandler(PermissionRequestHandlerClient* client)
100 : PermissionRequestHandler(client) { 109 : PermissionRequestHandler(client) {
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
259 // Verify client's OnPermissionRequestCancled() was called. 268 // Verify client's OnPermissionRequestCancled() was called.
260 EXPECT_EQ(origin(), client()->canceled_permission().origin); 269 EXPECT_EQ(origin(), client()->canceled_permission().origin);
261 EXPECT_EQ(resources(), client()->canceled_permission().resources); 270 EXPECT_EQ(resources(), client()->canceled_permission().resources);
262 // Verify Handler store the request correctly, the 1st and 3rd were removed. 271 // Verify Handler store the request correctly, the 1st and 3rd were removed.
263 handler()->PruneRequests(); 272 handler()->PruneRequests();
264 ASSERT_EQ(1u, handler()->requests().size()); 273 ASSERT_EQ(1u, handler()->requests().size());
265 EXPECT_EQ(origin1, handler()->requests()[0]->GetOrigin()); 274 EXPECT_EQ(origin1, handler()->requests()[0]->GetOrigin());
266 EXPECT_EQ(resources1, handler()->requests()[0]->GetResources()); 275 EXPECT_EQ(resources1, handler()->requests()[0]->GetResources());
267 } 276 }
268 277
278 TEST_F(PermissionRequestHandlerTest, TestPreauthorizePermission) {
279 handler()->PreauthorizePermission(origin(), resources());
280
281 // Permission should granted without asking PermissionRequestHandlerClient.
282 handler()->SendRequest(delegate().Pass());
283 EXPECT_TRUE(allowed());
284 EXPECT_EQ(NULL, client()->request());
285
286 // Only ask one preauthorized resource, permission should granted
287 // without asking PermissionRequestHandlerClient.
288 scoped_ptr<AwPermissionRequestDelegate> delegate;
289 delegate.reset(new TestAwPermissionRequestDelegate(
290 origin(), AwPermissionRequest::AudioCapture,
291 base::Bind(&PermissionRequestHandlerTest::NotifyRequestResult,
292 base::Unretained(this))));
293 client()->Reset();
294 handler()->SendRequest(delegate.Pass());
295 EXPECT_TRUE(allowed());
296 EXPECT_EQ(NULL, client()->request());
297 }
298
299 TEST_F(PermissionRequestHandlerTest, TestOriginNotPreauthorized) {
300 handler()->PreauthorizePermission(origin(), resources());
301
302 // Ask the origin which wasn't preauthorized.
303 GURL origin ("http://a.google.com/a/b");
304 scoped_ptr<AwPermissionRequestDelegate> delegate;
305 delegate.reset(new TestAwPermissionRequestDelegate(
306 origin, AwPermissionRequest::AudioCapture,
benm (inactive) 2014/05/08 14:50:21 make this resource param a constant (and use in th
michaelbai 2014/05/08 16:44:30 Done.
307 base::Bind(&PermissionRequestHandlerTest::NotifyRequestResult,
308 base::Unretained(this))));
309 handler()->SendRequest(delegate.Pass());
310 EXPECT_EQ(origin, handler()->requests()[0]->GetOrigin());
311 EXPECT_EQ(AwPermissionRequest::AudioCapture,
312 handler()->requests()[0]->GetResources());
313 client()->Grant();
314 EXPECT_TRUE(allowed());
315 }
316
317 TEST_F(PermissionRequestHandlerTest, TestResourcesNotPreauthorized) {
318 handler()->PreauthorizePermission(origin(), resources());
319
320 // Ask the resources which weren't preauthorized.
321 scoped_ptr<AwPermissionRequestDelegate> delegate;
322 delegate.reset(new TestAwPermissionRequestDelegate(
323 origin(),
324 AwPermissionRequest::AudioCapture | AwPermissionRequest::Geolocation,
325 base::Bind(&PermissionRequestHandlerTest::NotifyRequestResult,
326 base::Unretained(this))));
327
328 handler()->SendRequest(delegate.Pass());
329 EXPECT_EQ(origin(), handler()->requests()[0]->GetOrigin());
330 EXPECT_EQ(
331 AwPermissionRequest::AudioCapture | AwPermissionRequest::Geolocation,
332 handler()->requests()[0]->GetResources());
333 client()->Deny();
334 EXPECT_FALSE(allowed());
335 }
336
337 TEST_F(PermissionRequestHandlerTest, TestPreauthorizeMultiplePermission) {
338 handler()->PreauthorizePermission(origin(), resources());
339 // Preauthorize another permission.
340 GURL origin ("http://a.google.com/a/b");
341 handler()->PreauthorizePermission(origin, AwPermissionRequest::Geolocation);
342 GURL origin_hostname ("http://a.google.com/");
343 scoped_ptr<AwPermissionRequestDelegate> delegate;
344 delegate.reset(new TestAwPermissionRequestDelegate(
345 origin_hostname, AwPermissionRequest::Geolocation,
346 base::Bind(&PermissionRequestHandlerTest::NotifyRequestResult,
347 base::Unretained(this))));
348 handler()->SendRequest(delegate.Pass());
349 EXPECT_TRUE(allowed());
350 EXPECT_EQ(NULL, client()->request());
351 }
352
269 } // android_webview 353 } // android_webview
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698