builtin_provider_unittest.cc revision c2db58bd994c04d98e4ee2cd7565b71548655fe3
1710632d07b13609444626367bebd34c0af3acb6aMikhail Glushenkov// Copyright (c) 2012 The Chromium Authors. All rights reserved. 26091ebd172a16a10f1ea66061a5fa7cbf5139e56Reid Spencer// Use of this source code is governed by a BSD-style license that can be 36091ebd172a16a10f1ea66061a5fa7cbf5139e56Reid Spencer// found in the LICENSE file. 46091ebd172a16a10f1ea66061a5fa7cbf5139e56Reid Spencer 57ed47a13356daed2a34cd2209a31f92552e3bdd8Chris Lattner#include "chrome/browser/autocomplete/builtin_provider.h" 67ed47a13356daed2a34cd2209a31f92552e3bdd8Chris Lattner 76091ebd172a16a10f1ea66061a5fa7cbf5139e56Reid Spencer#include "base/message_loop/message_loop.h" 86091ebd172a16a10f1ea66061a5fa7cbf5139e56Reid Spencer#include "base/strings/utf_string_conversions.h" 927107f6ab4627fa38bcacad6757ed6d52910f880Bill Wendling#include "chrome/browser/autocomplete/autocomplete_input.h" 1027107f6ab4627fa38bcacad6757ed6d52910f880Bill Wendling#include "chrome/browser/autocomplete/autocomplete_match.h" 1127107f6ab4627fa38bcacad6757ed6d52910f880Bill Wendling#include "chrome/browser/autocomplete/autocomplete_provider.h" 1227107f6ab4627fa38bcacad6757ed6d52910f880Bill Wendling#include "chrome/common/url_constants.h" 1327107f6ab4627fa38bcacad6757ed6d52910f880Bill Wendling#include "chrome/test/base/testing_browser_process.h" 146091ebd172a16a10f1ea66061a5fa7cbf5139e56Reid Spencer#include "testing/gtest/include/gtest/gtest.h" 156091ebd172a16a10f1ea66061a5fa7cbf5139e56Reid Spencer#include "url/gurl.h" 16674be02d525d4e24bc6943ed9274958c580bcfbcJakub Staszak 17674be02d525d4e24bc6943ed9274958c580bcfbcJakub Staszakclass BuiltinProviderTest : public testing::Test { 186091ebd172a16a10f1ea66061a5fa7cbf5139e56Reid Spencer protected: 19d509d0b532ec2358b3f341d4a4cd1411cb8b5db2Chris Lattner template<class ResultType> 200319888773b36dd61d7d2283cb9a26cac1e5abe8Bill Wendling struct test_data { 213467e30edf63b6d8a8d446186674ba9e4b7885a9Bill Wendling const string16 input; 2222bd64173981bf1251c4b3bfc684207340534ba3Bill Wendling const size_t num_results; 2358d74910c6b82e622ecbb57d6644d48fec5a5c0fChris Lattner const ResultType output[3]; 246091ebd172a16a10f1ea66061a5fa7cbf5139e56Reid Spencer }; 256091ebd172a16a10f1ea66061a5fa7cbf5139e56Reid Spencer 26d426a642a23a234547cbc7061f5bfec157673249Bill Wendling BuiltinProviderTest() : builtin_provider_(NULL) {} 27702cc91aa1bd41540e8674921ae7ac89a4ff061fBill Wendling virtual ~BuiltinProviderTest() {} 28f6670729aabc1fab85238d2b306a1c1767a807bbBill Wendling 29817abdd8b055059e5930a15704b9f52da4236456Bill Wendling virtual void SetUp(); 30817abdd8b055059e5930a15704b9f52da4236456Bill Wendling virtual void TearDown(); 316dc3781d44e56f0addf28b06232a50f3f9e6b1afBill Wendling 322c79ecbd704c656178ffa43d5a58ebe3ca188b40Bill Wendling template<class ResultType> 33ad9a9e15595bc9d5ba1ed752caf8572957f77a3dDuncan Sands void RunTest(test_data<ResultType>* builtin_cases, 34ad9a9e15595bc9d5ba1ed752caf8572957f77a3dDuncan Sands int num_cases, 351d3dcfe4246b4d45fa78a8dfd0a11c7fff842c15Bill Wendling ResultType AutocompleteMatch::* member); 3627107f6ab4627fa38bcacad6757ed6d52910f880Bill Wendling 3727107f6ab4627fa38bcacad6757ed6d52910f880Bill Wendling protected: 381d3dcfe4246b4d45fa78a8dfd0a11c7fff842c15Bill Wendling scoped_refptr<BuiltinProvider> builtin_provider_; 391d3dcfe4246b4d45fa78a8dfd0a11c7fff842c15Bill Wendling}; 401d3dcfe4246b4d45fa78a8dfd0a11c7fff842c15Bill Wendling 41034b94b17006f51722886b0f2283fb6fb19aca1fBill Wendlingvoid BuiltinProviderTest::SetUp() { 426765834754cbb3cb0f15b4b15e98c5e73fa50066Bill Wendling builtin_provider_ = new BuiltinProvider(NULL, NULL); 431d3dcfe4246b4d45fa78a8dfd0a11c7fff842c15Bill Wendling} 4473dee180c836270644dfa7d90f9c5ba877567999Bill Wendling 45f3d1500ab2c7364d3d0fb73a7e1b8c6339ab48b1Bill Wendlingvoid BuiltinProviderTest::TearDown() { 4673dee180c836270644dfa7d90f9c5ba877567999Bill Wendling builtin_provider_ = NULL; 4773dee180c836270644dfa7d90f9c5ba877567999Bill Wendling} 4873dee180c836270644dfa7d90f9c5ba877567999Bill Wendling 49f3d1500ab2c7364d3d0fb73a7e1b8c6339ab48b1Bill Wendlingtemplate<class ResultType> 5073dee180c836270644dfa7d90f9c5ba877567999Bill Wendlingvoid BuiltinProviderTest::RunTest(test_data<ResultType>* builtin_cases, 5111d00420e42ba88c3b48cab997965a7be79315e2Bill Wendling int num_cases, 5211d00420e42ba88c3b48cab997965a7be79315e2Bill Wendling ResultType AutocompleteMatch::* member) { 53f3d1500ab2c7364d3d0fb73a7e1b8c6339ab48b1Bill Wendling ACMatches matches; 5411d00420e42ba88c3b48cab997965a7be79315e2Bill Wendling for (int i = 0; i < num_cases; ++i) { 5511d00420e42ba88c3b48cab997965a7be79315e2Bill Wendling AutocompleteInput input(builtin_cases[i].input, string16::npos, string16(), 5611d00420e42ba88c3b48cab997965a7be79315e2Bill Wendling GURL(), AutocompleteInput::INVALID_SPEC, true, 5711d00420e42ba88c3b48cab997965a7be79315e2Bill Wendling false, true, AutocompleteInput::ALL_MATCHES); 5811d00420e42ba88c3b48cab997965a7be79315e2Bill Wendling builtin_provider_->Start(input, false); 5911d00420e42ba88c3b48cab997965a7be79315e2Bill Wendling EXPECT_TRUE(builtin_provider_->done()); 60629fb82419d9bfff6ae475363bcce66192dfcc8eBill Wendling matches = builtin_provider_->matches(); 615a0eeb5a9d727940b1dbe8dff6e9aa292ada0f6aBill Wendling EXPECT_EQ(builtin_cases[i].num_results, matches.size()) << 62480b1b28ea6fc1bb5c78d99472df624cfd3fce47Bill Wendling ASCIIToUTF16("Input was: ") << builtin_cases[i].input; 63480b1b28ea6fc1bb5c78d99472df624cfd3fce47Bill Wendling if (matches.size() == builtin_cases[i].num_results) { 64480b1b28ea6fc1bb5c78d99472df624cfd3fce47Bill Wendling for (size_t j = 0; j < builtin_cases[i].num_results; ++j) { 656765834754cbb3cb0f15b4b15e98c5e73fa50066Bill Wendling EXPECT_EQ(builtin_cases[i].output[j], matches[j].*member) << 66f6670729aabc1fab85238d2b306a1c1767a807bbBill Wendling ASCIIToUTF16("Input was: ") << builtin_cases[i].input; 67480b1b28ea6fc1bb5c78d99472df624cfd3fce47Bill Wendling EXPECT_FALSE(matches[j].allowed_to_be_default_match); 68480b1b28ea6fc1bb5c78d99472df624cfd3fce47Bill Wendling } 69480b1b28ea6fc1bb5c78d99472df624cfd3fce47Bill Wendling } 70480b1b28ea6fc1bb5c78d99472df624cfd3fce47Bill Wendling } 719a419f656e278b96e9dfe739cd63c7bff9a4e1fdQuentin Colombet} 72480b1b28ea6fc1bb5c78d99472df624cfd3fce47Bill Wendling 73480b1b28ea6fc1bb5c78d99472df624cfd3fce47Bill WendlingTEST_F(BuiltinProviderTest, TypingScheme) { 74480b1b28ea6fc1bb5c78d99472df624cfd3fce47Bill Wendling const string16 kAbout = ASCIIToUTF16(chrome::kAboutScheme); 75480b1b28ea6fc1bb5c78d99472df624cfd3fce47Bill Wendling const string16 kChrome = ASCIIToUTF16(chrome::kChromeUIScheme); 7667ae13575900e8efd056672987249fd0adbf5e73James Molloy const string16 kSeparator1 = ASCIIToUTF16(":"); 77480b1b28ea6fc1bb5c78d99472df624cfd3fce47Bill Wendling const string16 kSeparator2 = ASCIIToUTF16(":/"); 78480b1b28ea6fc1bb5c78d99472df624cfd3fce47Bill Wendling const string16 kSeparator3 = ASCIIToUTF16(content::kStandardSchemeSeparator); 79480b1b28ea6fc1bb5c78d99472df624cfd3fce47Bill Wendling 803a106e60366a51b4594ec303ff8dbbc58913227fBill Wendling // These default URLs should correspond with those in BuiltinProvider::Start. 81480b1b28ea6fc1bb5c78d99472df624cfd3fce47Bill Wendling const GURL kURL1 = GURL(chrome::kChromeUIChromeURLsURL); 82480b1b28ea6fc1bb5c78d99472df624cfd3fce47Bill Wendling const GURL kURL2 = GURL(chrome::kChromeUISettingsURL); 83480b1b28ea6fc1bb5c78d99472df624cfd3fce47Bill Wendling const GURL kURL3 = GURL(chrome::kChromeUIVersionURL); 84480b1b28ea6fc1bb5c78d99472df624cfd3fce47Bill Wendling 85480b1b28ea6fc1bb5c78d99472df624cfd3fce47Bill Wendling test_data<GURL> typing_scheme_cases[] = { 86480b1b28ea6fc1bb5c78d99472df624cfd3fce47Bill Wendling // Typing an unrelated scheme should give nothing. 87480b1b28ea6fc1bb5c78d99472df624cfd3fce47Bill Wendling {ASCIIToUTF16("h"), 0, {}}, 88480b1b28ea6fc1bb5c78d99472df624cfd3fce47Bill Wendling {ASCIIToUTF16("http"), 0, {}}, 89480b1b28ea6fc1bb5c78d99472df624cfd3fce47Bill Wendling {ASCIIToUTF16("file"), 0, {}}, 906765834754cbb3cb0f15b4b15e98c5e73fa50066Bill Wendling {ASCIIToUTF16("abouz"), 0, {}}, 916765834754cbb3cb0f15b4b15e98c5e73fa50066Bill Wendling {ASCIIToUTF16("aboutt"), 0, {}}, 92f6670729aabc1fab85238d2b306a1c1767a807bbBill Wendling {ASCIIToUTF16("aboutt:"), 0, {}}, 93480b1b28ea6fc1bb5c78d99472df624cfd3fce47Bill Wendling {ASCIIToUTF16("chroma"), 0, {}}, 94480b1b28ea6fc1bb5c78d99472df624cfd3fce47Bill Wendling {ASCIIToUTF16("chromee"), 0, {}}, 95114baee1fa017daefad2339c77b45b9ca3d79a41Bill Wendling {ASCIIToUTF16("chromee:"), 0, {}}, 96480b1b28ea6fc1bb5c78d99472df624cfd3fce47Bill Wendling 97480b1b28ea6fc1bb5c78d99472df624cfd3fce47Bill Wendling // Typing a portion of about:// should give the default urls. 980319888773b36dd61d7d2283cb9a26cac1e5abe8Bill Wendling {kAbout.substr(0, 1), 3, {kURL1, kURL2, kURL3}}, 990319888773b36dd61d7d2283cb9a26cac1e5abe8Bill Wendling {ASCIIToUTF16("A"), 3, {kURL1, kURL2, kURL3}}, 1003a4779a9211281a1d0c27c97037342329035a185NAKAMURA Takumi {kAbout, 3, {kURL1, kURL2, kURL3}}, 1013a4779a9211281a1d0c27c97037342329035a185NAKAMURA Takumi {kAbout + kSeparator1, 3, {kURL1, kURL2, kURL3}}, 1026f78fbbc630d2b86fb752574f5ad74473f57dfb1Chandler Carruth {kAbout + kSeparator2, 3, {kURL1, kURL2, kURL3}}, 1036f78fbbc630d2b86fb752574f5ad74473f57dfb1Chandler Carruth {kAbout + kSeparator3, 3, {kURL1, kURL2, kURL3}}, 1046765834754cbb3cb0f15b4b15e98c5e73fa50066Bill Wendling {ASCIIToUTF16("aBoUT://"), 3, {kURL1, kURL2, kURL3}}, 1056765834754cbb3cb0f15b4b15e98c5e73fa50066Bill Wendling 10627107f6ab4627fa38bcacad6757ed6d52910f880Bill Wendling // Typing a portion of chrome:// should give the default urls. 10727107f6ab4627fa38bcacad6757ed6d52910f880Bill Wendling {kChrome.substr(0, 1), 3, {kURL1, kURL2, kURL3}}, 108d426a642a23a234547cbc7061f5bfec157673249Bill Wendling {ASCIIToUTF16("C"), 3, {kURL1, kURL2, kURL3}}, 10927107f6ab4627fa38bcacad6757ed6d52910f880Bill Wendling {kChrome, 3, {kURL1, kURL2, kURL3}}, 1102c79ecbd704c656178ffa43d5a58ebe3ca188b40Bill Wendling {kChrome + kSeparator1, 3, {kURL1, kURL2, kURL3}}, 111c22f4aa886443507f8406d30d118fdeeac6a8c6cBill Wendling {kChrome + kSeparator2, 3, {kURL1, kURL2, kURL3}}, 112c22f4aa886443507f8406d30d118fdeeac6a8c6cBill Wendling {kChrome + kSeparator3, 3, {kURL1, kURL2, kURL3}}, 113c22f4aa886443507f8406d30d118fdeeac6a8c6cBill Wendling {ASCIIToUTF16("ChRoMe://"), 3, {kURL1, kURL2, kURL3}}, 114c22f4aa886443507f8406d30d118fdeeac6a8c6cBill Wendling }; 115c08a5ef6581f2c7550e92d31f63cd65ec29c39e0Bill Wendling 116169d5270751597aed4095ead00401a3374906147Bill Wendling RunTest<GURL>(typing_scheme_cases, arraysize(typing_scheme_cases), 117169d5270751597aed4095ead00401a3374906147Bill Wendling &AutocompleteMatch::destination_url); 1182c79ecbd704c656178ffa43d5a58ebe3ca188b40Bill Wendling} 119c08a5ef6581f2c7550e92d31f63cd65ec29c39e0Bill Wendling 120c08a5ef6581f2c7550e92d31f63cd65ec29c39e0Bill WendlingTEST_F(BuiltinProviderTest, NonChromeURLs) { 121c08a5ef6581f2c7550e92d31f63cd65ec29c39e0Bill Wendling test_data<GURL> non_chrome_url_cases[] = { 122c08a5ef6581f2c7550e92d31f63cd65ec29c39e0Bill Wendling // Typing an unrelated scheme should give nothing. 123c08a5ef6581f2c7550e92d31f63cd65ec29c39e0Bill Wendling {ASCIIToUTF16("g@rb@g3"), 0, {}}, 124c22f4aa886443507f8406d30d118fdeeac6a8c6cBill Wendling {ASCIIToUTF16("www.google.com"), 0, {}}, 125c22f4aa886443507f8406d30d118fdeeac6a8c6cBill Wendling {ASCIIToUTF16("http:www.google.com"), 0, {}}, 126c22f4aa886443507f8406d30d118fdeeac6a8c6cBill Wendling {ASCIIToUTF16("http://www.google.com"), 0, {}}, 127c22f4aa886443507f8406d30d118fdeeac6a8c6cBill Wendling {ASCIIToUTF16("file:filename"), 0, {}}, 128eddab1550ee10cce3bb26a26e88529cb19451aa3NAKAMURA Takumi {ASCIIToUTF16("scheme:"), 0, {}}, 129eddab1550ee10cce3bb26a26e88529cb19451aa3NAKAMURA Takumi {ASCIIToUTF16("scheme://"), 0, {}}, 130eddab1550ee10cce3bb26a26e88529cb19451aa3NAKAMURA Takumi {ASCIIToUTF16("scheme://host"), 0, {}}, 1315a4041e7282ca1dba93fe1a97c8260c0ef621f5dBill Wendling {ASCIIToUTF16("scheme:host/path?query#ref"), 0, {}}, 1326dc3781d44e56f0addf28b06232a50f3f9e6b1afBill Wendling {ASCIIToUTF16("scheme://host/path?query#ref"), 0, {}}, 1336dc3781d44e56f0addf28b06232a50f3f9e6b1afBill Wendling }; 1345a4041e7282ca1dba93fe1a97c8260c0ef621f5dBill Wendling 1355a4041e7282ca1dba93fe1a97c8260c0ef621f5dBill Wendling RunTest<GURL>(non_chrome_url_cases, arraysize(non_chrome_url_cases), 1365a4041e7282ca1dba93fe1a97c8260c0ef621f5dBill Wendling &AutocompleteMatch::destination_url); 1375a4041e7282ca1dba93fe1a97c8260c0ef621f5dBill Wendling} 1386dc3781d44e56f0addf28b06232a50f3f9e6b1afBill Wendling 1391d3dcfe4246b4d45fa78a8dfd0a11c7fff842c15Bill WendlingTEST_F(BuiltinProviderTest, ChromeURLs) { 140ef99fe8efaa6cb74c66e570a6ef467debca92911Bill Wendling const string16 kAbout = ASCIIToUTF16(chrome::kAboutScheme); 141e66f3d3ba0ea9f82f65a29c47fc37e997cbf0aceBill Wendling const string16 kChrome = ASCIIToUTF16(chrome::kChromeUIScheme); 142ef99fe8efaa6cb74c66e570a6ef467debca92911Bill Wendling const string16 kSeparator1 = ASCIIToUTF16(":"); 1431d3dcfe4246b4d45fa78a8dfd0a11c7fff842c15Bill Wendling const string16 kSeparator2 = ASCIIToUTF16(":/"); 144943c29135e03e55f9a5dab393786171a4a536482Bill Wendling const string16 kSeparator3 = ASCIIToUTF16(content::kStandardSchemeSeparator); 145e66f3d3ba0ea9f82f65a29c47fc37e997cbf0aceBill Wendling 14630b483c94001927b3593ed200e823104bab51660Bill Wendling // This makes assumptions about the chrome URLs listed by the BuiltinProvider. 147c22f4aa886443507f8406d30d118fdeeac6a8c6cBill Wendling // Currently they are derived from chrome::kChromeHostURLs[]. 148c22f4aa886443507f8406d30d118fdeeac6a8c6cBill Wendling const string16 kHostM1 = ASCIIToUTF16(content::kChromeUIMediaInternalsHost); 149c22f4aa886443507f8406d30d118fdeeac6a8c6cBill Wendling const string16 kHostM2 = ASCIIToUTF16(chrome::kChromeUIMemoryHost); 150c22f4aa886443507f8406d30d118fdeeac6a8c6cBill Wendling const string16 kHostM3 = ASCIIToUTF16(chrome::kChromeUIMemoryInternalsHost); 15160507d53e7e8e6b0c537675f68204a93c3033de7Bill Wendling const GURL kURLM1 = GURL(kChrome + kSeparator3 + kHostM1); 15292e287f5bde8d34af9c3f2979afb6cd05bfb452cBill Wendling const GURL kURLM2 = GURL(kChrome + kSeparator3 + kHostM2); 15392e287f5bde8d34af9c3f2979afb6cd05bfb452cBill Wendling const GURL kURLM3 = GURL(kChrome + kSeparator3 + kHostM3); 15492e287f5bde8d34af9c3f2979afb6cd05bfb452cBill Wendling 1552d5be6c313c0f9e23e56620fa8f8ae8d9b539bf0Bill Wendling test_data<GURL> chrome_url_cases[] = { 1562d5be6c313c0f9e23e56620fa8f8ae8d9b539bf0Bill Wendling // Typing an about URL with an unknown host should give nothing. 1572d5be6c313c0f9e23e56620fa8f8ae8d9b539bf0Bill Wendling {kAbout + kSeparator1 + ASCIIToUTF16("host"), 0, {}}, 158c08a5ef6581f2c7550e92d31f63cd65ec29c39e0Bill Wendling {kAbout + kSeparator2 + ASCIIToUTF16("host"), 0, {}}, 1593467e30edf63b6d8a8d446186674ba9e4b7885a9Bill Wendling {kAbout + kSeparator3 + ASCIIToUTF16("host"), 0, {}}, 1603467e30edf63b6d8a8d446186674ba9e4b7885a9Bill Wendling 161bb08593980b16fbd9758da6ca4fa9c7964f2f926Bill Wendling // Typing a chrome URL with an unknown host should give nothing. 162bb08593980b16fbd9758da6ca4fa9c7964f2f926Bill Wendling {kChrome + kSeparator1 + ASCIIToUTF16("host"), 0, {}}, 163bb08593980b16fbd9758da6ca4fa9c7964f2f926Bill Wendling {kChrome + kSeparator2 + ASCIIToUTF16("host"), 0, {}}, 164827cde1c8319e51463007078a7ce3660ebc93036Duncan Sands {kChrome + kSeparator3 + ASCIIToUTF16("host"), 0, {}}, 165827cde1c8319e51463007078a7ce3660ebc93036Duncan Sands 166e66f3d3ba0ea9f82f65a29c47fc37e997cbf0aceBill Wendling // Typing an about URL should provide matching URLs. 16727107f6ab4627fa38bcacad6757ed6d52910f880Bill Wendling {kAbout + kSeparator1 + kHostM1.substr(0, 1), 3, {kURLM1, kURLM2, kURLM3}}, 16827107f6ab4627fa38bcacad6757ed6d52910f880Bill Wendling {kAbout + kSeparator2 + kHostM1.substr(0, 2), 3, {kURLM1, kURLM2, kURLM3}}, 16918e7211068c9d2c6204512f9c468ee179818a4b6Bill Wendling {kAbout + kSeparator3 + kHostM1.substr(0, 3), 1, {kURLM1}}, 17099faa3b4ec6d03ac7808fe4ff3fbf3d04e375502Bill Wendling {kAbout + kSeparator3 + kHostM2.substr(0, 3), 2, {kURLM2, kURLM3}}, 17107aae2e7d58fe23e370e0cbb9e1a3def99434c36Bill Wendling {kAbout + kSeparator3 + kHostM1, 1, {kURLM1}}, 17207aae2e7d58fe23e370e0cbb9e1a3def99434c36Bill Wendling {kAbout + kSeparator2 + kHostM2, 2, {kURLM2, kURLM3}}, 17307aae2e7d58fe23e370e0cbb9e1a3def99434c36Bill Wendling {kAbout + kSeparator2 + kHostM3, 1, {kURLM3}}, 17407aae2e7d58fe23e370e0cbb9e1a3def99434c36Bill Wendling 17507aae2e7d58fe23e370e0cbb9e1a3def99434c36Bill Wendling // Typing a chrome URL should provide matching URLs. 17607aae2e7d58fe23e370e0cbb9e1a3def99434c36Bill Wendling {kChrome + kSeparator1 + kHostM1.substr(0, 1), 3, {kURLM1, kURLM2, kURLM3}}, 177a90a99a82b9c5c39fc6dbee9c266dcd7b107fe2fBill Wendling {kChrome + kSeparator2 + kHostM1.substr(0, 2), 3, {kURLM1, kURLM2, kURLM3}}, 1787d38c109aab8654e63e9071c7d948661f6b58433Bill Wendling {kChrome + kSeparator3 + kHostM1.substr(0, 3), 1, {kURLM1}}, 179a90a99a82b9c5c39fc6dbee9c266dcd7b107fe2fBill Wendling {kChrome + kSeparator3 + kHostM2.substr(0, 3), 2, {kURLM2, kURLM3}}, 18073dee180c836270644dfa7d90f9c5ba877567999Bill Wendling {kChrome + kSeparator3 + kHostM1, 1, {kURLM1}}, 1810976e00fd1cbf4128daeb72efd8957d00383fda9Bill Wendling {kChrome + kSeparator2 + kHostM2, 2, {kURLM2, kURLM3}}, 182ec2589863b32da169240c4fa120ef1e3798615d4Bill Wendling {kChrome + kSeparator2 + kHostM3, 1, {kURLM3}}, 1830976e00fd1cbf4128daeb72efd8957d00383fda9Bill Wendling }; 18473dee180c836270644dfa7d90f9c5ba877567999Bill Wendling 185606c8e36dfdd28fc589356addd3e2cbb89a32e4dBill Wendling RunTest<GURL>(chrome_url_cases, arraysize(chrome_url_cases), 1860976e00fd1cbf4128daeb72efd8957d00383fda9Bill Wendling &AutocompleteMatch::destination_url); 18787e10dfefa94f77937c37b0eb51095540d675cbcBill Wendling} 18887e10dfefa94f77937c37b0eb51095540d675cbcBill Wendling 1896bdbf061c353295669b6bfc271b948158602d1bcBill Wendling#if !defined(OS_ANDROID) 19087e10dfefa94f77937c37b0eb51095540d675cbcBill Wendling// Disabled on Android where we use native UI instead of chrome://settings. 1916bdbf061c353295669b6bfc271b948158602d1bcBill WendlingTEST_F(BuiltinProviderTest, ChromeSettingsSubpages) { 19287e10dfefa94f77937c37b0eb51095540d675cbcBill Wendling // This makes assumptions about the chrome URLs listed by the BuiltinProvider. 19387e10dfefa94f77937c37b0eb51095540d675cbcBill Wendling // Currently they are derived from chrome::kChromeHostURLs[]. 19487e10dfefa94f77937c37b0eb51095540d675cbcBill Wendling const string16 kSettings = ASCIIToUTF16(chrome::kChromeUISettingsURL); 1956bdbf061c353295669b6bfc271b948158602d1bcBill Wendling const string16 kDefaultPage1 = ASCIIToUTF16(chrome::kAutofillSubPage); 19687e10dfefa94f77937c37b0eb51095540d675cbcBill Wendling const string16 kDefaultPage2 = ASCIIToUTF16(chrome::kClearBrowserDataSubPage); 19787e10dfefa94f77937c37b0eb51095540d675cbcBill Wendling const GURL kDefaultURL1 = GURL(kSettings + kDefaultPage1); 1987d38c109aab8654e63e9071c7d948661f6b58433Bill Wendling const GURL kDefaultURL2 = GURL(kSettings + kDefaultPage2); 199ec2589863b32da169240c4fa120ef1e3798615d4Bill Wendling const string16 kPage1 = ASCIIToUTF16(chrome::kSearchEnginesSubPage); 20058d74910c6b82e622ecbb57d6644d48fec5a5c0fChris Lattner const string16 kPage2 = ASCIIToUTF16(chrome::kSyncSetupSubPage); 201ec2589863b32da169240c4fa120ef1e3798615d4Bill Wendling const GURL kURL1 = GURL(kSettings + kPage1); 202ec2589863b32da169240c4fa120ef1e3798615d4Bill Wendling const GURL kURL2 = GURL(kSettings + kPage2); 203d05204aea4977eaec25e96bc7605a7bb9d806fc0Bill Wendling 204d05204aea4977eaec25e96bc7605a7bb9d806fc0Bill Wendling test_data<GURL> settings_subpage_cases[] = { 205d05204aea4977eaec25e96bc7605a7bb9d806fc0Bill Wendling // Typing the settings path should show settings and the first two subpages. 206d05204aea4977eaec25e96bc7605a7bb9d806fc0Bill Wendling {kSettings, 3, {GURL(kSettings), kDefaultURL1, kDefaultURL2}}, 207710632d07b13609444626367bebd34c0af3acb6aMikhail Glushenkov 20858d74910c6b82e622ecbb57d6644d48fec5a5c0fChris Lattner // Typing a subpage path should return the appropriate results. 209c22f4aa886443507f8406d30d118fdeeac6a8c6cBill Wendling {kSettings + kPage1.substr(0, 1), 2, {kURL1, kURL2}}, 21058d74910c6b82e622ecbb57d6644d48fec5a5c0fChris Lattner {kSettings + kPage1.substr(0, 2), 1, {kURL1}}, 211710632d07b13609444626367bebd34c0af3acb6aMikhail Glushenkov {kSettings + kPage1.substr(0, kPage1.length() - 1), 1, {kURL1}}, 21218e7211068c9d2c6204512f9c468ee179818a4b6Bill Wendling {kSettings + kPage1, 1, {kURL1}}, 2138e47daf2858e980210f3e1f007036b24da342c29Bill Wendling {kSettings + kPage2, 1, {kURL2}}, 21428d65722d6f283b327b5815914382077fe9c0ab4Bill Wendling }; 21532a57958226e369f964a034da2ce7083a1a34297Bill Wendling 2161bbd644301ed4d8a7efd4ceb15f71c56fa914f28Bill Wendling RunTest<GURL>(settings_subpage_cases, arraysize(settings_subpage_cases), 21758d74910c6b82e622ecbb57d6644d48fec5a5c0fChris Lattner &AutocompleteMatch::destination_url); 218defaca00b8087d452df2b783250a48a32658a910Bill Wendling} 219defaca00b8087d452df2b783250a48a32658a910Bill Wendling#endif 220defaca00b8087d452df2b783250a48a32658a910Bill Wendling