| 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 "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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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, ¶m); | 354 CredentialManagerMsg_SendCredential::Read(message, ¶m); |
| 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 |
| OLD | NEW |