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

Side by Side Diff: chrome/browser/password_manager/chrome_password_manager_client_unittest.cc

Issue 451853003: [Password Manager] Setup experiment to restrict autofilling of sync credential (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Unittest fix Created 6 years, 4 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 | Annotate | Revision Log
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 "base/command_line.h" 5 #include "base/command_line.h"
6 6
7 #include "chrome/browser/password_manager/chrome_password_manager_client.h" 7 #include "chrome/browser/password_manager/chrome_password_manager_client.h"
8 8
9 #include "chrome/common/chrome_version_info.h" 9 #include "chrome/common/chrome_version_info.h"
10 #include "chrome/test/base/chrome_render_view_host_test_harness.h" 10 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
(...skipping 14 matching lines...) Expand all
25 25
26 namespace { 26 namespace {
27 27
28 const char kTestText[] = "abcd1234"; 28 const char kTestText[] = "abcd1234";
29 29
30 class MockLogReceiver : public password_manager::LogReceiver { 30 class MockLogReceiver : public password_manager::LogReceiver {
31 public: 31 public:
32 MOCK_METHOD1(LogSavePasswordProgress, void(const std::string&)); 32 MOCK_METHOD1(LogSavePasswordProgress, void(const std::string&));
33 }; 33 };
34 34
35 class TestChromePasswordManagerClient : public ChromePasswordManagerClient {
36 public:
37 explicit TestChromePasswordManagerClient(content::WebContents* web_contents)
38 : ChromePasswordManagerClient(web_contents, NULL),
39 is_sync_account_credential_(false) {}
40 virtual ~TestChromePasswordManagerClient() {}
41
42 virtual bool IsSyncAccountCredential(
43 const std::string& username,
44 const std::string& origin) const OVERRIDE {
45 return is_sync_account_credential_;
46 }
47
48 void set_is_sync_account_credential(bool is_sync_account_credential) {
49 is_sync_account_credential_ = is_sync_account_credential;
50 }
51
52 private:
53 bool is_sync_account_credential_;
54
55 DISALLOW_COPY_AND_ASSIGN(TestChromePasswordManagerClient);
56 };
57
35 } // namespace 58 } // namespace
36 59
37 class ChromePasswordManagerClientTest : public ChromeRenderViewHostTestHarness { 60 class ChromePasswordManagerClientTest : public ChromeRenderViewHostTestHarness {
38 public: 61 public:
39 ChromePasswordManagerClientTest(); 62 ChromePasswordManagerClientTest();
40 63
41 virtual void SetUp() OVERRIDE; 64 virtual void SetUp() OVERRIDE;
42 65
43 protected: 66 protected:
44 ChromePasswordManagerClient* GetClient(); 67 ChromePasswordManagerClient* GetClient();
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
185 ChromePasswordManagerClient* client = GetClient(); 208 ChromePasswordManagerClient* client = GetClient();
186 service_->RegisterReceiver(&receiver_); 209 service_->RegisterReceiver(&receiver_);
187 EXPECT_TRUE(client->IsLoggingActive()); 210 EXPECT_TRUE(client->IsLoggingActive());
188 211
189 EXPECT_CALL(receiver_, LogSavePasswordProgress(kTestText)).Times(1); 212 EXPECT_CALL(receiver_, LogSavePasswordProgress(kTestText)).Times(1);
190 client->LogSavePasswordProgress(kTestText); 213 client->LogSavePasswordProgress(kTestText);
191 214
192 service_->UnregisterReceiver(&receiver_); 215 service_->UnregisterReceiver(&receiver_);
193 EXPECT_FALSE(client->IsLoggingActive()); 216 EXPECT_FALSE(client->IsLoggingActive());
194 } 217 }
218
219 TEST_F(ChromePasswordManagerClientTest, ShouldFilterAutofillResult_Reauth) {
220 // Make client disallow only reauth requests.
221 CommandLine* command_line = CommandLine::ForCurrentProcess();
222 command_line->AppendSwitch(
223 password_manager::switches::kDisallowAutofillSyncCredentialForReauth);
224 scoped_ptr<TestChromePasswordManagerClient> client(
225 new TestChromePasswordManagerClient(web_contents()));
226 autofill::PasswordForm form;
227
228 client->set_is_sync_account_credential(false);
229 NavigateAndCommit(
230 GURL("https://accounts.google.com/login?rart=123&continue=blah"));
231 EXPECT_FALSE(client->ShouldFilterAutofillResult(form));
232
233 client->set_is_sync_account_credential(true);
234 NavigateAndCommit(
235 GURL("https://accounts.google.com/login?rart=123&continue=blah"));
236 EXPECT_TRUE(client->ShouldFilterAutofillResult(form));
237
238 // This counts as a reauth url, though a valid URL should have a value for
239 // "rart"
240 NavigateAndCommit(GURL("https://accounts.google.com/addlogin?rart"));
241 EXPECT_TRUE(client->ShouldFilterAutofillResult(form));
242
243 NavigateAndCommit(GURL("https://accounts.google.com/login?param=123"));
244 EXPECT_FALSE(client->ShouldFilterAutofillResult(form));
245
246 NavigateAndCommit(GURL("https://site.com/login?rart=678"));
247 EXPECT_FALSE(client->ShouldFilterAutofillResult(form));
248 }
249
250 TEST_F(ChromePasswordManagerClientTest, ShouldFilterAutofillResult) {
251 // Normally the client should allow any credentials through, even if they
252 // are the sync credential.
253 scoped_ptr<TestChromePasswordManagerClient> client(
254 new TestChromePasswordManagerClient(web_contents()));
255 autofill::PasswordForm form;
256 client->set_is_sync_account_credential(true);
257 NavigateAndCommit(GURL("https://accounts.google.com/Login"));
258 EXPECT_FALSE(client->ShouldFilterAutofillResult(form));
259
260 // Adding disallow switch should cause sync credential to be filtered.
261 CommandLine* command_line = CommandLine::ForCurrentProcess();
262 command_line->AppendSwitch(
263 password_manager::switches::kDisallowAutofillSyncCredential);
264 client.reset(new TestChromePasswordManagerClient(web_contents()));
265 client->set_is_sync_account_credential(true);
266 NavigateAndCommit(GURL("https://accounts.google.com/Login"));
267 EXPECT_TRUE(client->ShouldFilterAutofillResult(form));
268 }
OLDNEW
« no previous file with comments | « chrome/browser/password_manager/chrome_password_manager_client.cc ('k') | chrome/browser/password_manager/sync_metrics.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698