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

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: Comments 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, const std::string& origin) const OVERRIDE {
Ilya Sherman 2014/08/13 20:48:14 nit: One param per line, please.
Garrett Casto 2014/08/13 23:12:54 Done.
44 return is_sync_account_credential_;
45 }
46
47 void SetIsSyncAccountCredential(bool is_sync_account_credential) {
Ilya Sherman 2014/08/13 20:48:14 nit: hacker_case, please.
Garrett Casto 2014/08/13 23:12:54 Done.
48 is_sync_account_credential_ = is_sync_account_credential;
49 }
50
51 private:
52 bool is_sync_account_credential_;
53
54 DISALLOW_COPY_AND_ASSIGN(TestChromePasswordManagerClient);
55 };
56
35 } // namespace 57 } // namespace
36 58
37 class ChromePasswordManagerClientTest : public ChromeRenderViewHostTestHarness { 59 class ChromePasswordManagerClientTest : public ChromeRenderViewHostTestHarness {
38 public: 60 public:
39 ChromePasswordManagerClientTest(); 61 ChromePasswordManagerClientTest();
40 62
41 virtual void SetUp() OVERRIDE; 63 virtual void SetUp() OVERRIDE;
42 64
43 protected: 65 protected:
44 ChromePasswordManagerClient* GetClient(); 66 ChromePasswordManagerClient* GetClient();
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
185 ChromePasswordManagerClient* client = GetClient(); 207 ChromePasswordManagerClient* client = GetClient();
186 service_->RegisterReceiver(&receiver_); 208 service_->RegisterReceiver(&receiver_);
187 EXPECT_TRUE(client->IsLoggingActive()); 209 EXPECT_TRUE(client->IsLoggingActive());
188 210
189 EXPECT_CALL(receiver_, LogSavePasswordProgress(kTestText)).Times(1); 211 EXPECT_CALL(receiver_, LogSavePasswordProgress(kTestText)).Times(1);
190 client->LogSavePasswordProgress(kTestText); 212 client->LogSavePasswordProgress(kTestText);
191 213
192 service_->UnregisterReceiver(&receiver_); 214 service_->UnregisterReceiver(&receiver_);
193 EXPECT_FALSE(client->IsLoggingActive()); 215 EXPECT_FALSE(client->IsLoggingActive());
194 } 216 }
217
218 TEST_F(ChromePasswordManagerClientTest, ShouldFilterAutofillResult_Reauth) {
219 // Make client disallow only reauth requests.
220 CommandLine* command_line = CommandLine::ForCurrentProcess();
221 command_line->AppendSwitch(
222 password_manager::switches::kDisallowAutofillSyncCredentialForReauth);
223 scoped_ptr<TestChromePasswordManagerClient> client(
224 new TestChromePasswordManagerClient(web_contents()));
225 autofill::PasswordForm form;
226
227 client->SetIsSyncAccountCredential(false);
228 NavigateAndCommit(
229 GURL("https://accounts.google.com/login?rart=123&continue=blah"));
230 EXPECT_FALSE(client->ShouldFilterAutofillResult(form));
231
232 client->SetIsSyncAccountCredential(true);
233 NavigateAndCommit(
234 GURL("https://accounts.google.com/login?rart=123&continue=blah"));
235 EXPECT_TRUE(client->ShouldFilterAutofillResult(form));
236
237 // This counts as a reauth url, though a valid URL should have a value for
238 // "rart"
239 NavigateAndCommit(GURL("https://accounts.google.com/addlogin?rart"));
240 EXPECT_TRUE(client->ShouldFilterAutofillResult(form));
241
242 NavigateAndCommit(GURL("https://accounts.google.com/login?param=123"));
243 EXPECT_FALSE(client->ShouldFilterAutofillResult(form));
244
245 NavigateAndCommit(GURL("https://site.com/login?rart=678"));
246 EXPECT_FALSE(client->ShouldFilterAutofillResult(form));
247 }
248
249 TEST_F(ChromePasswordManagerClientTest, ShouldFilterAutofillResult) {
250 // Normally the client should allow any credentials thourgh, even if they
Ilya Sherman 2014/08/13 20:48:14 nit: "thourgh" -> "through"
Garrett Casto 2014/08/13 23:12:54 Done.
251 // are the sync credential.
252 scoped_ptr<TestChromePasswordManagerClient> client(
253 new TestChromePasswordManagerClient(web_contents()));
254 autofill::PasswordForm form;
255 client->SetIsSyncAccountCredential(true);
256 NavigateAndCommit(GURL("https://accounts.google.com/Login"));
257 EXPECT_FALSE(client->ShouldFilterAutofillResult(form));
258
259 CommandLine* command_line = CommandLine::ForCurrentProcess();
260 command_line->AppendSwitch(
261 password_manager::switches::kDisallowAutofillSyncCredential);
262 client.reset(new TestChromePasswordManagerClient(web_contents()));
263 client->SetIsSyncAccountCredential(true);
264 NavigateAndCommit(GURL("https://accounts.google.com/Login"));
265 EXPECT_TRUE(client->ShouldFilterAutofillResult(form));
Ilya Sherman 2014/08/13 20:48:14 Optional nit: WDYT of "ShouldDrop" rather than "Sh
Garrett Casto 2014/08/13 23:12:54 I'm indifferent. If you prefer I can change it, bu
266 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698