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 "chrome/browser/profiles/profile.h" 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/search_engines/template_url_prepopulate_data.h" 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/search_engines/template_url_service.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/search_engines/template_url_service_factory.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/test/base/in_process_browser_test.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/test/base/ui_test_utils.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/base/net_util.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "net/dns/mock_host_resolver.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class TemplateURLScraperTest : public InProcessBrowserTest { 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TemplateURLScraperTest() { 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(TemplateURLScraperTest); 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)class TemplateURLServiceLoader { 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) explicit TemplateURLServiceLoader(TemplateURLService* model) : model_(model) { 284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) scoped_refptr<content::MessageLoopRunner> message_loop_runner = 294e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) new content::MessageLoopRunner; 304e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) scoped_ptr<TemplateURLService::Subscription> subscription = 314e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) model_->RegisterOnLoadedCallback( 324e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) message_loop_runner->QuitClosure()); 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) model_->Load(); 344e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) message_loop_runner->Run(); 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TemplateURLService* model_; 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(TemplateURLServiceLoader); 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TemplateURLScraperTest, ScrapeWithOnSubmit) { 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) host_resolver()->AddRule("*.foo.com", "localhost"); 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TemplateURLService* template_urls = 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TemplateURLServiceFactory::GetInstance(browser()->profile()); 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TemplateURLServiceLoader loader(template_urls); 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TemplateURLService::TemplateURLVector all_urls = 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) template_urls->GetTemplateURLs(); 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // We need to substract the default pre-populated engines that the profile is 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // set up with. 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) size_t default_index = 0; 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<TemplateURL*> prepopulate_urls; 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TemplateURLPrepopulateData::GetPrepopulatedEngines( 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) browser()->profile()->GetPrefs(), 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &prepopulate_urls, 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &default_index); 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(prepopulate_urls.size(), all_urls.size()); 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<HTTPTestServer> server( 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HTTPTestServer::CreateServerWithFileRootURL( 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"chrome/test/data/template_url_scraper/submit_handler", L"/", 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) g_browser_process->io_thread()->message_loop())); 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui_test_utils::NavigateToURLBlockUntilNavigationsComplete( 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) browser(), GURL("http://www.foo.com:1337/"), 2); 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) all_urls = template_urls->GetTemplateURLs(); 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(1, all_urls.size() - prepopulate_urls.size()); 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/ 78