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

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: 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> delegate1;
benm (inactive) 2014/05/07 17:01:21 Any need for the '1'?
289 delegate1.reset(new TestAwPermissionRequestDelegate(
290 origin(), AwPermissionRequest::AudioCapture,
291 base::Bind(&PermissionRequestHandlerTest::NotifyRequestResult,
292 base::Unretained(this))));
293 client()->Reset();
294 handler()->SendRequest(delegate1.Pass());
295 EXPECT_TRUE(allowed());
296 EXPECT_EQ(NULL, client()->request());
297
298 // Ask the origin which wasn't preauthorized.
299 GURL origin1 ("http://a.google.com/a/b");
300 delegate1.reset(new TestAwPermissionRequestDelegate(
301 origin1, AwPermissionRequest::AudioCapture,
302 base::Bind(&PermissionRequestHandlerTest::NotifyRequestResult,
303 base::Unretained(this))));
304 client()->Reset();
305 handler()->SendRequest(delegate1.Pass());
306 EXPECT_EQ(origin1, handler()->requests()[0]->GetOrigin());
307 EXPECT_EQ(AwPermissionRequest::AudioCapture,
308 handler()->requests()[0]->GetResources());
309 client()->Grant();
310 EXPECT_TRUE(allowed());
311
312 // Ask the resources which weren't preauthorized.
benm (inactive) 2014/05/07 17:01:21 would it make sense to split this into two test ca
mkosiba (inactive) 2014/05/07 17:25:50 or 4 even?
313 delegate1.reset(new TestAwPermissionRequestDelegate(
314 origin(),
315 AwPermissionRequest::AudioCapture | AwPermissionRequest::Geolocation,
316 base::Bind(&PermissionRequestHandlerTest::NotifyRequestResult,
317 base::Unretained(this))));
318 client()->Reset();
319 handler()->SendRequest(delegate1.Pass());
320 EXPECT_EQ(origin(), handler()->requests()[0]->GetOrigin());
321 EXPECT_EQ(
322 AwPermissionRequest::AudioCapture | AwPermissionRequest::Geolocation,
323 handler()->requests()[0]->GetResources());
324 client()->Deny();
325 EXPECT_FALSE(allowed());
326
327 // Preauthorize another permission.
328 handler()->PreauthorizePermission(origin1, AwPermissionRequest::Geolocation);
329 GURL origin1_hostname ("http://a.google.com/");
330 delegate1.reset(new TestAwPermissionRequestDelegate(
331 origin1_hostname, AwPermissionRequest::Geolocation,
332 base::Bind(&PermissionRequestHandlerTest::NotifyRequestResult,
333 base::Unretained(this))));
334 client()->Reset();
335 handler()->SendRequest(delegate1.Pass());
336 EXPECT_TRUE(allowed());
337 EXPECT_EQ(NULL, client()->request());
338 }
339
269 } // android_webview 340 } // android_webview
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698