| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "chrome/browser/ui/passwords/password_manager_presenter.h" | 5 #include "chrome/browser/ui/passwords/password_manager_presenter.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/macros.h" | 10 #include "base/macros.h" |
| (...skipping 30 matching lines...) Expand all Loading... |
| 41 : profile_(profile), password_manager_presenter_(this) { | 41 : profile_(profile), password_manager_presenter_(this) { |
| 42 password_manager_presenter_.Initialize(); | 42 password_manager_presenter_.Initialize(); |
| 43 } | 43 } |
| 44 ~MockPasswordUIView() override {} | 44 ~MockPasswordUIView() override {} |
| 45 Profile* GetProfile() override; | 45 Profile* GetProfile() override; |
| 46 #if !defined(OS_ANDROID) | 46 #if !defined(OS_ANDROID) |
| 47 gfx::NativeWindow GetNativeWindow() const override; | 47 gfx::NativeWindow GetNativeWindow() const override; |
| 48 #endif | 48 #endif |
| 49 MOCK_METHOD4(ShowPassword, void( | 49 MOCK_METHOD4(ShowPassword, void( |
| 50 size_t, const std::string&, const std::string&, const base::string16&)); | 50 size_t, const std::string&, const std::string&, const base::string16&)); |
| 51 MOCK_METHOD1(SetPasswordList, | 51 MOCK_METHOD1( |
| 52 void(const std::vector<scoped_ptr<autofill::PasswordForm>>&)); | 52 SetPasswordList, |
| 53 MOCK_METHOD1(SetPasswordExceptionList, | 53 void(const std::vector<std::unique_ptr<autofill::PasswordForm>>&)); |
| 54 void(const std::vector<scoped_ptr<autofill::PasswordForm>>&)); | 54 MOCK_METHOD1( |
| 55 SetPasswordExceptionList, |
| 56 void(const std::vector<std::unique_ptr<autofill::PasswordForm>>&)); |
| 55 PasswordManagerPresenter* GetPasswordManagerPresenter() { | 57 PasswordManagerPresenter* GetPasswordManagerPresenter() { |
| 56 return &password_manager_presenter_; | 58 return &password_manager_presenter_; |
| 57 } | 59 } |
| 58 | 60 |
| 59 private: | 61 private: |
| 60 Profile* profile_; | 62 Profile* profile_; |
| 61 PasswordManagerPresenter password_manager_presenter_; | 63 PasswordManagerPresenter password_manager_presenter_; |
| 62 | 64 |
| 63 DISALLOW_COPY_AND_ASSIGN(MockPasswordUIView); | 65 DISALLOW_COPY_AND_ASSIGN(MockPasswordUIView); |
| 64 }; | 66 }; |
| (...skipping 21 matching lines...) Expand all Loading... |
| 86 void AddPasswordException(const GURL& origin); | 88 void AddPasswordException(const GURL& origin); |
| 87 void UpdateLists(); | 89 void UpdateLists(); |
| 88 MockPasswordUIView* GetUIController() { return mock_controller_.get(); } | 90 MockPasswordUIView* GetUIController() { return mock_controller_.get(); } |
| 89 void SortAndCheckPositions(const SortEntry test_entries[], | 91 void SortAndCheckPositions(const SortEntry test_entries[], |
| 90 size_t number_of_entries, | 92 size_t number_of_entries, |
| 91 bool username_and_password_in_key); | 93 bool username_and_password_in_key); |
| 92 | 94 |
| 93 private: | 95 private: |
| 94 content::TestBrowserThreadBundle thread_bundle_; | 96 content::TestBrowserThreadBundle thread_bundle_; |
| 95 TestingProfile profile_; | 97 TestingProfile profile_; |
| 96 scoped_ptr<MockPasswordUIView> mock_controller_; | 98 std::unique_ptr<MockPasswordUIView> mock_controller_; |
| 97 | 99 |
| 98 DISALLOW_COPY_AND_ASSIGN(PasswordManagerPresenterTest); | 100 DISALLOW_COPY_AND_ASSIGN(PasswordManagerPresenterTest); |
| 99 }; | 101 }; |
| 100 | 102 |
| 101 void PasswordManagerPresenterTest::AddPasswordEntry( | 103 void PasswordManagerPresenterTest::AddPasswordEntry( |
| 102 const GURL& origin, | 104 const GURL& origin, |
| 103 const std::string& user_name, | 105 const std::string& user_name, |
| 104 const std::string& password) { | 106 const std::string& password) { |
| 105 scoped_ptr<autofill::PasswordForm> form(new autofill::PasswordForm()); | 107 std::unique_ptr<autofill::PasswordForm> form(new autofill::PasswordForm()); |
| 106 form->origin = origin; | 108 form->origin = origin; |
| 107 form->username_element = base::ASCIIToUTF16("Email"); | 109 form->username_element = base::ASCIIToUTF16("Email"); |
| 108 form->username_value = base::ASCIIToUTF16(user_name); | 110 form->username_value = base::ASCIIToUTF16(user_name); |
| 109 form->password_element = base::ASCIIToUTF16("Passwd"); | 111 form->password_element = base::ASCIIToUTF16("Passwd"); |
| 110 form->password_value = base::ASCIIToUTF16(password); | 112 form->password_value = base::ASCIIToUTF16(password); |
| 111 mock_controller_->GetPasswordManagerPresenter()->password_list_.push_back( | 113 mock_controller_->GetPasswordManagerPresenter()->password_list_.push_back( |
| 112 std::move(form)); | 114 std::move(form)); |
| 113 } | 115 } |
| 114 | 116 |
| 115 void PasswordManagerPresenterTest::AddPasswordException(const GURL& origin) { | 117 void PasswordManagerPresenterTest::AddPasswordException(const GURL& origin) { |
| 116 scoped_ptr<autofill::PasswordForm> form(new autofill::PasswordForm()); | 118 std::unique_ptr<autofill::PasswordForm> form(new autofill::PasswordForm()); |
| 117 form->origin = origin; | 119 form->origin = origin; |
| 118 mock_controller_->GetPasswordManagerPresenter() | 120 mock_controller_->GetPasswordManagerPresenter() |
| 119 ->password_exception_list_.push_back(std::move(form)); | 121 ->password_exception_list_.push_back(std::move(form)); |
| 120 } | 122 } |
| 121 | 123 |
| 122 void PasswordManagerPresenterTest::UpdateLists() { | 124 void PasswordManagerPresenterTest::UpdateLists() { |
| 123 mock_controller_->GetPasswordManagerPresenter()->SetPasswordList(); | 125 mock_controller_->GetPasswordManagerPresenter()->SetPasswordList(); |
| 124 mock_controller_->GetPasswordManagerPresenter()->SetPasswordExceptionList(); | 126 mock_controller_->GetPasswordManagerPresenter()->SetPasswordExceptionList(); |
| 125 } | 127 } |
| 126 | 128 |
| 127 void PasswordManagerPresenterTest::SortAndCheckPositions( | 129 void PasswordManagerPresenterTest::SortAndCheckPositions( |
| 128 const SortEntry test_entries[], | 130 const SortEntry test_entries[], |
| 129 size_t number_of_entries, | 131 size_t number_of_entries, |
| 130 bool username_and_password_in_key) { | 132 bool username_and_password_in_key) { |
| 131 std::vector<scoped_ptr<autofill::PasswordForm>> list; | 133 std::vector<std::unique_ptr<autofill::PasswordForm>> list; |
| 132 size_t expected_number_of_unique_entries = 0; | 134 size_t expected_number_of_unique_entries = 0; |
| 133 for (size_t i = 0; i < number_of_entries; i++) { | 135 for (size_t i = 0; i < number_of_entries; i++) { |
| 134 const SortEntry& entry = test_entries[i]; | 136 const SortEntry& entry = test_entries[i]; |
| 135 scoped_ptr<autofill::PasswordForm> form(new autofill::PasswordForm()); | 137 std::unique_ptr<autofill::PasswordForm> form(new autofill::PasswordForm()); |
| 136 form->signon_realm = entry.origin; | 138 form->signon_realm = entry.origin; |
| 137 form->origin = GURL(base::ASCIIToUTF16(entry.origin)); | 139 form->origin = GURL(base::ASCIIToUTF16(entry.origin)); |
| 138 if (username_and_password_in_key) { | 140 if (username_and_password_in_key) { |
| 139 form->username_value = base::ASCIIToUTF16(entry.username); | 141 form->username_value = base::ASCIIToUTF16(entry.username); |
| 140 form->password_value = base::ASCIIToUTF16(entry.password); | 142 form->password_value = base::ASCIIToUTF16(entry.password); |
| 141 } | 143 } |
| 142 if (entry.affiliated_web_realm) | 144 if (entry.affiliated_web_realm) |
| 143 form->affiliated_web_realm = entry.affiliated_web_realm; | 145 form->affiliated_web_realm = entry.affiliated_web_realm; |
| 144 list.push_back(std::move(form)); | 146 list.push_back(std::move(form)); |
| 145 if (entry.expected_position >= 0) | 147 if (entry.expected_position >= 0) |
| (...skipping 20 matching lines...) Expand all Loading... |
| 166 EXPECT_EQ(base::ASCIIToUTF16(entry.password), | 168 EXPECT_EQ(base::ASCIIToUTF16(entry.password), |
| 167 list[entry.expected_position]->password_value); | 169 list[entry.expected_position]->password_value); |
| 168 } | 170 } |
| 169 } | 171 } |
| 170 } | 172 } |
| 171 } | 173 } |
| 172 | 174 |
| 173 namespace { | 175 namespace { |
| 174 | 176 |
| 175 TEST_F(PasswordManagerPresenterTest, UIControllerIsCalled) { | 177 TEST_F(PasswordManagerPresenterTest, UIControllerIsCalled) { |
| 176 EXPECT_CALL( | 178 EXPECT_CALL(*GetUIController(), |
| 177 *GetUIController(), | 179 SetPasswordList(Property( |
| 178 SetPasswordList(Property( | 180 &std::vector<std::unique_ptr<autofill::PasswordForm>>::size, |
| 179 &std::vector<scoped_ptr<autofill::PasswordForm>>::size, Eq(0u)))); | 181 Eq(0u)))); |
| 180 EXPECT_CALL( | 182 EXPECT_CALL(*GetUIController(), |
| 181 *GetUIController(), | 183 SetPasswordExceptionList(Property( |
| 182 SetPasswordExceptionList(Property( | 184 &std::vector<std::unique_ptr<autofill::PasswordForm>>::size, |
| 183 &std::vector<scoped_ptr<autofill::PasswordForm>>::size, Eq(0u)))); | 185 Eq(0u)))); |
| 184 UpdateLists(); | 186 UpdateLists(); |
| 185 GURL pass_origin("http://abc1.com"); | 187 GURL pass_origin("http://abc1.com"); |
| 186 AddPasswordEntry(pass_origin, "test@gmail.com", "test"); | 188 AddPasswordEntry(pass_origin, "test@gmail.com", "test"); |
| 187 EXPECT_CALL( | 189 EXPECT_CALL(*GetUIController(), |
| 188 *GetUIController(), | 190 SetPasswordList(Property( |
| 189 SetPasswordList(Property( | 191 &std::vector<std::unique_ptr<autofill::PasswordForm>>::size, |
| 190 &std::vector<scoped_ptr<autofill::PasswordForm>>::size, Eq(1u)))); | 192 Eq(1u)))); |
| 191 EXPECT_CALL( | 193 EXPECT_CALL(*GetUIController(), |
| 192 *GetUIController(), | 194 SetPasswordExceptionList(Property( |
| 193 SetPasswordExceptionList(Property( | 195 &std::vector<std::unique_ptr<autofill::PasswordForm>>::size, |
| 194 &std::vector<scoped_ptr<autofill::PasswordForm>>::size, Eq(0u)))); | 196 Eq(0u)))); |
| 195 UpdateLists(); | 197 UpdateLists(); |
| 196 GURL except_origin("http://abc2.com"); | 198 GURL except_origin("http://abc2.com"); |
| 197 AddPasswordException(except_origin); | 199 AddPasswordException(except_origin); |
| 198 EXPECT_CALL( | 200 EXPECT_CALL(*GetUIController(), |
| 199 *GetUIController(), | 201 SetPasswordList(Property( |
| 200 SetPasswordList(Property( | 202 &std::vector<std::unique_ptr<autofill::PasswordForm>>::size, |
| 201 &std::vector<scoped_ptr<autofill::PasswordForm>>::size, Eq(1u)))); | 203 Eq(1u)))); |
| 202 EXPECT_CALL( | 204 EXPECT_CALL(*GetUIController(), |
| 203 *GetUIController(), | 205 SetPasswordExceptionList(Property( |
| 204 SetPasswordExceptionList(Property( | 206 &std::vector<std::unique_ptr<autofill::PasswordForm>>::size, |
| 205 &std::vector<scoped_ptr<autofill::PasswordForm>>::size, Eq(1u)))); | 207 Eq(1u)))); |
| 206 UpdateLists(); | 208 UpdateLists(); |
| 207 GURL pass_origin2("http://example.com"); | 209 GURL pass_origin2("http://example.com"); |
| 208 AddPasswordEntry(pass_origin2, "test@gmail.com", "test"); | 210 AddPasswordEntry(pass_origin2, "test@gmail.com", "test"); |
| 209 EXPECT_CALL( | 211 EXPECT_CALL(*GetUIController(), |
| 210 *GetUIController(), | 212 SetPasswordList(Property( |
| 211 SetPasswordList(Property( | 213 &std::vector<std::unique_ptr<autofill::PasswordForm>>::size, |
| 212 &std::vector<scoped_ptr<autofill::PasswordForm>>::size, Eq(2u)))); | 214 Eq(2u)))); |
| 213 EXPECT_CALL( | 215 EXPECT_CALL(*GetUIController(), |
| 214 *GetUIController(), | 216 SetPasswordExceptionList(Property( |
| 215 SetPasswordExceptionList(Property( | 217 &std::vector<std::unique_ptr<autofill::PasswordForm>>::size, |
| 216 &std::vector<scoped_ptr<autofill::PasswordForm>>::size, Eq(1u)))); | 218 Eq(1u)))); |
| 217 UpdateLists(); | 219 UpdateLists(); |
| 218 } | 220 } |
| 219 | 221 |
| 220 TEST_F(PasswordManagerPresenterTest, Sorting_DifferentOrigins) { | 222 TEST_F(PasswordManagerPresenterTest, Sorting_DifferentOrigins) { |
| 221 const SortEntry test_cases[] = { | 223 const SortEntry test_cases[] = { |
| 222 {"http://example-b.com", "user_a", "pwd", nullptr, 2}, | 224 {"http://example-b.com", "user_a", "pwd", nullptr, 2}, |
| 223 {"http://example-a.com", "user_a1", "pwd", nullptr, 0}, | 225 {"http://example-a.com", "user_a1", "pwd", nullptr, 0}, |
| 224 {"http://example-a.com", "user_a2", "pwd", nullptr, 1}, | 226 {"http://example-a.com", "user_a2", "pwd", nullptr, 1}, |
| 225 {"http://example-c.com", "user_a", "pwd", nullptr, 3}}; | 227 {"http://example-c.com", "user_a", "pwd", nullptr, 3}}; |
| 226 SortAndCheckPositions(test_cases, arraysize(test_cases), true); | 228 SortAndCheckPositions(test_cases, arraysize(test_cases), true); |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 272 {"android://hash@com.alpha", "user", "secret", "https://alpha.com", -1}, | 274 {"android://hash@com.alpha", "user", "secret", "https://alpha.com", -1}, |
| 273 {"android://hash@com.alpha", "user", "secret", nullptr, 2}, | 275 {"android://hash@com.alpha", "user", "secret", nullptr, 2}, |
| 274 | 276 |
| 275 {"android://hash@com.betta.android", "user", "secret", | 277 {"android://hash@com.betta.android", "user", "secret", |
| 276 "https://betta.com", 3}, | 278 "https://betta.com", 3}, |
| 277 {"android://hash@com.betta.android", "user", "secret", nullptr, 4}}; | 279 {"android://hash@com.betta.android", "user", "secret", nullptr, 4}}; |
| 278 SortAndCheckPositions(test_cases, arraysize(test_cases), true); | 280 SortAndCheckPositions(test_cases, arraysize(test_cases), true); |
| 279 } | 281 } |
| 280 | 282 |
| 281 } // namespace | 283 } // namespace |
| OLD | NEW |