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

Side by Side Diff: chrome/renderer/password_autocomplete_manager_unittest.cc

Issue 4231001: Chromium part of the autofill refactor: removing now unused code.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 1 month 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
« no previous file with comments | « no previous file | chrome/renderer/render_view.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 "app/keyboard_codes.h" 5 #include "app/keyboard_codes.h"
6 #include "base/string_util.h" 6 #include "base/string_util.h"
7 #include "base/utf_string_conversions.h" 7 #include "base/utf_string_conversions.h"
8 #include "chrome/renderer/password_autocomplete_manager.h" 8 #include "chrome/renderer/password_autocomplete_manager.h"
9 #include "chrome/test/render_view_test.h" 9 #include "chrome/test/render_view_test.h"
10 #include "testing/gtest/include/gtest/gtest.h" 10 #include "testing/gtest/include/gtest/gtest.h"
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
145 string16 password2_; 145 string16 password2_;
146 PasswordFormFillData fill_data_; 146 PasswordFormFillData fill_data_;
147 147
148 WebInputElement username_element_; 148 WebInputElement username_element_;
149 WebInputElement password_element_; 149 WebInputElement password_element_;
150 150
151 private: 151 private:
152 DISALLOW_COPY_AND_ASSIGN(PasswordAutocompleteManagerTest); 152 DISALLOW_COPY_AND_ASSIGN(PasswordAutocompleteManagerTest);
153 }; 153 };
154 154
155 #if defined(WEBKIT_BUG_41283_IS_FIXED)
156 #define MAYBE_InitialAutocomplete InitialAutocomplete
157 #define MAYBE_NoInitialAutocompleteForReadOnly NoInitialAutocompleteForReadOnly
158 #define MAYBE_PasswordClearOnEdit PasswordClearOnEdit
159 #define MAYBE_WaitUsername WaitUsername
160 #define MAYBE_InlineAutocomplete InlineAutocomplete
161 #define MAYBE_SuggestionSelect SuggestionSelect
162 #else
163 #define MAYBE_InitialAutocomplete DISABLED_InitialAutocomplete
164 #define MAYBE_NoInitialAutocompleteForReadOnly \
165 DISABLED_NoInitialAutocompleteForReadOnly
166 #define MAYBE_PasswordClearOnEdit DISABLED_PasswordClearOnEdit
167 #define MAYBE_WaitUsername DISABLED_WaitUsername
168 #define MAYBE_InlineAutocomplete DISABLED_InlineAutocomplete
169 #define MAYBE_SuggestionSelect DISABLED_SuggestionSelect
170 #endif
171
172 // Tests that the password login is autocompleted as expected when the browser 155 // Tests that the password login is autocompleted as expected when the browser
173 // sends back the password info. 156 // sends back the password info.
174 TEST_F(PasswordAutocompleteManagerTest, MAYBE_InitialAutocomplete) { 157 TEST_F(PasswordAutocompleteManagerTest, InitialAutocomplete) {
175 /* 158 /*
176 * Right now we are not sending the message to the browser because we are 159 * Right now we are not sending the message to the browser because we are
177 * loading a data URL and the security origin canAccessPasswordManager() 160 * loading a data URL and the security origin canAccessPasswordManager()
178 * returns false. May be we should mock URL loading to cirmcuvent this? 161 * returns false. May be we should mock URL loading to cirmcuvent this?
179 TODO(jcivelli): find a way to make the security origin not deny access to the 162 TODO(jcivelli): find a way to make the security origin not deny access to the
180 password manager and then reenable this code. 163 password manager and then reenable this code.
181 164
182 // The form has been loaded, we should have sent the browser a message about 165 // The form has been loaded, we should have sent the browser a message about
183 // the form. 166 // the form.
184 const IPC::Message* msg = render_thread_.sink().GetFirstMessageMatching( 167 const IPC::Message* msg = render_thread_.sink().GetFirstMessageMatching(
(...skipping 11 matching lines...) Expand all
196 179
197 // Simulate the browser sending back the login info, it triggers the 180 // Simulate the browser sending back the login info, it triggers the
198 // autocomplete. 181 // autocomplete.
199 SimulateOnFillPasswordForm(fill_data_); 182 SimulateOnFillPasswordForm(fill_data_);
200 183
201 // The username and password should have been autocompleted. 184 // The username and password should have been autocompleted.
202 CheckTextFieldsState(kAliceUsername, true, kAlicePassword, true); 185 CheckTextFieldsState(kAliceUsername, true, kAlicePassword, true);
203 } 186 }
204 187
205 // Tests that changing the username does not fill a read-only password field. 188 // Tests that changing the username does not fill a read-only password field.
206 TEST_F(PasswordAutocompleteManagerTest, 189 TEST_F(PasswordAutocompleteManagerTest, NoInitialAutocompleteForReadOnly) {
207 MAYBE_NoInitialAutocompleteForReadOnly) {
208 password_element_.setAttribute(WebString::fromUTF8("readonly"), 190 password_element_.setAttribute(WebString::fromUTF8("readonly"),
209 WebString::fromUTF8("true")); 191 WebString::fromUTF8("true"));
210 192
211 // Simulate the browser sending back the login info, it triggers the 193 // Simulate the browser sending back the login info, it triggers the
212 // autocompleted. 194 // autocompleted.
213 SimulateOnFillPasswordForm(fill_data_); 195 SimulateOnFillPasswordForm(fill_data_);
214 196
215 // Only the username should have been autocompleted. 197 // Only the username should have been autocompleted.
216 // TODO(jcivelli): may be we should not event fill the username? 198 // TODO(jcivelli): may be we should not event fill the username?
217 CheckTextFieldsState(kAliceUsername, true, "", false); 199 CheckTextFieldsState(kAliceUsername, true, "", false);
218 } 200 }
219 201
220 // Tests that editing the password clears the autocompleted password field. 202 // Tests that editing the password clears the autocompleted password field.
221 TEST_F(PasswordAutocompleteManagerTest, MAYBE_PasswordClearOnEdit) { 203 TEST_F(PasswordAutocompleteManagerTest, PasswordClearOnEdit) {
222 // Simulate the browser sending back the login info, it triggers the 204 // Simulate the browser sending back the login info, it triggers the
223 // autocomplete. 205 // autocomplete.
224 SimulateOnFillPasswordForm(fill_data_); 206 SimulateOnFillPasswordForm(fill_data_);
225 207
226 // Simulate the user changing the username to some unknown username. 208 // Simulate the user changing the username to some unknown username.
227 SimulateUsernameChange("alicia", true); 209 SimulateUsernameChange("alicia", true);
228 210
229 // The password should have been cleared. 211 // The password should have been cleared.
230 CheckTextFieldsState("alicia", false, "", false); 212 CheckTextFieldsState("alicia", false, "", false);
231 } 213 }
232 214
233 // Tests that we only autocomplete on focus lost and with a full username match 215 // Tests that we only autocomplete on focus lost and with a full username match
234 // when |wait_for_username| is true. 216 // when |wait_for_username| is true.
235 TEST_F(PasswordAutocompleteManagerTest, MAYBE_WaitUsername) { 217 TEST_F(PasswordAutocompleteManagerTest, WaitUsername) {
236 // Simulate the browser sending back the login info. 218 // Simulate the browser sending back the login info.
237 fill_data_.wait_for_username = true; 219 fill_data_.wait_for_username = true;
238 SimulateOnFillPasswordForm(fill_data_); 220 SimulateOnFillPasswordForm(fill_data_);
239 221
240 // No auto-fill should have taken place. 222 // No auto-fill should have taken place.
241 CheckTextFieldsState("", false, "", false); 223 CheckTextFieldsState("", false, "", false);
242 224
243 // No autocomplete should happen when text is entered in the username. 225 // No autocomplete should happen when text is entered in the username.
244 SimulateUsernameChange("a", true); 226 SimulateUsernameChange("a", true);
245 CheckTextFieldsState("a", false, "", false); 227 CheckTextFieldsState("a", false, "", false);
(...skipping 12 matching lines...) Expand all
258 CheckTextFieldsState("al", false, "", false); 240 CheckTextFieldsState("al", false, "", false);
259 username_element_.setValue("alices"); 241 username_element_.setValue("alices");
260 view_->textFieldDidEndEditing(username_element_); 242 view_->textFieldDidEndEditing(username_element_);
261 CheckTextFieldsState("alices", false, "", false); 243 CheckTextFieldsState("alices", false, "", false);
262 username_element_.setValue(ASCIIToUTF16(kAliceUsername)); 244 username_element_.setValue(ASCIIToUTF16(kAliceUsername));
263 view_->textFieldDidEndEditing(username_element_); 245 view_->textFieldDidEndEditing(username_element_);
264 CheckTextFieldsState(kAliceUsername, true, kAlicePassword, true); 246 CheckTextFieldsState(kAliceUsername, true, kAlicePassword, true);
265 } 247 }
266 248
267 // Tests that inline autocompletion works properly. 249 // Tests that inline autocompletion works properly.
268 TEST_F(PasswordAutocompleteManagerTest, MAYBE_InlineAutocomplete) { 250 TEST_F(PasswordAutocompleteManagerTest, InlineAutocomplete) {
269 // Simulate the browser sending back the login info. 251 // Simulate the browser sending back the login info.
270 SimulateOnFillPasswordForm(fill_data_); 252 SimulateOnFillPasswordForm(fill_data_);
271 253
272 // Clear the textfields to start fresh. 254 // Clear the textfields to start fresh.
273 ClearUsernameAndPasswordFields(); 255 ClearUsernameAndPasswordFields();
274 256
275 // Simulate the user typing in the first letter of 'alice', a stored username. 257 // Simulate the user typing in the first letter of 'alice', a stored username.
276 SimulateUsernameChange("a", true); 258 SimulateUsernameChange("a", true);
277 // Both the username and password textfields should reflect selection of the 259 // Both the username and password textfields should reflect selection of the
278 // stored login. 260 // stored login.
(...skipping 25 matching lines...) Expand all
304 CheckUsernameSelection(3, 3); // No selection. 286 CheckUsernameSelection(3, 3); // No selection.
305 287
306 // Ok, so now the user removes all the text and enters the letter 'b'. 288 // Ok, so now the user removes all the text and enters the letter 'b'.
307 SimulateUsernameChange("b", true); 289 SimulateUsernameChange("b", true);
308 // The username and password fields should match the 'bob' entry. 290 // The username and password fields should match the 'bob' entry.
309 CheckTextFieldsState(kBobUsername, true, kBobPassword, true); 291 CheckTextFieldsState(kBobUsername, true, kBobPassword, true);
310 CheckUsernameSelection(1, 3); 292 CheckUsernameSelection(1, 3);
311 } 293 }
312 294
313 // Tests that selecting and item in the suggestion drop-down works. 295 // Tests that selecting and item in the suggestion drop-down works.
314 TEST_F(PasswordAutocompleteManagerTest, MAYBE_SuggestionSelect) { 296 TEST_F(PasswordAutocompleteManagerTest, SuggestionSelect) {
315 // Simulate the browser sending back the login info. 297 // Simulate the browser sending back the login info.
316 SimulateOnFillPasswordForm(fill_data_); 298 SimulateOnFillPasswordForm(fill_data_);
317 299
318 // Clear the textfields to start fresh. 300 // Clear the textfields to start fresh.
319 ClearUsernameAndPasswordFields(); 301 ClearUsernameAndPasswordFields();
320 302
321 // To simulate a selection in the suggestion drop-down we just mimick what the 303 // To simulate a selection in the suggestion drop-down we just mimick what the
322 // WebView does: it sets the element value then calls 304 // WebView does: it sets the element value then calls
323 // didAcceptAutocompleteSuggestion on the renderer. 305 // didAcceptAutocompleteSuggestion on the renderer.
324 username_element_.setValue(ASCIIToUTF16(kAliceUsername)); 306 username_element_.setValue(ASCIIToUTF16(kAliceUsername));
325 view_->didAcceptAutocompleteSuggestion(username_element_); 307 view_->didAcceptAutocompleteSuggestion(username_element_);
326 308
327 // Autocomplete should have kicked in. 309 // Autocomplete should have kicked in.
328 CheckTextFieldsState(kAliceUsername, true, kAlicePassword, true); 310 CheckTextFieldsState(kAliceUsername, true, kAlicePassword, true);
329 } 311 }
330 312
331 } // namespace 313 } // namespace
OLDNEW
« no previous file with comments | « no previous file | chrome/renderer/render_view.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698