Chromium Code Reviews| Index: android_webview/native/permission/permission_request_handler_unittest.cc |
| diff --git a/android_webview/native/permission/permission_request_handler_unittest.cc b/android_webview/native/permission/permission_request_handler_unittest.cc |
| index 2948dd9910a2308d98ad7b0a2ba10fa405aca955..a845d9d92b32019c9c20020bbda2ad7c61a1c334 100644 |
| --- a/android_webview/native/permission/permission_request_handler_unittest.cc |
| +++ b/android_webview/native/permission/permission_request_handler_unittest.cc |
| @@ -54,6 +54,9 @@ class TestPermissionRequestHandlerClient : |
| int64 resources; |
| }; |
| + TestPermissionRequestHandlerClient() |
| + : request_(NULL) {} |
| + |
| virtual void OnPermissionRequest(AwPermissionRequest* request) OVERRIDE { |
| request_ = request; |
| requested_permission_ = |
| @@ -88,6 +91,12 @@ class TestPermissionRequestHandlerClient : |
| request_ = NULL; |
| } |
| + void Reset() { |
| + request_ = NULL; |
| + requested_permission_ = Permission(); |
| + canceled_permission_ = Permission(); |
| + } |
| + |
| private: |
| AwPermissionRequest* request_; |
| Permission requested_permission_; |
| @@ -266,4 +275,66 @@ TEST_F(PermissionRequestHandlerTest, TestMultiplePermissionRequest) { |
| EXPECT_EQ(resources1, handler()->requests()[0]->GetResources()); |
| } |
| +TEST_F(PermissionRequestHandlerTest, TestPreauthorizePermission) { |
| + handler()->PreauthorizePermission(origin(), resources()); |
| + |
| + // Permission should granted without asking PermissionRequestHandlerClient. |
| + handler()->SendRequest(delegate().Pass()); |
| + EXPECT_TRUE(allowed()); |
| + EXPECT_EQ(NULL, client()->request()); |
| + |
| + // Only ask one preauthorized resource, permission should granted |
| + // without asking PermissionRequestHandlerClient. |
| + scoped_ptr<AwPermissionRequestDelegate> delegate1; |
|
benm (inactive)
2014/05/07 17:01:21
Any need for the '1'?
|
| + delegate1.reset(new TestAwPermissionRequestDelegate( |
| + origin(), AwPermissionRequest::AudioCapture, |
| + base::Bind(&PermissionRequestHandlerTest::NotifyRequestResult, |
| + base::Unretained(this)))); |
| + client()->Reset(); |
| + handler()->SendRequest(delegate1.Pass()); |
| + EXPECT_TRUE(allowed()); |
| + EXPECT_EQ(NULL, client()->request()); |
| + |
| + // Ask the origin which wasn't preauthorized. |
| + GURL origin1 ("http://a.google.com/a/b"); |
| + delegate1.reset(new TestAwPermissionRequestDelegate( |
| + origin1, AwPermissionRequest::AudioCapture, |
| + base::Bind(&PermissionRequestHandlerTest::NotifyRequestResult, |
| + base::Unretained(this)))); |
| + client()->Reset(); |
| + handler()->SendRequest(delegate1.Pass()); |
| + EXPECT_EQ(origin1, handler()->requests()[0]->GetOrigin()); |
| + EXPECT_EQ(AwPermissionRequest::AudioCapture, |
| + handler()->requests()[0]->GetResources()); |
| + client()->Grant(); |
| + EXPECT_TRUE(allowed()); |
| + |
| + // 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?
|
| + delegate1.reset(new TestAwPermissionRequestDelegate( |
| + origin(), |
| + AwPermissionRequest::AudioCapture | AwPermissionRequest::Geolocation, |
| + base::Bind(&PermissionRequestHandlerTest::NotifyRequestResult, |
| + base::Unretained(this)))); |
| + client()->Reset(); |
| + handler()->SendRequest(delegate1.Pass()); |
| + EXPECT_EQ(origin(), handler()->requests()[0]->GetOrigin()); |
| + EXPECT_EQ( |
| + AwPermissionRequest::AudioCapture | AwPermissionRequest::Geolocation, |
| + handler()->requests()[0]->GetResources()); |
| + client()->Deny(); |
| + EXPECT_FALSE(allowed()); |
| + |
| + // Preauthorize another permission. |
| + handler()->PreauthorizePermission(origin1, AwPermissionRequest::Geolocation); |
| + GURL origin1_hostname ("http://a.google.com/"); |
| + delegate1.reset(new TestAwPermissionRequestDelegate( |
| + origin1_hostname, AwPermissionRequest::Geolocation, |
| + base::Bind(&PermissionRequestHandlerTest::NotifyRequestResult, |
| + base::Unretained(this)))); |
| + client()->Reset(); |
| + handler()->SendRequest(delegate1.Pass()); |
| + EXPECT_TRUE(allowed()); |
| + EXPECT_EQ(NULL, client()->request()); |
| +} |
| + |
| } // android_webview |