Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / search_engines / template_url_service_sync_unittest.cc
index 60a18ba..aad5815 100644 (file)
@@ -8,19 +8,16 @@
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/time/time.h"
-#include "chrome/browser/chrome_notification_types.h"
-#include "chrome/browser/search_engines/search_terms_data.h"
-#include "chrome/browser/search_engines/template_url.h"
-#include "chrome/browser/search_engines/template_url_prepopulate_data.h"
-#include "chrome/browser/search_engines/template_url_service.h"
 #include "chrome/browser/search_engines/template_url_service_factory.h"
 #include "chrome/browser/search_engines/template_url_service_test_util.h"
-#include "chrome/common/pref_names.h"
-#include "chrome/common/url_constants.h"
+#include "chrome/browser/search_engines/ui_thread_search_terms_data.h"
 #include "chrome/test/base/testing_pref_service_syncable.h"
 #include "chrome/test/base/testing_profile.h"
-#include "content/public/browser/notification_service.h"
-#include "extensions/common/constants.h"
+#include "components/search_engines/search_engines_pref_names.h"
+#include "components/search_engines/template_url.h"
+#include "components/search_engines/template_url_prepopulate_data.h"
+#include "components/search_engines/template_url_service.h"
+#include "components/search_engines/template_url_service_client.h"
 #include "net/base/net_util.h"
 #include "sync/api/sync_change_processor_wrapper_for_test.h"
 #include "sync/api/sync_error_factory.h"
