| OLD | NEW |
| 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/permission_request_handler.h" | 5 #include "android_webview/native/permission/permission_request_handler.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "android_webview/native/permission/aw_permission_request.h" | 9 #include "android_webview/native/permission/aw_permission_request.h" |
| 10 #include "android_webview/native/permission/aw_permission_request_delegate.h" | 10 #include "android_webview/native/permission/aw_permission_request_delegate.h" |
| (...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 141 &PermissionRequestHandlerTest::NotifyRequestResult, | 141 &PermissionRequestHandlerTest::NotifyRequestResult, |
| 142 base::Unretained(this)))); | 142 base::Unretained(this)))); |
| 143 } | 143 } |
| 144 | 144 |
| 145 const GURL& origin() { | 145 const GURL& origin() { |
| 146 return origin_; | 146 return origin_; |
| 147 } | 147 } |
| 148 | 148 |
| 149 int64_t resources() { return resources_; } | 149 int64_t resources() { return resources_; } |
| 150 | 150 |
| 151 scoped_ptr<AwPermissionRequestDelegate> delegate() { | 151 std::unique_ptr<AwPermissionRequestDelegate> delegate() { |
| 152 return std::move(delegate_); | 152 return std::move(delegate_); |
| 153 } | 153 } |
| 154 | 154 |
| 155 TestPermissionRequestHandler* handler() { | 155 TestPermissionRequestHandler* handler() { |
| 156 return &handler_; | 156 return &handler_; |
| 157 } | 157 } |
| 158 | 158 |
| 159 TestPermissionRequestHandlerClient* client() { | 159 TestPermissionRequestHandlerClient* client() { |
| 160 return &client_; | 160 return &client_; |
| 161 } | 161 } |
| 162 | 162 |
| 163 bool allowed() { | 163 bool allowed() { |
| 164 return allowed_; | 164 return allowed_; |
| 165 } | 165 } |
| 166 | 166 |
| 167 private: | 167 private: |
| 168 GURL origin_; | 168 GURL origin_; |
| 169 int64_t resources_; | 169 int64_t resources_; |
| 170 scoped_ptr<AwPermissionRequestDelegate> delegate_; | 170 std::unique_ptr<AwPermissionRequestDelegate> delegate_; |
| 171 TestPermissionRequestHandlerClient client_; | 171 TestPermissionRequestHandlerClient client_; |
| 172 TestPermissionRequestHandler handler_; | 172 TestPermissionRequestHandler handler_; |
| 173 bool allowed_; | 173 bool allowed_; |
| 174 }; | 174 }; |
| 175 | 175 |
| 176 TEST_F(PermissionRequestHandlerTest, TestPermissionGranted) { | 176 TEST_F(PermissionRequestHandlerTest, TestPermissionGranted) { |
| 177 handler()->SendRequest(delegate()); | 177 handler()->SendRequest(delegate()); |
| 178 // Verify Handler store the request correctly. | 178 // Verify Handler store the request correctly. |
| 179 ASSERT_EQ(1u, handler()->requests().size()); | 179 ASSERT_EQ(1u, handler()->requests().size()); |
| 180 EXPECT_EQ(origin(), handler()->requests()[0]->GetOrigin()); | 180 EXPECT_EQ(origin(), handler()->requests()[0]->GetOrigin()); |
| (...skipping 29 matching lines...) Expand all Loading... |
| 210 EXPECT_FALSE(allowed()); | 210 EXPECT_FALSE(allowed()); |
| 211 handler()->PruneRequests(); | 211 handler()->PruneRequests(); |
| 212 // Verify the weak reference in handler was removed. | 212 // Verify the weak reference in handler was removed. |
| 213 EXPECT_TRUE(handler()->requests().empty()); | 213 EXPECT_TRUE(handler()->requests().empty()); |
| 214 } | 214 } |
| 215 | 215 |
| 216 TEST_F(PermissionRequestHandlerTest, TestMultiplePermissionRequest) { | 216 TEST_F(PermissionRequestHandlerTest, TestMultiplePermissionRequest) { |
| 217 GURL origin1 = GURL("http://a.google.com"); | 217 GURL origin1 = GURL("http://a.google.com"); |
| 218 int64_t resources1 = AwPermissionRequest::Geolocation; | 218 int64_t resources1 = AwPermissionRequest::Geolocation; |
| 219 | 219 |
| 220 scoped_ptr<AwPermissionRequestDelegate> delegate1; | 220 std::unique_ptr<AwPermissionRequestDelegate> delegate1; |
| 221 delegate1.reset(new TestAwPermissionRequestDelegate( | 221 delegate1.reset(new TestAwPermissionRequestDelegate( |
| 222 origin1, resources1, | 222 origin1, resources1, |
| 223 base::Bind(&PermissionRequestHandlerTest::NotifyRequestResult, | 223 base::Bind(&PermissionRequestHandlerTest::NotifyRequestResult, |
| 224 base::Unretained(this)))); | 224 base::Unretained(this)))); |
| 225 | 225 |
| 226 // Send 1st request | 226 // Send 1st request |
| 227 handler()->SendRequest(delegate()); | 227 handler()->SendRequest(delegate()); |
| 228 // Verify Handler store the request correctly. | 228 // Verify Handler store the request correctly. |
| 229 ASSERT_EQ(1u, handler()->requests().size()); | 229 ASSERT_EQ(1u, handler()->requests().size()); |
| 230 EXPECT_EQ(origin(), handler()->requests()[0]->GetOrigin()); | 230 EXPECT_EQ(origin(), handler()->requests()[0]->GetOrigin()); |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 277 TEST_F(PermissionRequestHandlerTest, TestPreauthorizePermission) { | 277 TEST_F(PermissionRequestHandlerTest, TestPreauthorizePermission) { |
| 278 handler()->PreauthorizePermission(origin(), resources()); | 278 handler()->PreauthorizePermission(origin(), resources()); |
| 279 | 279 |
| 280 // Permission should granted without asking PermissionRequestHandlerClient. | 280 // Permission should granted without asking PermissionRequestHandlerClient. |
| 281 handler()->SendRequest(delegate()); | 281 handler()->SendRequest(delegate()); |
| 282 EXPECT_TRUE(allowed()); | 282 EXPECT_TRUE(allowed()); |
| 283 EXPECT_EQ(NULL, client()->request()); | 283 EXPECT_EQ(NULL, client()->request()); |
| 284 | 284 |
| 285 // Only ask one preauthorized resource, permission should granted | 285 // Only ask one preauthorized resource, permission should granted |
| 286 // without asking PermissionRequestHandlerClient. | 286 // without asking PermissionRequestHandlerClient. |
| 287 scoped_ptr<AwPermissionRequestDelegate> delegate; | 287 std::unique_ptr<AwPermissionRequestDelegate> delegate; |
| 288 delegate.reset(new TestAwPermissionRequestDelegate( | 288 delegate.reset(new TestAwPermissionRequestDelegate( |
| 289 origin(), AwPermissionRequest::AudioCapture, | 289 origin(), AwPermissionRequest::AudioCapture, |
| 290 base::Bind(&PermissionRequestHandlerTest::NotifyRequestResult, | 290 base::Bind(&PermissionRequestHandlerTest::NotifyRequestResult, |
| 291 base::Unretained(this)))); | 291 base::Unretained(this)))); |
| 292 client()->Reset(); | 292 client()->Reset(); |
| 293 handler()->SendRequest(std::move(delegate)); | 293 handler()->SendRequest(std::move(delegate)); |
| 294 EXPECT_TRUE(allowed()); | 294 EXPECT_TRUE(allowed()); |
| 295 EXPECT_EQ(NULL, client()->request()); | 295 EXPECT_EQ(NULL, client()->request()); |
| 296 } | 296 } |
| 297 | 297 |
| 298 TEST_F(PermissionRequestHandlerTest, TestOriginNotPreauthorized) { | 298 TEST_F(PermissionRequestHandlerTest, TestOriginNotPreauthorized) { |
| 299 handler()->PreauthorizePermission(origin(), resources()); | 299 handler()->PreauthorizePermission(origin(), resources()); |
| 300 | 300 |
| 301 // Ask the origin which wasn't preauthorized. | 301 // Ask the origin which wasn't preauthorized. |
| 302 GURL origin ("http://a.google.com/a/b"); | 302 GURL origin ("http://a.google.com/a/b"); |
| 303 scoped_ptr<AwPermissionRequestDelegate> delegate; | 303 std::unique_ptr<AwPermissionRequestDelegate> delegate; |
| 304 int64_t requested_resources = AwPermissionRequest::AudioCapture; | 304 int64_t requested_resources = AwPermissionRequest::AudioCapture; |
| 305 delegate.reset(new TestAwPermissionRequestDelegate( | 305 delegate.reset(new TestAwPermissionRequestDelegate( |
| 306 origin, requested_resources, | 306 origin, requested_resources, |
| 307 base::Bind(&PermissionRequestHandlerTest::NotifyRequestResult, | 307 base::Bind(&PermissionRequestHandlerTest::NotifyRequestResult, |
| 308 base::Unretained(this)))); | 308 base::Unretained(this)))); |
| 309 handler()->SendRequest(std::move(delegate)); | 309 handler()->SendRequest(std::move(delegate)); |
| 310 EXPECT_EQ(origin, handler()->requests()[0]->GetOrigin()); | 310 EXPECT_EQ(origin, handler()->requests()[0]->GetOrigin()); |
| 311 EXPECT_EQ(requested_resources, handler()->requests()[0]->GetResources()); | 311 EXPECT_EQ(requested_resources, handler()->requests()[0]->GetResources()); |
| 312 client()->Grant(); | 312 client()->Grant(); |
| 313 EXPECT_TRUE(allowed()); | 313 EXPECT_TRUE(allowed()); |
| 314 } | 314 } |
| 315 | 315 |
| 316 TEST_F(PermissionRequestHandlerTest, TestResourcesNotPreauthorized) { | 316 TEST_F(PermissionRequestHandlerTest, TestResourcesNotPreauthorized) { |
| 317 handler()->PreauthorizePermission(origin(), resources()); | 317 handler()->PreauthorizePermission(origin(), resources()); |
| 318 | 318 |
| 319 // Ask the resources which weren't preauthorized. | 319 // Ask the resources which weren't preauthorized. |
| 320 scoped_ptr<AwPermissionRequestDelegate> delegate; | 320 std::unique_ptr<AwPermissionRequestDelegate> delegate; |
| 321 int64_t requested_resources = | 321 int64_t requested_resources = |
| 322 AwPermissionRequest::AudioCapture | AwPermissionRequest::Geolocation; | 322 AwPermissionRequest::AudioCapture | AwPermissionRequest::Geolocation; |
| 323 delegate.reset(new TestAwPermissionRequestDelegate( | 323 delegate.reset(new TestAwPermissionRequestDelegate( |
| 324 origin(), requested_resources, | 324 origin(), requested_resources, |
| 325 base::Bind(&PermissionRequestHandlerTest::NotifyRequestResult, | 325 base::Bind(&PermissionRequestHandlerTest::NotifyRequestResult, |
| 326 base::Unretained(this)))); | 326 base::Unretained(this)))); |
| 327 | 327 |
| 328 handler()->SendRequest(std::move(delegate)); | 328 handler()->SendRequest(std::move(delegate)); |
| 329 EXPECT_EQ(origin(), handler()->requests()[0]->GetOrigin()); | 329 EXPECT_EQ(origin(), handler()->requests()[0]->GetOrigin()); |
| 330 EXPECT_EQ(requested_resources, handler()->requests()[0]->GetResources()); | 330 EXPECT_EQ(requested_resources, handler()->requests()[0]->GetResources()); |
| 331 client()->Deny(); | 331 client()->Deny(); |
| 332 EXPECT_FALSE(allowed()); | 332 EXPECT_FALSE(allowed()); |
| 333 } | 333 } |
| 334 | 334 |
| 335 TEST_F(PermissionRequestHandlerTest, TestPreauthorizeMultiplePermission) { | 335 TEST_F(PermissionRequestHandlerTest, TestPreauthorizeMultiplePermission) { |
| 336 handler()->PreauthorizePermission(origin(), resources()); | 336 handler()->PreauthorizePermission(origin(), resources()); |
| 337 // Preauthorize another permission. | 337 // Preauthorize another permission. |
| 338 GURL origin ("http://a.google.com/a/b"); | 338 GURL origin ("http://a.google.com/a/b"); |
| 339 handler()->PreauthorizePermission(origin, AwPermissionRequest::Geolocation); | 339 handler()->PreauthorizePermission(origin, AwPermissionRequest::Geolocation); |
| 340 GURL origin_hostname ("http://a.google.com/"); | 340 GURL origin_hostname ("http://a.google.com/"); |
| 341 scoped_ptr<AwPermissionRequestDelegate> delegate; | 341 std::unique_ptr<AwPermissionRequestDelegate> delegate; |
| 342 delegate.reset(new TestAwPermissionRequestDelegate( | 342 delegate.reset(new TestAwPermissionRequestDelegate( |
| 343 origin_hostname, AwPermissionRequest::Geolocation, | 343 origin_hostname, AwPermissionRequest::Geolocation, |
| 344 base::Bind(&PermissionRequestHandlerTest::NotifyRequestResult, | 344 base::Bind(&PermissionRequestHandlerTest::NotifyRequestResult, |
| 345 base::Unretained(this)))); | 345 base::Unretained(this)))); |
| 346 handler()->SendRequest(std::move(delegate)); | 346 handler()->SendRequest(std::move(delegate)); |
| 347 EXPECT_TRUE(allowed()); | 347 EXPECT_TRUE(allowed()); |
| 348 EXPECT_EQ(NULL, client()->request()); | 348 EXPECT_EQ(NULL, client()->request()); |
| 349 } | 349 } |
| 350 | 350 |
| 351 } // android_webview | 351 } // android_webview |
| OLD | NEW |