diff options
author | stevet@chromium.org <stevet@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-21 17:01:47 +0000 |
---|---|---|
committer | stevet@chromium.org <stevet@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-21 17:01:47 +0000 |
commit | 6a773250b349b770b39d3baedae396cdc1544640 (patch) | |
tree | 046b79038189645b8e7276d09c133d229d899426 /chrome/browser/webdata | |
parent | 49edb09c2d9ced202141cce939ee089f5ea3cb97 (diff) | |
download | chromium_src-6a773250b349b770b39d3baedae396cdc1544640.zip chromium_src-6a773250b349b770b39d3baedae396cdc1544640.tar.gz chromium_src-6a773250b349b770b39d3baedae396cdc1544640.tar.bz2 |
Ensure that TemplateURLs created from old database entries without sync_guids generate their own GUIDs.
BUG=96992
TEST=Ensure that KeywordTableTest.KeywordWithEmptySyncGUID passes.
Review URL: http://codereview.chromium.org/7980028
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@102119 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/webdata')
-rw-r--r-- | chrome/browser/webdata/keyword_table.cc | 5 | ||||
-rw-r--r-- | chrome/browser/webdata/keyword_table_unittest.cc | 30 |
2 files changed, 34 insertions, 1 deletions
diff --git a/chrome/browser/webdata/keyword_table.cc b/chrome/browser/webdata/keyword_table.cc index c7d2a7f..4d76f0f 100644 --- a/chrome/browser/webdata/keyword_table.cc +++ b/chrome/browser/webdata/keyword_table.cc @@ -189,7 +189,10 @@ bool KeywordTable::GetKeywords(std::vector<TemplateURL*>* urls) { template_url->set_last_modified(Time::FromTimeT(s.ColumnInt64(17))); - template_url->set_sync_guid(s.ColumnString(18)); + // If the persisted sync_guid was empty, we ignore it and allow the TURL to + // keep its generated GUID. + if (!s.ColumnString(18).empty()) + template_url->set_sync_guid(s.ColumnString(18)); urls->push_back(template_url); } diff --git a/chrome/browser/webdata/keyword_table_unittest.cc b/chrome/browser/webdata/keyword_table_unittest.cc index 3b77c32..1c84e90 100644 --- a/chrome/browser/webdata/keyword_table_unittest.cc +++ b/chrome/browser/webdata/keyword_table_unittest.cc @@ -252,3 +252,33 @@ TEST_F(KeywordTableTest, KeywordWithNoFavicon) { EXPECT_EQ(GetID(&template_url), GetID(restored_url)); delete restored_url; } + +TEST_F(KeywordTableTest, KeywordWithEmptySyncGUID) { + WebDatabase db; + + ASSERT_EQ(sql::INIT_OK, db.Init(file_)); + + TemplateURL template_url; + template_url.set_short_name(ASCIIToUTF16("short_name")); + template_url.set_keyword(ASCIIToUTF16("keyword")); + template_url.SetURL("http://url/", 0, 0); + template_url.set_safe_for_autoreplace(true); + SetID(-100, &template_url); + + // A GUID should be generated when |template_url| was created. Clear it. + ASSERT_FALSE(template_url.sync_guid().empty()); + template_url.set_sync_guid(std::string()); + + EXPECT_TRUE(db.GetKeywordTable()->AddKeyword(template_url)); + + std::vector<TemplateURL*> template_urls; + EXPECT_TRUE(db.GetKeywordTable()->GetKeywords(&template_urls)); + EXPECT_EQ(1U, template_urls.size()); + const TemplateURL* restored_url = template_urls.front(); + + EXPECT_EQ(template_url.short_name(), restored_url->short_name()); + EXPECT_EQ(template_url.keyword(), restored_url->keyword()); + EXPECT_EQ(GetID(&template_url), GetID(restored_url)); + EXPECT_FALSE(restored_url->sync_guid().empty()); + delete restored_url; +} |