autofill_browsertest.cc revision a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7
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" 8a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "base/command_line.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/file_util.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/ref_counted.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_ptr.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/rand_util.h" 13868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/string16.h" 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/strings/string_number_conversions.h" 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/strings/string_split.h" 16868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/utf_string_conversions.h" 17eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/time/time.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/autofill/personal_data_manager_factory.h" 197dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "chrome/browser/chrome_notification_types.h" 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/infobars/confirm_infobar_delegate.h" 21a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "chrome/browser/infobars/infobar.h" 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/infobars/infobar_service.h" 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/profiles/profile.h" 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser.h" 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser_window.h" 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/ui/tabs/tab_strip_model.h" 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/render_messages.h" 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/test/base/in_process_browser_test.h" 29a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "chrome/test/base/test_switches.h" 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/test/base/ui_test_utils.h" 317d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "components/autofill/content/browser/autofill_driver_impl.h" 32eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "components/autofill/core/browser/autofill_profile.h" 33f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "components/autofill/core/browser/autofill_test_utils.h" 34eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "components/autofill/core/browser/credit_card.h" 35eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "components/autofill/core/browser/personal_data_manager.h" 36eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "components/autofill/core/browser/personal_data_manager_observer.h" 37eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "components/autofill/core/browser/validation.h" 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/navigation_controller.h" 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/notification_observer.h" 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/notification_registrar.h" 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/notification_service.h" 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/render_view_host.h" 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/web_contents.h" 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/test/browser_test_utils.h" 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/test/test_renderer_host.h" 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/public/test/test_utils.h" 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/url_request/test_url_fetcher_factory.h" 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "testing/gmock/include/gmock/gmock.h" 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 50d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include "ui/events/keycodes/keyboard_codes.h" 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 52c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace autofill { 53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WindowedPersonalDataManagerObserver 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : public PersonalDataManagerObserver, 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public content::NotificationObserver { 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) explicit WindowedPersonalDataManagerObserver(Browser* browser) 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) : alerted_(false), 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) has_run_message_loop_(false), 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser_(browser), 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) infobar_service_(NULL) { 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PersonalDataManagerFactory::GetForProfile(browser_->profile())-> 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) AddObserver(this); 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) registrar_.Add(this, chrome::NOTIFICATION_TAB_CONTENTS_INFOBAR_ADDED, 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::NotificationService::AllSources()); 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual ~WindowedPersonalDataManagerObserver() { 707dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch if (infobar_service_ && (infobar_service_->infobar_count() > 0)) 71c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) infobar_service_->RemoveInfoBar(infobar_service_->infobar_at(0)); 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void Wait() { 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!alerted_) { 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) has_run_message_loop_ = true; 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::RunMessageLoop(); 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PersonalDataManagerFactory::GetForProfile(browser_->profile())-> 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RemoveObserver(this); 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // PersonalDataManagerObserver: 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void OnPersonalDataChanged() OVERRIDE { 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (has_run_message_loop_) { 8690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) base::MessageLoopForUI::current()->Quit(); 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) has_run_message_loop_ = false; 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) alerted_ = true; 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void OnInsufficientFormData() OVERRIDE { 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OnPersonalDataChanged(); 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // content::NotificationObserver: 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void Observe(int type, 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const content::NotificationSource& source, 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const content::NotificationDetails& details) OVERRIDE { 1007dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_EQ(chrome::NOTIFICATION_TAB_CONTENTS_INFOBAR_ADDED, type); 1012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) infobar_service_ = InfoBarService::FromWebContents( 1022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser_->tab_strip_model()->GetActiveWebContents()); 1037dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch ConfirmInfoBarDelegate* infobar_delegate = 104a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) infobar_service_->infobar_at(0)->delegate()->AsConfirmInfoBarDelegate(); 1057dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch ASSERT_TRUE(infobar_delegate); 1067dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch infobar_delegate->Accept(); 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool alerted_; 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool has_run_message_loop_; 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Browser* browser_; 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::NotificationRegistrar registrar_; 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InfoBarService* infobar_service_; 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class AutofillTest : public InProcessBrowserTest { 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutofillTest() {} 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SetUpOnMainThread() OVERRIDE { 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Don't want Keychain coming up on Mac. 123c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) test::DisableSystemServices(browser()->profile()); 1242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void CleanUpOnMainThread() OVERRIDE { 1272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Make sure to close any showing popups prior to tearing down the UI. 1282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::WebContents* web_contents = 1292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser()->tab_strip_model()->GetActiveWebContents(); 1302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) AutofillManager* autofill_manager = 1317d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) AutofillDriverImpl::FromWebContents(web_contents)->autofill_manager(); 1322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) autofill_manager->delegate()->HideAutofillPopup(); 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PersonalDataManager* personal_data_manager() { 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return PersonalDataManagerFactory::GetForProfile(browser()->profile()); 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetProfiles(std::vector<AutofillProfile>* profiles) { 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WindowedPersonalDataManagerObserver observer(browser()); 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) personal_data_manager()->SetProfiles(profiles); 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) observer.Wait(); 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetProfile(const AutofillProfile& profile) { 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<AutofillProfile> profiles; 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profiles.push_back(profile); 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetProfiles(&profiles); 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetCards(std::vector<CreditCard>* cards) { 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WindowedPersonalDataManagerObserver observer(browser()); 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) personal_data_manager()->SetCreditCards(cards); 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) observer.Wait(); 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetCard(const CreditCard& card) { 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<CreditCard> cards; 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cards.push_back(card); 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetCards(&cards); 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef std::map<std::string, std::string> FormMap; 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Navigate to the form, input values into the fields, and submit the form. 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The function returns after the PersonalDataManager is updated. 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void FillFormAndSubmit(const std::string& filename, const FormMap& data) { 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = test_server()->GetURL("files/autofill/" + filename); 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui_test_utils::NavigateToURL(browser(), url); 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string js; 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (FormMap::const_iterator i = data.begin(); i != data.end(); ++i) { 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) js += "document.getElementById('" + i->first + "').value = '" + 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) i->second + "';"; 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) js += "document.getElementById('testform').submit();"; 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WindowedPersonalDataManagerObserver observer(browser()); 1782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(content::ExecuteScript(render_view_host(), js)); 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) observer.Wait(); 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SubmitCreditCard(const char* name, 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char* number, 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char* exp_month, 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char* exp_year) { 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FormMap data; 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["CREDIT_CARD_NAME"] = name; 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["CREDIT_CARD_NUMBER"] = number; 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["CREDIT_CARD_EXP_MONTH"] = exp_month; 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["CREDIT_CARD_EXP_4_DIGIT_YEAR"] = exp_year; 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FillFormAndSubmit("autofill_creditcard_form.html", data); 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Aggregate profiles from forms into Autofill preferences. Returns the number 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // of parsed profiles. 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int AggregateProfilesIntoAutofillPrefs(const std::string& filename) { 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CHECK(test_server()->Start()); 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string data; 2002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath data_file = 2012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ui_test_utils::GetTestFilePath(base::FilePath().AppendASCII("autofill"), 2022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath().AppendASCII(filename)); 20358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) CHECK(base::ReadFileToString(data_file, &data)); 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<std::string> lines; 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::SplitString(data, '\n', &lines); 206424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) int parsed_profiles = 0; 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (size_t i = 0; i < lines.size(); ++i) { 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (StartsWithASCII(lines[i], "#", false)) 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue; 210424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<std::string> fields; 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::SplitString(lines[i], '|', &fields); 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (fields.empty()) 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue; // Blank line. 215424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 216424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) ++parsed_profiles; 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CHECK_EQ(12u, fields.size()); 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FormMap data; 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["NAME_FIRST"] = fields[0]; 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["NAME_MIDDLE"] = fields[1]; 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["NAME_LAST"] = fields[2]; 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["EMAIL_ADDRESS"] = fields[3]; 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["COMPANY_NAME"] = fields[4]; 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["ADDRESS_HOME_LINE1"] = fields[5]; 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["ADDRESS_HOME_LINE2"] = fields[6]; 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["ADDRESS_HOME_CITY"] = fields[7]; 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["ADDRESS_HOME_STATE"] = fields[8]; 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["ADDRESS_HOME_ZIP"] = fields[9]; 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["ADDRESS_HOME_COUNTRY"] = fields[10]; 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["PHONE_HOME_WHOLE_NUMBER"] = fields[11]; 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FillFormAndSubmit("duplicate_profiles_test.html", data); 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 235424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) return parsed_profiles; 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void ExpectFieldValue(const std::string& field_name, 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& expected_value) { 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string value; 2412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(content::ExecuteScriptAndExtractString( 2422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser()->tab_strip_model()->GetActiveWebContents(), 2432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "window.domAutomationController.send(" 2442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) " document.getElementById('" + field_name + "').value);", 2452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) &value)); 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(expected_value, value); 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2497dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch content::RenderViewHost* render_view_host() { 2502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return browser()->tab_strip_model()->GetActiveWebContents()-> 2512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetRenderViewHost(); 2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void ExpectFilledTestForm() { 2552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ExpectFieldValue("firstname", "Milton"); 2562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ExpectFieldValue("lastname", "Waddams"); 2572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ExpectFieldValue("address1", "4120 Freidrich Lane"); 2582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ExpectFieldValue("address2", "Basement"); 2592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ExpectFieldValue("city", "Austin"); 2602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ExpectFieldValue("state", "TX"); 2612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ExpectFieldValue("zip", "78744"); 2622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ExpectFieldValue("country", "US"); 2632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ExpectFieldValue("phone", "5125551234"); 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) net::TestURLFetcherFactory url_fetcher_factory_; 2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test filling profiles with unicode strings and crazy characters. 2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TODO(isherman): rewrite as unit test under PersonalDataManagerTest. 2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(AutofillTest, FillProfileCrazyCharacters) { 2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<AutofillProfile> profiles; 2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutofillProfile profile1; 2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile1.SetRawInfo(NAME_FIRST, 2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WideToUTF16(L"\u0623\u0648\u0628\u0627\u0645\u0627 " 2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u064a\u0639\u062a\u0630\u0631 " 2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u0647\u0627\u062a\u0641\u064a\u0627 " 2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u0644\u0645\u0648\u0638\u0641\u0629 " 2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u0633\u0648\u062f\u0627\u0621 " 2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u0627\u0633\u062a\u0642\u0627\u0644\u062a " 2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u0628\u0633\u0628\u0628 " 2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u062a\u0635\u0631\u064a\u062d\u0627\u062a " 2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u0645\u062c\u062a\u0632\u0623\u0629")); 2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile1.SetRawInfo(NAME_MIDDLE, WideToUTF16(L"BANK\xcBERF\xc4LLE")); 2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile1.SetRawInfo(EMAIL_ADDRESS, 2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WideToUTF16(L"\uacbd\uc81c \ub274\uc2a4 " 2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\ub354\ubcf4\uae30@google.com")); 2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile1.SetRawInfo(ADDRESS_HOME_LINE1, 2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WideToUTF16(L"\uad6d\uc815\uc6d0\xb7\uac80\ucc30, " 2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\ub178\ubb34\ud604\uc815\ubd80 " 2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\ub300\ubd81\uc811\ucd09 \ub2f4\ub2f9 " 2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\uc778\uc0ac\ub4e4 \uc870\uc0ac")); 2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile1.SetRawInfo(ADDRESS_HOME_CITY, 2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WideToUTF16(L"\u653f\u5e9c\u4e0d\u6392\u9664\u7acb\u6cd5" 2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u898f\u7ba1\u5c0e\u904a")); 2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile1.SetRawInfo(ADDRESS_HOME_ZIP, WideToUTF16(L"YOHO_54676")); 2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile1.SetRawInfo(PHONE_HOME_WHOLE_NUMBER, WideToUTF16(L"861088828000")); 2993240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch profile1.SetInfo( 3003240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch AutofillType(ADDRESS_HOME_COUNTRY), WideToUTF16(L"India"), "en-US"); 3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profiles.push_back(profile1); 3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutofillProfile profile2; 3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile2.SetRawInfo(NAME_FIRST, 3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WideToUTF16(L"\u4e0a\u6d77\u5e02\u91d1\u5c71\u533a " 3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u677e\u9690\u9547\u4ead\u67ab\u516c" 3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u8def1915\u53f7")); 3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile2.SetRawInfo(NAME_LAST, WideToUTF16(L"aguantó")); 3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile2.SetRawInfo(ADDRESS_HOME_ZIP, WideToUTF16(L"HOME 94043")); 3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profiles.push_back(profile2); 3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutofillProfile profile3; 3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile3.SetRawInfo(EMAIL_ADDRESS, WideToUTF16(L"sue@example.com")); 3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile3.SetRawInfo(COMPANY_NAME, WideToUTF16(L"Company X")); 3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profiles.push_back(profile3); 3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutofillProfile profile4; 3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile4.SetRawInfo(NAME_FIRST, WideToUTF16(L"Joe 3254")); 3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile4.SetRawInfo(NAME_LAST, WideToUTF16(L"\u8bb0\u8d262\u5e74\u591a")); 3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile4.SetRawInfo(ADDRESS_HOME_ZIP, 3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WideToUTF16(L"\uff08\u90ae\u7f16\uff1a201504\uff09")); 3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile4.SetRawInfo(EMAIL_ADDRESS, WideToUTF16(L"télévision@example.com")); 3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile4.SetRawInfo(COMPANY_NAME, 3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WideToUTF16(L"\u0907\u0932\u0947\u0915\u093f\u091f\u094d" 3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u0930\u0928\u093f\u0915\u094d\u0938, " 3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u0905\u092a\u094b\u0932\u094b " 3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u091f\u093e\u092f\u0930\u094d\u0938 " 3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u0906\u0926\u093f")); 3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profiles.push_back(profile4); 3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutofillProfile profile5; 3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile5.SetRawInfo(NAME_FIRST, WideToUTF16(L"Larry")); 3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile5.SetRawInfo(NAME_LAST, 3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WideToUTF16(L"\u0938\u094d\u091f\u093e\u0902\u092a " 3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u0921\u094d\u092f\u0942\u091f\u0940")); 3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile5.SetRawInfo(ADDRESS_HOME_ZIP, 3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WideToUTF16(L"111111111111110000GOOGLE")); 3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile5.SetRawInfo(EMAIL_ADDRESS, WideToUTF16(L"page@000000.com")); 3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile5.SetRawInfo(COMPANY_NAME, WideToUTF16(L"Google")); 3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profiles.push_back(profile5); 3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutofillProfile profile6; 3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile6.SetRawInfo(NAME_FIRST, 3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WideToUTF16(L"\u4e0a\u6d77\u5e02\u91d1\u5c71\u533a " 3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u677e\u9690\u9547\u4ead\u67ab\u516c" 3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u8def1915\u53f7")); 3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile6.SetRawInfo(NAME_LAST, 3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WideToUTF16(L"\u0646\u062c\u0627\u0645\u064a\u0646\u0627 " 3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u062f\u0639\u0645\u0647\u0627 " 3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u0644\u0644\u0631\u0626\u064a\u0633 " 3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u0627\u0644\u0633\u0648\u062f\u0627\u0646" 3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u064a \u0639\u0645\u0631 " 3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u0627\u0644\u0628\u0634\u064a\u0631")); 3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile6.SetRawInfo(ADDRESS_HOME_ZIP, WideToUTF16(L"HOME 94043")); 3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profiles.push_back(profile6); 3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutofillProfile profile7; 3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile7.SetRawInfo(NAME_FIRST, WideToUTF16(L"&$%$$$ TESTO *&*&^&^& MOKO")); 3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile7.SetRawInfo(NAME_MIDDLE, WideToUTF16(L"WOHOOOO$$$$$$$$****")); 3605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile7.SetRawInfo(EMAIL_ADDRESS, WideToUTF16(L"yuvu@example.com")); 3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile7.SetRawInfo(ADDRESS_HOME_LINE1, 3625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WideToUTF16(L"34544, anderson ST.(120230)")); 3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile7.SetRawInfo(ADDRESS_HOME_CITY, WideToUTF16(L"Sunnyvale")); 3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile7.SetRawInfo(ADDRESS_HOME_STATE, WideToUTF16(L"CA")); 3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile7.SetRawInfo(ADDRESS_HOME_ZIP, WideToUTF16(L"94086")); 3665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile7.SetRawInfo(PHONE_HOME_WHOLE_NUMBER, WideToUTF16(L"15466784565")); 3673240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch profile7.SetInfo( 3683240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch AutofillType(ADDRESS_HOME_COUNTRY), WideToUTF16(L"United States"), 3693240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch "en-US"); 3705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profiles.push_back(profile7); 3715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetProfiles(&profiles); 3732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(profiles.size(), personal_data_manager()->GetProfiles().size()); 3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (size_t i = 0; i < profiles.size(); ++i) 3752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(profiles[i], *personal_data_manager()->GetProfiles()[i]); 3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<CreditCard> cards; 3785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CreditCard card1; 3795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) card1.SetRawInfo(CREDIT_CARD_NAME, 3805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WideToUTF16(L"\u751f\u6d3b\u5f88\u6709\u89c4\u5f8b " 3815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u4ee5\u73a9\u4e3a\u4e3b")); 3825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) card1.SetRawInfo(CREDIT_CARD_NUMBER, WideToUTF16(L"6011111111111117")); 3835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) card1.SetRawInfo(CREDIT_CARD_EXP_MONTH, WideToUTF16(L"12")); 3845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) card1.SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, WideToUTF16(L"2011")); 3855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cards.push_back(card1); 3865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CreditCard card2; 3885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) card2.SetRawInfo(CREDIT_CARD_NAME, WideToUTF16(L"John Williams")); 3895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) card2.SetRawInfo(CREDIT_CARD_NUMBER, WideToUTF16(L"WokoAwesome12345")); 3905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) card2.SetRawInfo(CREDIT_CARD_EXP_MONTH, WideToUTF16(L"10")); 3915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) card2.SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, WideToUTF16(L"2015")); 3925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cards.push_back(card2); 3935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CreditCard card3; 3955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) card3.SetRawInfo(CREDIT_CARD_NAME, 3965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WideToUTF16(L"\u0623\u062d\u0645\u062f\u064a " 3975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u0646\u062c\u0627\u062f " 3985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u0644\u0645\u062d\u0627\u0648\u0644\u0647 " 3995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u0627\u063a\u062a\u064a\u0627\u0644 " 4005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u0641\u064a \u0645\u062f\u064a\u0646\u0629 " 4015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u0647\u0645\u062f\u0627\u0646 ")); 4025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) card3.SetRawInfo(CREDIT_CARD_NUMBER, 4035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WideToUTF16(L"\u092a\u0941\u0928\u0930\u094d\u091c\u0940" 4045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u0935\u093f\u0924 \u0939\u094b\u0917\u093e " 4055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u0928\u093e\u0932\u0902\u0926\u093e")); 4065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) card3.SetRawInfo(CREDIT_CARD_EXP_MONTH, WideToUTF16(L"10")); 4075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) card3.SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, WideToUTF16(L"2015")); 4085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cards.push_back(card3); 4095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CreditCard card4; 4115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) card4.SetRawInfo(CREDIT_CARD_NAME, 4125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WideToUTF16(L"\u039d\u03ad\u03b5\u03c2 " 4135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u03c3\u03c5\u03b3\u03c7\u03c9\u03bd\u03b5" 4145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u03cd\u03c3\u03b5\u03b9\u03c2 " 4155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u03ba\u03b1\u03b9 " 4165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u03ba\u03b1\u03c4\u03b1\u03c1\u03b3\u03ae" 4175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"\u03c3\u03b5\u03b9\u03c2")); 4185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) card4.SetRawInfo(CREDIT_CARD_NUMBER, WideToUTF16(L"00000000000000000000000")); 4195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) card4.SetRawInfo(CREDIT_CARD_EXP_MONTH, WideToUTF16(L"01")); 4205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) card4.SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, WideToUTF16(L"2016")); 4215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cards.push_back(card4); 4225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetCards(&cards); 424c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_EQ(cards.size(), personal_data_manager()->GetCreditCards().size()); 4255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (size_t i = 0; i < cards.size(); ++i) 426c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_EQ(cards[i], *personal_data_manager()->GetCreditCards()[i]); 4275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test filling in invalid values for profiles are saved as-is. Phone 4305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// information entered into the prefs UI is not validated or rejected except for 4315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// duplicates. 4325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TODO(isherman): rewrite as WebUI test? 4335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(AutofillTest, Invalid) { 4345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // First try profiles with invalid ZIP input. 4355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutofillProfile without_invalid; 4365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) without_invalid.SetRawInfo(NAME_FIRST, ASCIIToUTF16("Will")); 4375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) without_invalid.SetRawInfo(ADDRESS_HOME_CITY, ASCIIToUTF16("Sunnyvale")); 4385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) without_invalid.SetRawInfo(ADDRESS_HOME_STATE, ASCIIToUTF16("CA")); 4395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) without_invalid.SetRawInfo(ADDRESS_HOME_ZIP, ASCIIToUTF16("my_zip")); 4403240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch without_invalid.SetInfo( 4413240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch AutofillType(ADDRESS_HOME_COUNTRY), ASCIIToUTF16("United States"), 4423240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch "en-US"); 4435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutofillProfile with_invalid = without_invalid; 4455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) with_invalid.SetRawInfo(PHONE_HOME_WHOLE_NUMBER, 4465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASCIIToUTF16("Invalid_Phone_Number")); 4475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetProfile(with_invalid); 4485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(1u, personal_data_manager()->GetProfiles().size()); 4502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) AutofillProfile profile = *personal_data_manager()->GetProfiles()[0]; 4515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_NE(without_invalid.GetRawInfo(PHONE_HOME_WHOLE_NUMBER), 4525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile.GetRawInfo(PHONE_HOME_WHOLE_NUMBER)); 4535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test invalid credit card numbers typed in prefs should be saved as-is. 4565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TODO(isherman): rewrite as WebUI test? 4575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(AutofillTest, PrefsStringSavedAsIs) { 4585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CreditCard card; 4595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) card.SetRawInfo(CREDIT_CARD_NUMBER, ASCIIToUTF16("Not_0123-5Checked")); 4605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetCard(card); 4615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 462c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_EQ(1u, personal_data_manager()->GetCreditCards().size()); 463c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_EQ(card, *personal_data_manager()->GetCreditCards()[0]); 4645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test credit card info with an invalid number is not aggregated. 4675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// When filling out a form with an invalid credit card number (one that does not 4685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// pass the Luhn test) the credit card info should not be saved into Autofill 4695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// preferences. 4705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(AutofillTest, InvalidCreditCardNumberIsNotAggregated) { 471ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#if defined(OS_WIN) && defined(USE_ASH) 472ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // Disable this test in Metro+Ash for now (http://crbug.com/262796). 473a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kAshBrowserTests)) 474ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch return; 475ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#endif 476ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 4775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(test_server()->Start()); 4785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string card("4408 0412 3456 7890"); 4792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_FALSE(autofill::IsValidCreditCardNumber(ASCIIToUTF16(card))); 4805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SubmitCreditCard("Bob Smith", card.c_str(), "12", "2014"); 4815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(0u, 4825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InfoBarService::FromWebContents( 4832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser()->tab_strip_model()->GetActiveWebContents())-> 484c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) infobar_count()); 4855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test whitespaces and separator chars are stripped for valid CC numbers. 4885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The credit card numbers used in this test pass the Luhn test. For reference: 4895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// http://www.merriampark.com/anatomycc.htm 4905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(AutofillTest, 4915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WhitespacesAndSeparatorCharsStrippedForValidCCNums) { 492ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#if defined(OS_WIN) && defined(USE_ASH) 493a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) // Disable this test in Metro+Ash for now (http://crbug.com/262796). 494a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kAshBrowserTests)) 495ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch return; 496ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#endif 497ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 4985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(test_server()->Start()); 4995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SubmitCreditCard("Bob Smith", "4408 0412 3456 7893", "12", "2014"); 5005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SubmitCreditCard("Jane Doe", "4417-1234-5678-9113", "10", "2013"); 5015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 502c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_EQ(2u, personal_data_manager()->GetCreditCards().size()); 503a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::string16 cc1 = personal_data_manager()->GetCreditCards()[0]->GetRawInfo( 5045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CREDIT_CARD_NUMBER); 5052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(autofill::IsValidCreditCardNumber(cc1)); 506a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::string16 cc2 = personal_data_manager()->GetCreditCards()[1]->GetRawInfo( 5075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CREDIT_CARD_NUMBER); 5082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(autofill::IsValidCreditCardNumber(cc2)); 5095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 5105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test that Autofill aggregates a minimum valid profile. 5125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The minimum required address fields must be specified: First Name, Last Name, 5135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Address Line 1, City, Zip Code, and State. 5145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(AutofillTest, AggregatesMinValidProfile) { 5155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(test_server()->Start()); 5165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FormMap data; 5175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["NAME_FIRST"] = "Bob"; 5185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["NAME_LAST"] = "Smith"; 5195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["ADDRESS_HOME_LINE1"] = "1234 H St."; 5205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["ADDRESS_HOME_CITY"] = "Mountain View"; 5215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["ADDRESS_HOME_STATE"] = "CA"; 5225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["ADDRESS_HOME_ZIP"] = "94043"; 5235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FillFormAndSubmit("duplicate_profiles_test.html", data); 5245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(1u, personal_data_manager()->GetProfiles().size()); 5265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 5275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Autofill does not aggregate profiles with no address info. 5295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The minimum required address fields must be specified: First Name, Last Name, 5305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Address Line 1, City, Zip Code, and State. 5315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(AutofillTest, ProfilesNotAggregatedWithNoAddress) { 5325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(test_server()->Start()); 5335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FormMap data; 5345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["NAME_FIRST"] = "Bob"; 5355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["NAME_LAST"] = "Smith"; 5365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["EMAIL_ADDRESS"] = "bsmith@example.com"; 5375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["COMPANY_NAME"] = "Mountain View"; 5385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["ADDRESS_HOME_CITY"] = "Mountain View"; 5395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["PHONE_HOME_WHOLE_NUMBER"] = "650-555-4567"; 5405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FillFormAndSubmit("duplicate_profiles_test.html", data); 5415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(personal_data_manager()->GetProfiles().empty()); 5435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 5445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Autofill does not aggregate profiles with an invalid email. 5465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(AutofillTest, ProfilesNotAggregatedWithInvalidEmail) { 5475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(test_server()->Start()); 5485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FormMap data; 5495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["NAME_FIRST"] = "Bob"; 5505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["NAME_LAST"] = "Smith"; 5515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["EMAIL_ADDRESS"] = "garbage"; 5525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["ADDRESS_HOME_LINE1"] = "1234 H St."; 5535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["ADDRESS_HOME_CITY"] = "San Jose"; 5545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["ADDRESS_HOME_STATE"] = "CA"; 5555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["ADDRESS_HOME_ZIP"] = "95110"; 5565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["COMPANY_NAME"] = "Company X"; 5575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["PHONE_HOME_WHOLE_NUMBER"] = "408-871-4567"; 5585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FillFormAndSubmit("duplicate_profiles_test.html", data); 5595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(personal_data_manager()->GetProfiles().empty()); 5615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 5625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test profile is saved if phone number is valid in selected country. 5645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The data file contains two profiles with valid phone numbers and two 5655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// profiles with invalid phone numbers from their respective country. 56658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(AutofillTest, ProfileSavedWithValidCountryPhone) { 5675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(test_server()->Start()); 5685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<FormMap> profiles; 5695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FormMap data1; 5715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data1["NAME_FIRST"] = "Bob"; 5725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data1["NAME_LAST"] = "Smith"; 5735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data1["ADDRESS_HOME_LINE1"] = "123 Cherry Ave"; 5745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data1["ADDRESS_HOME_CITY"] = "Mountain View"; 5755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data1["ADDRESS_HOME_STATE"] = "CA"; 5765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data1["ADDRESS_HOME_ZIP"] = "94043"; 5775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data1["ADDRESS_HOME_COUNTRY"] = "United States"; 5785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data1["PHONE_HOME_WHOLE_NUMBER"] = "408-871-4567"; 5795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profiles.push_back(data1); 5805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FormMap data2; 5825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data2["NAME_FIRST"] = "John"; 5835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data2["NAME_LAST"] = "Doe"; 5845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data2["ADDRESS_HOME_LINE1"] = "987 H St"; 5855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data2["ADDRESS_HOME_CITY"] = "San Jose"; 5865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data2["ADDRESS_HOME_STATE"] = "CA"; 5875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data2["ADDRESS_HOME_ZIP"] = "95510"; 5885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data2["ADDRESS_HOME_COUNTRY"] = "United States"; 5895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data2["PHONE_HOME_WHOLE_NUMBER"] = "408-123-456"; 5905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profiles.push_back(data2); 5915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FormMap data3; 5935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data3["NAME_FIRST"] = "Jane"; 5945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data3["NAME_LAST"] = "Doe"; 5955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data3["ADDRESS_HOME_LINE1"] = "1523 Garcia St"; 5965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data3["ADDRESS_HOME_CITY"] = "Mountain View"; 5975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data3["ADDRESS_HOME_STATE"] = "CA"; 5985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data3["ADDRESS_HOME_ZIP"] = "94043"; 5995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data3["ADDRESS_HOME_COUNTRY"] = "Germany"; 6005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data3["PHONE_HOME_WHOLE_NUMBER"] = "+49 40-80-81-79-000"; 6015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profiles.push_back(data3); 6025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FormMap data4; 6045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data4["NAME_FIRST"] = "Bonnie"; 6055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data4["NAME_LAST"] = "Smith"; 6065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data4["ADDRESS_HOME_LINE1"] = "6723 Roadway Rd"; 6075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data4["ADDRESS_HOME_CITY"] = "San Jose"; 6085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data4["ADDRESS_HOME_STATE"] = "CA"; 6095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data4["ADDRESS_HOME_ZIP"] = "95510"; 6105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data4["ADDRESS_HOME_COUNTRY"] = "Germany"; 6115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data4["PHONE_HOME_WHOLE_NUMBER"] = "+21 08450 777 777"; 6125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profiles.push_back(data4); 6135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (size_t i = 0; i < profiles.size(); ++i) 6155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FillFormAndSubmit("autofill_test_form.html", profiles[i]); 6165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(2u, personal_data_manager()->GetProfiles().size()); 6185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(ASCIIToUTF16("(408) 871-4567"), 6192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) personal_data_manager()->GetProfiles()[0]->GetRawInfo( 6205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PHONE_HOME_WHOLE_NUMBER)); 62158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) ASSERT_EQ(ASCIIToUTF16("+49 40 808179000"), 6222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) personal_data_manager()->GetProfiles()[1]->GetRawInfo( 6235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PHONE_HOME_WHOLE_NUMBER)); 6245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 6255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Autofill appends country codes to aggregated phone numbers. 6275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The country code is added for the following case: 6285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The phone number contains the correct national number size and 6295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// is a valid format. 6305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(AutofillTest, AppendCountryCodeForAggregatedPhones) { 6315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(test_server()->Start()); 6325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FormMap data; 6335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["NAME_FIRST"] = "Bob"; 6345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["NAME_LAST"] = "Smith"; 6355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["ADDRESS_HOME_LINE1"] = "1234 H St."; 6365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["ADDRESS_HOME_CITY"] = "San Jose"; 6375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["ADDRESS_HOME_STATE"] = "CA"; 6385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["ADDRESS_HOME_ZIP"] = "95110"; 6395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["ADDRESS_HOME_COUNTRY"] = "Germany"; 6405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["PHONE_HOME_WHOLE_NUMBER"] = "(08) 450 777-777"; 6415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FillFormAndSubmit("autofill_test_form.html", data); 6425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(1u, personal_data_manager()->GetProfiles().size()); 644a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::string16 phone = personal_data_manager()->GetProfiles()[0]->GetRawInfo( 6455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PHONE_HOME_WHOLE_NUMBER); 6465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(StartsWith(phone, ASCIIToUTF16("+49"), true)); 6475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 6485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test CC info not offered to be saved when autocomplete=off for CC field. 6505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// If the credit card number field has autocomplete turned off, then the credit 6515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// card infobar should not offer to save the credit card info. The credit card 6525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// number must be a valid Luhn number. 6535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(AutofillTest, CCInfoNotStoredWhenAutocompleteOff) { 654ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#if defined(OS_WIN) && defined(USE_ASH) 655ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // Disable this test in Metro+Ash for now (http://crbug.com/262796). 656a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kAshBrowserTests)) 657ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch return; 658ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#endif 659ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 6605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(test_server()->Start()); 6615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FormMap data; 6625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["CREDIT_CARD_NAME"] = "Bob Smith"; 6635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["CREDIT_CARD_NUMBER"] = "4408041234567893"; 6645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["CREDIT_CARD_EXP_MONTH"] = "12"; 6655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["CREDIT_CARD_EXP_4_DIGIT_YEAR"] = "2014"; 6665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FillFormAndSubmit("cc_autocomplete_off_test.html", data); 6675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(0u, 6695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InfoBarService::FromWebContents( 6702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser()->tab_strip_model()->GetActiveWebContents())-> 671c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) infobar_count()); 6725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 6735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test profile not aggregated if email found in non-email field. 6755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(AutofillTest, ProfileWithEmailInOtherFieldNotSaved) { 6765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(test_server()->Start()); 6775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FormMap data; 6795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["NAME_FIRST"] = "Bob"; 6805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["NAME_LAST"] = "Smith"; 6815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["ADDRESS_HOME_LINE1"] = "bsmith@gmail.com"; 6825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["ADDRESS_HOME_CITY"] = "San Jose"; 6835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["ADDRESS_HOME_STATE"] = "CA"; 6845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["ADDRESS_HOME_ZIP"] = "95110"; 6855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["COMPANY_NAME"] = "Company X"; 6865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data["PHONE_HOME_WHOLE_NUMBER"] = "408-871-4567"; 6875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FillFormAndSubmit("duplicate_profiles_test.html", data); 6885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(0u, personal_data_manager()->GetProfiles().size()); 6905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 6915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test that profiles merge for aggregated data with same address. 6935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The criterion for when two profiles are expected to be merged is when their 6945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 'Address Line 1' and 'City' data match. When two profiles are merged, any 6955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// remaining address fields are expected to be overwritten. Any non-address 6965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// fields should accumulate multi-valued data. 697424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// DISABLED: http://crbug.com/281541 6985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(AutofillTest, 6995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISABLED_MergeAggregatedProfilesWithSameAddress) { 700424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) AggregateProfilesIntoAutofillPrefs("dataset_same_address.txt"); 7015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(3u, personal_data_manager()->GetProfiles().size()); 7035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 7045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test profiles are not merged without mininum address values. 7065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Mininum address values needed during aggregation are: address line 1, city, 7075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// state, and zip code. 7085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Profiles are merged when data for address line 1 and city match. 709424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// DISABLED: http://crbug.com/281541 7105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(AutofillTest, 7115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISABLED_ProfilesNotMergedWhenNoMinAddressData) { 7125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AggregateProfilesIntoAutofillPrefs("dataset_no_address.txt"); 7135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(0u, personal_data_manager()->GetProfiles().size()); 7155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 7165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Autofill ability to merge duplicate profiles and throw away junk. 7185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TODO(isherman): this looks redundant, consider removing. 719424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// DISABLED: http://crbug.com/281541 7205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(AutofillTest, 7215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISABLED_MergeAggregatedDuplicatedProfiles) { 7225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int num_of_profiles = 723424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) AggregateProfilesIntoAutofillPrefs("dataset_duplicated_profiles.txt"); 7245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_GT(num_of_profiles, 7262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static_cast<int>(personal_data_manager()->GetProfiles().size())); 7275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 728c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 729c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace autofill 730