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

Side by Side Diff: chrome/renderer/autofill/password_generation_agent_browsertest.cc

Issue 715733002: [Android] Show autofill popup after animation. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Make this Android CL independent from the ChromeOS CL. Created 5 years, 11 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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 <string.h> 5 #include <string.h>
6 6
7 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "base/strings/utf_string_conversions.h" 8 #include "base/strings/utf_string_conversions.h"
9 #include "base/test/histogram_tester.h" 9 #include "base/test/histogram_tester.h"
10 #include "chrome/test/base/chrome_render_view_test.h" 10 #include "chrome/test/base/chrome_render_view_test.h"
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
56 56
57 void ExpectPasswordGenerationAvailable(const char* element_id, 57 void ExpectPasswordGenerationAvailable(const char* element_id,
58 bool available) { 58 bool available) {
59 WebDocument document = GetMainFrame()->document(); 59 WebDocument document = GetMainFrame()->document();
60 WebElement element = 60 WebElement element =
61 document.getElementById(WebString::fromUTF8(element_id)); 61 document.getElementById(WebString::fromUTF8(element_id));
62 ASSERT_FALSE(element.isNull()); 62 ASSERT_FALSE(element.isNull());
63 ExecuteJavaScript( 63 ExecuteJavaScript(
64 base::StringPrintf("document.getElementById('%s').focus();", 64 base::StringPrintf("document.getElementById('%s').focus();",
65 element_id).c_str()); 65 element_id).c_str());
66 SimulateFocusChangeCompleteMessageReceived();
66 if (available) { 67 if (available) {
67 ASSERT_EQ(1u, password_generation_->messages().size()); 68 ASSERT_EQ(1u, password_generation_->messages().size());
68 EXPECT_EQ(AutofillHostMsg_ShowPasswordGenerationPopup::ID, 69 EXPECT_EQ(AutofillHostMsg_ShowPasswordGenerationPopup::ID,
69 password_generation_->messages()[0]->type()); 70 password_generation_->messages()[0]->type());
70 } else { 71 } else {
71 EXPECT_EQ(0u, password_generation_->messages().size()); 72 EXPECT_EQ(0u, password_generation_->messages().size());
72 } 73 }
73 password_generation_->clear_messages(); 74 password_generation_->clear_messages();
74 } 75 }
75 76
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
259 SetAccountCreationFormsDetectedMessage(kAccountCreationFormHTML); 260 SetAccountCreationFormsDetectedMessage(kAccountCreationFormHTML);
260 ExpectPasswordGenerationAvailable("first_password", false); 261 ExpectPasswordGenerationAvailable("first_password", false);
261 262
262 // Receive one not blacklisted message for non account creation form. Don't 263 // Receive one not blacklisted message for non account creation form. Don't
263 // show password generation icon. 264 // show password generation icon.
264 LoadHTML(kAccountCreationFormHTML); 265 LoadHTML(kAccountCreationFormHTML);
265 SetNotBlacklistedMessage(kSigninFormHTML); 266 SetNotBlacklistedMessage(kSigninFormHTML);
266 SetAccountCreationFormsDetectedMessage(kAccountCreationFormHTML); 267 SetAccountCreationFormsDetectedMessage(kAccountCreationFormHTML);
267 ExpectPasswordGenerationAvailable("first_password", false); 268 ExpectPasswordGenerationAvailable("first_password", false);
268 269
269 // Receive one not blackliste message for account creation form. Show password 270 // Receive one not blacklisted message for account creation form. Show
270 // generation icon. 271 // password generation icon.
271 LoadHTML(kAccountCreationFormHTML); 272 LoadHTML(kAccountCreationFormHTML);
272 SetNotBlacklistedMessage(kAccountCreationFormHTML); 273 SetNotBlacklistedMessage(kAccountCreationFormHTML);
273 SetAccountCreationFormsDetectedMessage(kAccountCreationFormHTML); 274 SetAccountCreationFormsDetectedMessage(kAccountCreationFormHTML);
274 ExpectPasswordGenerationAvailable("first_password", true); 275 ExpectPasswordGenerationAvailable("first_password", true);
275 276
276 // Receive two not blacklisted messages, one is for account creation form and 277 // Receive two not blacklisted messages, one is for account creation form and
277 // the other is not. Show password generation icon. 278 // the other is not. Show password generation icon.
278 LoadHTML(kAccountCreationFormHTML); 279 LoadHTML(kAccountCreationFormHTML);
279 SetNotBlacklistedMessage(kAccountCreationFormHTML); 280 SetNotBlacklistedMessage(kAccountCreationFormHTML);
280 SetNotBlacklistedMessage(kSigninFormHTML); 281 SetNotBlacklistedMessage(kSigninFormHTML);
281 SetAccountCreationFormsDetectedMessage(kAccountCreationFormHTML); 282 SetAccountCreationFormsDetectedMessage(kAccountCreationFormHTML);
282 ExpectPasswordGenerationAvailable("first_password", true); 283 ExpectPasswordGenerationAvailable("first_password", true);
283 } 284 }
284 285
285 TEST_F(PasswordGenerationAgentTest, AccountCreationFormsDetectedTest) { 286 TEST_F(PasswordGenerationAgentTest, AccountCreationFormsDetectedTest) {
286 // Did not receive account creation forms detected messege. Don't show 287 // Did not receive account creation forms detected message. Don't show
287 // password generation icon. 288 // password generation icon.
288 LoadHTML(kAccountCreationFormHTML); 289 LoadHTML(kAccountCreationFormHTML);
289 SetNotBlacklistedMessage(kAccountCreationFormHTML); 290 SetNotBlacklistedMessage(kAccountCreationFormHTML);
290 ExpectPasswordGenerationAvailable("first_password", false); 291 ExpectPasswordGenerationAvailable("first_password", false);
291 292
292 // Receive the account creation forms detected message. Show password 293 // Receive the account creation forms detected message. Show password
293 // generation icon. 294 // generation icon.
294 LoadHTML(kAccountCreationFormHTML); 295 LoadHTML(kAccountCreationFormHTML);
295 SetNotBlacklistedMessage(kAccountCreationFormHTML); 296 SetNotBlacklistedMessage(kAccountCreationFormHTML);
296 SetAccountCreationFormsDetectedMessage(kAccountCreationFormHTML); 297 SetAccountCreationFormsDetectedMessage(kAccountCreationFormHTML);
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
356 base::MessageLoop::current()->RunUntilIdle(); 357 base::MessageLoop::current()->RunUntilIdle();
357 // There should now be a message to show the UI. 358 // There should now be a message to show the UI.
358 ASSERT_EQ(1u, password_generation_->messages().size()); 359 ASSERT_EQ(1u, password_generation_->messages().size());
359 EXPECT_EQ(AutofillHostMsg_ShowPasswordGenerationPopup::ID, 360 EXPECT_EQ(AutofillHostMsg_ShowPasswordGenerationPopup::ID,
360 password_generation_->messages()[0]->type()); 361 password_generation_->messages()[0]->type());
361 password_generation_->clear_messages(); 362 password_generation_->clear_messages();
362 363
363 // Change focus. Bubble should be hidden, but that is handled by AutofilAgent, 364 // Change focus. Bubble should be hidden, but that is handled by AutofilAgent,
364 // so no messages are sent. 365 // so no messages are sent.
365 ExecuteJavaScript("document.getElementById('username').focus();"); 366 ExecuteJavaScript("document.getElementById('username').focus();");
367 SimulateFocusChangeCompleteMessageReceived();
366 EXPECT_EQ(0u, password_generation_->messages().size()); 368 EXPECT_EQ(0u, password_generation_->messages().size());
367 password_generation_->clear_messages(); 369 password_generation_->clear_messages();
368 370
369 // Focusing the password field will bring up the generation UI again. 371 // Focusing the password field will bring up the generation UI again.
370 ExecuteJavaScript("document.getElementById('first_password').focus();"); 372 ExecuteJavaScript("document.getElementById('first_password').focus();");
371 EXPECT_EQ(1u, password_generation_->messages().size()); 373 SimulateFocusChangeCompleteMessageReceived();
374 ASSERT_EQ(1u, password_generation_->messages().size());
372 EXPECT_EQ(AutofillHostMsg_ShowPasswordGenerationPopup::ID, 375 EXPECT_EQ(AutofillHostMsg_ShowPasswordGenerationPopup::ID,
373 password_generation_->messages()[0]->type()); 376 password_generation_->messages()[0]->type());
374 password_generation_->clear_messages(); 377 password_generation_->clear_messages();
375 378
376 // Loading a different page triggers UMA stat upload. Verify that only one 379 // Loading a different page triggers UMA stat upload. Verify that only one
377 // display event is sent even though 380 // display event is sent even though
378 LoadHTML(kSigninFormHTML); 381 LoadHTML(kSigninFormHTML);
379 382
380 histogram_tester.ExpectBucketCount( 383 histogram_tester.ExpectBucketCount(
381 "PasswordGeneration.Event", 384 "PasswordGeneration.Event",
(...skipping 17 matching lines...) Expand all
399 "first_password.name = 'first_password';" 402 "first_password.name = 'first_password';"
400 "var second_password = document.createElement('input');" 403 "var second_password = document.createElement('input');"
401 "second_password.type = 'password';" 404 "second_password.type = 'password';"
402 "second_password.id = 'second_password';" 405 "second_password.id = 'second_password';"
403 "second_password.name = 'second_password';" 406 "second_password.name = 'second_password';"
404 "form.appendChild(username);" 407 "form.appendChild(username);"
405 "form.appendChild(first_password);" 408 "form.appendChild(first_password);"
406 "form.appendChild(second_password);" 409 "form.appendChild(second_password);"
407 "document.body.appendChild(form);"); 410 "document.body.appendChild(form);");
408 ProcessPendingMessages(); 411 ProcessPendingMessages();
409 // TODO(gcasto): I'm slighty worried about flakes in this test where 412 // TODO(gcasto): I'm slightly worried about flakes in this test where
410 // didAssociateFormControls() isn't called. If this turns out to be a problem 413 // didAssociateFormControls() isn't called. If this turns out to be a problem
411 // adding a call to OnDynamicFormsSeen(GetMainFrame()) will fix it, though 414 // adding a call to OnDynamicFormsSeen(GetMainFrame()) will fix it, though
412 // it will weaken the test. 415 // it will weaken the test.
413 ExpectPasswordGenerationAvailable("first_password", true); 416 ExpectPasswordGenerationAvailable("first_password", true);
414 } 417 }
415 418
416 } // namespace autofill 419 } // namespace autofill
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698