autofill_browsertest.cc revision 7d4cd473f85ac64c3747c96c277f9e506a0d2246
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string> 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/file_util.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/ref_counted.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_ptr.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/rand_util.h" 12868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/string16.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/strings/string_number_conversions.h" 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/strings/string_split.h" 15868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/utf_string_conversions.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/time.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/autofill/personal_data_manager_factory.h" 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/infobars/confirm_infobar_delegate.h" 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/infobars/infobar_service.h" 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/profiles/profile.h" 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/translate/translate_infobar_delegate.h" 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/translate/translate_manager.h" 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser.h" 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser_window.h" 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/ui/tabs/tab_strip_model.h" 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/chrome_notification_types.h" 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/render_messages.h" 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/test/base/in_process_browser_test.h" 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/test/base/ui_test_utils.h" 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "components/autofill/browser/autofill_common_test.h" 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "components/autofill/browser/autofill_external_delegate.h" 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "components/autofill/browser/autofill_manager.h" 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "components/autofill/browser/autofill_manager_test_delegate.h" 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "components/autofill/browser/autofill_profile.h" 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "components/autofill/browser/credit_card.h" 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "components/autofill/browser/personal_data_manager.h" 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "components/autofill/browser/personal_data_manager_observer.h" 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "components/autofill/browser/validation.h" 397d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "components/autofill/content/browser/autofill_driver_impl.h" 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/navigation_controller.h" 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/notification_observer.h" 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/notification_registrar.h" 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/notification_service.h" 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/render_view_host.h" 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/web_contents.h" 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/test/browser_test_utils.h" 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/test/test_renderer_host.h" 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/public/test/test_utils.h" 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/url_request/test_url_fetcher_factory.h" 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "testing/gmock/include/gmock/gmock.h" 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/keycodes/keyboard_codes.h" 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using content::RenderViewHost; 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using content::RenderViewHostTester; 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using content::WebContents; 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)using testing::Invoke; 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 60c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace autofill { 61c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static const char* kDataURIPrefix = "data:text/html;charset=utf-8,"; 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static const char* kTestFormString = 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<form action=\"http://www.example.com/\" method=\"POST\">" 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<label for=\"firstname\">First name:</label>" 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <input type=\"text\" id=\"firstname\"" 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " onFocus=\"domAutomationController.send(true)\"><br>" 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<label for=\"lastname\">Last name:</label>" 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <input type=\"text\" id=\"lastname\"><br>" 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<label for=\"address1\">Address line 1:</label>" 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <input type=\"text\" id=\"address1\"><br>" 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<label for=\"address2\">Address line 2:</label>" 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <input type=\"text\" id=\"address2\"><br>" 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<label for=\"city\">City:</label>" 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <input type=\"text\" id=\"city\"><br>" 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<label for=\"state\">State:</label>" 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <select id=\"state\">" 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <option value=\"\" selected=\"yes\">--</option>" 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <option value=\"CA\">California</option>" 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <option value=\"TX\">Texas</option>" 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " </select><br>" 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<label for=\"zip\">ZIP code:</label>" 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <input type=\"text\" id=\"zip\"><br>" 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<label for=\"country\">Country:</label>" 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <select id=\"country\">" 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <option value=\"\" selected=\"yes\">--</option>" 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <option value=\"CA\">Canada</option>" 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <option value=\"US\">United States</option>" 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " </select><br>" 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<label for=\"phone\">Phone number:</label>" 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <input type=\"text\" id=\"phone\"><br>" 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "</form>"; 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class AutofillManagerTestDelegateImpl 952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) : public autofill::AutofillManagerTestDelegate { 962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) AutofillManagerTestDelegateImpl() {} 982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void DidPreviewFormData() OVERRIDE { 1002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) loop_runner_->Quit(); 1012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void DidFillFormData() OVERRIDE { 1042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) loop_runner_->Quit(); 1052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void DidShowSuggestions() OVERRIDE { 1082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) loop_runner_->Quit(); 1092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void Reset() { 1122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) loop_runner_ = new content::MessageLoopRunner(); 1132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void Wait() { 1162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) loop_runner_->Run(); 1172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 1202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_refptr<content::MessageLoopRunner> loop_runner_; 1212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(AutofillManagerTestDelegateImpl); 1232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 1242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WindowedPersonalDataManagerObserver 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : public PersonalDataManagerObserver, 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public content::NotificationObserver { 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 1292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) explicit WindowedPersonalDataManagerObserver(Browser* browser) 1302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) : alerted_(false), 1312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) has_run_message_loop_(false), 1322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser_(browser), 1332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) infobar_service_(NULL) { 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PersonalDataManagerFactory::GetForProfile(browser_->profile())-> 1352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) AddObserver(this); 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) registrar_.Add(this, chrome::NOTIFICATION_TAB_CONTENTS_INFOBAR_ADDED, 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::NotificationService::AllSources()); 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual ~WindowedPersonalDataManagerObserver() { 141c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (infobar_service_ && infobar_service_->infobar_count() > 0) 142c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) infobar_service_->RemoveInfoBar(infobar_service_->infobar_at(0)); 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void Wait() { 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!alerted_) { 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) has_run_message_loop_ = true; 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::RunMessageLoop(); 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PersonalDataManagerFactory::GetForProfile(browser_->profile())-> 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RemoveObserver(this); 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // PersonalDataManagerObserver: 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void OnPersonalDataChanged() OVERRIDE { 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (has_run_message_loop_) { 15790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) base::MessageLoopForUI::current()->Quit(); 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) has_run_message_loop_ = false; 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) alerted_ = true; 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void OnInsufficientFormData() OVERRIDE { 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OnPersonalDataChanged(); 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // content::NotificationObserver: 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void Observe(int type, 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const content::NotificationSource& source, 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const content::NotificationDetails& details) OVERRIDE { 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Accept in the infobar. 1722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) infobar_service_ = InfoBarService::FromWebContents( 1732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser_->tab_strip_model()->GetActiveWebContents()); 174c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) InfoBarDelegate* infobar = infobar_service_->infobar_at(0); 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ConfirmInfoBarDelegate* confirm_infobar = 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) infobar->AsConfirmInfoBarDelegate(); 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) confirm_infobar->Accept(); 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool alerted_; 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool has_run_message_loop_; 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Browser* browser_; 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::NotificationRegistrar registrar_; 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InfoBarService* infobar_service_; 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class TestAutofillExternalDelegate : public AutofillExternalDelegate { 1902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 1912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TestAutofillExternalDelegate(content::WebContents* web_contents, 1922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) AutofillManager* autofill_manager) 1932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) : AutofillExternalDelegate(web_contents, autofill_manager), 1942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) keyboard_listener_(NULL) { 1952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual ~TestAutofillExternalDelegate() {} 1972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void OnPopupShown(content::KeyboardListener* listener) OVERRIDE { 1992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) AutofillExternalDelegate::OnPopupShown(listener); 2002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) keyboard_listener_ = listener; 2012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 2022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void OnPopupHidden(content::KeyboardListener* listener) OVERRIDE { 2042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) keyboard_listener_ = NULL; 2052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) AutofillExternalDelegate::OnPopupHidden(listener); 2062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 2072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::KeyboardListener* keyboard_listener() { 2092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return keyboard_listener_; 2102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 2112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 2132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // The popup that is currently registered as a keyboard listener, or NULL if 2142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // there is none. 2152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::KeyboardListener* keyboard_listener_; 2162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(TestAutofillExternalDelegate); 2182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 2192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class AutofillTest : public InProcessBrowserTest { 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutofillTest() {} 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SetUpOnMainThread() OVERRIDE { 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Don't want Keychain coming up on Mac. 226c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) test::DisableSystemServices(browser()->profile()); 2272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // When testing the native UI, hook up a test external delegate, which 2292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // allows us to forward keyboard events to the popup directly. 2302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::WebContents* web_contents = 2312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser()->tab_strip_model()->GetActiveWebContents(); 2327d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) AutofillDriverImpl* autofill_driver = 2337d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) AutofillDriverImpl::FromWebContents(web_contents); 2347d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) AutofillManager* autofill_manager = autofill_driver->autofill_manager(); 2352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (autofill_manager->IsNativeUiEnabled()) { 2367d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) scoped_ptr<AutofillExternalDelegate> external_delegate( 2372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) new TestAutofillExternalDelegate(web_contents, autofill_manager)); 2387d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) autofill_driver->SetAutofillExternalDelegate(external_delegate.Pass()); 2392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 2402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) autofill_manager->SetTestDelegate(&test_delegate_); 2412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 2422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void CleanUpOnMainThread() OVERRIDE { 2442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Make sure to close any showing popups prior to tearing down the UI. 2452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::WebContents* web_contents = 2462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser()->tab_strip_model()->GetActiveWebContents(); 2472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) AutofillManager* autofill_manager = 2487d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) AutofillDriverImpl::FromWebContents(web_contents)->autofill_manager(); 2492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) autofill_manager->delegate()->HideAutofillPopup(); 2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PersonalDataManager* personal_data_manager() { 2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return PersonalDataManagerFactory::GetForProfile(browser()->profile()); 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void CreateTestProfile() { 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutofillProfile profile; 258c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) test::SetProfileInfo( 2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &profile, "Milton", "C.", "Waddams", 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "red.swingline@initech.com", "Initech", "4120 Freidrich Lane", 261c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "Basement", "Austin", "Texas", "78744", "US", "5125551234"); 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WindowedPersonalDataManagerObserver observer(browser()); 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) personal_data_manager()->AddProfile(profile); 2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // AddProfile is asynchronous. Wait for it to finish before continuing the 2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // tests. 2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) observer.Wait(); 2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetProfiles(std::vector<AutofillProfile>* profiles) { 2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WindowedPersonalDataManagerObserver observer(browser()); 2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) personal_data_manager()->SetProfiles(profiles); 2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) observer.Wait(); 2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetProfile(const AutofillProfile& profile) { 2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<AutofillProfile> profiles; 2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profiles.push_back(profile); 2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetProfiles(&profiles); 2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetCards(std::vector<CreditCard>* cards) { 2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WindowedPersonalDataManagerObserver observer(browser()); 2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) personal_data_manager()->SetCreditCards(cards); 2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) observer.Wait(); 2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetCard(const CreditCard& card) { 2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<CreditCard> cards; 2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cards.push_back(card); 2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetCards(&cards); 2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef std::map<std::string, std::string> FormMap; 2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Navigate to the form, input values into the fields, and submit the form. 2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The function returns after the PersonalDataManager is updated. 2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void FillFormAndSubmit(const std::string& filename, const FormMap& data) { 2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = test_server()->GetURL("files/autofill/" + filename); 3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui_test_utils::NavigateToURL(browser(), url); 3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string js; 3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (FormMap::const_iterator i = data.begin(); i != data.end(); ++i) { 3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) js += "document.getElementById('" + i->first + "').value = '" + 3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) i->second + "';"; 3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) js += "document.getElementById('testform').submit();"; 3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WindowedPersonalDataManagerObserver observer(browser()); 3102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(content::ExecuteScript(render_view_host(), js)); 3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) observer.Wait(); 3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SubmitCreditCard(const char* name, 3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char* number, 3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char* exp_month, 3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char* exp_year) { 3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FormMap data; 3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["CREDIT_CARD_NAME"] = name; 3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["CREDIT_CARD_NUMBER"] = number; 3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["CREDIT_CARD_EXP_MONTH"] = exp_month; 3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["CREDIT_CARD_EXP_4_DIGIT_YEAR"] = exp_year; 3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FillFormAndSubmit("autofill_creditcard_form.html", data); 3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Populates a webpage form using autofill data and keypress events. 3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This function focuses the specified input field in the form, and then 3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // sends keypress events to the tab to cause the form to be populated. 3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void PopulateForm(const std::string& field_id) { 3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string js("document.getElementById('" + field_id + "').focus();"); 3312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(content::ExecuteScript(render_view_host(), js)); 3322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SendKeyToPageAndWait(ui::VKEY_DOWN); 3342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SendKeyToPopupAndWait(ui::VKEY_DOWN); 3352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SendKeyToPopupAndWait(ui::VKEY_RETURN); 3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Aggregate profiles from forms into Autofill preferences. Returns the number 3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // of parsed profiles. 3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int AggregateProfilesIntoAutofillPrefs(const std::string& filename) { 3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CHECK(test_server()->Start()); 3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string data; 3442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath data_file = 3452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ui_test_utils::GetTestFilePath(base::FilePath().AppendASCII("autofill"), 3462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath().AppendASCII(filename)); 3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CHECK(file_util::ReadFileToString(data_file, &data)); 3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<std::string> lines; 3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::SplitString(data, '\n', &lines); 3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (size_t i = 0; i < lines.size(); ++i) { 3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (StartsWithASCII(lines[i], "#", false)) 3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue; 3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<std::string> fields; 3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::SplitString(lines[i], '|', &fields); 3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (fields.empty()) 3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue; // Blank line. 3575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CHECK_EQ(12u, fields.size()); 3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FormMap data; 3605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["NAME_FIRST"] = fields[0]; 3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["NAME_MIDDLE"] = fields[1]; 3625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["NAME_LAST"] = fields[2]; 3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["EMAIL_ADDRESS"] = fields[3]; 3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["COMPANY_NAME"] = fields[4]; 3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["ADDRESS_HOME_LINE1"] = fields[5]; 3665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["ADDRESS_HOME_LINE2"] = fields[6]; 3675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["ADDRESS_HOME_CITY"] = fields[7]; 3685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["ADDRESS_HOME_STATE"] = fields[8]; 3695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["ADDRESS_HOME_ZIP"] = fields[9]; 3705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["ADDRESS_HOME_COUNTRY"] = fields[10]; 3715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["PHONE_HOME_WHOLE_NUMBER"] = fields[11]; 3725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FillFormAndSubmit("duplicate_profiles_test.html", data); 3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return lines.size(); 3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void ExpectFieldValue(const std::string& field_name, 3795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& expected_value) { 3805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string value; 3812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(content::ExecuteScriptAndExtractString( 3822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser()->tab_strip_model()->GetActiveWebContents(), 3832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "window.domAutomationController.send(" 3842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) " document.getElementById('" + field_name + "').value);", 3852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) &value)); 3865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(expected_value, value); 3875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RenderViewHost* render_view_host() { 3902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return browser()->tab_strip_model()->GetActiveWebContents()-> 3912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetRenderViewHost(); 3925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SimulateURLFetch(bool success) { 3955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) net::TestURLFetcher* fetcher = url_fetcher_factory_.GetFetcherByID(0); 3965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(fetcher); 3975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) net::URLRequestStatus status; 3985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) status.set_status(success ? net::URLRequestStatus::SUCCESS : 3995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) net::URLRequestStatus::FAILED); 4005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string script = " var google = {};" 4025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "google.translate = (function() {" 4035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " return {" 4045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " TranslateService: function() {" 4055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " return {" 4065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " isAvailable : function() {" 4075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " return true;" 4085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " }," 4095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " restore : function() {" 4105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " return;" 4115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " }," 4125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " getDetectedLanguage : function() {" 4135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " return \"ja\";" 4145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " }," 4155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " translatePage : function(originalLang, targetLang," 4165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " onTranslateProgress) {" 4175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " document.getElementsByTagName(\"body\")[0].innerHTML = '" + 4185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string(kTestFormString) + 4195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " ';" 4205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " onTranslateProgress(100, true, false);" 4215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " }" 4225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " };" 4235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " }" 4245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " };" 4255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "})();"; 4265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fetcher->set_url(fetcher->GetOriginalURL()); 4285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fetcher->set_status(status); 4295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fetcher->set_response_code(success ? 200 : 500); 4305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fetcher->SetResponseString(script); 4315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fetcher->delegate()->OnURLFetchComplete(fetcher); 4325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void FocusFirstNameField() { 4355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LOG(WARNING) << "Clicking on the tab."; 4362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::SimulateMouseClick( 4372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser()->tab_strip_model()->GetActiveWebContents(), 4382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 0, 4395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebKit::WebMouseEvent::ButtonLeft); 4405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LOG(WARNING) << "Focusing the first name field."; 4425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool result = false; 4432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(content::ExecuteScriptAndExtractBool( 4442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) render_view_host(), 4452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "if (document.readyState === 'complete')" 4462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) " document.getElementById('firstname').focus();" 4472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "else" 4482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) " domAutomationController.send(false);", 4495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &result)); 4505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(result); 4515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void ExpectFilledTestForm() { 4542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ExpectFieldValue("firstname", "Milton"); 4552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ExpectFieldValue("lastname", "Waddams"); 4562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ExpectFieldValue("address1", "4120 Freidrich Lane"); 4572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ExpectFieldValue("address2", "Basement"); 4582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ExpectFieldValue("city", "Austin"); 4592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ExpectFieldValue("state", "TX"); 4602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ExpectFieldValue("zip", "78744"); 4612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ExpectFieldValue("country", "US"); 4622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ExpectFieldValue("phone", "5125551234"); 4635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void SendKeyToPageAndWait(ui::KeyboardCode key) { 4662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) test_delegate_.Reset(); 4672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::SimulateKeyPress( 4682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser()->tab_strip_model()->GetActiveWebContents(), 4692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) key, false, false, false, false); 4702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) test_delegate_.Wait(); 4712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 4722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 4732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void SendKeyToPopupAndWait(ui::KeyboardCode key) { 4742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // TODO(isherman): Remove this condition once the WebKit popup UI code is 4752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // removed. 4767d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) if (!external_delegate()) { 4772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // When testing the WebKit-based UI, route all keys to the page. 4782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SendKeyToPageAndWait(key); 4792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return; 4802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 4812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 4822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // When testing the native UI, route popup-targeted key presses via the 4832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // external delegate. 4842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::NativeWebKeyboardEvent event; 4852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) event.windowsKeyCode = key; 4862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) test_delegate_.Reset(); 4877d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) external_delegate()->keyboard_listener()->HandleKeyPressEvent(event); 4882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) test_delegate_.Wait(); 4895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void TryBasicFormFill() { 4925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FocusFirstNameField(); 4935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Start filling the first name field with "M" and wait for the popup to be 4955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // shown. 4965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LOG(WARNING) << "Typing 'M' to bring up the Autofill popup."; 4972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SendKeyToPageAndWait(ui::VKEY_M); 4985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Press the down arrow to select the suggestion and preview the autofilled 5005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // form. 5015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LOG(WARNING) << "Simulating down arrow press to initiate Autofill preview."; 5022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SendKeyToPopupAndWait(ui::VKEY_DOWN); 5035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The previewed values should not be accessible to JavaScript. 5052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ExpectFieldValue("firstname", "M"); 506c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ExpectFieldValue("lastname", std::string()); 507c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ExpectFieldValue("address1", std::string()); 508c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ExpectFieldValue("address2", std::string()); 509c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ExpectFieldValue("city", std::string()); 510c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ExpectFieldValue("state", std::string()); 511c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ExpectFieldValue("zip", std::string()); 512c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ExpectFieldValue("country", std::string()); 513c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ExpectFieldValue("phone", std::string()); 5145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TODO(isherman): It would be nice to test that the previewed values are 5155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // displayed: http://crbug.com/57220 5165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Press Enter to accept the autofill suggestions. 5185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LOG(WARNING) << "Simulating Return press to fill the form."; 5192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SendKeyToPopupAndWait(ui::VKEY_RETURN); 5205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The form should be filled. 5225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ExpectFilledTestForm(); 5235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 5245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TestAutofillExternalDelegate* external_delegate() { 5267d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) content::WebContents* web_contents = 5277d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) browser()->tab_strip_model()->GetActiveWebContents(); 5287d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) AutofillDriverImpl* autofill_driver = 5297d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) AutofillDriverImpl::FromWebContents(web_contents); 5307d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) return static_cast<TestAutofillExternalDelegate*>( 5317d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) autofill_driver->autofill_external_delegate()); 5322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 5332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) AutofillManagerTestDelegateImpl test_delegate_; 5352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 5375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) net::TestURLFetcherFactory url_fetcher_factory_; 5385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 5395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// http://crbug.com/150084 5415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_MACOSX) 5425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define MAYBE_BasicFormFill BasicFormFill 5435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 5445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define MAYBE_BasicFormFill DISABLED_BasicFormFill 5455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 5465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test that basic form fill is working. 5475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(AutofillTest, MAYBE_BasicFormFill) { 5485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CreateTestProfile(); 5495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Load the test page. 5515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(browser(), 5525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL(std::string(kDataURIPrefix) + kTestFormString))); 5535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Invoke Autofill. 5555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TryBasicFormFill(); 5565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 5575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// http://crbug.com/150084 5595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_MACOSX) 5605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define MAYBE_AutofillViaDownArrow AutofillViaDownArrow 5615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 5625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define MAYBE_AutofillViaDownArrow DISABLED_AutofillViaDownArrow 5635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 5645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test that form filling can be initiated by pressing the down arrow. 5655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(AutofillTest, MAYBE_AutofillViaDownArrow) { 5665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CreateTestProfile(); 5675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Load the test page. 5695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(browser(), 5705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL(std::string(kDataURIPrefix) + kTestFormString))); 5715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Focus a fillable field. 5735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FocusFirstNameField(); 5745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Press the down arrow to initiate Autofill and wait for the popup to be 5765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // shown. 5772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SendKeyToPageAndWait(ui::VKEY_DOWN); 5785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Press the down arrow to select the suggestion and preview the autofilled 5805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // form. 5812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SendKeyToPopupAndWait(ui::VKEY_DOWN); 5825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Press Enter to accept the autofill suggestions. 5842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SendKeyToPopupAndWait(ui::VKEY_RETURN); 5855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The form should be filled. 5875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ExpectFilledTestForm(); 5885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 5895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// http://crbug.com/150084 5915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_MACOSX) 5925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define MAYBE_OnChangeAfterAutofill OnChangeAfterAutofill 5935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 5945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define MAYBE_OnChangeAfterAutofill DISABLED_OnChangeAfterAutofill 5955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 5965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test that a JavaScript onchange event is fired after auto-filling a form. 5975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(AutofillTest, MAYBE_OnChangeAfterAutofill) { 5985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CreateTestProfile(); 5995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char* kOnChangeScript = 6015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<script>" 6025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "focused_fired = false;" 6035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "unfocused_fired = false;" 6045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "changed_select_fired = false;" 6055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "unchanged_select_fired = false;" 6065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "document.getElementById('firstname').onchange = function() {" 6075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " focused_fired = true;" 6085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "};" 6095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "document.getElementById('lastname').onchange = function() {" 6105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " unfocused_fired = true;" 6115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "};" 6125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "document.getElementById('state').onchange = function() {" 6135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " changed_select_fired = true;" 6145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "};" 6155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "document.getElementById('country').onchange = function() {" 6165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " unchanged_select_fired = true;" 6175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "};" 6185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "document.getElementById('country').value = 'US';" 6195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "</script>"; 6205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Load the test page. 6225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(browser(), 6235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL(std::string(kDataURIPrefix) + kTestFormString + kOnChangeScript))); 6245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Invoke Autofill. 6265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FocusFirstNameField(); 6275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Start filling the first name field with "M" and wait for the popup to be 6295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // shown. 6302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SendKeyToPageAndWait(ui::VKEY_M); 6315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Press the down arrow to select the suggestion and preview the autofilled 6335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // form. 6342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SendKeyToPopupAndWait(ui::VKEY_DOWN); 6355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Press Enter to accept the autofill suggestions. 6372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SendKeyToPopupAndWait(ui::VKEY_RETURN); 6385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The form should be filled. 6405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ExpectFilledTestForm(); 6415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The change event should have already fired for unfocused fields, both of 6435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // <input> and of <select> type. However, it should not yet have fired for the 6445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // focused field. 6455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool focused_fired = false; 6465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool unfocused_fired = false; 6475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool changed_select_fired = false; 6485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool unchanged_select_fired = false; 6492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(content::ExecuteScriptAndExtractBool( 6502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) render_view_host(), 6512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "domAutomationController.send(focused_fired);", 6522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) &focused_fired)); 6532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(content::ExecuteScriptAndExtractBool( 6542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) render_view_host(), 6552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "domAutomationController.send(unfocused_fired);", 6562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) &unfocused_fired)); 6572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(content::ExecuteScriptAndExtractBool( 6582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) render_view_host(), 6592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "domAutomationController.send(changed_select_fired);", 6605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &changed_select_fired)); 6612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(content::ExecuteScriptAndExtractBool( 6622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) render_view_host(), 6632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "domAutomationController.send(unchanged_select_fired);", 6645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &unchanged_select_fired)); 6655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(focused_fired); 6665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(unfocused_fired); 6675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(changed_select_fired); 6685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(unchanged_select_fired); 6695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Unfocus the first name field. Its change event should fire. 6712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(content::ExecuteScriptAndExtractBool( 6722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) render_view_host(), 6732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "document.getElementById('firstname').blur();" 6742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "domAutomationController.send(focused_fired);", &focused_fired)); 6755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(focused_fired); 6765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 6775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test that we can autofill forms distinguished only by their |id| attribute. 6795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// DISABLED: http://crbug.com/150084 6805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(AutofillTest, DISABLED_AutofillFormsDistinguishedById) { 6815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CreateTestProfile(); 6825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Load the test page. 6845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string kURL = 6855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string(kDataURIPrefix) + kTestFormString + 6865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<script>" 6875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "var mainForm = document.forms[0];" 6885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "mainForm.id = 'mainForm';" 6895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "var newForm = document.createElement('form');" 6905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "newForm.action = mainForm.action;" 6915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "newForm.method = mainForm.method;" 6925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "newForm.id = 'newForm';" 6935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "mainForm.parentNode.insertBefore(newForm, mainForm);" 6945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "</script>"; 6955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(browser(), GURL(kURL))); 6965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Invoke Autofill. 6985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TryBasicFormFill(); 6995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 7005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test that we properly autofill forms with repeated fields. 7025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// In the wild, the repeated fields are typically either email fields 7035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// (duplicated for "confirmation"); or variants that are hot-swapped via 7045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// JavaScript, with only one actually visible at any given time. 7055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// DISABLED: http://crbug.com/150084 7065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(AutofillTest, DISABLED_AutofillFormWithRepeatedField) { 7075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CreateTestProfile(); 7085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Load the test page. 7105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(browser(), 7115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL(std::string(kDataURIPrefix) + 7125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<form action=\"http://www.example.com/\" method=\"POST\">" 7135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<label for=\"firstname\">First name:</label>" 7145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <input type=\"text\" id=\"firstname\"" 7155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " onFocus=\"domAutomationController.send(true)\"><br>" 7165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<label for=\"lastname\">Last name:</label>" 7175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <input type=\"text\" id=\"lastname\"><br>" 7185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<label for=\"address1\">Address line 1:</label>" 7195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <input type=\"text\" id=\"address1\"><br>" 7205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<label for=\"address2\">Address line 2:</label>" 7215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <input type=\"text\" id=\"address2\"><br>" 7225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<label for=\"city\">City:</label>" 7235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <input type=\"text\" id=\"city\"><br>" 7245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<label for=\"state\">State:</label>" 7255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <select id=\"state\">" 7265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <option value=\"\" selected=\"yes\">--</option>" 7275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <option value=\"CA\">California</option>" 7285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <option value=\"TX\">Texas</option>" 7295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " </select><br>" 7305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<label for=\"state_freeform\" style=\"display:none\">State:</label>" 7315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <input type=\"text\" id=\"state_freeform\"" 7325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " style=\"display:none\"><br>" 7335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<label for=\"zip\">ZIP code:</label>" 7345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <input type=\"text\" id=\"zip\"><br>" 7355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<label for=\"country\">Country:</label>" 7365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <select id=\"country\">" 7375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <option value=\"\" selected=\"yes\">--</option>" 7385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <option value=\"CA\">Canada</option>" 7395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <option value=\"US\">United States</option>" 7405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " </select><br>" 7415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<label for=\"phone\">Phone number:</label>" 7425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <input type=\"text\" id=\"phone\"><br>" 7435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "</form>"))); 7445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Invoke Autofill. 7465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TryBasicFormFill(); 747c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ExpectFieldValue("state_freeform", std::string()); 7485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 7495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// http://crbug.com/150084 7512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(OS_MACOSX) 7525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define MAYBE_AutofillFormWithNonAutofillableField \ 7535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutofillFormWithNonAutofillableField 7545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 7555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define MAYBE_AutofillFormWithNonAutofillableField \ 7565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISABLED_AutofillFormWithNonAutofillableField 7575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 7585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test that we properly autofill forms with non-autofillable fields. 7605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(AutofillTest, 7615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MAYBE_AutofillFormWithNonAutofillableField) { 7625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CreateTestProfile(); 7635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Load the test page. 7655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(browser(), 7665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL(std::string(kDataURIPrefix) + 7675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<form action=\"http://www.example.com/\" method=\"POST\">" 7685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<label for=\"firstname\">First name:</label>" 7695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <input type=\"text\" id=\"firstname\"" 7705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " onFocus=\"domAutomationController.send(true)\"><br>" 7715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<label for=\"middlename\">Middle name:</label>" 7725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <input type=\"text\" id=\"middlename\" autocomplete=\"off\" /><br>" 7735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<label for=\"lastname\">Last name:</label>" 7745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <input type=\"text\" id=\"lastname\"><br>" 7755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<label for=\"address1\">Address line 1:</label>" 7765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <input type=\"text\" id=\"address1\"><br>" 7775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<label for=\"address2\">Address line 2:</label>" 7785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <input type=\"text\" id=\"address2\"><br>" 7795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<label for=\"city\">City:</label>" 7805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <input type=\"text\" id=\"city\"><br>" 7815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<label for=\"state\">State:</label>" 7825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <select id=\"state\">" 7835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <option value=\"\" selected=\"yes\">--</option>" 7845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <option value=\"CA\">California</option>" 7855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <option value=\"TX\">Texas</option>" 7865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " </select><br>" 7875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<label for=\"zip\">ZIP code:</label>" 7885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <input type=\"text\" id=\"zip\"><br>" 7895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<label for=\"country\">Country:</label>" 7905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <select id=\"country\">" 7915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <option value=\"\" selected=\"yes\">--</option>" 7925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <option value=\"CA\">Canada</option>" 7935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <option value=\"US\">United States</option>" 7945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " </select><br>" 7955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<label for=\"phone\">Phone number:</label>" 7965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <input type=\"text\" id=\"phone\"><br>" 7975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "</form>"))); 7985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Invoke Autofill. 8005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TryBasicFormFill(); 8015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 8025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test that we can Autofill dynamically generated forms. 8045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// DISABLED: http://crbug.com/150084 8055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(AutofillTest, DISABLED_DynamicFormFill) { 8065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CreateTestProfile(); 8075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Load the test page. 8095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(browser(), 8105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL(std::string(kDataURIPrefix) + 8115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<form id=\"form\" action=\"http://www.example.com/\"" 8125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " method=\"POST\"></form>" 8135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<script>" 8145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "function AddElement(name, label) {" 8155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " var form = document.getElementById('form');" 8165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "" 8175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " var label_text = document.createTextNode(label);" 8185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " var label_element = document.createElement('label');" 8195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " label_element.setAttribute('for', name);" 8205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " label_element.appendChild(label_text);" 8215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " form.appendChild(label_element);" 8225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "" 8235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " if (name === 'state' || name === 'country') {" 8245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " var select_element = document.createElement('select');" 8255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " select_element.setAttribute('id', name);" 8265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " select_element.setAttribute('name', name);" 8275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "" 8285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " /* Add an empty selected option. */" 8295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " var default_option = new Option('--', '', true);" 8305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " select_element.appendChild(default_option);" 8315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "" 8325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " /* Add the other options. */" 8335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " if (name == 'state') {" 8345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " var option1 = new Option('California', 'CA');" 8355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " select_element.appendChild(option1);" 8365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " var option2 = new Option('Texas', 'TX');" 8375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " select_element.appendChild(option2);" 8385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " } else {" 8395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " var option1 = new Option('Canada', 'CA');" 8405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " select_element.appendChild(option1);" 8415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " var option2 = new Option('United States', 'US');" 8425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " select_element.appendChild(option2);" 8435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " }" 8445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "" 8455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " form.appendChild(select_element);" 8465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " } else {" 8475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " var input_element = document.createElement('input');" 8485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " input_element.setAttribute('id', name);" 8495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " input_element.setAttribute('name', name);" 8505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "" 8515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " /* Add the onFocus listener to the 'firstname' field. */" 8525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " if (name === 'firstname') {" 8535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " input_element.setAttribute(" 8545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " 'onFocus', 'domAutomationController.send(true)');" 8555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " }" 8565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "" 8575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " form.appendChild(input_element);" 8585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " }" 8595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "" 8605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " form.appendChild(document.createElement('br'));" 8615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "};" 8625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "" 8635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "function BuildForm() {" 8645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " var elements = [" 8655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " ['firstname', 'First name:']," 8665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " ['lastname', 'Last name:']," 8675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " ['address1', 'Address line 1:']," 8685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " ['address2', 'Address line 2:']," 8695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " ['city', 'City:']," 8705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " ['state', 'State:']," 8715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " ['zip', 'ZIP code:']," 8725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " ['country', 'Country:']," 8735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " ['phone', 'Phone number:']," 8745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " ];" 8755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "" 8765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " for (var i = 0; i < elements.length; i++) {" 8775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " var name = elements[i][0];" 8785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " var label = elements[i][1];" 8795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " AddElement(name, label);" 8805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " }" 8815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "};" 8825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "</script>"))); 8835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Dynamically construct the form. 8852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(content::ExecuteScript(render_view_host(), "BuildForm();")); 8865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Invoke Autofill. 8885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TryBasicFormFill(); 8895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 8905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test that form filling works after reloading the current page. 8925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This test brought to you by http://crbug.com/69204 8935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_MACOSX) 8945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Now flaky on everything but mac. 8955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// http://crbug.com/150084 8965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define MAYBE_AutofillAfterReload AutofillAfterReload 8975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 8985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define MAYBE_AutofillAfterReload DISABLED_AutofillAfterReload 8995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 9005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(AutofillTest, MAYBE_AutofillAfterReload) { 9015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LOG(WARNING) << "Creating test profile."; 9025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CreateTestProfile(); 9035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Load the test page. 9055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LOG(WARNING) << "Bringing browser window to front."; 9065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LOG(WARNING) << "Navigating to URL."; 9075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(browser(), 9085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL(std::string(kDataURIPrefix) + kTestFormString))); 9095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Reload the page. 9115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LOG(WARNING) << "Reloading the page."; 9122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); 9135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tab->GetController().Reload(false); 9145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::WaitForLoadStop(tab); 9155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Invoke Autofill. 9175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LOG(WARNING) << "Trying to fill the form."; 9185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TryBasicFormFill(); 9195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// DISABLED: http://crbug.com/150084 9225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(AutofillTest, DISABLED_AutofillAfterTranslate) { 9235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CreateTestProfile(); 9245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url(std::string(kDataURIPrefix) + 9265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<form action=\"http://www.example.com/\" method=\"POST\">" 9275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<label for=\"fn\">なまえ</label>" 9285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <input type=\"text\" id=\"fn\"" 9295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " onFocus=\"domAutomationController.send(true)\"" 9305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "><br>" 9315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<label for=\"ln\">みょうじ</label>" 9325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <input type=\"text\" id=\"ln\"><br>" 9335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<label for=\"a1\">Address line 1:</label>" 9345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <input type=\"text\" id=\"a1\"><br>" 9355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<label for=\"a2\">Address line 2:</label>" 9365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <input type=\"text\" id=\"a2\"><br>" 9375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<label for=\"ci\">City:</label>" 9385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <input type=\"text\" id=\"ci\"><br>" 9395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<label for=\"st\">State:</label>" 9405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <select id=\"st\">" 9415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <option value=\"\" selected=\"yes\">--</option>" 9425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <option value=\"CA\">California</option>" 9435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <option value=\"TX\">Texas</option>" 9445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " </select><br>" 9455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<label for=\"z\">ZIP code:</label>" 9465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <input type=\"text\" id=\"z\"><br>" 9475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<label for=\"co\">Country:</label>" 9485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <select id=\"co\">" 9495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <option value=\"\" selected=\"yes\">--</option>" 9505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <option value=\"CA\">Canada</option>" 9515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <option value=\"US\">United States</option>" 9525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " </select><br>" 9535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<label for=\"ph\">Phone number:</label>" 9545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " <input type=\"text\" id=\"ph\"><br>" 9555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "</form>"); 9565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(browser(), url)); 9575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Get translation bar. 95990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) LanguageDetectionDetails details; 96090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) details.adopted_language = "ja"; 9615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RenderViewHostTester::TestOnMessageReceived( 9625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) render_view_host(), 96390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) ChromeViewHostMsg_TranslateLanguageDetermined(0, details, true)); 9642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TranslateInfoBarDelegate* infobar = InfoBarService::FromWebContents( 965c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) browser()->tab_strip_model()->GetActiveWebContents())->infobar_at(0)-> 966c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) AsTranslateInfoBarDelegate(); 9675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(infobar != NULL); 9692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(TranslateInfoBarDelegate::BEFORE_TRANSLATE, 9702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) infobar->infobar_type()); 9715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Simulate translation button press. 9735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) infobar->Translate(); 9745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Simulate the translate script being retrieved. 9765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Pass fake google.translate lib as the translate script. 9775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SimulateURLFetch(true); 9785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::WindowedNotificationObserver translation_observer( 9805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome::NOTIFICATION_PAGE_TRANSLATED, 9815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::NotificationService::AllSources()); 9825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Simulate translation to kick onTranslateElementLoad. 9845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // But right now, the call stucks here. 9855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Once click the text field, it starts again. 9862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(content::ExecuteScript( 9872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) render_view_host(), "cr.googleTranslate.onTranslateElementLoad();")); 9885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Simulate the render notifying the translation has been done. 9905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) translation_observer.Wait(); 9915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TryBasicFormFill(); 9935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test filling profiles with unicode strings and crazy characters. 9965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TODO(isherman): rewrite as unit test under PersonalDataManagerTest. 9975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(AutofillTest, FillProfileCrazyCharacters) { 9985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<AutofillProfile> profiles; 9995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutofillProfile profile1; 10005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile1.SetRawInfo(NAME_FIRST, 10015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WideToUTF16(L"\u0623\u0648\u0628\u0627\u0645\u0627 " 10025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u064a\u0639\u062a\u0630\u0631 " 10035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u0647\u0627\u062a\u0641\u064a\u0627 " 10045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u0644\u0645\u0648\u0638\u0641\u0629 " 10055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u0633\u0648\u062f\u0627\u0621 " 10065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u0627\u0633\u062a\u0642\u0627\u0644\u062a " 10075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u0628\u0633\u0628\u0628 " 10085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u062a\u0635\u0631\u064a\u062d\u0627\u062a " 10095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u0645\u062c\u062a\u0632\u0623\u0629")); 10105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile1.SetRawInfo(NAME_MIDDLE, WideToUTF16(L"BANK\xcBERF\xc4LLE")); 10115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile1.SetRawInfo(EMAIL_ADDRESS, 10125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WideToUTF16(L"\uacbd\uc81c \ub274\uc2a4 " 10135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\ub354\ubcf4\uae30@google.com")); 10145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile1.SetRawInfo(ADDRESS_HOME_LINE1, 10155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WideToUTF16(L"\uad6d\uc815\uc6d0\xb7\uac80\ucc30, " 10165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\ub178\ubb34\ud604\uc815\ubd80 " 10175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\ub300\ubd81\uc811\ucd09 \ub2f4\ub2f9 " 10185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\uc778\uc0ac\ub4e4 \uc870\uc0ac")); 10195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile1.SetRawInfo(ADDRESS_HOME_CITY, 10205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WideToUTF16(L"\u653f\u5e9c\u4e0d\u6392\u9664\u7acb\u6cd5" 10215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u898f\u7ba1\u5c0e\u904a")); 10225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile1.SetRawInfo(ADDRESS_HOME_ZIP, WideToUTF16(L"YOHO_54676")); 10235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile1.SetRawInfo(PHONE_HOME_WHOLE_NUMBER, WideToUTF16(L"861088828000")); 10242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) profile1.SetInfo(ADDRESS_HOME_COUNTRY, WideToUTF16(L"India"), "en-US"); 10255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profiles.push_back(profile1); 10265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutofillProfile profile2; 10285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile2.SetRawInfo(NAME_FIRST, 10295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WideToUTF16(L"\u4e0a\u6d77\u5e02\u91d1\u5c71\u533a " 10305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u677e\u9690\u9547\u4ead\u67ab\u516c" 10315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u8def1915\u53f7")); 10325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile2.SetRawInfo(NAME_LAST, WideToUTF16(L"aguantó")); 10335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile2.SetRawInfo(ADDRESS_HOME_ZIP, WideToUTF16(L"HOME 94043")); 10345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profiles.push_back(profile2); 10355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutofillProfile profile3; 10375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile3.SetRawInfo(EMAIL_ADDRESS, WideToUTF16(L"sue@example.com")); 10385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile3.SetRawInfo(COMPANY_NAME, WideToUTF16(L"Company X")); 10395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profiles.push_back(profile3); 10405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutofillProfile profile4; 10425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile4.SetRawInfo(NAME_FIRST, WideToUTF16(L"Joe 3254")); 10435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile4.SetRawInfo(NAME_LAST, WideToUTF16(L"\u8bb0\u8d262\u5e74\u591a")); 10445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile4.SetRawInfo(ADDRESS_HOME_ZIP, 10455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WideToUTF16(L"\uff08\u90ae\u7f16\uff1a201504\uff09")); 10465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile4.SetRawInfo(EMAIL_ADDRESS, WideToUTF16(L"télévision@example.com")); 10475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile4.SetRawInfo(COMPANY_NAME, 10485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WideToUTF16(L"\u0907\u0932\u0947\u0915\u093f\u091f\u094d" 10495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u0930\u0928\u093f\u0915\u094d\u0938, " 10505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u0905\u092a\u094b\u0932\u094b " 10515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u091f\u093e\u092f\u0930\u094d\u0938 " 10525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u0906\u0926\u093f")); 10535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profiles.push_back(profile4); 10545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutofillProfile profile5; 10565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile5.SetRawInfo(NAME_FIRST, WideToUTF16(L"Larry")); 10575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile5.SetRawInfo(NAME_LAST, 10585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WideToUTF16(L"\u0938\u094d\u091f\u093e\u0902\u092a " 10595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u0921\u094d\u092f\u0942\u091f\u0940")); 10605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile5.SetRawInfo(ADDRESS_HOME_ZIP, 10615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WideToUTF16(L"111111111111110000GOOGLE")); 10625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile5.SetRawInfo(EMAIL_ADDRESS, WideToUTF16(L"page@000000.com")); 10635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile5.SetRawInfo(COMPANY_NAME, WideToUTF16(L"Google")); 10645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profiles.push_back(profile5); 10655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutofillProfile profile6; 10675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile6.SetRawInfo(NAME_FIRST, 10685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WideToUTF16(L"\u4e0a\u6d77\u5e02\u91d1\u5c71\u533a " 10695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u677e\u9690\u9547\u4ead\u67ab\u516c" 10705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u8def1915\u53f7")); 10715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile6.SetRawInfo(NAME_LAST, 10725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WideToUTF16(L"\u0646\u062c\u0627\u0645\u064a\u0646\u0627 " 10735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u062f\u0639\u0645\u0647\u0627 " 10745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u0644\u0644\u0631\u0626\u064a\u0633 " 10755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u0627\u0644\u0633\u0648\u062f\u0627\u0646" 10765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u064a \u0639\u0645\u0631 " 10775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u0627\u0644\u0628\u0634\u064a\u0631")); 10785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile6.SetRawInfo(ADDRESS_HOME_ZIP, WideToUTF16(L"HOME 94043")); 10795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profiles.push_back(profile6); 10805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutofillProfile profile7; 10825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile7.SetRawInfo(NAME_FIRST, WideToUTF16(L"&$%$$$ TESTO *&*&^&^& MOKO")); 10835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile7.SetRawInfo(NAME_MIDDLE, WideToUTF16(L"WOHOOOO$$$$$$$$****")); 10845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile7.SetRawInfo(EMAIL_ADDRESS, WideToUTF16(L"yuvu@example.com")); 10855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile7.SetRawInfo(ADDRESS_HOME_LINE1, 10865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WideToUTF16(L"34544, anderson ST.(120230)")); 10875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile7.SetRawInfo(ADDRESS_HOME_CITY, WideToUTF16(L"Sunnyvale")); 10885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile7.SetRawInfo(ADDRESS_HOME_STATE, WideToUTF16(L"CA")); 10895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile7.SetRawInfo(ADDRESS_HOME_ZIP, WideToUTF16(L"94086")); 10905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile7.SetRawInfo(PHONE_HOME_WHOLE_NUMBER, WideToUTF16(L"15466784565")); 10912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) profile7.SetInfo(ADDRESS_HOME_COUNTRY, WideToUTF16(L"United States"), 10922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "en-US"); 10935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profiles.push_back(profile7); 10945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetProfiles(&profiles); 10962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(profiles.size(), personal_data_manager()->GetProfiles().size()); 10975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (size_t i = 0; i < profiles.size(); ++i) 10982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(profiles[i], *personal_data_manager()->GetProfiles()[i]); 10995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<CreditCard> cards; 11015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CreditCard card1; 11025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) card1.SetRawInfo(CREDIT_CARD_NAME, 11035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WideToUTF16(L"\u751f\u6d3b\u5f88\u6709\u89c4\u5f8b " 11045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u4ee5\u73a9\u4e3a\u4e3b")); 11055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) card1.SetRawInfo(CREDIT_CARD_NUMBER, WideToUTF16(L"6011111111111117")); 11065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) card1.SetRawInfo(CREDIT_CARD_EXP_MONTH, WideToUTF16(L"12")); 11075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) card1.SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, WideToUTF16(L"2011")); 11085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cards.push_back(card1); 11095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CreditCard card2; 11115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) card2.SetRawInfo(CREDIT_CARD_NAME, WideToUTF16(L"John Williams")); 11125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) card2.SetRawInfo(CREDIT_CARD_NUMBER, WideToUTF16(L"WokoAwesome12345")); 11135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) card2.SetRawInfo(CREDIT_CARD_EXP_MONTH, WideToUTF16(L"10")); 11145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) card2.SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, WideToUTF16(L"2015")); 11155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cards.push_back(card2); 11165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CreditCard card3; 11185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) card3.SetRawInfo(CREDIT_CARD_NAME, 11195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WideToUTF16(L"\u0623\u062d\u0645\u062f\u064a " 11205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u0646\u062c\u0627\u062f " 11215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u0644\u0645\u062d\u0627\u0648\u0644\u0647 " 11225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u0627\u063a\u062a\u064a\u0627\u0644 " 11235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u0641\u064a \u0645\u062f\u064a\u0646\u0629 " 11245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u0647\u0645\u062f\u0627\u0646 ")); 11255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) card3.SetRawInfo(CREDIT_CARD_NUMBER, 11265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WideToUTF16(L"\u092a\u0941\u0928\u0930\u094d\u091c\u0940" 11275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u0935\u093f\u0924 \u0939\u094b\u0917\u093e " 11285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u0928\u093e\u0932\u0902\u0926\u093e")); 11295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) card3.SetRawInfo(CREDIT_CARD_EXP_MONTH, WideToUTF16(L"10")); 11305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) card3.SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, WideToUTF16(L"2015")); 11315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cards.push_back(card3); 11325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CreditCard card4; 11345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) card4.SetRawInfo(CREDIT_CARD_NAME, 11355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WideToUTF16(L"\u039d\u03ad\u03b5\u03c2 " 11365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u03c3\u03c5\u03b3\u03c7\u03c9\u03bd\u03b5" 11375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u03cd\u03c3\u03b5\u03b9\u03c2 " 11385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u03ba\u03b1\u03b9 " 11395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u03ba\u03b1\u03c4\u03b1\u03c1\u03b3\u03ae" 11405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u03c3\u03b5\u03b9\u03c2")); 11415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) card4.SetRawInfo(CREDIT_CARD_NUMBER, WideToUTF16(L"00000000000000000000000")); 11425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) card4.SetRawInfo(CREDIT_CARD_EXP_MONTH, WideToUTF16(L"01")); 11435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) card4.SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, WideToUTF16(L"2016")); 11445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cards.push_back(card4); 11455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetCards(&cards); 1147c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_EQ(cards.size(), personal_data_manager()->GetCreditCards().size()); 11485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (size_t i = 0; i < cards.size(); ++i) 1149c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_EQ(cards[i], *personal_data_manager()->GetCreditCards()[i]); 11505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 11515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test filling in invalid values for profiles are saved as-is. Phone 11535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// information entered into the prefs UI is not validated or rejected except for 11545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// duplicates. 11555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TODO(isherman): rewrite as WebUI test? 11565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(AutofillTest, Invalid) { 11575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // First try profiles with invalid ZIP input. 11585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutofillProfile without_invalid; 11595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) without_invalid.SetRawInfo(NAME_FIRST, ASCIIToUTF16("Will")); 11605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) without_invalid.SetRawInfo(ADDRESS_HOME_CITY, ASCIIToUTF16("Sunnyvale")); 11615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) without_invalid.SetRawInfo(ADDRESS_HOME_STATE, ASCIIToUTF16("CA")); 11625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) without_invalid.SetRawInfo(ADDRESS_HOME_ZIP, ASCIIToUTF16("my_zip")); 11632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) without_invalid.SetInfo(ADDRESS_HOME_COUNTRY, ASCIIToUTF16("United States"), 11642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "en-US"); 11655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutofillProfile with_invalid = without_invalid; 11675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) with_invalid.SetRawInfo(PHONE_HOME_WHOLE_NUMBER, 11685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASCIIToUTF16("Invalid_Phone_Number")); 11695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetProfile(with_invalid); 11705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(1u, personal_data_manager()->GetProfiles().size()); 11722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) AutofillProfile profile = *personal_data_manager()->GetProfiles()[0]; 11735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_NE(without_invalid.GetRawInfo(PHONE_HOME_WHOLE_NUMBER), 11745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile.GetRawInfo(PHONE_HOME_WHOLE_NUMBER)); 11755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 11765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test invalid credit card numbers typed in prefs should be saved as-is. 11785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TODO(isherman): rewrite as WebUI test? 11795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(AutofillTest, PrefsStringSavedAsIs) { 11805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CreditCard card; 11815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) card.SetRawInfo(CREDIT_CARD_NUMBER, ASCIIToUTF16("Not_0123-5Checked")); 11825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetCard(card); 11835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1184c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_EQ(1u, personal_data_manager()->GetCreditCards().size()); 1185c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_EQ(card, *personal_data_manager()->GetCreditCards()[0]); 11865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 11875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test credit card info with an invalid number is not aggregated. 11895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// When filling out a form with an invalid credit card number (one that does not 11905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// pass the Luhn test) the credit card info should not be saved into Autofill 11915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// preferences. 11925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(AutofillTest, InvalidCreditCardNumberIsNotAggregated) { 11935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(test_server()->Start()); 11945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string card("4408 0412 3456 7890"); 11952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_FALSE(autofill::IsValidCreditCardNumber(ASCIIToUTF16(card))); 11965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SubmitCreditCard("Bob Smith", card.c_str(), "12", "2014"); 11975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(0u, 11985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InfoBarService::FromWebContents( 11992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser()->tab_strip_model()->GetActiveWebContents())-> 1200c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) infobar_count()); 12015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 12025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test whitespaces and separator chars are stripped for valid CC numbers. 12045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The credit card numbers used in this test pass the Luhn test. For reference: 12055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// http://www.merriampark.com/anatomycc.htm 12065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(AutofillTest, 12075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WhitespacesAndSeparatorCharsStrippedForValidCCNums) { 12085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(test_server()->Start()); 12095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SubmitCreditCard("Bob Smith", "4408 0412 3456 7893", "12", "2014"); 12105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SubmitCreditCard("Jane Doe", "4417-1234-5678-9113", "10", "2013"); 12115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1212c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_EQ(2u, personal_data_manager()->GetCreditCards().size()); 1213c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) string16 cc1 = personal_data_manager()->GetCreditCards()[0]->GetRawInfo( 12145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CREDIT_CARD_NUMBER); 12152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(autofill::IsValidCreditCardNumber(cc1)); 1216c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) string16 cc2 = personal_data_manager()->GetCreditCards()[1]->GetRawInfo( 12175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CREDIT_CARD_NUMBER); 12182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(autofill::IsValidCreditCardNumber(cc2)); 12195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 12205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test that Autofill aggregates a minimum valid profile. 12225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The minimum required address fields must be specified: First Name, Last Name, 12235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Address Line 1, City, Zip Code, and State. 12245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(AutofillTest, AggregatesMinValidProfile) { 12255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(test_server()->Start()); 12265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FormMap data; 12275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["NAME_FIRST"] = "Bob"; 12285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["NAME_LAST"] = "Smith"; 12295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["ADDRESS_HOME_LINE1"] = "1234 H St."; 12305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["ADDRESS_HOME_CITY"] = "Mountain View"; 12315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["ADDRESS_HOME_STATE"] = "CA"; 12325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["ADDRESS_HOME_ZIP"] = "94043"; 12335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FillFormAndSubmit("duplicate_profiles_test.html", data); 12345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(1u, personal_data_manager()->GetProfiles().size()); 12365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 12375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Autofill does not aggregate profiles with no address info. 12395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The minimum required address fields must be specified: First Name, Last Name, 12405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Address Line 1, City, Zip Code, and State. 12415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(AutofillTest, ProfilesNotAggregatedWithNoAddress) { 12425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(test_server()->Start()); 12435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FormMap data; 12445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["NAME_FIRST"] = "Bob"; 12455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["NAME_LAST"] = "Smith"; 12465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["EMAIL_ADDRESS"] = "bsmith@example.com"; 12475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["COMPANY_NAME"] = "Mountain View"; 12485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["ADDRESS_HOME_CITY"] = "Mountain View"; 12495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["PHONE_HOME_WHOLE_NUMBER"] = "650-555-4567"; 12505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FillFormAndSubmit("duplicate_profiles_test.html", data); 12515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(personal_data_manager()->GetProfiles().empty()); 12535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 12545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Autofill does not aggregate profiles with an invalid email. 12565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(AutofillTest, ProfilesNotAggregatedWithInvalidEmail) { 12575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(test_server()->Start()); 12585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FormMap data; 12595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["NAME_FIRST"] = "Bob"; 12605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["NAME_LAST"] = "Smith"; 12615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["EMAIL_ADDRESS"] = "garbage"; 12625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["ADDRESS_HOME_LINE1"] = "1234 H St."; 12635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["ADDRESS_HOME_CITY"] = "San Jose"; 12645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["ADDRESS_HOME_STATE"] = "CA"; 12655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["ADDRESS_HOME_ZIP"] = "95110"; 12665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["COMPANY_NAME"] = "Company X"; 12675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["PHONE_HOME_WHOLE_NUMBER"] = "408-871-4567"; 12685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FillFormAndSubmit("duplicate_profiles_test.html", data); 12695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(personal_data_manager()->GetProfiles().empty()); 12715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 12725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// http://crbug.com/150084 12745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_MACOSX) 12755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define MAYBE_ComparePhoneNumbers ComparePhoneNumbers 12765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 12775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define MAYBE_ComparePhoneNumbers DISABLED_ComparePhoneNumbers 12785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 12795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test phone fields parse correctly from a given profile. 12805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The high level key presses execute the following: Select the first text 12815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// field, invoke the autofill popup list, select the first profile within the 12825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// list, and commit to the profile to populate the form. 12835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(AutofillTest, MAYBE_ComparePhoneNumbers) { 12845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(test_server()->Start()); 12855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutofillProfile profile; 12875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile.SetRawInfo(NAME_FIRST, ASCIIToUTF16("Bob")); 12885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile.SetRawInfo(NAME_LAST, ASCIIToUTF16("Smith")); 12895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile.SetRawInfo(ADDRESS_HOME_LINE1, ASCIIToUTF16("1234 H St.")); 12905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile.SetRawInfo(ADDRESS_HOME_CITY, ASCIIToUTF16("San Jose")); 12915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile.SetRawInfo(ADDRESS_HOME_STATE, ASCIIToUTF16("CA")); 12925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile.SetRawInfo(ADDRESS_HOME_ZIP, ASCIIToUTF16("95110")); 12935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile.SetRawInfo(PHONE_HOME_WHOLE_NUMBER, ASCIIToUTF16("1-408-555-4567")); 12945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetProfile(profile); 12955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = test_server()->GetURL("files/autofill/form_phones.html"); 12975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui_test_utils::NavigateToURL(browser(), url); 12985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PopulateForm("NAME_FIRST"); 12995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ExpectFieldValue("NAME_FIRST", "Bob"); 13012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ExpectFieldValue("NAME_LAST", "Smith"); 13022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ExpectFieldValue("ADDRESS_HOME_LINE1", "1234 H St."); 13032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ExpectFieldValue("ADDRESS_HOME_CITY", "San Jose"); 13042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ExpectFieldValue("ADDRESS_HOME_STATE", "CA"); 13052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ExpectFieldValue("ADDRESS_HOME_ZIP", "95110"); 13062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ExpectFieldValue("PHONE_HOME_WHOLE_NUMBER", "14085554567"); 13072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ExpectFieldValue("PHONE_HOME_CITY_CODE-1", "408"); 13082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ExpectFieldValue("PHONE_HOME_CITY_CODE-2", "408"); 13092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ExpectFieldValue("PHONE_HOME_NUMBER", "5554567"); 13102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ExpectFieldValue("PHONE_HOME_NUMBER_3-1", "555"); 13112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ExpectFieldValue("PHONE_HOME_NUMBER_3-2", "555"); 13122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ExpectFieldValue("PHONE_HOME_NUMBER_4-1", "4567"); 13132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ExpectFieldValue("PHONE_HOME_NUMBER_4-2", "4567"); 1314c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ExpectFieldValue("PHONE_HOME_EXT-1", std::string()); 1315c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ExpectFieldValue("PHONE_HOME_EXT-2", std::string()); 13162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ExpectFieldValue("PHONE_HOME_COUNTRY_CODE-1", "1"); 13175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 13185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test profile is saved if phone number is valid in selected country. 13205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The data file contains two profiles with valid phone numbers and two 13215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// profiles with invalid phone numbers from their respective country. 13225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// DISABLED: http://crbug.com/150084 13235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(AutofillTest, 13245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISABLED_ProfileSavedWithValidCountryPhone) { 13255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(test_server()->Start()); 13265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<FormMap> profiles; 13275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FormMap data1; 13295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data1["NAME_FIRST"] = "Bob"; 13305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data1["NAME_LAST"] = "Smith"; 13315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data1["ADDRESS_HOME_LINE1"] = "123 Cherry Ave"; 13325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data1["ADDRESS_HOME_CITY"] = "Mountain View"; 13335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data1["ADDRESS_HOME_STATE"] = "CA"; 13345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data1["ADDRESS_HOME_ZIP"] = "94043"; 13355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data1["ADDRESS_HOME_COUNTRY"] = "United States"; 13365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data1["PHONE_HOME_WHOLE_NUMBER"] = "408-871-4567"; 13375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profiles.push_back(data1); 13385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FormMap data2; 13405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data2["NAME_FIRST"] = "John"; 13415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data2["NAME_LAST"] = "Doe"; 13425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data2["ADDRESS_HOME_LINE1"] = "987 H St"; 13435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data2["ADDRESS_HOME_CITY"] = "San Jose"; 13445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data2["ADDRESS_HOME_STATE"] = "CA"; 13455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data2["ADDRESS_HOME_ZIP"] = "95510"; 13465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data2["ADDRESS_HOME_COUNTRY"] = "United States"; 13475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data2["PHONE_HOME_WHOLE_NUMBER"] = "408-123-456"; 13485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profiles.push_back(data2); 13495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FormMap data3; 13515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data3["NAME_FIRST"] = "Jane"; 13525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data3["NAME_LAST"] = "Doe"; 13535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data3["ADDRESS_HOME_LINE1"] = "1523 Garcia St"; 13545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data3["ADDRESS_HOME_CITY"] = "Mountain View"; 13555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data3["ADDRESS_HOME_STATE"] = "CA"; 13565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data3["ADDRESS_HOME_ZIP"] = "94043"; 13575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data3["ADDRESS_HOME_COUNTRY"] = "Germany"; 13585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data3["PHONE_HOME_WHOLE_NUMBER"] = "+49 40-80-81-79-000"; 13595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profiles.push_back(data3); 13605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FormMap data4; 13625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data4["NAME_FIRST"] = "Bonnie"; 13635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data4["NAME_LAST"] = "Smith"; 13645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data4["ADDRESS_HOME_LINE1"] = "6723 Roadway Rd"; 13655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data4["ADDRESS_HOME_CITY"] = "San Jose"; 13665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data4["ADDRESS_HOME_STATE"] = "CA"; 13675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data4["ADDRESS_HOME_ZIP"] = "95510"; 13685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data4["ADDRESS_HOME_COUNTRY"] = "Germany"; 13695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data4["PHONE_HOME_WHOLE_NUMBER"] = "+21 08450 777 777"; 13705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profiles.push_back(data4); 13715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (size_t i = 0; i < profiles.size(); ++i) 13735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FillFormAndSubmit("autofill_test_form.html", profiles[i]); 13745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(2u, personal_data_manager()->GetProfiles().size()); 13765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(ASCIIToUTF16("(408) 871-4567"), 13772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) personal_data_manager()->GetProfiles()[0]->GetRawInfo( 13785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PHONE_HOME_WHOLE_NUMBER)); 13795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(ASCIIToUTF16("+49 40/808179000"), 13802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) personal_data_manager()->GetProfiles()[1]->GetRawInfo( 13815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PHONE_HOME_WHOLE_NUMBER)); 13825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 13835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Autofill appends country codes to aggregated phone numbers. 13855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The country code is added for the following case: 13865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The phone number contains the correct national number size and 13875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// is a valid format. 13885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(AutofillTest, AppendCountryCodeForAggregatedPhones) { 13895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(test_server()->Start()); 13905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FormMap data; 13915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["NAME_FIRST"] = "Bob"; 13925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["NAME_LAST"] = "Smith"; 13935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["ADDRESS_HOME_LINE1"] = "1234 H St."; 13945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["ADDRESS_HOME_CITY"] = "San Jose"; 13955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["ADDRESS_HOME_STATE"] = "CA"; 13965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["ADDRESS_HOME_ZIP"] = "95110"; 13975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["ADDRESS_HOME_COUNTRY"] = "Germany"; 13985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["PHONE_HOME_WHOLE_NUMBER"] = "(08) 450 777-777"; 13995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FillFormAndSubmit("autofill_test_form.html", data); 14005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(1u, personal_data_manager()->GetProfiles().size()); 14022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) string16 phone = personal_data_manager()->GetProfiles()[0]->GetRawInfo( 14035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PHONE_HOME_WHOLE_NUMBER); 14045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(StartsWith(phone, ASCIIToUTF16("+49"), true)); 14055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 14065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test CC info not offered to be saved when autocomplete=off for CC field. 14085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// If the credit card number field has autocomplete turned off, then the credit 14095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// card infobar should not offer to save the credit card info. The credit card 14105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// number must be a valid Luhn number. 14115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(AutofillTest, CCInfoNotStoredWhenAutocompleteOff) { 14125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(test_server()->Start()); 14135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FormMap data; 14145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["CREDIT_CARD_NAME"] = "Bob Smith"; 14155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["CREDIT_CARD_NUMBER"] = "4408041234567893"; 14165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["CREDIT_CARD_EXP_MONTH"] = "12"; 14175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["CREDIT_CARD_EXP_4_DIGIT_YEAR"] = "2014"; 14185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FillFormAndSubmit("cc_autocomplete_off_test.html", data); 14195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(0u, 14215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InfoBarService::FromWebContents( 14222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser()->tab_strip_model()->GetActiveWebContents())-> 1423c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) infobar_count()); 14245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 14255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// http://crbug.com/150084 14275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_MACOSX) 14285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define MAYBE_NoAutofillForReadOnlyFields NoAutofillForReadOnlyFields 14295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 14305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define MAYBE_NoAutofillForReadOnlyFields DISABLED_NoAutofillForReadOnlyFields 14315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 14325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test that Autofill does not fill in read-only fields. 14335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(AutofillTest, MAYBE_NoAutofillForReadOnlyFields) { 14345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(test_server()->Start()); 14355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string addr_line1("1234 H St."); 14375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutofillProfile profile; 14395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile.SetRawInfo(NAME_FIRST, ASCIIToUTF16("Bob")); 14405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile.SetRawInfo(NAME_LAST, ASCIIToUTF16("Smith")); 14415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile.SetRawInfo(EMAIL_ADDRESS, ASCIIToUTF16("bsmith@gmail.com")); 14425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile.SetRawInfo(ADDRESS_HOME_LINE1, ASCIIToUTF16(addr_line1)); 14435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile.SetRawInfo(ADDRESS_HOME_CITY, ASCIIToUTF16("San Jose")); 14445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile.SetRawInfo(ADDRESS_HOME_STATE, ASCIIToUTF16("CA")); 14455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile.SetRawInfo(ADDRESS_HOME_ZIP, ASCIIToUTF16("95110")); 14465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile.SetRawInfo(COMPANY_NAME, ASCIIToUTF16("Company X")); 14475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile.SetRawInfo(PHONE_HOME_WHOLE_NUMBER, ASCIIToUTF16("408-871-4567")); 14485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetProfile(profile); 14495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = test_server()->GetURL("files/autofill/read_only_field_test.html"); 14515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui_test_utils::NavigateToURL(browser(), url); 14525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PopulateForm("firstname"); 14535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1454c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ExpectFieldValue("email", std::string()); 14552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ExpectFieldValue("address", addr_line1); 14565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 14575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// http://crbug.com/150084 14595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_MACOSX) 14605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define MAYBE_FormFillableOnReset FormFillableOnReset 14615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 14625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define MAYBE_FormFillableOnReset DISABLED_FormFillableOnReset 14635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 14645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test form is fillable from a profile after form was reset. 14655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Steps: 14665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 1. Fill form using a saved profile. 14675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 2. Reset the form. 14685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 3. Fill form using a saved profile. 14695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(AutofillTest, MAYBE_FormFillableOnReset) { 14705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(test_server()->Start()); 14715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CreateTestProfile(); 14735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = test_server()->GetURL("files/autofill/autofill_test_form.html"); 14755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui_test_utils::NavigateToURL(browser(), url); 14765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PopulateForm("NAME_FIRST"); 14775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(content::ExecuteScript( 14792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser()->tab_strip_model()->GetActiveWebContents(), 14802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "document.getElementById('testform').reset()")); 14815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PopulateForm("NAME_FIRST"); 14835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ExpectFieldValue("NAME_FIRST", "Milton"); 14852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ExpectFieldValue("NAME_LAST", "Waddams"); 14862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ExpectFieldValue("EMAIL_ADDRESS", "red.swingline@initech.com"); 14872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ExpectFieldValue("ADDRESS_HOME_LINE1", "4120 Freidrich Lane"); 14882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ExpectFieldValue("ADDRESS_HOME_CITY", "Austin"); 14892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ExpectFieldValue("ADDRESS_HOME_STATE", "Texas"); 14902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ExpectFieldValue("ADDRESS_HOME_ZIP", "78744"); 14912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ExpectFieldValue("ADDRESS_HOME_COUNTRY", "United States"); 14922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ExpectFieldValue("PHONE_HOME_WHOLE_NUMBER", "5125551234"); 14935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 14945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// http://crbug.com/150084 14965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_MACOSX) 14975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define MAYBE_DistinguishMiddleInitialWithinName \ 14985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DistinguishMiddleInitialWithinName 14995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 15005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define MAYBE_DistinguishMiddleInitialWithinName \ 15015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISABLED_DistinguishMiddleInitialWithinName 15025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 15035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Autofill distinguishes a middle initial in a name. 15045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(AutofillTest, MAYBE_DistinguishMiddleInitialWithinName) { 15055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(test_server()->Start()); 15065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CreateTestProfile(); 15085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = test_server()->GetURL( 15105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "files/autofill/autofill_middleinit_form.html"); 15115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui_test_utils::NavigateToURL(browser(), url); 15125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PopulateForm("NAME_FIRST"); 15135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ExpectFieldValue("NAME_MIDDLE", "C"); 15155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 15165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// http://crbug.com/150084 15185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_MACOSX) 15195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define MAYBE_MultipleEmailFilledByOneUserGesture \ 15205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MultipleEmailFilledByOneUserGesture 15215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 15225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define MAYBE_MultipleEmailFilledByOneUserGesture \ 15235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISABLED_MultipleEmailFilledByOneUserGesture 15245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 15255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test forms with multiple email addresses are filled properly. 15265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Entire form should be filled with one user gesture. 15275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(AutofillTest, 15285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MAYBE_MultipleEmailFilledByOneUserGesture) { 15295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(test_server()->Start()); 15305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string email("bsmith@gmail.com"); 15325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutofillProfile profile; 15345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile.SetRawInfo(NAME_FIRST, ASCIIToUTF16("Bob")); 15355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile.SetRawInfo(NAME_LAST, ASCIIToUTF16("Smith")); 15365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile.SetRawInfo(EMAIL_ADDRESS, ASCIIToUTF16(email)); 15375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile.SetRawInfo(PHONE_HOME_WHOLE_NUMBER, ASCIIToUTF16("4088714567")); 15385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetProfile(profile); 15395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = test_server()->GetURL( 15415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "files/autofill/autofill_confirmemail_form.html"); 15425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui_test_utils::NavigateToURL(browser(), url); 15435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PopulateForm("NAME_FIRST"); 15445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ExpectFieldValue("EMAIL_CONFIRM", email); 15465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TODO(isherman): verify entire form. 15475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 15485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test profile not aggregated if email found in non-email field. 15505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(AutofillTest, ProfileWithEmailInOtherFieldNotSaved) { 15515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(test_server()->Start()); 15525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FormMap data; 15545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["NAME_FIRST"] = "Bob"; 15555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["NAME_LAST"] = "Smith"; 15565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["ADDRESS_HOME_LINE1"] = "bsmith@gmail.com"; 15575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["ADDRESS_HOME_CITY"] = "San Jose"; 15585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["ADDRESS_HOME_STATE"] = "CA"; 15595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["ADDRESS_HOME_ZIP"] = "95110"; 15605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["COMPANY_NAME"] = "Company X"; 15615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["PHONE_HOME_WHOLE_NUMBER"] = "408-871-4567"; 15625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FillFormAndSubmit("duplicate_profiles_test.html", data); 15635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(0u, personal_data_manager()->GetProfiles().size()); 15655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 15665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// http://crbug.com/150084 15685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_MACOSX) 15695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define MAYBE_FormFillLatencyAfterSubmit FormFillLatencyAfterSubmit 15705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 15715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define MAYBE_FormFillLatencyAfterSubmit DISABLED_FormFillLatencyAfterSubmit 15725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 15735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test latency time on form submit with lots of stored Autofill profiles. 15745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This test verifies when a profile is selected from the Autofill dictionary 15755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// that consists of thousands of profiles, the form does not hang after being 15765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// submitted. 15775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(AutofillTest, MAYBE_FormFillLatencyAfterSubmit) { 15785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(test_server()->Start()); 15795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<std::string> cities; 15815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cities.push_back("San Jose"); 15825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cities.push_back("San Francisco"); 15835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cities.push_back("Sacramento"); 15845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cities.push_back("Los Angeles"); 15855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<std::string> streets; 15875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) streets.push_back("St"); 15885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) streets.push_back("Ave"); 15895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) streets.push_back("Ln"); 15905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) streets.push_back("Ct"); 15915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const int kNumProfiles = 1500; 15935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Time start_time = base::Time::Now(); 15945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<AutofillProfile> profiles; 15955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < kNumProfiles; i++) { 15965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutofillProfile profile; 15975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) string16 name(base::IntToString16(i)); 15985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) string16 email(name + ASCIIToUTF16("@example.com")); 15995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) string16 street = ASCIIToUTF16( 16005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::IntToString(base::RandInt(0, 10000)) + " " + 16015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) streets[base::RandInt(0, streets.size() - 1)]); 16025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) string16 city = ASCIIToUTF16(cities[base::RandInt(0, cities.size() - 1)]); 16035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) string16 zip(base::IntToString16(base::RandInt(0, 10000))); 16045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile.SetRawInfo(NAME_FIRST, name); 16055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile.SetRawInfo(EMAIL_ADDRESS, email); 16065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile.SetRawInfo(ADDRESS_HOME_LINE1, street); 16075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile.SetRawInfo(ADDRESS_HOME_CITY, city); 16085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile.SetRawInfo(ADDRESS_HOME_STATE, WideToUTF16(L"CA")); 16095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile.SetRawInfo(ADDRESS_HOME_ZIP, zip); 16102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) profile.SetRawInfo(ADDRESS_HOME_COUNTRY, WideToUTF16(L"US")); 16115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profiles.push_back(profile); 16125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 16135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetProfiles(&profiles); 16145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TODO(isherman): once we're sure this test doesn't timeout on any bots, this 16155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // can be removd. 16165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LOG(INFO) << "Created " << kNumProfiles << " profiles in " << 16175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (base::Time::Now() - start_time).InSeconds() << " seconds."; 16185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = test_server()->GetURL( 16205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "files/autofill/latency_after_submit_test.html"); 16215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui_test_utils::NavigateToURL(browser(), url); 16225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PopulateForm("NAME_FIRST"); 16235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::WindowedNotificationObserver load_stop_observer( 16255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::NOTIFICATION_LOAD_STOP, 16265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::Source<content::NavigationController>( 16272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) &browser()->tab_strip_model()->GetActiveWebContents()-> 16282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetController())); 16295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(content::ExecuteScript( 16312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) render_view_host(), 16322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "document.getElementById('testform').submit();")); 16335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This will ensure the test didn't hang. 16345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) load_stop_observer.Wait(); 16355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 16365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// http://crbug.com/150084 16382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(OS_MACOSX) 16392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define MAYBE_DisableAutocompleteWhileFilling DisableAutocompleteWhileFilling 16402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#else 16412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define MAYBE_DisableAutocompleteWhileFilling \ 16422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DISABLED_DisableAutocompleteWhileFilling 16432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif 16442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Test that Chrome doesn't crash when autocomplete is disabled while the user 16452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// is interacting with the form. This is a regression test for 16462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// http://crbug.com/160476 16472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(AutofillTest, MAYBE_DisableAutocompleteWhileFilling) { 16482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) CreateTestProfile(); 16492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 16502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Load the test page. 16512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(browser(), 16522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GURL(std::string(kDataURIPrefix) + kTestFormString))); 16532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 16542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Invoke Autofill: Start filling the first name field with "M" and wait for 16552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // the popup to be shown. 16562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) FocusFirstNameField(); 16572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SendKeyToPageAndWait(ui::VKEY_M); 16582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 16592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Now that the popup with suggestions is showing, disable autocomplete for 16602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // the active field. 16612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(content::ExecuteScript( 16622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) render_view_host(), 16632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "document.querySelector('input').autocomplete = 'off';")); 16642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 16652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Press the down arrow to select the suggestion and attempt to preview the 16662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // autofilled form. 16672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (!external_delegate()) { 16682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::SimulateKeyPress( 16692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser()->tab_strip_model()->GetActiveWebContents(), 16702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ui::VKEY_DOWN, false, false, false, false); 16712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } else { 16722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::NativeWebKeyboardEvent event; 16732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) event.windowsKeyCode = ui::VKEY_DOWN; 16742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) external_delegate()->keyboard_listener()->HandleKeyPressEvent(event); 16752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 16762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 16772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Wait for any IPCs to complete by performing an action that generates an 16782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // IPC that's easy to wait for. Chrome shouldn't crash. 16792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool result = false; 16802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(content::ExecuteScriptAndExtractBool( 16812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) render_view_host(), 16822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "var city = document.getElementById('city');" 16832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "city.onfocus = function() { domAutomationController.send(true); };" 16842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "city.focus()", 16852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) &result)); 16862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(result); 16872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SendKeyToPageAndWait(ui::VKEY_A); 16882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 16892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 16905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test that profiles merge for aggregated data with same address. 16915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The criterion for when two profiles are expected to be merged is when their 16925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 'Address Line 1' and 'City' data match. When two profiles are merged, any 16935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// remaining address fields are expected to be overwritten. Any non-address 16945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// fields should accumulate multi-valued data. 16955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// DISABLED: http://crbug.com/150084 16965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(AutofillTest, 16975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISABLED_MergeAggregatedProfilesWithSameAddress) { 16985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AggregateProfilesIntoAutofillPrefs("dataset_2.txt"); 16995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(3u, personal_data_manager()->GetProfiles().size()); 17015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 17025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test profiles are not merged without mininum address values. 17045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Mininum address values needed during aggregation are: address line 1, city, 17055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// state, and zip code. 17065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Profiles are merged when data for address line 1 and city match. 17075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// DISABLED: http://crbug.com/150084 17085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(AutofillTest, 17095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISABLED_ProfilesNotMergedWhenNoMinAddressData) { 17105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AggregateProfilesIntoAutofillPrefs("dataset_no_address.txt"); 17115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(0u, personal_data_manager()->GetProfiles().size()); 17135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 17145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Autofill ability to merge duplicate profiles and throw away junk. 17165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TODO(isherman): this looks redundant, consider removing. 17175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// DISABLED: http://crbug.com/150084 17185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(AutofillTest, 17195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISABLED_MergeAggregatedDuplicatedProfiles) { 17205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int num_of_profiles = 17215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AggregateProfilesIntoAutofillPrefs("dataset_no_address.txt"); 17225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_GT(num_of_profiles, 17242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static_cast<int>(personal_data_manager()->GetProfiles().size())); 17255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1726c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1727c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace autofill 1728