Index: chrome/browser/search_engines/template_url_fetcher_unittest.cc |
diff --git a/chrome/browser/search_engines/template_url_fetcher_unittest.cc b/chrome/browser/search_engines/template_url_fetcher_unittest.cc |
deleted file mode 100644 |
index 3a51253b9df1742534eea39d0b9d27065118ac25..0000000000000000000000000000000000000000 |
--- a/chrome/browser/search_engines/template_url_fetcher_unittest.cc |
+++ /dev/null |
@@ -1,305 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "base/callback_helpers.h" |
-#include "base/files/file_util.h" |
-#include "base/memory/scoped_ptr.h" |
-#include "base/message_loop/message_loop.h" |
-#include "base/path_service.h" |
-#include "base/strings/utf_string_conversions.h" |
-#include "chrome/browser/search_engines/template_url_service_test_util.h" |
-#include "chrome/common/chrome_paths.h" |
-#include "chrome/test/base/testing_profile.h" |
-#include "components/search_engines/template_url.h" |
-#include "components/search_engines/template_url_fetcher.h" |
-#include "components/search_engines/template_url_service.h" |
-#include "net/test/embedded_test_server/embedded_test_server.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
-#include "url/gurl.h" |
- |
-using base::ASCIIToUTF16; |
- |
-// Basic set-up for TemplateURLFetcher tests. |
-class TemplateURLFetcherTest : public testing::Test { |
- public: |
- TemplateURLFetcherTest(); |
- |
- virtual void SetUp() OVERRIDE { |
- TestingProfile* profile = test_util_.profile(); |
- ASSERT_TRUE(profile->GetRequestContext()); |
- template_url_fetcher_.reset(new TemplateURLFetcher( |
- test_util_.model(), profile->GetRequestContext())); |
- |
- ASSERT_TRUE(test_server_.InitializeAndWaitUntilReady()); |
- } |
- |
- virtual void TearDown() OVERRIDE { |
- ASSERT_TRUE(test_server_.ShutdownAndWaitUntilComplete()); |
- } |
- |
- // Called when the callback is destroyed. |
- void DestroyedCallback(); |
- |
- // TemplateURLFetcherCallbacks implementation. (Although not derived from |
- // this class, this method handles those calls for the test.) |
- void ConfirmAddSearchProvider( |
- base::ScopedClosureRunner* callback_destruction_notifier, |
- scoped_ptr<TemplateURL> template_url); |
- |
- protected: |
- // Schedules the download of the url. |
- void StartDownload(const base::string16& keyword, |
- const std::string& osdd_file_name, |
- TemplateURLFetcher::ProviderType provider_type, |
- bool check_that_file_exists); |
- |
- // Waits for any downloads to finish. |
- void WaitForDownloadToFinish(); |
- |
- TemplateURLServiceTestUtil test_util_; |
- scoped_ptr<TemplateURLFetcher> template_url_fetcher_; |
- net::test_server::EmbeddedTestServer test_server_; |
- |
- // The last TemplateURL to come from a callback. |
- scoped_ptr<TemplateURL> last_callback_template_url_; |
- |
- // How many TemplateURLFetcherTestCallbacks have been destructed. |
- int callbacks_destroyed_; |
- |
- // How many times ConfirmAddSearchProvider has been called. |
- int add_provider_called_; |
- |
- // Is the code in WaitForDownloadToFinish in a message loop waiting for a |
- // callback to finish? |
- bool waiting_for_download_; |
- |
- private: |
- DISALLOW_COPY_AND_ASSIGN(TemplateURLFetcherTest); |
-}; |
- |
-TemplateURLFetcherTest::TemplateURLFetcherTest() |
- : callbacks_destroyed_(0), |
- add_provider_called_(0), |
- waiting_for_download_(false) { |
- base::FilePath src_dir; |
- CHECK(PathService::Get(base::DIR_SOURCE_ROOT, &src_dir)); |
- test_server_.ServeFilesFromDirectory( |
- src_dir.AppendASCII("chrome/test/data")); |
-} |
- |
-void TemplateURLFetcherTest::DestroyedCallback() { |
- callbacks_destroyed_++; |
- if (waiting_for_download_) |
- base::MessageLoop::current()->Quit(); |
-} |
- |
-void TemplateURLFetcherTest::ConfirmAddSearchProvider( |
- base::ScopedClosureRunner* callback_destruction_notifier, |
- scoped_ptr<TemplateURL> template_url) { |
- last_callback_template_url_ = template_url.Pass(); |
- add_provider_called_++; |
-} |
- |
-void TemplateURLFetcherTest::StartDownload( |
- const base::string16& keyword, |
- const std::string& osdd_file_name, |
- TemplateURLFetcher::ProviderType provider_type, |
- bool check_that_file_exists) { |
- |
- if (check_that_file_exists) { |
- base::FilePath osdd_full_path; |
- ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &osdd_full_path)); |
- osdd_full_path = osdd_full_path.AppendASCII(osdd_file_name); |
- ASSERT_TRUE(base::PathExists(osdd_full_path)); |
- ASSERT_FALSE(base::DirectoryExists(osdd_full_path)); |
- } |
- |
- // Start the fetch. |
- GURL osdd_url = test_server_.GetURL("/" + osdd_file_name); |
- GURL favicon_url; |
- base::ScopedClosureRunner* callback_destruction_notifier = |
- new base::ScopedClosureRunner( |
- base::Bind(&TemplateURLFetcherTest::DestroyedCallback, |
- base::Unretained(this))); |
- |
- template_url_fetcher_->ScheduleDownload( |
- keyword, osdd_url, favicon_url, |
- TemplateURLFetcher::URLFetcherCustomizeCallback(), |
- base::Bind(&TemplateURLFetcherTest::ConfirmAddSearchProvider, |
- base::Unretained(this), |
- base::Owned(callback_destruction_notifier)), |
- provider_type); |
-} |
- |
-void TemplateURLFetcherTest::WaitForDownloadToFinish() { |
- ASSERT_FALSE(waiting_for_download_); |
- waiting_for_download_ = true; |
- base::MessageLoop::current()->Run(); |
- waiting_for_download_ = false; |
-} |
- |
-TEST_F(TemplateURLFetcherTest, BasicAutodetectedTest) { |
- base::string16 keyword(ASCIIToUTF16("test")); |
- |
- test_util_.ChangeModelToLoadState(); |
- ASSERT_FALSE(test_util_.model()->GetTemplateURLForKeyword(keyword)); |
- |
- std::string osdd_file_name("simple_open_search.xml"); |
- StartDownload(keyword, osdd_file_name, |
- TemplateURLFetcher::AUTODETECTED_PROVIDER, true); |
- ASSERT_EQ(0, add_provider_called_); |
- ASSERT_EQ(0, callbacks_destroyed_); |
- |
- WaitForDownloadToFinish(); |
- ASSERT_EQ(0, add_provider_called_); |
- ASSERT_EQ(1, callbacks_destroyed_); |
- |
- const TemplateURL* t_url = test_util_.model()->GetTemplateURLForKeyword( |
- keyword); |
- ASSERT_TRUE(t_url); |
- EXPECT_EQ(ASCIIToUTF16("http://example.com/%s/other_stuff"), |
- t_url->url_ref().DisplayURL( |
- test_util_.model()->search_terms_data())); |
- EXPECT_TRUE(t_url->safe_for_autoreplace()); |
-} |
- |
-TEST_F(TemplateURLFetcherTest, DuplicatesThrownAway) { |
- base::string16 keyword(ASCIIToUTF16("test")); |
- |
- test_util_.ChangeModelToLoadState(); |
- ASSERT_FALSE(test_util_.model()->GetTemplateURLForKeyword(keyword)); |
- |
- std::string osdd_file_name("simple_open_search.xml"); |
- StartDownload(keyword, osdd_file_name, |
- TemplateURLFetcher::AUTODETECTED_PROVIDER, true); |
- ASSERT_EQ(0, add_provider_called_); |
- ASSERT_EQ(0, callbacks_destroyed_); |
- |
- struct { |
- std::string description; |
- std::string osdd_file_name; |
- base::string16 keyword; |
- TemplateURLFetcher::ProviderType provider_type; |
- } test_cases[] = { |
- { "Duplicate osdd url with autodetected provider.", osdd_file_name, |
- keyword + ASCIIToUTF16("1"), |
- TemplateURLFetcher::AUTODETECTED_PROVIDER }, |
- { "Duplicate keyword with autodetected provider.", osdd_file_name + "1", |
- keyword, TemplateURLFetcher::AUTODETECTED_PROVIDER }, |
- { "Duplicate osdd url with explicit provider.", osdd_file_name, |
- base::string16(), TemplateURLFetcher::EXPLICIT_PROVIDER }, |
- }; |
- |
- for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_cases); ++i) { |
- StartDownload(test_cases[i].keyword, test_cases[i].osdd_file_name, |
- test_cases[i].provider_type, false); |
- ASSERT_EQ(1, template_url_fetcher_->requests_count()) |
- << test_cases[i].description; |
- ASSERT_EQ(i + 1, static_cast<size_t>(callbacks_destroyed_)); |
- } |
- |
- WaitForDownloadToFinish(); |
- ASSERT_EQ(1 + ARRAYSIZE_UNSAFE(test_cases), |
- static_cast<size_t>(callbacks_destroyed_)); |
- ASSERT_EQ(0, add_provider_called_); |
-} |
- |
-TEST_F(TemplateURLFetcherTest, BasicExplicitTest) { |
- base::string16 keyword(ASCIIToUTF16("test")); |
- |
- test_util_.ChangeModelToLoadState(); |
- ASSERT_FALSE(test_util_.model()->GetTemplateURLForKeyword(keyword)); |
- |
- std::string osdd_file_name("simple_open_search.xml"); |
- StartDownload(keyword, osdd_file_name, |
- TemplateURLFetcher::EXPLICIT_PROVIDER, true); |
- ASSERT_EQ(0, add_provider_called_); |
- ASSERT_EQ(0, callbacks_destroyed_); |
- |
- WaitForDownloadToFinish(); |
- ASSERT_EQ(1, add_provider_called_); |
- ASSERT_EQ(1, callbacks_destroyed_); |
- |
- ASSERT_TRUE(last_callback_template_url_.get()); |
- EXPECT_EQ(ASCIIToUTF16("http://example.com/%s/other_stuff"), |
- last_callback_template_url_->url_ref().DisplayURL( |
- test_util_.model()->search_terms_data())); |
- EXPECT_EQ(ASCIIToUTF16("example.com"), |
- last_callback_template_url_->keyword()); |
- EXPECT_FALSE(last_callback_template_url_->safe_for_autoreplace()); |
-} |
- |
-TEST_F(TemplateURLFetcherTest, AutodetectedBeforeLoadTest) { |
- base::string16 keyword(ASCIIToUTF16("test")); |
- ASSERT_FALSE(test_util_.model()->GetTemplateURLForKeyword(keyword)); |
- |
- std::string osdd_file_name("simple_open_search.xml"); |
- StartDownload(keyword, osdd_file_name, |
- TemplateURLFetcher::AUTODETECTED_PROVIDER, true); |
- ASSERT_EQ(0, add_provider_called_); |
- ASSERT_EQ(1, callbacks_destroyed_); |
-} |
- |
-TEST_F(TemplateURLFetcherTest, ExplicitBeforeLoadTest) { |
- base::string16 keyword(ASCIIToUTF16("test")); |
- ASSERT_FALSE(test_util_.model()->GetTemplateURLForKeyword(keyword)); |
- |
- std::string osdd_file_name("simple_open_search.xml"); |
- StartDownload(keyword, osdd_file_name, |
- TemplateURLFetcher::EXPLICIT_PROVIDER, true); |
- ASSERT_EQ(0, add_provider_called_); |
- ASSERT_EQ(0, callbacks_destroyed_); |
- |
- WaitForDownloadToFinish(); |
- ASSERT_EQ(1, add_provider_called_); |
- ASSERT_EQ(1, callbacks_destroyed_); |
- |
- ASSERT_TRUE(last_callback_template_url_.get()); |
- EXPECT_EQ(ASCIIToUTF16("http://example.com/%s/other_stuff"), |
- last_callback_template_url_->url_ref().DisplayURL( |
- test_util_.model()->search_terms_data())); |
- EXPECT_EQ(ASCIIToUTF16("example.com"), |
- last_callback_template_url_->keyword()); |
- EXPECT_FALSE(last_callback_template_url_->safe_for_autoreplace()); |
-} |
- |
-TEST_F(TemplateURLFetcherTest, DuplicateKeywordsTest) { |
- base::string16 keyword(ASCIIToUTF16("test")); |
- TemplateURLData data; |
- data.short_name = keyword; |
- data.SetKeyword(keyword); |
- data.SetURL("http://example.com/"); |
- test_util_.model()->Add(new TemplateURL(data)); |
- test_util_.ChangeModelToLoadState(); |
- |
- ASSERT_TRUE(test_util_.model()->GetTemplateURLForKeyword(keyword)); |
- |
- // This should bail because the keyword already exists. |
- std::string osdd_file_name("simple_open_search.xml"); |
- StartDownload(keyword, osdd_file_name, |
- TemplateURLFetcher::AUTODETECTED_PROVIDER, true); |
- ASSERT_EQ(0, add_provider_called_); |
- ASSERT_EQ(1, callbacks_destroyed_); |
- ASSERT_FALSE(last_callback_template_url_.get()); |
-} |
- |
-TEST_F(TemplateURLFetcherTest, DuplicateDownloadTest) { |
- base::string16 keyword(ASCIIToUTF16("test")); |
- std::string osdd_file_name("simple_open_search.xml"); |
- StartDownload(keyword, osdd_file_name, |
- TemplateURLFetcher::EXPLICIT_PROVIDER, true); |
- ASSERT_EQ(0, add_provider_called_); |
- ASSERT_EQ(0, callbacks_destroyed_); |
- |
- // This should bail because the keyword already has a pending download. |
- StartDownload(keyword, osdd_file_name, |
- TemplateURLFetcher::EXPLICIT_PROVIDER, true); |
- ASSERT_EQ(0, add_provider_called_); |
- ASSERT_EQ(1, callbacks_destroyed_); |
- |
- WaitForDownloadToFinish(); |
- ASSERT_EQ(1, add_provider_called_); |
- ASSERT_EQ(2, callbacks_destroyed_); |
- ASSERT_TRUE(last_callback_template_url_.get()); |
-} |