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

Side by Side Diff: chrome/browser/ui/passwords/manage_passwords_ui_controller_unittest.cc

Issue 338103003: Password bubble: Ensure that the bubble stays open for at least 1 second. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: test Created 6 years, 6 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/metrics/histogram_samples.h" 5 #include "base/metrics/histogram_samples.h"
6 #include "base/prefs/pref_service.h" 6 #include "base/prefs/pref_service.h"
7 #include "base/strings/utf_string_conversions.h" 7 #include "base/strings/utf_string_conversions.h"
8 #include "base/test/statistics_delta_reader.h" 8 #include "base/test/statistics_delta_reader.h"
9 #include "base/timer/mock_elapsed_timer.h"
9 #include "chrome/browser/ui/passwords/manage_passwords_bubble.h" 10 #include "chrome/browser/ui/passwords/manage_passwords_bubble.h"
10 #include "chrome/browser/ui/passwords/manage_passwords_bubble_model.h" 11 #include "chrome/browser/ui/passwords/manage_passwords_bubble_model.h"
11 #include "chrome/browser/ui/passwords/manage_passwords_icon.h" 12 #include "chrome/browser/ui/passwords/manage_passwords_icon.h"
12 #include "chrome/browser/ui/passwords/manage_passwords_icon_mock.h" 13 #include "chrome/browser/ui/passwords/manage_passwords_icon_mock.h"
13 #include "chrome/browser/ui/passwords/manage_passwords_ui_controller_mock.h" 14 #include "chrome/browser/ui/passwords/manage_passwords_ui_controller_mock.h"
14 #include "chrome/test/base/chrome_render_view_host_test_harness.h" 15 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
15 #include "chrome/test/base/testing_profile.h" 16 #include "chrome/test/base/testing_profile.h"
16 #include "components/autofill/core/common/password_form.h" 17 #include "components/autofill/core/common/password_form.h"
17 #include "components/password_manager/core/browser/password_form_manager.h" 18 #include "components/password_manager/core/browser/password_form_manager.h"
18 #include "components/password_manager/core/browser/stub_password_manager_client. h" 19 #include "components/password_manager/core/browser/stub_password_manager_client. h"
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
92 // TODO(mkwst): This should be the value of test_form().origin, but 93 // TODO(mkwst): This should be the value of test_form().origin, but
93 // it's being masked by the stub implementation of 94 // it's being masked by the stub implementation of
94 // ManagePasswordsUIControllerMock::PendingCredentials. 95 // ManagePasswordsUIControllerMock::PendingCredentials.
95 EXPECT_EQ(GURL::EmptyGURL(), controller()->origin()); 96 EXPECT_EQ(GURL::EmptyGURL(), controller()->origin());
96 97
97 ManagePasswordsIconMock mock; 98 ManagePasswordsIconMock mock;
98 controller()->UpdateIconAndBubbleState(&mock); 99 controller()->UpdateIconAndBubbleState(&mock);
99 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, mock.state()); 100 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, mock.state());
100 } 101 }
101 102
103 TEST_F(ManagePasswordsUIControllerTest, QuickNavigations) {
104 password_manager::StubPasswordManagerClient client;
105 password_manager::StubPasswordManagerDriver driver;
106 password_manager::PasswordFormManager* test_form_manager =
107 new password_manager::PasswordFormManager(
108 NULL, &client, &driver, test_form(), false);
109 controller()->OnPasswordSubmitted(test_form_manager);
110 ManagePasswordsIconMock mock;
111 controller()->UpdateIconAndBubbleState(&mock);
112 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, mock.state());
113
114 // Fake-navigate within a second, then see what happens!
vabr (Chromium) 2014/06/17 09:46:25 nit: Explain why is one second a magical constant
Mike West 2014/06/17 10:49:35 Done.
115 scoped_ptr<base::MockElapsedTimer> timer(new base::MockElapsedTimer());
116 timer->Advance(500);
117 controller()->SetTimer(timer.release());
118 controller()->DidNavigateMainFrame(content::LoadCommittedDetails(),
119 content::FrameNavigateParams());
120 controller()->UpdateIconAndBubbleState(&mock);
121
122 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, mock.state());
123 }
124
125 TEST_F(ManagePasswordsUIControllerTest, SlowNavigations) {
126 password_manager::StubPasswordManagerClient client;
127 password_manager::StubPasswordManagerDriver driver;
128 password_manager::PasswordFormManager* test_form_manager =
129 new password_manager::PasswordFormManager(
130 NULL, &client, &driver, test_form(), false);
131 controller()->OnPasswordSubmitted(test_form_manager);
132 ManagePasswordsIconMock mock;
133 controller()->UpdateIconAndBubbleState(&mock);
134 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, mock.state());
135
136 // Fake-navigate after two seconds, then see what happens!
137 scoped_ptr<base::MockElapsedTimer> timer(new base::MockElapsedTimer());
138 timer->Advance(2000);
139 controller()->SetTimer(timer.release());
140 controller()->DidNavigateMainFrame(content::LoadCommittedDetails(),
141 content::FrameNavigateParams());
142 controller()->UpdateIconAndBubbleState(&mock);
143
144 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, mock.state());
145 }
146
102 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmittedToNonWebbyURL) { 147 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmittedToNonWebbyURL) {
103 // Navigate to a non-webby URL, then see what happens! 148 // Navigate to a non-webby URL, then see what happens!
104 content::WebContentsTester::For(web_contents()) 149 content::WebContentsTester::For(web_contents())
105 ->NavigateAndCommit(GURL("chrome://sign-in")); 150 ->NavigateAndCommit(GURL("chrome://sign-in"));
106 151
107 password_manager::StubPasswordManagerClient client; 152 password_manager::StubPasswordManagerClient client;
108 password_manager::StubPasswordManagerDriver driver; 153 password_manager::StubPasswordManagerDriver driver;
109 password_manager::PasswordFormManager* test_form_manager = 154 password_manager::PasswordFormManager* test_form_manager =
110 new password_manager::PasswordFormManager( 155 new password_manager::PasswordFormManager(
111 NULL, &client, &driver, test_form(), false); 156 NULL, &client, &driver, test_form(), false);
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
190 235
191 EXPECT_EQ(password_manager::ui::BLACKLIST_STATE, controller()->state()); 236 EXPECT_EQ(password_manager::ui::BLACKLIST_STATE, controller()->state());
192 EXPECT_FALSE(controller()->PasswordPendingUserDecision()); 237 EXPECT_FALSE(controller()->PasswordPendingUserDecision());
193 EXPECT_EQ(test_form().origin, controller()->origin()); 238 EXPECT_EQ(test_form().origin, controller()->origin());
194 239
195 ManagePasswordsIconMock mock; 240 ManagePasswordsIconMock mock;
196 controller()->UpdateIconAndBubbleState(&mock); 241 controller()->UpdateIconAndBubbleState(&mock);
197 EXPECT_EQ(password_manager::ui::BLACKLIST_STATE, mock.state()); 242 EXPECT_EQ(password_manager::ui::BLACKLIST_STATE, mock.state());
198 } 243 }
199 244
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698