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

Unified Diff: android_webview/native/permission/permission_request_handler_unittest.cc

Issue 2863233002: [WebView] Move files from native to browser (Closed)
Patch Set: Created 3 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 side-by-side diff with in-line comments
Download patch
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
deleted file mode 100644
index 6f20a7c286f02a34d015a0bcd54281f3cea3c9ef..0000000000000000000000000000000000000000
--- a/android_webview/native/permission/permission_request_handler_unittest.cc
+++ /dev/null
@@ -1,351 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "android_webview/native/permission/permission_request_handler.h"
-
-#include <utility>
-
-#include "android_webview/native/permission/aw_permission_request.h"
-#include "android_webview/native/permission/aw_permission_request_delegate.h"
-#include "android_webview/native/permission/permission_request_handler_client.h"
-#include "base/bind.h"
-#include "base/callback.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-namespace android_webview {
-
-class TestAwPermissionRequestDelegate : public AwPermissionRequestDelegate {
- public:
- TestAwPermissionRequestDelegate(const GURL& origin,
- int64_t resources,
- base::Callback<void(bool)> callback)
- : origin_(origin), resources_(resources), callback_(callback) {}
-
- // Get the origin which initiated the permission request.
- const GURL& GetOrigin() override { return origin_; }
-
- // Get the resources the origin wanted to access.
- int64_t GetResources() override { return resources_; }
-
- // Notify the permission request is allowed or not.
- void NotifyRequestResult(bool allowed) override { callback_.Run(allowed); }
-
- private:
- GURL origin_;
- int64_t resources_;
- base::Callback<void(bool)> callback_;
-};
-
-class TestPermissionRequestHandlerClient :
- public PermissionRequestHandlerClient {
- public:
- struct Permission {
- Permission()
- :resources(0) {}
- Permission(const GURL& origin, int64_t resources)
- : origin(origin), resources(resources) {}
- GURL origin;
- int64_t resources;
- };
-
- TestPermissionRequestHandlerClient()
- : request_(NULL) {}
-
- void OnPermissionRequest(
- base::android::ScopedJavaLocalRef<jobject> j_request,
- AwPermissionRequest* request) override {
- DCHECK(request);
- request_ = request;
- java_request_ = j_request;
- requested_permission_ =
- Permission(request->GetOrigin(), request->GetResources());
- }
-
- void OnPermissionRequestCanceled(AwPermissionRequest* request) override {
- canceled_permission_ =
- Permission(request->GetOrigin(), request->GetResources());
- }
-
- AwPermissionRequest* request() {
- return request_;
- }
-
- const Permission& requested_permission() {
- return requested_permission_;
- }
-
- const Permission& canceled_permission() {
- return canceled_permission_;
- }
-
- void Grant() {
- request_->OnAccept(NULL, NULL, true);
- request_->DeleteThis();
- request_ = NULL;
- }
-
- void Deny() {
- request_->OnAccept(NULL, NULL, false);
- request_->DeleteThis();
- request_ = NULL;
- }
-
- void Reset() {
- request_ = NULL;
- requested_permission_ = Permission();
- canceled_permission_ = Permission();
- }
-
- private:
- base::android::ScopedJavaLocalRef<jobject> java_request_;
- AwPermissionRequest* request_;
- Permission requested_permission_;
- Permission canceled_permission_;
-};
-
-class TestPermissionRequestHandler : public PermissionRequestHandler {
- public:
- TestPermissionRequestHandler(PermissionRequestHandlerClient* client)
- : PermissionRequestHandler(client, NULL) {
- }
-
- const std::vector<base::WeakPtr<AwPermissionRequest> > requests() {
- return requests_;
- }
-
- void PruneRequests() {
- return PermissionRequestHandler::PruneRequests();
- }
-};
-
-class PermissionRequestHandlerTest : public testing::Test {
- public:
- PermissionRequestHandlerTest()
- : handler_(&client_),
- allowed_(false) {}
-
- void NotifyRequestResult(bool allowed) {
- allowed_ = allowed;
- }
-
- protected:
- void SetUp() override {
- testing::Test::SetUp();
- origin_ = GURL("http://www.google.com");
- resources_ =
- AwPermissionRequest::VideoCapture | AwPermissionRequest::AudioCapture;
- delegate_.reset(
- new TestAwPermissionRequestDelegate(
- origin_, resources_, base::Bind(
- &PermissionRequestHandlerTest::NotifyRequestResult,
- base::Unretained(this))));
- }
-
- const GURL& origin() {
- return origin_;
- }
-
- int64_t resources() { return resources_; }
-
- std::unique_ptr<AwPermissionRequestDelegate> delegate() {
- return std::move(delegate_);
- }
-
- TestPermissionRequestHandler* handler() {
- return &handler_;
- }
-
- TestPermissionRequestHandlerClient* client() {
- return &client_;
- }
-
- bool allowed() {
- return allowed_;
- }
-
- private:
- GURL origin_;
- int64_t resources_;
- std::unique_ptr<AwPermissionRequestDelegate> delegate_;
- TestPermissionRequestHandlerClient client_;
- TestPermissionRequestHandler handler_;
- bool allowed_;
-};
-
-TEST_F(PermissionRequestHandlerTest, TestPermissionGranted) {
- handler()->SendRequest(delegate());
- // Verify Handler store the request correctly.
- ASSERT_EQ(1u, handler()->requests().size());
- EXPECT_EQ(origin(), handler()->requests()[0]->GetOrigin());
- EXPECT_EQ(resources(), handler()->requests()[0]->GetResources());
-
- // Verify client's onPermissionRequest was called
- EXPECT_EQ(origin(), client()->request()->GetOrigin());
- EXPECT_EQ(resources(), client()->request()->GetResources());
-
- // Simulate the grant request.
- client()->Grant();
- // Verify the request is notified as granted
- EXPECT_TRUE(allowed());
- handler()->PruneRequests();
- // Verify the weak reference in handler was removed.
- EXPECT_TRUE(handler()->requests().empty());
-}
-
-TEST_F(PermissionRequestHandlerTest, TestPermissionDenied) {
- handler()->SendRequest(delegate());
- // Verify Handler store the request correctly.
- ASSERT_EQ(1u, handler()->requests().size());
- EXPECT_EQ(origin(), handler()->requests()[0]->GetOrigin());
- EXPECT_EQ(resources(), handler()->requests()[0]->GetResources());
-
- // Verify client's onPermissionRequest was called
- EXPECT_EQ(origin(), client()->request()->GetOrigin());
- EXPECT_EQ(resources(), client()->request()->GetResources());
-
- // Simulate the deny request.
- client()->Deny();
- // Verify the request is notified as granted
- EXPECT_FALSE(allowed());
- handler()->PruneRequests();
- // Verify the weak reference in handler was removed.
- EXPECT_TRUE(handler()->requests().empty());
-}
-
-TEST_F(PermissionRequestHandlerTest, TestMultiplePermissionRequest) {
- GURL origin1 = GURL("http://a.google.com");
- int64_t resources1 = AwPermissionRequest::Geolocation;
-
- std::unique_ptr<AwPermissionRequestDelegate> delegate1;
- delegate1.reset(new TestAwPermissionRequestDelegate(
- origin1, resources1,
- base::Bind(&PermissionRequestHandlerTest::NotifyRequestResult,
- base::Unretained(this))));
-
- // Send 1st request
- handler()->SendRequest(delegate());
- // Verify Handler store the request correctly.
- ASSERT_EQ(1u, handler()->requests().size());
- EXPECT_EQ(origin(), handler()->requests()[0]->GetOrigin());
- EXPECT_EQ(resources(), handler()->requests()[0]->GetResources());
- // Verify client's onPermissionRequest was called
- EXPECT_EQ(origin(), client()->request()->GetOrigin());
- EXPECT_EQ(resources(), client()->request()->GetResources());
-
- // Send 2nd request
- handler()->SendRequest(std::move(delegate1));
- // Verify Handler store the request correctly.
- ASSERT_EQ(2u, handler()->requests().size());
- EXPECT_EQ(origin(), handler()->requests()[0]->GetOrigin());
- EXPECT_EQ(resources(), handler()->requests()[0]->GetResources());
- EXPECT_EQ(origin1, handler()->requests()[1]->GetOrigin());
- EXPECT_EQ(resources1, handler()->requests()[1]->GetResources());
- // Verify client's onPermissionRequest was called
- EXPECT_EQ(origin1, client()->request()->GetOrigin());
- EXPECT_EQ(resources1, client()->request()->GetResources());
-
- // Send 3rd request which has same origin and resources as first one.
- delegate1.reset(new TestAwPermissionRequestDelegate(origin(), resources(),
- base::Bind(&PermissionRequestHandlerTest::NotifyRequestResult,
- base::Unretained(this))));
- handler()->SendRequest(std::move(delegate1));
- // Verify Handler store the request correctly.
- ASSERT_EQ(3u, handler()->requests().size());
- EXPECT_EQ(origin(), handler()->requests()[0]->GetOrigin());
- EXPECT_EQ(resources(), handler()->requests()[0]->GetResources());
- EXPECT_EQ(origin1, handler()->requests()[1]->GetOrigin());
- EXPECT_EQ(resources1, handler()->requests()[1]->GetResources());
- EXPECT_EQ(origin(), handler()->requests()[2]->GetOrigin());
- EXPECT_EQ(resources(), handler()->requests()[2]->GetResources());
- // Verify client's onPermissionRequest was called
- EXPECT_EQ(origin(), client()->request()->GetOrigin());
- EXPECT_EQ(resources(), client()->request()->GetResources());
-
- // Cancel the request.
- handler()->CancelRequest(origin(), resources());
- // Verify client's OnPermissionRequestCancled() was called.
- EXPECT_EQ(origin(), client()->canceled_permission().origin);
- EXPECT_EQ(resources(), client()->canceled_permission().resources);
- // Verify Handler store the request correctly, the 1st and 3rd were removed.
- handler()->PruneRequests();
- ASSERT_EQ(1u, handler()->requests().size());
- EXPECT_EQ(origin1, handler()->requests()[0]->GetOrigin());
- EXPECT_EQ(resources1, handler()->requests()[0]->GetResources());
-}
-
-TEST_F(PermissionRequestHandlerTest, TestPreauthorizePermission) {
- handler()->PreauthorizePermission(origin(), resources());
-
- // Permission should granted without asking PermissionRequestHandlerClient.
- handler()->SendRequest(delegate());
- EXPECT_TRUE(allowed());
- EXPECT_EQ(NULL, client()->request());
-
- // Only ask one preauthorized resource, permission should granted
- // without asking PermissionRequestHandlerClient.
- std::unique_ptr<AwPermissionRequestDelegate> delegate;
- delegate.reset(new TestAwPermissionRequestDelegate(
- origin(), AwPermissionRequest::AudioCapture,
- base::Bind(&PermissionRequestHandlerTest::NotifyRequestResult,
- base::Unretained(this))));
- client()->Reset();
- handler()->SendRequest(std::move(delegate));
- EXPECT_TRUE(allowed());
- EXPECT_EQ(NULL, client()->request());
-}
-
-TEST_F(PermissionRequestHandlerTest, TestOriginNotPreauthorized) {
- handler()->PreauthorizePermission(origin(), resources());
-
- // Ask the origin which wasn't preauthorized.
- GURL origin ("http://a.google.com/a/b");
- std::unique_ptr<AwPermissionRequestDelegate> delegate;
- int64_t requested_resources = AwPermissionRequest::AudioCapture;
- delegate.reset(new TestAwPermissionRequestDelegate(
- origin, requested_resources,
- base::Bind(&PermissionRequestHandlerTest::NotifyRequestResult,
- base::Unretained(this))));
- handler()->SendRequest(std::move(delegate));
- EXPECT_EQ(origin, handler()->requests()[0]->GetOrigin());
- EXPECT_EQ(requested_resources, handler()->requests()[0]->GetResources());
- client()->Grant();
- EXPECT_TRUE(allowed());
-}
-
-TEST_F(PermissionRequestHandlerTest, TestResourcesNotPreauthorized) {
- handler()->PreauthorizePermission(origin(), resources());
-
- // Ask the resources which weren't preauthorized.
- std::unique_ptr<AwPermissionRequestDelegate> delegate;
- int64_t requested_resources =
- AwPermissionRequest::AudioCapture | AwPermissionRequest::Geolocation;
- delegate.reset(new TestAwPermissionRequestDelegate(
- origin(), requested_resources,
- base::Bind(&PermissionRequestHandlerTest::NotifyRequestResult,
- base::Unretained(this))));
-
- handler()->SendRequest(std::move(delegate));
- EXPECT_EQ(origin(), handler()->requests()[0]->GetOrigin());
- EXPECT_EQ(requested_resources, handler()->requests()[0]->GetResources());
- client()->Deny();
- EXPECT_FALSE(allowed());
-}
-
-TEST_F(PermissionRequestHandlerTest, TestPreauthorizeMultiplePermission) {
- handler()->PreauthorizePermission(origin(), resources());
- // Preauthorize another permission.
- GURL origin ("http://a.google.com/a/b");
- handler()->PreauthorizePermission(origin, AwPermissionRequest::Geolocation);
- GURL origin_hostname ("http://a.google.com/");
- std::unique_ptr<AwPermissionRequestDelegate> delegate;
- delegate.reset(new TestAwPermissionRequestDelegate(
- origin_hostname, AwPermissionRequest::Geolocation,
- base::Bind(&PermissionRequestHandlerTest::NotifyRequestResult,
- base::Unretained(this))));
- handler()->SendRequest(std::move(delegate));
- EXPECT_TRUE(allowed());
- EXPECT_EQ(NULL, client()->request());
-}
-
-} // android_webview

Powered by Google App Engine
This is Rietveld 408576698