1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Use of this source code is governed by a BSD-style license that can be 3ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// found in the LICENSE file. 4ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 5ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/file_util.h" 6ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/path_service.h" 7ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/string_number_conversions.h" 8ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/time.h" 9ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/utf_string_conversions.h" 10ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/common/chrome_paths.h" 11ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/search_engines/template_url.h" 12ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/webdata/web_database.h" 13ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "testing/gtest/include/gtest/gtest.h" 14ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 15ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenusing base::Time; 16ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 17ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass KeywordTableTest : public testing::Test { 18ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen public: 19ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen KeywordTableTest() {} 20ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual ~KeywordTableTest() {} 21ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 22ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen protected: 23ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual void SetUp() { 24ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen PathService::Get(chrome::DIR_TEST_DATA, &file_); 25ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen const std::string test_db = "TestWebDatabase" + 26ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen base::Int64ToString(Time::Now().ToTimeT()) + 27ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen ".db"; 28ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen file_ = file_.AppendASCII(test_db); 29ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen file_util::Delete(file_, false); 30ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen } 31ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 32ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual void TearDown() { 33ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen file_util::Delete(file_, false); 34ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen } 35ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 36ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen static int64 GetID(const TemplateURL* url) { 37ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return url->id(); 38ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen } 39ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 40ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen static void SetID(int64 new_id, TemplateURL* url) { 41ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen url->set_id(new_id); 42ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen } 43ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 44ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen static void set_prepopulate_id(TemplateURL* url, int id) { 45ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen url->set_prepopulate_id(id); 46ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen } 47ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 48ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen static void set_logo_id(TemplateURL* url, int id) { 49ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen url->set_logo_id(id); 50ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen } 51ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 52ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen FilePath file_; 53ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 54ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen private: 55ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen DISALLOW_COPY_AND_ASSIGN(KeywordTableTest); 56ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen}; 57ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 58ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 59ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian MonsenTEST_F(KeywordTableTest, Keywords) { 60ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen WebDatabase db; 61ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 62ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen ASSERT_EQ(sql::INIT_OK, db.Init(file_)); 63ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 64ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen TemplateURL template_url; 65ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen template_url.set_short_name(ASCIIToUTF16("short_name")); 66ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen template_url.set_keyword(ASCIIToUTF16("keyword")); 67ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen GURL favicon_url("http://favicon.url/"); 68ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen GURL originating_url("http://google.com/"); 69ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen template_url.SetFaviconURL(favicon_url); 70ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen template_url.SetURL("http://url/", 0, 0); 71ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen template_url.set_safe_for_autoreplace(true); 72ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen Time created_time = Time::Now(); 73ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen template_url.set_date_created(created_time); 74ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen template_url.set_show_in_default_list(true); 75ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen template_url.set_originating_url(originating_url); 76ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen template_url.set_usage_count(32); 77ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen template_url.add_input_encoding("UTF-8"); 78ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen template_url.add_input_encoding("UTF-16"); 79ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen set_prepopulate_id(&template_url, 10); 80ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen set_logo_id(&template_url, 1000); 81ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen template_url.set_created_by_policy(true); 82ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen template_url.SetInstantURL("http://instant/", 0, 0); 83ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen SetID(1, &template_url); 84ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 85ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_TRUE(db.GetKeywordTable()->AddKeyword(template_url)); 86ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 87ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen std::vector<TemplateURL*> template_urls; 88ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_TRUE(db.GetKeywordTable()->GetKeywords(&template_urls)); 89ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 90ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_EQ(1U, template_urls.size()); 91ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen const TemplateURL* restored_url = template_urls.front(); 92ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 93ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_EQ(template_url.short_name(), restored_url->short_name()); 94ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 95ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_EQ(template_url.keyword(), restored_url->keyword()); 96ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 97ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_FALSE(restored_url->autogenerate_keyword()); 98ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 99ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_TRUE(favicon_url == restored_url->GetFaviconURL()); 100ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 101ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_TRUE(restored_url->safe_for_autoreplace()); 102ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 103ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // The database stores time only at the resolution of a second. 104ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_EQ(created_time.ToTimeT(), restored_url->date_created().ToTimeT()); 105ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 106ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_TRUE(restored_url->show_in_default_list()); 107ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 108ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_EQ(GetID(&template_url), GetID(restored_url)); 109ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 110ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_TRUE(originating_url == restored_url->originating_url()); 111ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 112ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_EQ(32, restored_url->usage_count()); 113ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 114ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen ASSERT_EQ(2U, restored_url->input_encodings().size()); 115ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_EQ("UTF-8", restored_url->input_encodings()[0]); 116ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_EQ("UTF-16", restored_url->input_encodings()[1]); 117ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 118ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_EQ(10, restored_url->prepopulate_id()); 119ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 120ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_EQ(1000, restored_url->logo_id()); 121ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 122ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_TRUE(restored_url->created_by_policy()); 123ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 124ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen ASSERT_TRUE(restored_url->instant_url()); 125ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_EQ("http://instant/", restored_url->instant_url()->url()); 126ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 127ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_TRUE(db.GetKeywordTable()->RemoveKeyword(restored_url->id())); 128ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 129ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen template_urls.clear(); 130ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_TRUE(db.GetKeywordTable()->GetKeywords(&template_urls)); 131ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 132ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_EQ(0U, template_urls.size()); 133ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 134ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen delete restored_url; 135ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 136ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 137ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian MonsenTEST_F(KeywordTableTest, KeywordMisc) { 138ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen WebDatabase db; 139ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 140ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen ASSERT_EQ(sql::INIT_OK, db.Init(file_)); 141ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 142ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen ASSERT_EQ(0, db.GetKeywordTable()->GetDefaulSearchProviderID()); 143ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen ASSERT_EQ(0, db.GetKeywordTable()->GetBuitinKeywordVersion()); 144ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 145ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen db.GetKeywordTable()->SetDefaultSearchProviderID(10); 146ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen db.GetKeywordTable()->SetBuitinKeywordVersion(11); 147ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 148ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen ASSERT_EQ(10, db.GetKeywordTable()->GetDefaulSearchProviderID()); 149ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen ASSERT_EQ(11, db.GetKeywordTable()->GetBuitinKeywordVersion()); 150ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 151ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 152ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian MonsenTEST_F(KeywordTableTest, UpdateKeyword) { 153ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen WebDatabase db; 154ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 155ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen ASSERT_EQ(sql::INIT_OK, db.Init(file_)); 156ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 157ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen TemplateURL template_url; 158ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen template_url.set_short_name(ASCIIToUTF16("short_name")); 159ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen template_url.set_keyword(ASCIIToUTF16("keyword")); 160ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen GURL favicon_url("http://favicon.url/"); 161ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen GURL originating_url("http://originating.url/"); 162ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen template_url.SetFaviconURL(favicon_url); 163ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen template_url.SetURL("http://url/", 0, 0); 164ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen template_url.set_safe_for_autoreplace(true); 165ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen template_url.set_show_in_default_list(true); 166ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen template_url.SetSuggestionsURL("url2", 0, 0); 167ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen SetID(1, &template_url); 168ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 169ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_TRUE(db.GetKeywordTable()->AddKeyword(template_url)); 170ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 171ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen GURL originating_url2("http://originating.url/"); 172ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen template_url.set_originating_url(originating_url2); 173ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen template_url.set_autogenerate_keyword(true); 174ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_EQ(ASCIIToUTF16("url"), template_url.keyword()); 175ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen template_url.add_input_encoding("Shift_JIS"); 176ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen set_prepopulate_id(&template_url, 5); 177ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen set_logo_id(&template_url, 2000); 178ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen template_url.SetInstantURL("http://instant2/", 0, 0); 179ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_TRUE(db.GetKeywordTable()->UpdateKeyword(template_url)); 180ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 181ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen std::vector<TemplateURL*> template_urls; 182ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_TRUE(db.GetKeywordTable()->GetKeywords(&template_urls)); 183ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 184ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_EQ(1U, template_urls.size()); 185ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen const TemplateURL* restored_url = template_urls.front(); 186ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 187ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_EQ(template_url.short_name(), restored_url->short_name()); 188ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 189ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_EQ(template_url.keyword(), restored_url->keyword()); 190ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 191ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_TRUE(restored_url->autogenerate_keyword()); 192ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 193ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_TRUE(favicon_url == restored_url->GetFaviconURL()); 194ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 195ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_TRUE(restored_url->safe_for_autoreplace()); 196ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 197ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_TRUE(restored_url->show_in_default_list()); 198ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 199ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_EQ(GetID(&template_url), GetID(restored_url)); 200ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 201ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_TRUE(originating_url2 == restored_url->originating_url()); 202ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 203ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen ASSERT_EQ(1U, restored_url->input_encodings().size()); 204ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen ASSERT_EQ("Shift_JIS", restored_url->input_encodings()[0]); 205ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 206ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_EQ(template_url.suggestions_url()->url(), 207ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen restored_url->suggestions_url()->url()); 208ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 209ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_EQ(template_url.id(), restored_url->id()); 210ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 211ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_EQ(template_url.prepopulate_id(), restored_url->prepopulate_id()); 212ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 213ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_EQ(template_url.logo_id(), restored_url->logo_id()); 214ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 215ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_TRUE(restored_url->instant_url()); 216ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_EQ(template_url.instant_url()->url(), 217ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen restored_url->instant_url()->url()); 218ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 219ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen delete restored_url; 220ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 221ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 222ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian MonsenTEST_F(KeywordTableTest, KeywordWithNoFavicon) { 223ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen WebDatabase db; 224ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 225ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen ASSERT_EQ(sql::INIT_OK, db.Init(file_)); 226ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 227ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen TemplateURL template_url; 228ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen template_url.set_short_name(ASCIIToUTF16("short_name")); 229ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen template_url.set_keyword(ASCIIToUTF16("keyword")); 230ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen template_url.SetURL("http://url/", 0, 0); 231ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen template_url.set_safe_for_autoreplace(true); 232ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen SetID(-100, &template_url); 233ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 234ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_TRUE(db.GetKeywordTable()->AddKeyword(template_url)); 235ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 236ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen std::vector<TemplateURL*> template_urls; 237ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_TRUE(db.GetKeywordTable()->GetKeywords(&template_urls)); 238ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_EQ(1U, template_urls.size()); 239ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen const TemplateURL* restored_url = template_urls.front(); 240ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 241ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_EQ(template_url.short_name(), restored_url->short_name()); 242ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_EQ(template_url.keyword(), restored_url->keyword()); 243ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_TRUE(!restored_url->GetFaviconURL().is_valid()); 244ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_TRUE(restored_url->safe_for_autoreplace()); 245ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_EQ(GetID(&template_url), GetID(restored_url)); 246ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen delete restored_url; 247ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 248