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

Side by Side Diff: components/password_manager/content/renderer/credential_manager_client_browsertest.cc

Issue 2947413002: Restrict CM API interface request and message dispatch. (Closed)
Patch Set: Address nit from clamy@. Created 3 years, 5 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 "components/password_manager/content/renderer/credential_manager_client .h" 5 #include "components/password_manager/content/renderer/credential_manager_client .h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <memory> 9 #include <memory>
10 #include <tuple> 10 #include <tuple>
11 #include <utility> 11 #include <utility>
12 12
13 #include "base/location.h" 13 #include "base/location.h"
14 #include "base/message_loop/message_loop.h" 14 #include "base/message_loop/message_loop.h"
15 #include "base/run_loop.h" 15 #include "base/run_loop.h"
16 #include "content/public/common/associated_interface_provider.h"
16 #include "content/public/renderer/render_frame.h" 17 #include "content/public/renderer/render_frame.h"
17 #include "content/public/renderer/render_view.h" 18 #include "content/public/renderer/render_view.h"
18 #include "content/public/test/render_view_test.h" 19 #include "content/public/test/render_view_test.h"
19 #include "content/public/test/test_utils.h" 20 #include "content/public/test/test_utils.h"
20 #include "mojo/public/cpp/bindings/binding_set.h" 21 #include "mojo/public/cpp/bindings/associated_binding_set.h"
21 #include "services/service_manager/public/cpp/interface_provider.h"
22 #include "testing/gtest/include/gtest/gtest.h" 22 #include "testing/gtest/include/gtest/gtest.h"
23 #include "third_party/WebKit/public/platform/WebCredential.h" 23 #include "third_party/WebKit/public/platform/WebCredential.h"
24 #include "third_party/WebKit/public/platform/WebCredentialManagerClient.h" 24 #include "third_party/WebKit/public/platform/WebCredentialManagerClient.h"
25 #include "third_party/WebKit/public/platform/WebCredentialManagerError.h" 25 #include "third_party/WebKit/public/platform/WebCredentialManagerError.h"
26 #include "third_party/WebKit/public/platform/WebCredentialMediationRequirement.h " 26 #include "third_party/WebKit/public/platform/WebCredentialMediationRequirement.h "
27 #include "third_party/WebKit/public/platform/WebPasswordCredential.h" 27 #include "third_party/WebKit/public/platform/WebPasswordCredential.h"
28 28
29 namespace password_manager { 29 namespace password_manager {
30 30
31 namespace { 31 namespace {
32 32
33 const char kTestCredentialPassword[] = "https://password.com/"; 33 const char kTestCredentialPassword[] = "https://password.com/";
34 const char kTestCredentialEmpty[] = "https://empty.com/"; 34 const char kTestCredentialEmpty[] = "https://empty.com/";
35 const char kTestCredentialReject[] = "https://reject.com/"; 35 const char kTestCredentialReject[] = "https://reject.com/";
36 36
37 class FakeCredentialManager : public mojom::CredentialManager { 37 class FakeCredentialManager : public mojom::CredentialManager {
38 public: 38 public:
39 FakeCredentialManager() {} 39 FakeCredentialManager() {}
40 ~FakeCredentialManager() override {} 40 ~FakeCredentialManager() override {}
41 41
42 void BindRequest(mojom::CredentialManagerRequest request) { 42 void BindRequest(mojom::CredentialManagerAssociatedRequest request) {
43 bindings_.AddBinding(this, std::move(request)); 43 bindings_.AddBinding(this, std::move(request));
44 } 44 }
45 45
46 private: 46 private:
47 // mojom::CredentialManager methods: 47 // mojom::CredentialManager methods:
48 void Store(const CredentialInfo& credential, 48 void Store(const CredentialInfo& credential,
49 StoreCallback callback) override { 49 StoreCallback callback) override {
50 std::move(callback).Run(); 50 std::move(callback).Run();
51 } 51 }
52 52
(...skipping 14 matching lines...) Expand all
67 } else if (url == kTestCredentialEmpty) { 67 } else if (url == kTestCredentialEmpty) {
68 std::move(callback).Run(mojom::CredentialManagerError::SUCCESS, 68 std::move(callback).Run(mojom::CredentialManagerError::SUCCESS,
69 CredentialInfo()); 69 CredentialInfo());
70 } else if (url == kTestCredentialReject) { 70 } else if (url == kTestCredentialReject) {
71 std::move(callback).Run( 71 std::move(callback).Run(
72 mojom::CredentialManagerError::PASSWORDSTOREUNAVAILABLE, 72 mojom::CredentialManagerError::PASSWORDSTOREUNAVAILABLE,
73 base::nullopt); 73 base::nullopt);
74 } 74 }
75 } 75 }
76 76
77 mojo::BindingSet<mojom::CredentialManager> bindings_; 77 mojo::AssociatedBindingSet<mojom::CredentialManager> bindings_;
78 }; 78 };
79 79
80 class CredentialManagerClientTest : public content::RenderViewTest { 80 class CredentialManagerClientTest : public content::RenderViewTest {
81 public: 81 public:
82 CredentialManagerClientTest() 82 CredentialManagerClientTest()
83 : callback_errored_(false), callback_succeeded_(false) {} 83 : callback_errored_(false), callback_succeeded_(false) {}
84 ~CredentialManagerClientTest() override {} 84 ~CredentialManagerClientTest() override {}
85 85
86 void SetUp() override { 86 void SetUp() override {
87 content::RenderViewTest::SetUp(); 87 content::RenderViewTest::SetUp();
88 client_.reset(new CredentialManagerClient(view_)); 88 client_.reset(new CredentialManagerClient(view_));
89 89
90 service_manager::InterfaceProvider* remote_interfaces = 90 content::AssociatedInterfaceProvider* remote_interfaces =
91 view_->GetMainRenderFrame()->GetRemoteInterfaces(); 91 view_->GetMainRenderFrame()->GetRemoteAssociatedInterfaces();
92 service_manager::InterfaceProvider::TestApi test_api(remote_interfaces); 92 remote_interfaces->OverrideBinderForTesting(
93 test_api.SetBinderForName(
94 mojom::CredentialManager::Name_, 93 mojom::CredentialManager::Name_,
95 base::Bind(&CredentialManagerClientTest::BindCredentialManager, 94 base::Bind(&CredentialManagerClientTest::BindCredentialManager,
96 base::Unretained(this))); 95 base::Unretained(this)));
97 } 96 }
98 97
99 void TearDown() override { 98 void TearDown() override {
100 credential_.reset(); 99 credential_.reset();
101 client_.reset(); 100 client_.reset();
102 content::RenderViewTest::TearDown(); 101 content::RenderViewTest::TearDown();
103 } 102 }
104 103
105 bool callback_errored() const { return callback_errored_; } 104 bool callback_errored() const { return callback_errored_; }
106 void set_callback_errored(bool state) { callback_errored_ = state; } 105 void set_callback_errored(bool state) { callback_errored_ = state; }
107 bool callback_succeeded() const { return callback_succeeded_; } 106 bool callback_succeeded() const { return callback_succeeded_; }
108 void set_callback_succeeded(bool state) { callback_succeeded_ = state; } 107 void set_callback_succeeded(bool state) { callback_succeeded_ = state; }
109 108
110 void BindCredentialManager(mojo::ScopedMessagePipeHandle handle) { 109 void BindCredentialManager(mojo::ScopedInterfaceEndpointHandle handle) {
111 fake_cm_.BindRequest(mojom::CredentialManagerRequest(std::move(handle))); 110 fake_cm_.BindRequest(
111 mojom::CredentialManagerAssociatedRequest(std::move(handle)));
112 } 112 }
113 113
114 std::unique_ptr<blink::WebPasswordCredential> credential_; 114 std::unique_ptr<blink::WebPasswordCredential> credential_;
115 blink::WebCredentialManagerError error_; 115 blink::WebCredentialManagerError error_;
116 116
117 protected: 117 protected:
118 std::unique_ptr<CredentialManagerClient> client_; 118 std::unique_ptr<CredentialManagerClient> client_;
119 119
120 FakeCredentialManager fake_cm_; 120 FakeCredentialManager fake_cm_;
121 121
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 243
244 EXPECT_FALSE(callback_succeeded()); 244 EXPECT_FALSE(callback_succeeded());
245 EXPECT_TRUE(callback_errored()); 245 EXPECT_TRUE(callback_errored());
246 EXPECT_FALSE(credential_); 246 EXPECT_FALSE(credential_);
247 EXPECT_EQ(blink::WebCredentialManagerError:: 247 EXPECT_EQ(blink::WebCredentialManagerError::
248 kWebCredentialManagerPasswordStoreUnavailableError, 248 kWebCredentialManagerPasswordStoreUnavailableError,
249 error_); 249 error_);
250 } 250 }
251 251
252 } // namespace password_manager 252 } // namespace password_manager
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698