1eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Copyright 2013 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) 7868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/string16.h" 8868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/utf_string_conversions.h" 9eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "components/autofill/core/browser/address.h" 10eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "components/autofill/core/browser/autofill_type.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)using base::ASCIIToUTF16; 145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace autofill { 16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 17ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// Test that country data can be properly returned as either a country code or a 18ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// localized country name. 19ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben MurdochTEST(AddressTest, GetCountry) { 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Address address; 21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_COUNTRY)); 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Make sure that nothing breaks when the country code is missing. 243240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch base::string16 country = 253240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch address.GetInfo(AutofillType(ADDRESS_HOME_COUNTRY), "en-US"); 26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(base::string16(), country); 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 283240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch address.SetInfo( 293240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch AutofillType(ADDRESS_HOME_COUNTRY), ASCIIToUTF16("US"), "en-US"); 303240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch country = address.GetInfo(AutofillType(ADDRESS_HOME_COUNTRY), "en-US"); 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("United States"), country); 32ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch country = address.GetInfo( 33ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch AutofillType(HTML_TYPE_COUNTRY_NAME, HTML_MODE_NONE), "en-US"); 34ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch EXPECT_EQ(ASCIIToUTF16("United States"), country); 35ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch country = address.GetInfo( 36ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch AutofillType(HTML_TYPE_COUNTRY_CODE, HTML_MODE_NONE), "en-US"); 37ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch EXPECT_EQ(ASCIIToUTF16("US"), country); 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) address.SetRawInfo(ADDRESS_HOME_COUNTRY, ASCIIToUTF16("CA")); 403240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch country = address.GetInfo(AutofillType(ADDRESS_HOME_COUNTRY), "en-US"); 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("Canada"), country); 42ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch country = address.GetInfo( 43ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch AutofillType(HTML_TYPE_COUNTRY_NAME, HTML_MODE_NONE), "en-US"); 44ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch EXPECT_EQ(ASCIIToUTF16("Canada"), country); 45ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch country = address.GetInfo( 46ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch AutofillType(HTML_TYPE_COUNTRY_CODE, HTML_MODE_NONE), "en-US"); 47ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch EXPECT_EQ(ASCIIToUTF16("CA"), country); 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test that we properly detect country codes appropriate for each country. 51ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben MurdochTEST(AddressTest, SetCountry) { 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Address address; 53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_COUNTRY)); 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Test basic conversion. 563240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch address.SetInfo( 573240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch AutofillType(ADDRESS_HOME_COUNTRY), ASCIIToUTF16("United States"), 583240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch "en-US"); 593240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch base::string16 country = 603240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch address.GetInfo(AutofillType(ADDRESS_HOME_COUNTRY), "en-US"); 61c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("US"), address.GetRawInfo(ADDRESS_HOME_COUNTRY)); 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("United States"), country); 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Test basic synonym detection. 653240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch address.SetInfo( 663240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch AutofillType(ADDRESS_HOME_COUNTRY), ASCIIToUTF16("USA"), "en-US"); 673240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch country = address.GetInfo(AutofillType(ADDRESS_HOME_COUNTRY), "en-US"); 68c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("US"), address.GetRawInfo(ADDRESS_HOME_COUNTRY)); 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("United States"), country); 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Test case-insensitivity. 723240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch address.SetInfo( 733240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch AutofillType(ADDRESS_HOME_COUNTRY), ASCIIToUTF16("canADA"), "en-US"); 743240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch country = address.GetInfo(AutofillType(ADDRESS_HOME_COUNTRY), "en-US"); 75c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("CA"), address.GetRawInfo(ADDRESS_HOME_COUNTRY)); 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("Canada"), country); 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Test country code detection. 793240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch address.SetInfo( 803240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch AutofillType(ADDRESS_HOME_COUNTRY), ASCIIToUTF16("JP"), "en-US"); 813240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch country = address.GetInfo(AutofillType(ADDRESS_HOME_COUNTRY), "en-US"); 82c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("JP"), address.GetRawInfo(ADDRESS_HOME_COUNTRY)); 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("Japan"), country); 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Test that we ignore unknown countries. 863240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch address.SetInfo( 873240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch AutofillType(ADDRESS_HOME_COUNTRY), ASCIIToUTF16("Unknown"), "en-US"); 883240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch country = address.GetInfo(AutofillType(ADDRESS_HOME_COUNTRY), "en-US"); 89c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_COUNTRY)); 90c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(base::string16(), country); 91ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 92ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // Test setting the country based on an HTML field type. 93ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch AutofillType html_type_country_code = 94ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch AutofillType(HTML_TYPE_COUNTRY_CODE, HTML_MODE_NONE); 95ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch address.SetInfo(html_type_country_code, ASCIIToUTF16("US"), "en-US"); 96ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch country = address.GetInfo(AutofillType(ADDRESS_HOME_COUNTRY), "en-US"); 97ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch EXPECT_EQ(ASCIIToUTF16("US"), address.GetRawInfo(ADDRESS_HOME_COUNTRY)); 98ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch EXPECT_EQ(ASCIIToUTF16("United States"), country); 99ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 100ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // Test case-insensitivity when setting the country based on an HTML field 101ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // type. 102ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch address.SetInfo(html_type_country_code, ASCIIToUTF16("cA"), "en-US"); 103ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch country = address.GetInfo(AutofillType(ADDRESS_HOME_COUNTRY), "en-US"); 104ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch EXPECT_EQ(ASCIIToUTF16("CA"), address.GetRawInfo(ADDRESS_HOME_COUNTRY)); 105ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch EXPECT_EQ(ASCIIToUTF16("Canada"), country); 106ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 107ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // Test setting the country based on invalid data with an HTML field type. 108ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch address.SetInfo(html_type_country_code, ASCIIToUTF16("unknown"), "en-US"); 109ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch country = address.GetInfo(AutofillType(ADDRESS_HOME_COUNTRY), "en-US"); 110ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_COUNTRY)); 111ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch EXPECT_EQ(base::string16(), country); 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test that we properly match typed values to stored country data. 115ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben MurdochTEST(AddressTest, IsCountry) { 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Address address; 117c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) address.SetRawInfo(ADDRESS_HOME_COUNTRY, ASCIIToUTF16("US")); 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char* const kValidMatches[] = { 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "United States", 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "USA", 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "US", 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "United states", 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "us" 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (size_t i = 0; i < arraysize(kValidMatches); ++i) { 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SCOPED_TRACE(kValidMatches[i]); 1283240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch ServerFieldTypeSet matching_types; 1292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) address.GetMatchingTypes(ASCIIToUTF16(kValidMatches[i]), "US", 1302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) &matching_types); 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(1U, matching_types.size()); 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(ADDRESS_HOME_COUNTRY, *matching_types.begin()); 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char* const kInvalidMatches[] = { 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "United", 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "Garbage" 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (size_t i = 0; i < arraysize(kInvalidMatches); ++i) { 1403240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch ServerFieldTypeSet matching_types; 1412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) address.GetMatchingTypes(ASCIIToUTF16(kInvalidMatches[i]), "US", 1422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) &matching_types); 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(0U, matching_types.size()); 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Make sure that garbage values don't match when the country code is empty. 147c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) address.SetRawInfo(ADDRESS_HOME_COUNTRY, base::string16()); 148c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_COUNTRY)); 1493240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch ServerFieldTypeSet matching_types; 1502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) address.GetMatchingTypes(ASCIIToUTF16("Garbage"), "US", &matching_types); 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(0U, matching_types.size()); 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 153c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1548bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)// Verifies that Address::GetInfo() correctly combines address lines. 155ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben MurdochTEST(AddressTest, GetStreetAddress) { 1568bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) const AutofillType type = AutofillType(ADDRESS_HOME_STREET_ADDRESS); 1578bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 158ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // Address has no address lines. 159ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch Address address; 160ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch EXPECT_TRUE(address.GetRawInfo(ADDRESS_HOME_LINE1).empty()); 161ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch EXPECT_TRUE(address.GetRawInfo(ADDRESS_HOME_LINE2).empty()); 162f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_TRUE(address.GetRawInfo(ADDRESS_HOME_LINE3).empty()); 163ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch EXPECT_EQ(base::string16(), address.GetInfo(type, "en-US")); 164ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 165ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // Address has only line 1. 166ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch address.SetRawInfo(ADDRESS_HOME_LINE1, ASCIIToUTF16("123 Example Ave.")); 167ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE1).empty()); 168ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch EXPECT_TRUE(address.GetRawInfo(ADDRESS_HOME_LINE2).empty()); 169f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_TRUE(address.GetRawInfo(ADDRESS_HOME_LINE3).empty()); 1708bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("123 Example Ave."), address.GetInfo(type, "en-US")); 171ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 172a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Address has only line 2. 173a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) address.SetRawInfo(ADDRESS_HOME_LINE1, base::string16()); 174a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) address.SetRawInfo(ADDRESS_HOME_LINE2, ASCIIToUTF16("Apt 42.")); 175a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) EXPECT_TRUE(address.GetRawInfo(ADDRESS_HOME_LINE1).empty()); 176a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE2).empty()); 177f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_TRUE(address.GetRawInfo(ADDRESS_HOME_LINE3).empty()); 178a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("\nApt 42."), address.GetInfo(type, "en-US")); 179a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 180ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // Address has lines 1 and 2. 181a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) address.SetRawInfo(ADDRESS_HOME_LINE1, ASCIIToUTF16("123 Example Ave.")); 182ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch address.SetRawInfo(ADDRESS_HOME_LINE2, ASCIIToUTF16("Apt. 42")); 183ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE1).empty()); 184ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE2).empty()); 185f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_TRUE(address.GetRawInfo(ADDRESS_HOME_LINE3).empty()); 1868bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("123 Example Ave.\n" 1878bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) "Apt. 42"), 1888bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) address.GetRawInfo(ADDRESS_HOME_STREET_ADDRESS)); 189f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("123 Example Ave.\n" 190f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) "Apt. 42"), 191ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch address.GetInfo(type, "en-US")); 192f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 193f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // A wild third line appears. 194f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) address.SetRawInfo(ADDRESS_HOME_LINE3, ASCIIToUTF16("Living room couch")); 195f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("Living room couch"), 196f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) address.GetRawInfo(ADDRESS_HOME_LINE3)); 197f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("123 Example Ave.\n" 198f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) "Apt. 42\n" 199f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) "Living room couch"), 200f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) address.GetRawInfo(ADDRESS_HOME_STREET_ADDRESS)); 201f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 202f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // The second line vanishes. 203f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) address.SetRawInfo(ADDRESS_HOME_LINE2, base::string16()); 204f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE1).empty()); 205f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_TRUE(address.GetRawInfo(ADDRESS_HOME_LINE2).empty()); 206f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE3).empty()); 207f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("123 Example Ave.\n" 208f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) "\n" 209f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) "Living room couch"), 210f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) address.GetRawInfo(ADDRESS_HOME_STREET_ADDRESS)); 211ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch} 212ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 213a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// Verifies that overwriting an address with N lines with one that has fewer 214a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// than N lines does not result in an address with blank lines at the end. 215a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)TEST(AddressTest, GetStreetAddressAfterOverwritingLongAddressWithShorterOne) { 216a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Start with an address that has two lines. 217a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) Address address; 218a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) address.SetRawInfo(ADDRESS_HOME_LINE1, ASCIIToUTF16("123 Example Ave.")); 219a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) address.SetRawInfo(ADDRESS_HOME_LINE2, ASCIIToUTF16("Apt. 42")); 220a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 221a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Now clear out the second address line. 222a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) address.SetRawInfo(ADDRESS_HOME_LINE2, base::string16()); 223a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("123 Example Ave."), 224a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) address.GetRawInfo(ADDRESS_HOME_STREET_ADDRESS)); 225a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 226a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Now clear out the first address line as well. 227a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) address.SetRawInfo(ADDRESS_HOME_LINE1, base::string16()); 228a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_STREET_ADDRESS)); 229a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)} 230a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 2318bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)// Verifies that Address::SetRawInfo() is able to split address lines correctly. 2328bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)TEST(AddressTest, SetRawStreetAddress) { 2338bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) const base::string16 empty_street_address; 2348bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) const base::string16 short_street_address = ASCIIToUTF16("456 Nowhere Ln."); 2358bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) const base::string16 long_street_address = 2368bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) ASCIIToUTF16("123 Example Ave.\n" 2378bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) "Apt. 42\n" 2388bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) "(The one with the blue door)"); 2398bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 2408bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) Address address; 2418bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_LINE1)); 2428bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_LINE2)); 2438bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 2448bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) address.SetRawInfo(ADDRESS_HOME_STREET_ADDRESS, long_street_address); 2458bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("123 Example Ave."), 2468bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) address.GetRawInfo(ADDRESS_HOME_LINE1)); 2478bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("Apt. 42"), address.GetRawInfo(ADDRESS_HOME_LINE2)); 248a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) EXPECT_EQ(long_street_address, 249a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) address.GetRawInfo(ADDRESS_HOME_STREET_ADDRESS)); 2508bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 2518bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) // A short address should clear out unused address lines. 2528bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) address.SetRawInfo(ADDRESS_HOME_STREET_ADDRESS, short_street_address); 2538bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("456 Nowhere Ln."), 2548bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) address.GetRawInfo(ADDRESS_HOME_LINE1)); 2558bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_LINE2)); 2568bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 2578bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) // An empty address should clear out all address lines. 2588bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) address.SetRawInfo(ADDRESS_HOME_STREET_ADDRESS, long_street_address); 2598bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) address.SetRawInfo(ADDRESS_HOME_STREET_ADDRESS, empty_street_address); 2608bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_LINE1)); 2618bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_LINE2)); 2628bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)} 2638bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 264116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Street addresses should be set properly. 265ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben MurdochTEST(AddressTest, SetStreetAddress) { 2668bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) const base::string16 empty_street_address; 2678bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) const base::string16 multi_line_street_address = 2688bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) ASCIIToUTF16("789 Fancy Pkwy.\n" 269f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) "Unit 3.14\n" 270f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) "Box 9"); 271116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const base::string16 single_line_street_address = 272116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ASCIIToUTF16("123 Main, Apt 7"); 2738bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) const AutofillType type = AutofillType(ADDRESS_HOME_STREET_ADDRESS); 2748bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 2758bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) // Start with a non-empty address. 276ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch Address address; 277ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch address.SetRawInfo(ADDRESS_HOME_LINE1, ASCIIToUTF16("123 Example Ave.")); 278ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch address.SetRawInfo(ADDRESS_HOME_LINE2, ASCIIToUTF16("Apt. 42")); 279f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) address.SetRawInfo(ADDRESS_HOME_LINE3, ASCIIToUTF16("and a half")); 280ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE1).empty()); 281ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE2).empty()); 282f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE3).empty()); 283ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 2848bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) // Attempting to set a multi-line address should succeed. 2858bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(address.SetInfo(type, multi_line_street_address, "en-US")); 2868bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("789 Fancy Pkwy."), 2878bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) address.GetRawInfo(ADDRESS_HOME_LINE1)); 2888bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("Unit 3.14"), address.GetRawInfo(ADDRESS_HOME_LINE2)); 289f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("Box 9"), address.GetRawInfo(ADDRESS_HOME_LINE3)); 2908bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 291116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Setting a single line street address should clear out subsequent lines. 292116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_TRUE(address.SetInfo(type, single_line_street_address, "en-US")); 293116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(single_line_street_address, address.GetRawInfo(ADDRESS_HOME_LINE1)); 294116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_LINE2)); 295116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_LINE3)); 296116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 2978bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) // Attempting to set an empty address should also succeed, and clear out the 2988bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) // previously stored data. 299116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_TRUE(address.SetInfo(type, multi_line_street_address, "en-US")); 3008bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE1).empty()); 3018bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE2).empty()); 302f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE3).empty()); 3038bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(address.SetInfo(type, empty_street_address, "en-US")); 3048bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_LINE1)); 3058bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_LINE2)); 306f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_LINE3)); 307ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch} 308ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 309a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// Verifies that Address::SetInfio() rejects setting data for 310a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// ADDRESS_HOME_STREET_ADDRESS if the data has any interior blank lines. 311a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)TEST(AddressTest, SetStreetAddressRejectsAddressesWithInteriorBlankLines) { 312a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Start with a non-empty address. 313a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) Address address; 314a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) address.SetRawInfo(ADDRESS_HOME_LINE1, ASCIIToUTF16("123 Example Ave.")); 315a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) address.SetRawInfo(ADDRESS_HOME_LINE2, ASCIIToUTF16("Apt. 42")); 316a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE1).empty()); 317a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE2).empty()); 318a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_STREET_ADDRESS).empty()); 319a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 320a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Attempting to set an address with interior blank lines should fail, and 321a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // clear out the previously stored address. 322a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) EXPECT_FALSE(address.SetInfo(AutofillType(ADDRESS_HOME_STREET_ADDRESS), 323a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) ASCIIToUTF16("Address line 1\n" 324a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) "\n" 325a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) "Address line 3"), 326a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) "en-US")); 327a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_LINE1)); 328a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_LINE2)); 329a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_STREET_ADDRESS)); 330a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)} 331a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 332a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// Verifies that Address::SetInfio() rejects setting data for 333a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// ADDRESS_HOME_STREET_ADDRESS if the data has any leading blank lines. 334a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)TEST(AddressTest, SetStreetAddressRejectsAddressesWithLeadingBlankLines) { 335a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Start with a non-empty address. 336a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) Address address; 337a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) address.SetRawInfo(ADDRESS_HOME_LINE1, ASCIIToUTF16("123 Example Ave.")); 338a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) address.SetRawInfo(ADDRESS_HOME_LINE2, ASCIIToUTF16("Apt. 42")); 339a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE1).empty()); 340a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE2).empty()); 341a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_STREET_ADDRESS).empty()); 342a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 343a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Attempting to set an address with leading blank lines should fail, and 344a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // clear out the previously stored address. 345a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) EXPECT_FALSE(address.SetInfo(AutofillType(ADDRESS_HOME_STREET_ADDRESS), 346a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) ASCIIToUTF16("\n" 347a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) "Address line 2" 348a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) "Address line 3"), 349a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) "en-US")); 350a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_LINE1)); 351a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_LINE2)); 352a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_STREET_ADDRESS)); 353a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)} 354a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 355a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// Verifies that Address::SetInfio() rejects setting data for 356a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// ADDRESS_HOME_STREET_ADDRESS if the data has any trailing blank lines. 357a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)TEST(AddressTest, SetStreetAddressRejectsAddressesWithTrailingBlankLines) { 358a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Start with a non-empty address. 359a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) Address address; 360a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) address.SetRawInfo(ADDRESS_HOME_LINE1, ASCIIToUTF16("123 Example Ave.")); 361a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) address.SetRawInfo(ADDRESS_HOME_LINE2, ASCIIToUTF16("Apt. 42")); 362a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE1).empty()); 363a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE2).empty()); 364a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_STREET_ADDRESS).empty()); 365a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 366a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Attempting to set an address with leading blank lines should fail, and 367a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // clear out the previously stored address. 368a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) EXPECT_FALSE(address.SetInfo(AutofillType(ADDRESS_HOME_STREET_ADDRESS), 369a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) ASCIIToUTF16("Address line 1" 370a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) "Address line 2" 371a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) "\n"), 372a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) "en-US")); 373a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_LINE1)); 374a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_LINE2)); 375a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_STREET_ADDRESS)); 376a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)} 377a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 378c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace autofill 379