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

Side by Side Diff: components/password_manager/content/browser/content_credential_manager_dispatcher_unittest.cc

Issue 848723002: Credential Manager API: Showing both local and federated logins. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 11 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/browser/credential_manager_dispatc her.h" 5 #include "components/password_manager/content/browser/credential_manager_dispatc her.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/run_loop.h" 9 #include "base/run_loop.h"
10 #include "base/strings/string16.h" 10 #include "base/strings/string16.h"
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
48 did_prompt_user_to_save_ = true; 48 did_prompt_user_to_save_ = true;
49 manager_.reset(manager.release()); 49 manager_.reset(manager.release());
50 return true; 50 return true;
51 } 51 }
52 52
53 bool PromptUserToChooseCredentials( 53 bool PromptUserToChooseCredentials(
54 const std::vector<autofill::PasswordForm*>& local_forms, 54 const std::vector<autofill::PasswordForm*>& local_forms,
55 const std::vector<autofill::PasswordForm*>& federated_forms, 55 const std::vector<autofill::PasswordForm*>& federated_forms,
56 base::Callback<void(const password_manager::CredentialInfo&)> callback) 56 base::Callback<void(const password_manager::CredentialInfo&)> callback)
57 override { 57 override {
58 // TODO(melandory): Use ScopedVector instead of std::vector in arguments.
59 // ContentCredentialManagerDispatcher::OnGetPasswordStoreResults contains a
60 // memory leak because of this.
58 EXPECT_FALSE(local_forms.empty() && federated_forms.empty()); 61 EXPECT_FALSE(local_forms.empty() && federated_forms.empty());
59 did_prompt_user_to_choose_ = true; 62 did_prompt_user_to_choose_ = true;
60 ScopedVector<autofill::PasswordForm> local_entries; 63 ScopedVector<autofill::PasswordForm> local_entries;
61 local_entries.assign(local_forms.begin(), local_forms.end()); 64 local_entries.assign(local_forms.begin(), local_forms.end());
62 ScopedVector<autofill::PasswordForm> federated_entries; 65 ScopedVector<autofill::PasswordForm> federated_entries;
63 federated_entries.assign(federated_forms.begin(), federated_forms.end()); 66 federated_entries.assign(federated_forms.begin(), federated_forms.end());
64 // TODO(vasilii): Do something clever with |federated_forms|. 67 password_manager::CredentialInfo info(
65 password_manager::CredentialInfo info(*local_entries[0]); 68 local_forms.empty() ? *federated_forms[0] : *local_entries[0],
69 local_forms.empty()
70 ? password_manager::CredentialType::CREDENTIAL_TYPE_FEDERATED
71 : password_manager::CredentialType::CREDENTIAL_TYPE_LOCAL);
66 base::MessageLoop::current()->PostTask(FROM_HERE, 72 base::MessageLoop::current()->PostTask(FROM_HERE,
67 base::Bind(callback, info)); 73 base::Bind(callback, info));
68 return true; 74 return true;
69 } 75 }
70 76
71 bool IsOffTheRecord() override { return is_off_the_record_; } 77 bool IsOffTheRecord() override { return is_off_the_record_; }
72 78
73 bool did_prompt_user_to_save() const { return did_prompt_user_to_save_; } 79 bool did_prompt_user_to_save() const { return did_prompt_user_to_save_; }
74 bool did_prompt_user_to_choose() const { return did_prompt_user_to_choose_; } 80 bool did_prompt_user_to_choose() const { return did_prompt_user_to_choose_; }
75 81
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
181 dispatcher()->OnNotifyFailedSignIn(kRequestId, info); 187 dispatcher()->OnNotifyFailedSignIn(kRequestId, info);
182 188
183 const uint32 kMsgID = CredentialManagerMsg_AcknowledgeFailedSignIn::ID; 189 const uint32 kMsgID = CredentialManagerMsg_AcknowledgeFailedSignIn::ID;
184 const IPC::Message* message = 190 const IPC::Message* message =
185 process()->sink().GetFirstMessageMatching(kMsgID); 191 process()->sink().GetFirstMessageMatching(kMsgID);
186 EXPECT_TRUE(message); 192 EXPECT_TRUE(message);
187 process()->sink().ClearMessages(); 193 process()->sink().ClearMessages();
188 } 194 }
189 195
190 TEST_F(CredentialManagerDispatcherTest, CredentialManagerOnNotifySignedIn) { 196 TEST_F(CredentialManagerDispatcherTest, CredentialManagerOnNotifySignedIn) {
191 CredentialInfo info(form_); 197 CredentialInfo info(form_,
198 password_manager::CredentialType::CREDENTIAL_TYPE_LOCAL);
192 dispatcher()->OnNotifySignedIn(kRequestId, info); 199 dispatcher()->OnNotifySignedIn(kRequestId, info);
193 200
194 const uint32 kMsgID = CredentialManagerMsg_AcknowledgeSignedIn::ID; 201 const uint32 kMsgID = CredentialManagerMsg_AcknowledgeSignedIn::ID;
195 const IPC::Message* message = 202 const IPC::Message* message =
196 process()->sink().GetFirstMessageMatching(kMsgID); 203 process()->sink().GetFirstMessageMatching(kMsgID);
197 EXPECT_TRUE(message); 204 EXPECT_TRUE(message);
198 process()->sink().ClearMessages(); 205 process()->sink().ClearMessages();
199 206
200 // Allow the PasswordFormManager to talk to the password store, determine 207 // Allow the PasswordFormManager to talk to the password store, determine
201 // that the form is new, and set it as pending. 208 // that the form is new, and set it as pending.
202 RunAllPendingTasks(); 209 RunAllPendingTasks();
203 210
204 EXPECT_TRUE(client_->did_prompt_user_to_save()); 211 EXPECT_TRUE(client_->did_prompt_user_to_save());
205 EXPECT_TRUE(client_->pending_manager()->HasCompletedMatching()); 212 EXPECT_TRUE(client_->pending_manager()->HasCompletedMatching());
206 213
207 autofill::PasswordForm new_form = 214 autofill::PasswordForm new_form =
208 client_->pending_manager()->pending_credentials(); 215 client_->pending_manager()->pending_credentials();
209 EXPECT_EQ(form_.username_value, new_form.username_value); 216 EXPECT_EQ(form_.username_value, new_form.username_value);
210 EXPECT_EQ(form_.display_name, new_form.display_name); 217 EXPECT_EQ(form_.display_name, new_form.display_name);
211 EXPECT_EQ(form_.password_value, new_form.password_value); 218 EXPECT_EQ(form_.password_value, new_form.password_value);
212 EXPECT_EQ(form_.origin, new_form.origin); 219 EXPECT_EQ(form_.origin, new_form.origin);
213 EXPECT_EQ(form_.signon_realm, new_form.signon_realm); 220 EXPECT_EQ(form_.signon_realm, new_form.signon_realm);
214 EXPECT_EQ(autofill::PasswordForm::SCHEME_HTML, new_form.scheme); 221 EXPECT_EQ(autofill::PasswordForm::SCHEME_HTML, new_form.scheme);
215 } 222 }
216 223
217 TEST_F(CredentialManagerDispatcherTest, CredentialManagerIncognitoSignedIn) { 224 TEST_F(CredentialManagerDispatcherTest, CredentialManagerIncognitoSignedIn) {
218 CredentialInfo info(form_); 225 CredentialInfo info(form_, CredentialType::CREDENTIAL_TYPE_LOCAL);
219 client_->set_off_the_record(true); 226 client_->set_off_the_record(true);
220 dispatcher()->OnNotifySignedIn(kRequestId, info); 227 dispatcher()->OnNotifySignedIn(kRequestId, info);
221 228
222 const uint32 kMsgID = CredentialManagerMsg_AcknowledgeSignedIn::ID; 229 const uint32 kMsgID = CredentialManagerMsg_AcknowledgeSignedIn::ID;
223 const IPC::Message* message = 230 const IPC::Message* message =
224 process()->sink().GetFirstMessageMatching(kMsgID); 231 process()->sink().GetFirstMessageMatching(kMsgID);
225 EXPECT_TRUE(message); 232 EXPECT_TRUE(message);
226 process()->sink().ClearMessages(); 233 process()->sink().ClearMessages();
227 234
228 RunAllPendingTasks(); 235 RunAllPendingTasks();
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
343 const IPC::Message* message = 350 const IPC::Message* message =
344 process()->sink().GetFirstMessageMatching(kMsgID); 351 process()->sink().GetFirstMessageMatching(kMsgID);
345 ASSERT_TRUE(message); 352 ASSERT_TRUE(message);
346 CredentialManagerMsg_SendCredential::Param param; 353 CredentialManagerMsg_SendCredential::Param param;
347 CredentialManagerMsg_SendCredential::Read(message, &param); 354 CredentialManagerMsg_SendCredential::Read(message, &param);
348 EXPECT_EQ(CredentialType::CREDENTIAL_TYPE_EMPTY, get<1>(param).type); 355 EXPECT_EQ(CredentialType::CREDENTIAL_TYPE_EMPTY, get<1>(param).type);
349 EXPECT_FALSE(client_->did_prompt_user_to_choose()); 356 EXPECT_FALSE(client_->did_prompt_user_to_choose());
350 } 357 }
351 358
352 } // namespace password_manager 359 } // namespace password_manager
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698