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

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

Issue 152683002: Passwords: Remove references to BrowserThread from PasswordStore. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase. Created 6 years, 10 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/basictypes.h" 5 #include "base/basictypes.h"
6 #include "base/bind.h" 6 #include "base/bind.h"
7 #include "base/stl_util.h" 7 #include "base/stl_util.h"
8 #include "base/strings/string_util.h" 8 #include "base/strings/string_util.h"
9 #include "base/synchronization/waitable_event.h" 9 #include "base/synchronization/waitable_event.h"
10 #include "base/time/time.h" 10 #include "base/time/time.h"
(...skipping 18 matching lines...) Expand all
29 using testing::WithArg; 29 using testing::WithArg;
30 30
31 namespace { 31 namespace {
32 32
33 class MockPasswordStoreConsumer : public PasswordStoreConsumer { 33 class MockPasswordStoreConsumer : public PasswordStoreConsumer {
34 public: 34 public:
35 MOCK_METHOD1(OnGetPasswordStoreResults, 35 MOCK_METHOD1(OnGetPasswordStoreResults,
36 void(const std::vector<PasswordForm*>&)); 36 void(const std::vector<PasswordForm*>&));
37 }; 37 };
38 38
39 // This class will add and remove a mock notification observer from
40 // the DB thread.
41 class DBThreadObserverHelper
42 : public base::RefCountedThreadSafe<DBThreadObserverHelper,
43 BrowserThread::DeleteOnDBThread> {
44 public:
45 DBThreadObserverHelper() : done_event_(true, false) {}
46
47 void Init(PasswordStore* password_store) {
48 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
49 BrowserThread::PostTask(
50 BrowserThread::DB,
51 FROM_HERE,
52 base::Bind(&DBThreadObserverHelper::AddObserverTask,
53 this,
54 make_scoped_refptr(password_store)));
55 done_event_.Wait();
56 }
57
58 content::MockNotificationObserver& observer() {
59 return observer_;
60 }
61
62 protected:
63 virtual ~DBThreadObserverHelper() {
64 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB));
65 registrar_.RemoveAll();
66 }
67
68 void AddObserverTask(PasswordStore* password_store) {
69 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB));
70 registrar_.Add(&observer_,
71 chrome::NOTIFICATION_LOGINS_CHANGED,
72 content::Source<PasswordStore>(password_store));
73 done_event_.Signal();
74 }
75
76 WaitableEvent done_event_;
77 content::NotificationRegistrar registrar_;
78 content::MockNotificationObserver observer_;
79
80 private:
81 friend struct BrowserThread::DeleteOnThread<BrowserThread::DB>;
82 friend class base::DeleteHelper<DBThreadObserverHelper>;
83 };
84
85 } // anonymous namespace 39 } // anonymous namespace
86 40
87 class PasswordStoreTest : public testing::Test { 41 class PasswordStoreTest : public testing::Test {
88 protected: 42 protected:
89 PasswordStoreTest() 43 PasswordStoreTest()
90 : ui_thread_(BrowserThread::UI, &message_loop_), 44 : ui_thread_(BrowserThread::UI, &message_loop_),
91 db_thread_(BrowserThread::DB) { 45 db_thread_(BrowserThread::DB) {
92 } 46 }
93 47
94 virtual void SetUp() { 48 virtual void SetUp() {
(...skipping 26 matching lines...) Expand all
121 STLDeleteContainerPointers(arg0.begin(), arg0.end()); 75 STLDeleteContainerPointers(arg0.begin(), arg0.end());
122 } 76 }
123 77
124 ACTION(QuitUIMessageLoop) { 78 ACTION(QuitUIMessageLoop) {
125 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 79 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
126 base::MessageLoop::current()->Quit(); 80 base::MessageLoop::current()->Quit();
127 } 81 }
128 82
129 TEST_F(PasswordStoreTest, IgnoreOldWwwGoogleLogins) { 83 TEST_F(PasswordStoreTest, IgnoreOldWwwGoogleLogins) {
130 scoped_refptr<PasswordStoreDefault> store( 84 scoped_refptr<PasswordStoreDefault> store(
131 new PasswordStoreDefault(login_db_.release(), profile_.get())); 85 new PasswordStoreDefault(
86 base::MessageLoopProxy::current(),
87 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::DB),
88 login_db_.release(),
89 profile_.get()));
132 store->Init(); 90 store->Init();
133 91
134 const time_t cutoff = 1325376000; // 00:00 Jan 1 2012 UTC 92 const time_t cutoff = 1325376000; // 00:00 Jan 1 2012 UTC
135 // The passwords are all empty because PasswordStoreDefault doesn't store the 93 // The passwords are all empty because PasswordStoreDefault doesn't store the
136 // actual passwords on OS X (they're stored in the Keychain instead). We could 94 // actual passwords on OS X (they're stored in the Keychain instead). We could
137 // special-case it, but it's easier to just have empty passwords. 95 // special-case it, but it's easier to just have empty passwords.
138 static const PasswordFormData form_data[] = { 96 static const PasswordFormData form_data[] = {
139 // A form on https://www.google.com/ older than the cutoff. Will be ignored. 97 // A form on https://www.google.com/ older than the cutoff. Will be ignored.
140 { PasswordForm::SCHEME_HTML, 98 { PasswordForm::SCHEME_HTML,
141 "https://www.google.com", 99 "https://www.google.com",
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
257 .WillOnce(WithArg<0>(STLDeleteElements0())).RetiresOnSaturation(); 215 .WillOnce(WithArg<0>(STLDeleteElements0())).RetiresOnSaturation();
258 216
259 store->GetLogins(www_google, PasswordStore::ALLOW_PROMPT, &consumer); 217 store->GetLogins(www_google, PasswordStore::ALLOW_PROMPT, &consumer);
260 store->GetLogins(accounts_google, PasswordStore::ALLOW_PROMPT, &consumer); 218 store->GetLogins(accounts_google, PasswordStore::ALLOW_PROMPT, &consumer);
261 store->GetLogins(bar_example, PasswordStore::ALLOW_PROMPT, &consumer); 219 store->GetLogins(bar_example, PasswordStore::ALLOW_PROMPT, &consumer);
262 220
263 base::MessageLoop::current()->Run(); 221 base::MessageLoop::current()->Run();
264 222
265 STLDeleteElements(&all_forms); 223 STLDeleteElements(&all_forms);
266 } 224 }
OLDNEW
« no previous file with comments | « chrome/browser/password_manager/password_store_mac_unittest.cc ('k') | chrome/browser/password_manager/password_store_win.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698