@@ -160,17 +157,17 @@ class TemplateURLServiceSyncTest : public testing::Test {
   virtual void SetUp() OVERRIDE;
   virtual void TearDown() OVERRIDE;
 
-  TemplateURLService* model() { return test_util_a_.model(); }
+  TemplateURLService* model() { return test_util_a_->model(); }
   // For readability, we redefine an accessor for Model A for use in tests that
   // involve syncing two models.
-  TemplateURLService* model_a() { return test_util_a_.model(); }
+  TemplateURLService* model_a() { return test_util_a_->model(); }
   TemplateURLService* model_b() { return model_b_.get(); }
-  TestingProfile* profile_a() { return test_util_a_.profile(); }
+  TestingProfile* profile_a() { return test_util_a_->profile(); }
   TestChangeProcessor* processor() { return sync_processor_.get(); }
   scoped_ptr<syncer::SyncChangeProcessor> PassProcessor();
   scoped_ptr<syncer::SyncErrorFactory> CreateAndPassSyncErrorFactory();
 
-  // Create a TemplateURL with some test values. The caller owns the returned
+  // Creates a TemplateURL with some test values. The caller owns the returned
   // TemplateURL*.
   TemplateURL* CreateTestTemplateURL(const base::string16& keyword,
                                      const std::string& url,
@@ -213,7 +210,7 @@ class TemplateURLServiceSyncTest : public testing::Test {
 
  protected:
   // We keep two TemplateURLServices to test syncing between them.
-  TemplateURLServiceTestUtil test_util_a_;
+  scoped_ptr<TemplateURLServiceTestUtil> test_util_a_;
   scoped_ptr<TestingProfile> profile_b_;
   scoped_ptr<TemplateURLService> model_b_;
 
@@ -230,22 +227,25 @@ TemplateURLServiceSyncTest::TemplateURLServiceSyncTest()
           sync_processor_.get())) {}
 
 void TemplateURLServiceSyncTest::SetUp() {
-  TemplateURLService::set_fallback_search_engines_disabled(true);
-  test_util_a_.SetUp();
+  DefaultSearchManager::SetFallbackSearchEnginesDisabledForTesting(true);
+  test_util_a_.reset(new TemplateURLServiceTestUtil);
   // Use ChangeToLoadState() instead of VerifyLoad() so we don't actually pull
   // in the prepopulate data, which the sync tests don't care about (and would
   // just foul them up).
-  test_util_a_.ChangeModelToLoadState();
+  test_util_a_->ChangeModelToLoadState();
   profile_b_.reset(new TestingProfile);
   TemplateURLServiceFactory::GetInstance()->
       RegisterUserPrefsOnBrowserContextForTest(profile_b_.get());
-  model_b_.reset(new TemplateURLService(profile_b_.get()));
+  model_b_.reset(new TemplateURLService(
+      profile_b_->GetPrefs(), scoped_ptr<SearchTermsData>(
+          new UIThreadSearchTermsData(profile_b_.get())), NULL,
+      scoped_ptr<TemplateURLServiceClient>(), NULL, NULL, base::Closure()));
   model_b_->Load();
 }
 
 void TemplateURLServiceSyncTest::TearDown() {
-  test_util_a_.TearDown();
-  TemplateURLService::set_fallback_search_engines_disabled(false);
+  test_util_a_.reset();
+  DefaultSearchManager::SetFallbackSearchEnginesDisabledForTesting(false);
 }
 
 scoped_ptr<syncer::SyncChangeProcessor>
@@ -278,7 +278,7 @@ TemplateURL* TemplateURLServiceSyncTest::CreateTestTemplateURL(
   data.prepopulate_id = 999999;
   if (!guid.empty())
     data.sync_guid = guid;
-  return new TemplateURL(NULL, data);
+  return new TemplateURL(data);
 }
 
 void TemplateURLServiceSyncTest::AssertEquals(const TemplateURL& expected,
@@ -344,8 +344,8 @@ syncer::SyncDataList TemplateURLServiceSyncTest::CreateInitialSyncData() const {
 TemplateURL* TemplateURLServiceSyncTest::Deserialize(
     const syncer::SyncData& sync_data) {
   syncer::SyncChangeList dummy;
-  return TemplateURLService::CreateTemplateURLFromTemplateURLAndSyncData(NULL,
-      NULL, sync_data, &dummy);
+  return TemplateURLService::CreateTemplateURLFromTemplateURLAndSyncData(
+      NULL, SearchTermsData(), NULL, sync_data, &dummy);
 }
 
 TemplateURL* TemplateURLServiceSyncTest::CopyTemplateURL(
@@ -357,7 +357,7 @@ TemplateURL* TemplateURLServiceSyncTest::CopyTemplateURL(
   data.date_created = Time::FromTimeT(100);
   data.last_modified = Time::FromTimeT(100);
   data.sync_guid = guid;
-  return new TemplateURL(NULL, data);
+  return new TemplateURL(data);
 }
 
 // Actual tests ---------------------------------------------------------------
@@ -397,8 +397,8 @@ TEST_F(TemplateURLServiceSyncTest, GetAllSyncDataBasic) {
 TEST_F(TemplateURLServiceSyncTest, GetAllSyncDataWithExtension) {
   model()->Add(CreateTestTemplateURL(ASCIIToUTF16("key1"), "http://key1.com"));
   model()->Add(CreateTestTemplateURL(ASCIIToUTF16("key2"), "http://key2.com"));
-  model()->Add(CreateTestTemplateURL(ASCIIToUTF16("key3"),
-      std::string(extensions::kExtensionScheme) + "://blahblahblah"));
+  model()->RegisterOmniboxKeyword("blahblahblah", "unittest", "key3",
+                                  "http://blahblahblah");
   syncer::SyncDataList all_sync_data =
       model()->GetAllSyncData(syncer::SEARCH_ENGINES);
 
@@ -1063,13 +1063,18 @@ TEST_F(TemplateURLServiceSyncTest, ProcessChangesWithLocalExtensions) {
                                     CreateAndPassSyncErrorFactory());
 
   // Add some extension keywords locally.
-  TemplateURL* extension1 = CreateTestTemplateURL(ASCIIToUTF16("keyword1"),
-      std::string(extensions::kExtensionScheme) + "://extension1");
-  model()->Add(extension1);
+  model()->RegisterOmniboxKeyword("extension1", "unittest", "keyword1",
+                                  "http://extension1");
+  TemplateURL* extension1 =
+      model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword1"));
+  ASSERT_TRUE(extension1);
   EXPECT_EQ(1U, processor()->change_list_size());
-  TemplateURL* extension2 = CreateTestTemplateURL(ASCIIToUTF16("keyword2"),
-      std::string(extensions::kExtensionScheme) + "://extension2");
-  model()->Add(extension2);
+
+  model()->RegisterOmniboxKeyword("extension2", "unittest", "keyword2",
+                                  "http://extension2");
+  TemplateURL* extension2 =
+      model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword2"));
+  ASSERT_TRUE(extension2);
   EXPECT_EQ(1U, processor()->change_list_size());
 
   // Create some sync changes that will conflict with the extension keywords.
@@ -1253,7 +1258,7 @@ TEST_F(TemplateURLServiceSyncTest, DuplicateEncodingsRemoved) {
   data.date_created = Time::FromTimeT(100);
   data.last_modified = Time::FromTimeT(100);
   data.sync_guid = "keyword";
-  scoped_ptr<TemplateURL> turl(new TemplateURL(NULL, data));
+  scoped_ptr<TemplateURL> turl(new TemplateURL(data));
   initial_data.push_back(
       TemplateURLService::CreateSyncDataFromTemplateURL(*turl));
 
@@ -1414,8 +1419,7 @@ TEST_F(TemplateURLServiceSyncTest, MergeTwiceWithSameSyncData) {
   // Keep a copy of it so we can compare it after we re-merge.
   TemplateURL* key1_url = model()->GetTemplateURLForGUID("key1");
   ASSERT_TRUE(key1_url);
-  scoped_ptr<TemplateURL> updated_turl(new TemplateURL(key1_url->profile(),
-                                                       key1_url->data()));
+  scoped_ptr<TemplateURL> updated_turl(new TemplateURL(key1_url->data()));
   EXPECT_EQ(Time::FromTimeT(90), updated_turl->last_modified());
 
   // Modify a single field of the initial data. This should not be updated in
@@ -1423,7 +1427,7 @@ TEST_F(TemplateURLServiceSyncTest, MergeTwiceWithSameSyncData) {
   scoped_ptr<TemplateURL> temp_turl(Deserialize(initial_data[0]));
   TemplateURLData data(temp_turl->data());
   data.short_name = ASCIIToUTF16("SomethingDifferent");
-  temp_turl.reset(new TemplateURL(temp_turl->profile(), data));
+  temp_turl.reset(new TemplateURL(data));
   initial_data.clear();
   initial_data.push_back(
       TemplateURLService::CreateSyncDataFromTemplateURL(*temp_turl));
@@ -1511,7 +1515,7 @@ TEST_F(TemplateURLServiceSyncTest, DefaultGuidDeletedBeforeNewDSPArrives) {
   data.prepopulate_id = 999999;
   data.sync_guid = "key2";
   data.show_in_default_list = true;
-  scoped_ptr<TemplateURL> turl2(new TemplateURL(NULL, data));
+  scoped_ptr<TemplateURL> turl2(new TemplateURL(data));
   initial_data.push_back(TemplateURLService::CreateSyncDataFromTemplateURL(
       *turl1));
   initial_data.push_back(TemplateURLService::CreateSyncDataFromTemplateURL(
@@ -1657,7 +1661,7 @@ TEST_F(TemplateURLServiceSyncTest, SyncWithManagedDefaultSearch) {
   const char kAlternateURL[] =
       "http://manageddefault.com/search#t={searchTerms}";
   const char kSearchTermsReplacementKey[] = "espv";
-  test_util_a_.SetManagedDefaultSearchPreferences(true, kName, kName,
+  test_util_a_->SetManagedDefaultSearchPreferences(true, kName, kName,
       kSearchURL, std::string(), kIconURL, kEncodings, kAlternateURL,
       kSearchTermsReplacementKey);
   const TemplateURL* dsp_turl = model()->GetDefaultSearchProvider();
@@ -1688,7 +1692,7 @@ TEST_F(TemplateURLServiceSyncTest, SyncWithManagedDefaultSearch) {
   // from Sync.
   const TemplateURL* expected_default =
       model()->GetTemplateURLForGUID("newdefault");
-  test_util_a_.RemoveManagedDefaultSearchPreferences();
+  test_util_a_->RemoveManagedDefaultSearchPreferences();
 
   EXPECT_EQ(expected_default, model()->GetDefaultSearchProvider());
 }
@@ -1837,12 +1841,12 @@ TEST_F(TemplateURLServiceSyncTest, PreSyncUpdates) {
   data_copy.SetKeyword(ASCIIToUTF16(kNewKeyword));
   // Set safe_for_autoreplace to false so our keyword survives.
   data_copy.safe_for_autoreplace = false;
-  model()->Add(new TemplateURL(profile_a(), data_copy));
+  model()->Add(new TemplateURL(data_copy));
 
   // Merge the prepopulate search engines.
   base::Time pre_merge_time = base::Time::Now();
   base::RunLoop().RunUntilIdle();
-  test_util_a_.ResetModel(true);
+  test_util_a_->ResetModel(true);
 
   // The newly added search engine should have been safely merged, with an
   // updated time.
@@ -1860,7 +1864,7 @@ TEST_F(TemplateURLServiceSyncTest, PreSyncUpdates) {
   syncer::SyncDataList initial_data;
   data_copy.SetKeyword(original_keyword);
   data_copy.sync_guid = sync_guid;
-  scoped_ptr<TemplateURL> sync_turl(new TemplateURL(profile_a(), data_copy));
+  scoped_ptr<TemplateURL> sync_turl(new TemplateURL(data_copy));
   initial_data.push_back(
       TemplateURLService::CreateSyncDataFromTemplateURL(*sync_turl));
 
@@ -1891,7 +1895,7 @@ TEST_F(TemplateURLServiceSyncTest, PreSyncUpdates) {
 TEST_F(TemplateURLServiceSyncTest, SyncBaseURLs) {
   // Verify that bringing in a remote TemplateURL that uses Google base URLs
   // causes it to get a local keyword that matches the local base URL.
-  test_util_a_.SetGoogleBaseURL(GURL("http://google.com/"));
+  test_util_a_->SetGoogleBaseURL(GURL("http://google.com/"));
   syncer::SyncDataList initial_data;
   scoped_ptr<TemplateURL> turl(CreateTestTemplateURL(
       ASCIIToUTF16("google.co.uk"), "{google:baseURL}search?q={searchTerms}",
@@ -1916,7 +1920,7 @@ TEST_F(TemplateURLServiceSyncTest, SyncBaseURLs) {
 
   // A local change to the Google base URL should update the keyword and
   // generate a sync change.
-  test_util_a_.SetGoogleBaseURL(GURL("http://google.co.in/"));
+  test_util_a_->SetGoogleBaseURL(GURL("http://google.co.in/"));
   EXPECT_EQ(ASCIIToUTF16("google.co.in"), synced_turl->keyword());
   EXPECT_EQ(1U, processor()->change_list_size());
   ASSERT_TRUE(processor()->contains_guid("guid"));
@@ -2134,7 +2138,7 @@ TEST_F(TemplateURLServiceSyncTest, UpdatePrepopulatedEngine) {
   TemplateURLData data = *default_turl;
   data.SetURL("http://old.wrong.url.com?q={searchTerms}");
   data.sync_guid = "default";
-  model()->Add(new TemplateURL(NULL, data));
+  model()->Add(new TemplateURL(data));
 
   syncer::SyncMergeResult merge_result = model()->MergeDataAndStartSyncing(
       syncer::SEARCH_ENGINES, syncer::SyncDataList(), PassProcessor(),
@@ -2169,11 +2173,11 @@ TEST_F(TemplateURLServiceSyncTest, MergeEditedPrepopulatedEngine) {
   data.date_created = Time::FromTimeT(50);
   data.last_modified = Time::FromTimeT(50);
   data.sync_guid = "default";
-  model()->Add(new TemplateURL(NULL, data));
+  model()->Add(new TemplateURL(data));
 
   data.date_created = Time::FromTimeT(100);
   data.last_modified = Time::FromTimeT(100);
-  scoped_ptr<TemplateURL> sync_turl(new TemplateURL(NULL, data));
+  scoped_ptr<TemplateURL> sync_turl(new TemplateURL(data));
   syncer::SyncDataList list;
   list.push_back(TemplateURLService::CreateSyncDataFromTemplateURL(*sync_turl));
   syncer::SyncMergeResult merge_result = model()->MergeDataAndStartSyncing(
@@ -2199,11 +2203,11 @@ TEST_F(TemplateURLServiceSyncTest, MergeNonEditedPrepopulatedEngine) {
   data.date_created = Time::FromTimeT(50);
   data.last_modified = Time::FromTimeT(50);
   data.sync_guid = "default";
-  model()->Add(new TemplateURL(NULL, data));
+  model()->Add(new TemplateURL(data));
 
   data.date_created = Time::FromTimeT(100);
   data.last_modified = Time::FromTimeT(100);
-  scoped_ptr<TemplateURL> sync_turl(new TemplateURL(NULL, data));
+  scoped_ptr<TemplateURL> sync_turl(new TemplateURL(data));
   syncer::SyncDataList list;
   list.push_back(TemplateURLService::CreateSyncDataFromTemplateURL(*sync_turl));
   syncer::SyncMergeResult merge_result = model()->MergeDataAndStartSyncing(