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

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
« no previous file with comments | « android_webview/native/permission/permission_request_handler.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 int64 requested_resources = AwPermissionRequest::AudioCapture;
306 delegate.reset(new TestAwPermissionRequestDelegate(
307 origin, requested_resources,
308 base::Bind(&PermissionRequestHandlerTest::NotifyRequestResult,
309 base::Unretained(this))));
310 handler()->SendRequest(delegate.Pass());
311 EXPECT_EQ(origin, handler()->requests()[0]->GetOrigin());
312 EXPECT_EQ(requested_resources, 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 int64 requested_resources = AwPermissionRequest::AudioCapture
323 | AwPermissionRequest::Geolocation;
324 delegate.reset(new TestAwPermissionRequestDelegate(
325 origin(), requested_resources,
326 base::Bind(&PermissionRequestHandlerTest::NotifyRequestResult,
327 base::Unretained(this))));
328
329 handler()->SendRequest(delegate.Pass());
330 EXPECT_EQ(origin(), handler()->requests()[0]->GetOrigin());
331 EXPECT_EQ(requested_resources, handler()->requests()[0]->GetResources());
332 client()->Deny();
333 EXPECT_FALSE(allowed());
334 }
335
336 TEST_F(PermissionRequestHandlerTest, TestPreauthorizeMultiplePermission) {
337 handler()->PreauthorizePermission(origin(), resources());
338 // Preauthorize another permission.
339 GURL origin ("http://a.google.com/a/b");
340 handler()->PreauthorizePermission(origin, AwPermissionRequest::Geolocation);
341 GURL origin_hostname ("http://a.google.com/");
342 scoped_ptr<AwPermissionRequestDelegate> delegate;
343 delegate.reset(new TestAwPermissionRequestDelegate(
344 origin_hostname, AwPermissionRequest::Geolocation,
345 base::Bind(&PermissionRequestHandlerTest::NotifyRequestResult,
346 base::Unretained(this))));
347 handler()->SendRequest(delegate.Pass());
348 EXPECT_TRUE(allowed());
349 EXPECT_EQ(NULL, client()->request());
350 }
351
269 } // android_webview 352 } // android_webview
OLDNEW
« no previous file with comments | « android_webview/native/permission/permission_request_handler.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698