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

Side by Side Diff: chrome/browser/autofill/autofill_interactive_uitest.cc

Issue 819193003: Fix list focus after tab key in chrome://settings/autofillEditAddress page. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Make UI test work for phone list. Created 5 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
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 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> 5 #include <string>
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/files/file_util.h" 9 #include "base/files/file_util.h"
10 #include "base/memory/ref_counted.h" 10 #include "base/memory/ref_counted.h"
11 #include "base/memory/scoped_ptr.h" 11 #include "base/memory/scoped_ptr.h"
12 #include "base/rand_util.h" 12 #include "base/rand_util.h"
13 #include "base/strings/string16.h" 13 #include "base/strings/string16.h"
14 #include "base/strings/string_number_conversions.h" 14 #include "base/strings/string_number_conversions.h"
15 #include "base/strings/string_split.h" 15 #include "base/strings/string_split.h"
16 #include "base/strings/utf_string_conversions.h" 16 #include "base/strings/utf_string_conversions.h"
17 #include "base/time/time.h" 17 #include "base/time/time.h"
18 #include "chrome/browser/autofill/personal_data_manager_factory.h" 18 #include "chrome/browser/autofill/autofill_uitest_util.h"
19 #include "chrome/browser/chrome_notification_types.h" 19 #include "chrome/browser/chrome_notification_types.h"
20 #include "chrome/browser/infobars/infobar_service.h"
21 #include "chrome/browser/profiles/profile.h" 20 #include "chrome/browser/profiles/profile.h"
22 #include "chrome/browser/translate/chrome_translate_client.h" 21 #include "chrome/browser/translate/chrome_translate_client.h"
23 #include "chrome/browser/translate/translate_service.h" 22 #include "chrome/browser/translate/translate_service.h"
24 #include "chrome/browser/ui/browser.h"
25 #include "chrome/browser/ui/browser_window.h" 23 #include "chrome/browser/ui/browser_window.h"
26 #include "chrome/browser/ui/tabs/tab_strip_model.h" 24 #include "chrome/browser/ui/tabs/tab_strip_model.h"
27 #include "chrome/common/render_messages.h" 25 #include "chrome/common/render_messages.h"
28 #include "chrome/test/base/in_process_browser_test.h" 26 #include "chrome/test/base/in_process_browser_test.h"
29 #include "chrome/test/base/interactive_test_utils.h" 27 #include "chrome/test/base/interactive_test_utils.h"
30 #include "chrome/test/base/test_switches.h" 28 #include "chrome/test/base/test_switches.h"
31 #include "chrome/test/base/ui_test_utils.h" 29 #include "chrome/test/base/ui_test_utils.h"
32 #include "components/autofill/content/browser/content_autofill_driver.h" 30 #include "components/autofill/content/browser/content_autofill_driver.h"
33 #include "components/autofill/content/browser/content_autofill_driver_factory.h" 31 #include "components/autofill/content/browser/content_autofill_driver_factory.h"
34 #include "components/autofill/core/browser/autofill_manager.h" 32 #include "components/autofill/core/browser/autofill_manager.h"
35 #include "components/autofill/core/browser/autofill_manager_test_delegate.h" 33 #include "components/autofill/core/browser/autofill_manager_test_delegate.h"
36 #include "components/autofill/core/browser/autofill_profile.h" 34 #include "components/autofill/core/browser/autofill_profile.h"
37 #include "components/autofill/core/browser/autofill_test_utils.h" 35 #include "components/autofill/core/browser/autofill_test_utils.h"
38 #include "components/autofill/core/browser/personal_data_manager.h"
39 #include "components/autofill/core/browser/personal_data_manager_observer.h"
40 #include "components/autofill/core/browser/validation.h" 36 #include "components/autofill/core/browser/validation.h"
41 #include "components/infobars/core/confirm_infobar_delegate.h"
42 #include "components/infobars/core/infobar.h"
43 #include "components/infobars/core/infobar_manager.h" 37 #include "components/infobars/core/infobar_manager.h"
44 #include "components/translate/core/browser/translate_infobar_delegate.h" 38 #include "components/translate/core/browser/translate_infobar_delegate.h"
45 #include "content/public/browser/navigation_controller.h" 39 #include "content/public/browser/navigation_controller.h"
46 #include "content/public/browser/notification_observer.h" 40 #include "content/public/browser/notification_observer.h"
47 #include "content/public/browser/notification_registrar.h" 41 #include "content/public/browser/notification_registrar.h"
48 #include "content/public/browser/notification_service.h" 42 #include "content/public/browser/notification_service.h"
49 #include "content/public/browser/render_view_host.h" 43 #include "content/public/browser/render_view_host.h"
50 #include "content/public/browser/render_widget_host.h" 44 #include "content/public/browser/render_widget_host.h"
51 #include "content/public/browser/web_contents.h" 45 #include "content/public/browser/web_contents.h"
52 #include "content/public/test/browser_test_utils.h" 46 #include "content/public/test/browser_test_utils.h"
53 #include "content/public/test/test_renderer_host.h" 47 #include "content/public/test/test_renderer_host.h"
54 #include "content/public/test/test_utils.h"
55 #include "net/url_request/test_url_fetcher_factory.h" 48 #include "net/url_request/test_url_fetcher_factory.h"
56 #include "testing/gmock/include/gmock/gmock.h" 49 #include "testing/gmock/include/gmock/gmock.h"
57 #include "testing/gtest/include/gtest/gtest.h" 50 #include "testing/gtest/include/gtest/gtest.h"
58 #include "ui/events/keycodes/keyboard_codes.h" 51 #include "ui/events/keycodes/keyboard_codes.h"
59 52
60 using base::ASCIIToUTF16; 53 using base::ASCIIToUTF16;
61 54
62 namespace autofill { 55 namespace autofill {
63 56
64 static const char kDataURIPrefix[] = "data:text/html;charset=utf-8,"; 57 static const char kDataURIPrefix[] = "data:text/html;charset=utf-8,";
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
125 void Wait() { 118 void Wait() {
126 loop_runner_->Run(); 119 loop_runner_->Run();
127 } 120 }
128 121
129 private: 122 private:
130 scoped_refptr<content::MessageLoopRunner> loop_runner_; 123 scoped_refptr<content::MessageLoopRunner> loop_runner_;
131 124
132 DISALLOW_COPY_AND_ASSIGN(AutofillManagerTestDelegateImpl); 125 DISALLOW_COPY_AND_ASSIGN(AutofillManagerTestDelegateImpl);
133 }; 126 };
134 127
135
136 // WindowedPersonalDataManagerObserver ----------------------------------------
137
138 class WindowedPersonalDataManagerObserver
139 : public PersonalDataManagerObserver,
140 public infobars::InfoBarManager::Observer {
141 public:
142 explicit WindowedPersonalDataManagerObserver(Browser* browser)
143 : alerted_(false),
144 has_run_message_loop_(false),
145 browser_(browser),
146 infobar_service_(InfoBarService::FromWebContents(
147 browser_->tab_strip_model()->GetActiveWebContents())) {
148 PersonalDataManagerFactory::GetForProfile(browser_->profile())->
149 AddObserver(this);
150 infobar_service_->AddObserver(this);
151 }
152
153 ~WindowedPersonalDataManagerObserver() override {
154 while (infobar_service_->infobar_count() > 0) {
155 infobar_service_->RemoveInfoBar(infobar_service_->infobar_at(0));
156 }
157 infobar_service_->RemoveObserver(this);
158 }
159
160 // PersonalDataManagerObserver:
161 void OnPersonalDataChanged() override {
162 if (has_run_message_loop_) {
163 base::MessageLoopForUI::current()->Quit();
164 has_run_message_loop_ = false;
165 }
166 alerted_ = true;
167 }
168
169 void OnInsufficientFormData() override { OnPersonalDataChanged(); }
170
171
172 void Wait() {
173 if (!alerted_) {
174 has_run_message_loop_ = true;
175 content::RunMessageLoop();
176 }
177 PersonalDataManagerFactory::GetForProfile(browser_->profile())->
178 RemoveObserver(this);
179 }
180
181 private:
182 // infobars::InfoBarManager::Observer:
183 void OnInfoBarAdded(infobars::InfoBar* infobar) override {
184 infobar_service_->infobar_at(0)->delegate()->AsConfirmInfoBarDelegate()->
185 Accept();
186 }
187
188 bool alerted_;
189 bool has_run_message_loop_;
190 Browser* browser_;
191 InfoBarService* infobar_service_;
192
193 DISALLOW_COPY_AND_ASSIGN(WindowedPersonalDataManagerObserver);
194 };
195
196 // AutofillInteractiveTest ---------------------------------------------------- 128 // AutofillInteractiveTest ----------------------------------------------------
197 129
198 class AutofillInteractiveTest : public InProcessBrowserTest { 130 class AutofillInteractiveTest : public InProcessBrowserTest {
199 protected: 131 protected:
200 AutofillInteractiveTest() : 132 AutofillInteractiveTest() :
201 key_press_event_sink_( 133 key_press_event_sink_(
202 base::Bind(&AutofillInteractiveTest::HandleKeyPressEvent, 134 base::Bind(&AutofillInteractiveTest::HandleKeyPressEvent,
203 base::Unretained(this))) {} 135 base::Unretained(this))) {}
204 ~AutofillInteractiveTest() override {} 136 ~AutofillInteractiveTest() override {}
205 137
(...skipping 21 matching lines...) Expand all
227 void TearDownOnMainThread() override { 159 void TearDownOnMainThread() override {
228 // Make sure to close any showing popups prior to tearing down the UI. 160 // Make sure to close any showing popups prior to tearing down the UI.
229 content::WebContents* web_contents = GetWebContents(); 161 content::WebContents* web_contents = GetWebContents();
230 AutofillManager* autofill_manager = 162 AutofillManager* autofill_manager =
231 ContentAutofillDriverFactory::FromWebContents(web_contents) 163 ContentAutofillDriverFactory::FromWebContents(web_contents)
232 ->DriverForFrame(web_contents->GetMainFrame()) 164 ->DriverForFrame(web_contents->GetMainFrame())
233 ->autofill_manager(); 165 ->autofill_manager();
234 autofill_manager->client()->HideAutofillPopup(); 166 autofill_manager->client()->HideAutofillPopup();
235 } 167 }
236 168
237 PersonalDataManager* GetPersonalDataManager() {
238 return PersonalDataManagerFactory::GetForProfile(browser()->profile());
239 }
240
241 content::WebContents* GetWebContents() { 169 content::WebContents* GetWebContents() {
242 return browser()->tab_strip_model()->GetActiveWebContents(); 170 return browser()->tab_strip_model()->GetActiveWebContents();
243 } 171 }
244 172
245 content::RenderViewHost* GetRenderViewHost() { 173 content::RenderViewHost* GetRenderViewHost() {
246 return GetWebContents()->GetRenderViewHost(); 174 return GetWebContents()->GetRenderViewHost();
247 } 175 }
248 176
249 void CreateTestProfile() {
250 AutofillProfile profile;
251 test::SetProfileInfo(
252 &profile, "Milton", "C.", "Waddams",
253 "red.swingline@initech.com", "Initech", "4120 Freidrich Lane",
254 "Basement", "Austin", "Texas", "78744", "US", "5125551234");
255
256 WindowedPersonalDataManagerObserver observer(browser());
257 GetPersonalDataManager()->AddProfile(profile);
258
259 // AddProfile is asynchronous. Wait for it to finish before continuing the
260 // tests.
261 observer.Wait();
262 }
263
264 void SetProfiles(std::vector<AutofillProfile>* profiles) { 177 void SetProfiles(std::vector<AutofillProfile>* profiles) {
265 WindowedPersonalDataManagerObserver observer(browser()); 178 WindowedPersonalDataManagerObserver observer(browser());
266 GetPersonalDataManager()->SetProfiles(profiles); 179 GetPersonalDataManager(browser())->SetProfiles(profiles);
267 observer.Wait(); 180 observer.Wait();
268 } 181 }
269 182
270 void SetProfile(const AutofillProfile& profile) { 183 void SetProfile(const AutofillProfile& profile) {
271 std::vector<AutofillProfile> profiles; 184 std::vector<AutofillProfile> profiles;
272 profiles.push_back(profile); 185 profiles.push_back(profile);
273 SetProfiles(&profiles); 186 SetProfiles(&profiles);
274 } 187 }
275 188
276 // Populates a webpage form using autofill data and keypress events. 189 // Populates a webpage form using autofill data and keypress events.
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after
493 // key press event callback handles the event (at least on Mac), a DCHECK 406 // key press event callback handles the event (at least on Mac), a DCHECK
494 // ends up going off that the |event| doesn't have an |os_event| associated 407 // ends up going off that the |event| doesn't have an |os_event| associated
495 // with it. 408 // with it.
496 content::RenderWidgetHost::KeyPressEventCallback key_press_event_sink_; 409 content::RenderWidgetHost::KeyPressEventCallback key_press_event_sink_;
497 410
498 DISALLOW_COPY_AND_ASSIGN(AutofillInteractiveTest); 411 DISALLOW_COPY_AND_ASSIGN(AutofillInteractiveTest);
499 }; 412 };
500 413
501 // Test that basic form fill is working. 414 // Test that basic form fill is working.
502 IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest, BasicFormFill) { 415 IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest, BasicFormFill) {
503 CreateTestProfile(); 416 CreateTestProfile(browser());
504 417
505 // Load the test page. 418 // Load the test page.
506 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(browser(), 419 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(browser(),
507 GURL(std::string(kDataURIPrefix) + kTestFormString))); 420 GURL(std::string(kDataURIPrefix) + kTestFormString)));
508 421
509 // Invoke Autofill. 422 // Invoke Autofill.
510 TryBasicFormFill(); 423 TryBasicFormFill();
511 } 424 }
512 425
513 // Test that form filling can be initiated by pressing the down arrow. 426 // Test that form filling can be initiated by pressing the down arrow.
514 IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest, AutofillViaDownArrow) { 427 IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest, AutofillViaDownArrow) {
515 CreateTestProfile(); 428 CreateTestProfile(browser());
516 429
517 // Load the test page. 430 // Load the test page.
518 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(browser(), 431 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(browser(),
519 GURL(std::string(kDataURIPrefix) + kTestFormString))); 432 GURL(std::string(kDataURIPrefix) + kTestFormString)));
520 433
521 // Focus a fillable field. 434 // Focus a fillable field.
522 FocusFirstNameField(); 435 FocusFirstNameField();
523 436
524 // Press the down arrow to initiate Autofill and wait for the popup to be 437 // Press the down arrow to initiate Autofill and wait for the popup to be
525 // shown. 438 // shown.
526 SendKeyToPageAndWait(ui::VKEY_DOWN); 439 SendKeyToPageAndWait(ui::VKEY_DOWN);
527 440
528 // Press the down arrow to select the suggestion and preview the autofilled 441 // Press the down arrow to select the suggestion and preview the autofilled
529 // form. 442 // form.
530 SendKeyToPopupAndWait(ui::VKEY_DOWN); 443 SendKeyToPopupAndWait(ui::VKEY_DOWN);
531 444
532 // Press Enter to accept the autofill suggestions. 445 // Press Enter to accept the autofill suggestions.
533 SendKeyToPopupAndWait(ui::VKEY_RETURN); 446 SendKeyToPopupAndWait(ui::VKEY_RETURN);
534 447
535 // The form should be filled. 448 // The form should be filled.
536 ExpectFilledTestForm(); 449 ExpectFilledTestForm();
537 } 450 }
538 451
539 IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest, AutofillSelectViaTab) { 452 IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest, AutofillSelectViaTab) {
540 CreateTestProfile(); 453 CreateTestProfile(browser());
541 454
542 // Load the test page. 455 // Load the test page.
543 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(browser(), 456 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(browser(),
544 GURL(std::string(kDataURIPrefix) + kTestFormString))); 457 GURL(std::string(kDataURIPrefix) + kTestFormString)));
545 458
546 // Focus a fillable field. 459 // Focus a fillable field.
547 FocusFirstNameField(); 460 FocusFirstNameField();
548 461
549 // Press the down arrow to initiate Autofill and wait for the popup to be 462 // Press the down arrow to initiate Autofill and wait for the popup to be
550 // shown. 463 // shown.
551 SendKeyToPageAndWait(ui::VKEY_DOWN); 464 SendKeyToPageAndWait(ui::VKEY_DOWN);
552 465
553 // Press the down arrow to select the suggestion and preview the autofilled 466 // Press the down arrow to select the suggestion and preview the autofilled
554 // form. 467 // form.
555 SendKeyToPopupAndWait(ui::VKEY_DOWN); 468 SendKeyToPopupAndWait(ui::VKEY_DOWN);
556 469
557 // Press tab to accept the autofill suggestions. 470 // Press tab to accept the autofill suggestions.
558 SendKeyToPopupAndWait(ui::VKEY_TAB); 471 SendKeyToPopupAndWait(ui::VKEY_TAB);
559 472
560 // The form should be filled. 473 // The form should be filled.
561 ExpectFilledTestForm(); 474 ExpectFilledTestForm();
562 } 475 }
563 476
564 IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest, AutofillViaClick) { 477 IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest, AutofillViaClick) {
565 CreateTestProfile(); 478 CreateTestProfile(browser());
566 479
567 // Load the test page. 480 // Load the test page.
568 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 481 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
569 browser(), GURL(std::string(kDataURIPrefix) + kTestFormString))); 482 browser(), GURL(std::string(kDataURIPrefix) + kTestFormString)));
570 // Focus a fillable field. 483 // Focus a fillable field.
571 ASSERT_NO_FATAL_FAILURE(FocusFirstNameField()); 484 ASSERT_NO_FATAL_FAILURE(FocusFirstNameField());
572 485
573 // Now click it. 486 // Now click it.
574 test_delegate()->Reset(); 487 test_delegate()->Reset();
575 ASSERT_NO_FATAL_FAILURE(ClickFirstNameField()); 488 ASSERT_NO_FATAL_FAILURE(ClickFirstNameField());
576 test_delegate()->Wait(); 489 test_delegate()->Wait();
577 490
578 // Press the down arrow to select the suggestion and preview the autofilled 491 // Press the down arrow to select the suggestion and preview the autofilled
579 // form. 492 // form.
580 SendKeyToPopupAndWait(ui::VKEY_DOWN); 493 SendKeyToPopupAndWait(ui::VKEY_DOWN);
581 494
582 // Press Enter to accept the autofill suggestions. 495 // Press Enter to accept the autofill suggestions.
583 SendKeyToPopupAndWait(ui::VKEY_RETURN); 496 SendKeyToPopupAndWait(ui::VKEY_RETURN);
584 497
585 // The form should be filled. 498 // The form should be filled.
586 ExpectFilledTestForm(); 499 ExpectFilledTestForm();
587 } 500 }
588 501
589 // Makes sure that the first click does *not* activate the popup. 502 // Makes sure that the first click does *not* activate the popup.
590 IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest, DontAutofillForFirstClick) { 503 IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest, DontAutofillForFirstClick) {
591 CreateTestProfile(); 504 CreateTestProfile(browser());
592 505
593 // Load the test page. 506 // Load the test page.
594 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 507 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
595 browser(), GURL(std::string(kDataURIPrefix) + kTestFormString))); 508 browser(), GURL(std::string(kDataURIPrefix) + kTestFormString)));
596 509
597 // Click the first name field while it's out of focus, then twiddle our thumbs 510 // Click the first name field while it's out of focus, then twiddle our thumbs
598 // a bit. If a popup were to show, it would hit the asserts in 511 // a bit. If a popup were to show, it would hit the asserts in
599 // AutofillManagerTestDelegateImpl while we're wasting time. 512 // AutofillManagerTestDelegateImpl while we're wasting time.
600 ASSERT_NO_FATAL_FAILURE(ClickFirstNameField()); 513 ASSERT_NO_FATAL_FAILURE(ClickFirstNameField());
601 ASSERT_NO_FATAL_FAILURE(MakeSurePopupDoesntAppear()); 514 ASSERT_NO_FATAL_FAILURE(MakeSurePopupDoesntAppear());
602 515
603 // The second click should activate the popup since the first click focused 516 // The second click should activate the popup since the first click focused
604 // the field. 517 // the field.
605 test_delegate()->Reset(); 518 test_delegate()->Reset();
606 ASSERT_NO_FATAL_FAILURE(ClickFirstNameField()); 519 ASSERT_NO_FATAL_FAILURE(ClickFirstNameField());
607 test_delegate()->Wait(); 520 test_delegate()->Wait();
608 } 521 }
609 522
610 // Makes sure that clicking outside the focused field doesn't activate 523 // Makes sure that clicking outside the focused field doesn't activate
611 // the popup. 524 // the popup.
612 IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest, DontAutofillForOutsideClick) { 525 IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest, DontAutofillForOutsideClick) {
613 CreateTestProfile(); 526 CreateTestProfile(browser());
614 527
615 // Load the test page. 528 // Load the test page.
616 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 529 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
617 browser(), 530 browser(),
618 GURL(std::string(kDataURIPrefix) + kTestFormString + 531 GURL(std::string(kDataURIPrefix) + kTestFormString +
619 "<button disabled id='disabled-button'>Cant click this</button>"))); 532 "<button disabled id='disabled-button'>Cant click this</button>")));
620 533
621 ASSERT_NO_FATAL_FAILURE(FocusFirstNameField()); 534 ASSERT_NO_FATAL_FAILURE(FocusFirstNameField());
622 535
623 // Clicking a disabled button will generate a mouse event but focus doesn't 536 // Clicking a disabled button will generate a mouse event but focus doesn't
624 // change. This tests that autofill can handle a mouse event outside a focused 537 // change. This tests that autofill can handle a mouse event outside a focused
625 // input *without* showing the popup. 538 // input *without* showing the popup.
626 ASSERT_NO_FATAL_FAILURE(ClickElementWithId("disabled-button")); 539 ASSERT_NO_FATAL_FAILURE(ClickElementWithId("disabled-button"));
627 ASSERT_NO_FATAL_FAILURE(MakeSurePopupDoesntAppear()); 540 ASSERT_NO_FATAL_FAILURE(MakeSurePopupDoesntAppear());
628 541
629 test_delegate()->Reset(); 542 test_delegate()->Reset();
630 ASSERT_NO_FATAL_FAILURE(ClickFirstNameField()); 543 ASSERT_NO_FATAL_FAILURE(ClickFirstNameField());
631 test_delegate()->Wait(); 544 test_delegate()->Wait();
632 } 545 }
633 546
634 // Test that a field is still autofillable after the previously autofilled 547 // Test that a field is still autofillable after the previously autofilled
635 // value is deleted. 548 // value is deleted.
636 IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest, OnDeleteValueAfterAutofill) { 549 IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest, OnDeleteValueAfterAutofill) {
637 CreateTestProfile(); 550 CreateTestProfile(browser());
638 551
639 // Load the test page. 552 // Load the test page.
640 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(browser(), 553 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(browser(),
641 GURL(std::string(kDataURIPrefix) + kTestFormString))); 554 GURL(std::string(kDataURIPrefix) + kTestFormString)));
642 555
643 // Invoke and accept the Autofill popup and verify the form was filled. 556 // Invoke and accept the Autofill popup and verify the form was filled.
644 FocusFirstNameField(); 557 FocusFirstNameField();
645 SendKeyToPageAndWait(ui::VKEY_M); 558 SendKeyToPageAndWait(ui::VKEY_M);
646 SendKeyToPopupAndWait(ui::VKEY_DOWN); 559 SendKeyToPopupAndWait(ui::VKEY_DOWN);
647 SendKeyToPopupAndWait(ui::VKEY_RETURN); 560 SendKeyToPopupAndWait(ui::VKEY_RETURN);
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
692 SendKeyToDataListPopup(ui::VKEY_DOWN); 605 SendKeyToDataListPopup(ui::VKEY_DOWN);
693 SendKeyToDataListPopup(ui::VKEY_RETURN); 606 SendKeyToDataListPopup(ui::VKEY_RETURN);
694 ExpectFieldValue("firstname", "Adam"); 607 ExpectFieldValue("firstname", "Adam");
695 std::string color; 608 std::string color;
696 GetFieldBackgroundColor("firstname", &color); 609 GetFieldBackgroundColor("firstname", &color);
697 EXPECT_EQ(color, orginalcolor); 610 EXPECT_EQ(color, orginalcolor);
698 } 611 }
699 612
700 // Test that a JavaScript oninput event is fired after auto-filling a form. 613 // Test that a JavaScript oninput event is fired after auto-filling a form.
701 IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest, OnInputAfterAutofill) { 614 IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest, OnInputAfterAutofill) {
702 CreateTestProfile(); 615 CreateTestProfile(browser());
703 616
704 const char kOnInputScript[] = 617 const char kOnInputScript[] =
705 "<script>" 618 "<script>"
706 "focused_fired = false;" 619 "focused_fired = false;"
707 "unfocused_fired = false;" 620 "unfocused_fired = false;"
708 "changed_select_fired = false;" 621 "changed_select_fired = false;"
709 "unchanged_select_fired = false;" 622 "unchanged_select_fired = false;"
710 "document.getElementById('firstname').oninput = function() {" 623 "document.getElementById('firstname').oninput = function() {"
711 " focused_fired = true;" 624 " focused_fired = true;"
712 "};" 625 "};"
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
764 "domAutomationController.send(unchanged_select_fired);", 677 "domAutomationController.send(unchanged_select_fired);",
765 &unchanged_select_fired)); 678 &unchanged_select_fired));
766 EXPECT_TRUE(focused_fired); 679 EXPECT_TRUE(focused_fired);
767 EXPECT_TRUE(unfocused_fired); 680 EXPECT_TRUE(unfocused_fired);
768 EXPECT_TRUE(changed_select_fired); 681 EXPECT_TRUE(changed_select_fired);
769 EXPECT_FALSE(unchanged_select_fired); 682 EXPECT_FALSE(unchanged_select_fired);
770 } 683 }
771 684
772 // Test that a JavaScript onchange event is fired after auto-filling a form. 685 // Test that a JavaScript onchange event is fired after auto-filling a form.
773 IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest, OnChangeAfterAutofill) { 686 IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest, OnChangeAfterAutofill) {
774 CreateTestProfile(); 687 CreateTestProfile(browser());
775 688
776 const char kOnChangeScript[] = 689 const char kOnChangeScript[] =
777 "<script>" 690 "<script>"
778 "focused_fired = false;" 691 "focused_fired = false;"
779 "unfocused_fired = false;" 692 "unfocused_fired = false;"
780 "changed_select_fired = false;" 693 "changed_select_fired = false;"
781 "unchanged_select_fired = false;" 694 "unchanged_select_fired = false;"
782 "document.getElementById('firstname').onchange = function() {" 695 "document.getElementById('firstname').onchange = function() {"
783 " focused_fired = true;" 696 " focused_fired = true;"
784 "};" 697 "};"
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
835 GetRenderViewHost(), 748 GetRenderViewHost(),
836 "domAutomationController.send(unchanged_select_fired);", 749 "domAutomationController.send(unchanged_select_fired);",
837 &unchanged_select_fired)); 750 &unchanged_select_fired));
838 EXPECT_TRUE(focused_fired); 751 EXPECT_TRUE(focused_fired);
839 EXPECT_TRUE(unfocused_fired); 752 EXPECT_TRUE(unfocused_fired);
840 EXPECT_TRUE(changed_select_fired); 753 EXPECT_TRUE(changed_select_fired);
841 EXPECT_FALSE(unchanged_select_fired); 754 EXPECT_FALSE(unchanged_select_fired);
842 } 755 }
843 756
844 IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest, InputFiresBeforeChange) { 757 IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest, InputFiresBeforeChange) {
845 CreateTestProfile(); 758 CreateTestProfile(browser());
846 759
847 const char kInputFiresBeforeChangeScript[] = 760 const char kInputFiresBeforeChangeScript[] =
848 "<script>" 761 "<script>"
849 "inputElementEvents = [];" 762 "inputElementEvents = [];"
850 "function recordInputElementEvent(e) {" 763 "function recordInputElementEvent(e) {"
851 " if (e.target.tagName != 'INPUT') throw 'only <input> tags allowed';" 764 " if (e.target.tagName != 'INPUT') throw 'only <input> tags allowed';"
852 " inputElementEvents.push(e.type);" 765 " inputElementEvents.push(e.type);"
853 "}" 766 "}"
854 "selectElementEvents = [];" 767 "selectElementEvents = [];"
855 "function recordSelectElementEvent(e) {" 768 "function recordSelectElementEvent(e) {"
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
915 "domAutomationController.send(selectElementEvents[1]);", 828 "domAutomationController.send(selectElementEvents[1]);",
916 &select_element_events[1])); 829 &select_element_events[1]));
917 830
918 EXPECT_EQ("input", select_element_events[0]); 831 EXPECT_EQ("input", select_element_events[0]);
919 EXPECT_EQ("change", select_element_events[1]); 832 EXPECT_EQ("change", select_element_events[1]);
920 } 833 }
921 834
922 // Test that we can autofill forms distinguished only by their |id| attribute. 835 // Test that we can autofill forms distinguished only by their |id| attribute.
923 IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest, 836 IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest,
924 AutofillFormsDistinguishedById) { 837 AutofillFormsDistinguishedById) {
925 CreateTestProfile(); 838 CreateTestProfile(browser());
926 839
927 // Load the test page. 840 // Load the test page.
928 const std::string kURL = 841 const std::string kURL =
929 std::string(kDataURIPrefix) + kTestFormString + 842 std::string(kDataURIPrefix) + kTestFormString +
930 "<script>" 843 "<script>"
931 "var mainForm = document.forms[0];" 844 "var mainForm = document.forms[0];"
932 "mainForm.id = 'mainForm';" 845 "mainForm.id = 'mainForm';"
933 "var newForm = document.createElement('form');" 846 "var newForm = document.createElement('form');"
934 "newForm.action = mainForm.action;" 847 "newForm.action = mainForm.action;"
935 "newForm.method = mainForm.method;" 848 "newForm.method = mainForm.method;"
936 "newForm.id = 'newForm';" 849 "newForm.id = 'newForm';"
937 "mainForm.parentNode.insertBefore(newForm, mainForm);" 850 "mainForm.parentNode.insertBefore(newForm, mainForm);"
938 "</script>"; 851 "</script>";
939 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(browser(), GURL(kURL))); 852 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(browser(), GURL(kURL)));
940 853
941 // Invoke Autofill. 854 // Invoke Autofill.
942 TryBasicFormFill(); 855 TryBasicFormFill();
943 } 856 }
944 857
945 // Test that we properly autofill forms with repeated fields. 858 // Test that we properly autofill forms with repeated fields.
946 // In the wild, the repeated fields are typically either email fields 859 // In the wild, the repeated fields are typically either email fields
947 // (duplicated for "confirmation"); or variants that are hot-swapped via 860 // (duplicated for "confirmation"); or variants that are hot-swapped via
948 // JavaScript, with only one actually visible at any given time. 861 // JavaScript, with only one actually visible at any given time.
949 IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest, AutofillFormWithRepeatedField) { 862 IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest, AutofillFormWithRepeatedField) {
950 CreateTestProfile(); 863 CreateTestProfile(browser());
951 864
952 // Load the test page. 865 // Load the test page.
953 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(browser(), 866 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(browser(),
954 GURL(std::string(kDataURIPrefix) + 867 GURL(std::string(kDataURIPrefix) +
955 "<form action=\"http://www.example.com/\" method=\"POST\">" 868 "<form action=\"http://www.example.com/\" method=\"POST\">"
956 "<label for=\"firstname\">First name:</label>" 869 "<label for=\"firstname\">First name:</label>"
957 " <input type=\"text\" id=\"firstname\"" 870 " <input type=\"text\" id=\"firstname\""
958 " onfocus=\"domAutomationController.send(true)\"><br>" 871 " onfocus=\"domAutomationController.send(true)\"><br>"
959 "<label for=\"lastname\">Last name:</label>" 872 "<label for=\"lastname\">Last name:</label>"
960 " <input type=\"text\" id=\"lastname\"><br>" 873 " <input type=\"text\" id=\"lastname\"><br>"
(...skipping 25 matching lines...) Expand all
986 "</form>"))); 899 "</form>")));
987 900
988 // Invoke Autofill. 901 // Invoke Autofill.
989 TryBasicFormFill(); 902 TryBasicFormFill();
990 ExpectFieldValue("state_freeform", std::string()); 903 ExpectFieldValue("state_freeform", std::string());
991 } 904 }
992 905
993 // Test that we properly autofill forms with non-autofillable fields. 906 // Test that we properly autofill forms with non-autofillable fields.
994 IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest, 907 IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest,
995 AutofillFormWithNonAutofillableField) { 908 AutofillFormWithNonAutofillableField) {
996 CreateTestProfile(); 909 CreateTestProfile(browser());
997 910
998 // Load the test page. 911 // Load the test page.
999 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(browser(), 912 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(browser(),
1000 GURL(std::string(kDataURIPrefix) + 913 GURL(std::string(kDataURIPrefix) +
1001 "<form action=\"http://www.example.com/\" method=\"POST\">" 914 "<form action=\"http://www.example.com/\" method=\"POST\">"
1002 "<label for=\"firstname\">First name:</label>" 915 "<label for=\"firstname\">First name:</label>"
1003 " <input type=\"text\" id=\"firstname\"" 916 " <input type=\"text\" id=\"firstname\""
1004 " onfocus=\"domAutomationController.send(true)\"><br>" 917 " onfocus=\"domAutomationController.send(true)\"><br>"
1005 "<label for=\"middlename\">Middle name:</label>" 918 "<label for=\"middlename\">Middle name:</label>"
1006 " <input type=\"text\" id=\"middlename\" autocomplete=\"off\" /><br>" 919 " <input type=\"text\" id=\"middlename\" autocomplete=\"off\" /><br>"
(...skipping 22 matching lines...) Expand all
1029 "<label for=\"phone\">Phone number:</label>" 942 "<label for=\"phone\">Phone number:</label>"
1030 " <input type=\"text\" id=\"phone\"><br>" 943 " <input type=\"text\" id=\"phone\"><br>"
1031 "</form>"))); 944 "</form>")));
1032 945
1033 // Invoke Autofill. 946 // Invoke Autofill.
1034 TryBasicFormFill(); 947 TryBasicFormFill();
1035 } 948 }
1036 949
1037 // Test that we can Autofill dynamically generated forms. 950 // Test that we can Autofill dynamically generated forms.
1038 IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest, DynamicFormFill) { 951 IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest, DynamicFormFill) {
1039 CreateTestProfile(); 952 CreateTestProfile(browser());
1040 953
1041 // Load the test page. 954 // Load the test page.
1042 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(browser(), 955 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(browser(),
1043 GURL(std::string(kDataURIPrefix) + 956 GURL(std::string(kDataURIPrefix) +
1044 "<form id=\"form\" action=\"http://www.example.com/\"" 957 "<form id=\"form\" action=\"http://www.example.com/\""
1045 " method=\"POST\"></form>" 958 " method=\"POST\"></form>"
1046 "<script>" 959 "<script>"
1047 "function AddElement(name, label) {" 960 "function AddElement(name, label) {"
1048 " var form = document.getElementById('form');" 961 " var form = document.getElementById('form');"
1049 "" 962 ""
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
1117 1030
1118 // Dynamically construct the form. 1031 // Dynamically construct the form.
1119 ASSERT_TRUE(content::ExecuteScript(GetRenderViewHost(), "BuildForm();")); 1032 ASSERT_TRUE(content::ExecuteScript(GetRenderViewHost(), "BuildForm();"));
1120 1033
1121 // Invoke Autofill. 1034 // Invoke Autofill.
1122 TryBasicFormFill(); 1035 TryBasicFormFill();
1123 } 1036 }
1124 1037
1125 // Test that form filling works after reloading the current page. 1038 // Test that form filling works after reloading the current page.
1126 IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest, AutofillAfterReload) { 1039 IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest, AutofillAfterReload) {
1127 CreateTestProfile(); 1040 CreateTestProfile(browser());
1128 1041
1129 // Load the test page. 1042 // Load the test page.
1130 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(browser(), 1043 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(browser(),
1131 GURL(std::string(kDataURIPrefix) + kTestFormString))); 1044 GURL(std::string(kDataURIPrefix) + kTestFormString)));
1132 1045
1133 // Reload the page. 1046 // Reload the page.
1134 content::WebContents* web_contents = GetWebContents(); 1047 content::WebContents* web_contents = GetWebContents();
1135 web_contents->GetController().Reload(false); 1048 web_contents->GetController().Reload(false);
1136 content::WaitForLoadStop(web_contents); 1049 content::WaitForLoadStop(web_contents);
1137 1050
1138 // Invoke Autofill. 1051 // Invoke Autofill.
1139 TryBasicFormFill(); 1052 TryBasicFormFill();
1140 } 1053 }
1141 1054
1142 IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest, AutofillAfterTranslate) { 1055 IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest, AutofillAfterTranslate) {
1143 // TODO(port): Test corresponding bubble translate UX: http://crbug.com/383235 1056 // TODO(port): Test corresponding bubble translate UX: http://crbug.com/383235
1144 if (TranslateService::IsTranslateBubbleEnabled()) 1057 if (TranslateService::IsTranslateBubbleEnabled())
1145 return; 1058 return;
1146 1059
1147 CreateTestProfile(); 1060 CreateTestProfile(browser());
1148 1061
1149 GURL url(std::string(kDataURIPrefix) + 1062 GURL url(std::string(kDataURIPrefix) +
1150 "<form action=\"http://www.example.com/\" method=\"POST\">" 1063 "<form action=\"http://www.example.com/\" method=\"POST\">"
1151 "<label for=\"fn\">なまえ</label>" 1064 "<label for=\"fn\">なまえ</label>"
1152 " <input type=\"text\" id=\"fn\"" 1065 " <input type=\"text\" id=\"fn\""
1153 " onfocus=\"domAutomationController.send(true)\"" 1066 " onfocus=\"domAutomationController.send(true)\""
1154 "><br>" 1067 "><br>"
1155 "<label for=\"ln\">みょうじ</label>" 1068 "<label for=\"ln\">みょうじ</label>"
1156 " <input type=\"text\" id=\"ln\"><br>" 1069 " <input type=\"text\" id=\"ln\"><br>"
1157 "<label for=\"a1\">Address line 1:</label>" 1070 "<label for=\"a1\">Address line 1:</label>"
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
1289 1202
1290 // Test form is fillable from a profile after form was reset. 1203 // Test form is fillable from a profile after form was reset.
1291 // Steps: 1204 // Steps:
1292 // 1. Fill form using a saved profile. 1205 // 1. Fill form using a saved profile.
1293 // 2. Reset the form. 1206 // 2. Reset the form.
1294 // 3. Fill form using a saved profile. 1207 // 3. Fill form using a saved profile.
1295 // Flakily times out: http://crbug.com/270341 1208 // Flakily times out: http://crbug.com/270341
1296 IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest, DISABLED_FormFillableOnReset) { 1209 IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest, DISABLED_FormFillableOnReset) {
1297 ASSERT_TRUE(test_server()->Start()); 1210 ASSERT_TRUE(test_server()->Start());
1298 1211
1299 CreateTestProfile(); 1212 CreateTestProfile(browser());
1300 1213
1301 GURL url = test_server()->GetURL("files/autofill/autofill_test_form.html"); 1214 GURL url = test_server()->GetURL("files/autofill/autofill_test_form.html");
1302 ui_test_utils::NavigateToURL(browser(), url); 1215 ui_test_utils::NavigateToURL(browser(), url);
1303 PopulateForm("NAME_FIRST"); 1216 PopulateForm("NAME_FIRST");
1304 1217
1305 ASSERT_TRUE(content::ExecuteScript( 1218 ASSERT_TRUE(content::ExecuteScript(
1306 GetWebContents(), "document.getElementById('testform').reset()")); 1219 GetWebContents(), "document.getElementById('testform').reset()"));
1307 1220
1308 PopulateForm("NAME_FIRST"); 1221 PopulateForm("NAME_FIRST");
1309 1222
1310 ExpectFieldValue("NAME_FIRST", "Milton"); 1223 ExpectFieldValue("NAME_FIRST", "Milton");
1311 ExpectFieldValue("NAME_LAST", "Waddams"); 1224 ExpectFieldValue("NAME_LAST", "Waddams");
1312 ExpectFieldValue("EMAIL_ADDRESS", "red.swingline@initech.com"); 1225 ExpectFieldValue("EMAIL_ADDRESS", "red.swingline@initech.com");
1313 ExpectFieldValue("ADDRESS_HOME_LINE1", "4120 Freidrich Lane"); 1226 ExpectFieldValue("ADDRESS_HOME_LINE1", "4120 Freidrich Lane");
1314 ExpectFieldValue("ADDRESS_HOME_CITY", "Austin"); 1227 ExpectFieldValue("ADDRESS_HOME_CITY", "Austin");
1315 ExpectFieldValue("ADDRESS_HOME_STATE", "Texas"); 1228 ExpectFieldValue("ADDRESS_HOME_STATE", "Texas");
1316 ExpectFieldValue("ADDRESS_HOME_ZIP", "78744"); 1229 ExpectFieldValue("ADDRESS_HOME_ZIP", "78744");
1317 ExpectFieldValue("ADDRESS_HOME_COUNTRY", "United States"); 1230 ExpectFieldValue("ADDRESS_HOME_COUNTRY", "United States");
1318 ExpectFieldValue("PHONE_HOME_WHOLE_NUMBER", "5125551234"); 1231 ExpectFieldValue("PHONE_HOME_WHOLE_NUMBER", "5125551234");
1319 } 1232 }
1320 1233
1321 // Test Autofill distinguishes a middle initial in a name. 1234 // Test Autofill distinguishes a middle initial in a name.
1322 // Flakily times out: http://crbug.com/270341 1235 // Flakily times out: http://crbug.com/270341
1323 IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest, 1236 IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest,
1324 DISABLED_DistinguishMiddleInitialWithinName) { 1237 DISABLED_DistinguishMiddleInitialWithinName) {
1325 ASSERT_TRUE(test_server()->Start()); 1238 ASSERT_TRUE(test_server()->Start());
1326 1239
1327 CreateTestProfile(); 1240 CreateTestProfile(browser());
1328 1241
1329 GURL url = test_server()->GetURL( 1242 GURL url = test_server()->GetURL(
1330 "files/autofill/autofill_middleinit_form.html"); 1243 "files/autofill/autofill_middleinit_form.html");
1331 ui_test_utils::NavigateToURL(browser(), url); 1244 ui_test_utils::NavigateToURL(browser(), url);
1332 PopulateForm("NAME_FIRST"); 1245 PopulateForm("NAME_FIRST");
1333 1246
1334 ExpectFieldValue("NAME_MIDDLE", "C"); 1247 ExpectFieldValue("NAME_MIDDLE", "C");
1335 } 1248 }
1336 1249
1337 // Test forms with multiple email addresses are filled properly. 1250 // Test forms with multiple email addresses are filled properly.
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
1428 "document.getElementById('testform').submit();")); 1341 "document.getElementById('testform').submit();"));
1429 // This will ensure the test didn't hang. 1342 // This will ensure the test didn't hang.
1430 load_stop_observer.Wait(); 1343 load_stop_observer.Wait();
1431 } 1344 }
1432 1345
1433 // Test that Chrome doesn't crash when autocomplete is disabled while the user 1346 // Test that Chrome doesn't crash when autocomplete is disabled while the user
1434 // is interacting with the form. This is a regression test for 1347 // is interacting with the form. This is a regression test for
1435 // http://crbug.com/160476 1348 // http://crbug.com/160476
1436 IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest, 1349 IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest,
1437 DisableAutocompleteWhileFilling) { 1350 DisableAutocompleteWhileFilling) {
1438 CreateTestProfile(); 1351 CreateTestProfile(browser());
1439 1352
1440 // Load the test page. 1353 // Load the test page.
1441 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(browser(), 1354 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(browser(),
1442 GURL(std::string(kDataURIPrefix) + kTestFormString))); 1355 GURL(std::string(kDataURIPrefix) + kTestFormString)));
1443 1356
1444 // Invoke Autofill: Start filling the first name field with "M" and wait for 1357 // Invoke Autofill: Start filling the first name field with "M" and wait for
1445 // the popup to be shown. 1358 // the popup to be shown.
1446 FocusFirstNameField(); 1359 FocusFirstNameField();
1447 SendKeyToPageAndWait(ui::VKEY_M); 1360 SendKeyToPageAndWait(ui::VKEY_M);
1448 1361
1449 // Now that the popup with suggestions is showing, disable autocomplete for 1362 // Now that the popup with suggestions is showing, disable autocomplete for
1450 // the active field. 1363 // the active field.
1451 ASSERT_TRUE(content::ExecuteScript( 1364 ASSERT_TRUE(content::ExecuteScript(
1452 GetRenderViewHost(), 1365 GetRenderViewHost(),
1453 "document.querySelector('input').autocomplete = 'off';")); 1366 "document.querySelector('input').autocomplete = 'off';"));
1454 1367
1455 // Press the down arrow to select the suggestion and attempt to preview the 1368 // Press the down arrow to select the suggestion and attempt to preview the
1456 // autofilled form. 1369 // autofilled form.
1457 SendKeyToPopupAndWait(ui::VKEY_DOWN); 1370 SendKeyToPopupAndWait(ui::VKEY_DOWN);
1458 } 1371 }
1459 1372
1460 } // namespace autofill 1373 } // namespace autofill
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/autofill/autofill_uitest_util.h » ('j') | chrome/browser/autofill/autofill_uitest_util.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698