Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(217)

Side by Side Diff: chrome/browser/history/top_sites_database_unittest.cc

Issue 39053005: Adding last_forced column to thumbnails database. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Answered Brett's comments. Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/history/top_sites_database.cc ('k') | chrome/test/data/History/TopSites.v3.sql » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/files/file_path.h" 5 #include "base/files/file_path.h"
6 #include "base/files/scoped_temp_dir.h" 6 #include "base/files/scoped_temp_dir.h"
7 #include "base/path_service.h" 7 #include "base/path_service.h"
8 #include "base/strings/utf_string_conversions.h"
8 #include "chrome/browser/history/top_sites_database.h" 9 #include "chrome/browser/history/top_sites_database.h"
9 #include "chrome/common/chrome_paths.h" 10 #include "chrome/common/chrome_paths.h"
10 #include "chrome/tools/profiles/thumbnail-inl.h" 11 #include "chrome/tools/profiles/thumbnail-inl.h"
11 #include "sql/connection.h" 12 #include "sql/connection.h"
12 #include "sql/statement.h" 13 #include "sql/statement.h"
13 #include "sql/test/test_helpers.h" 14 #include "sql/test/test_helpers.h"
14 #include "testing/gtest/include/gtest/gtest.h" 15 #include "testing/gtest/include/gtest/gtest.h"
15 16
16 namespace { 17 namespace {
17 18
(...skipping 21 matching lines...) Expand all
39 EXPECT_EQ(2u, sql::test::CountSQLTables(db)); 40 EXPECT_EQ(2u, sql::test::CountSQLTables(db));
40 41
41 // Implicit index on [meta], index on [thumbnails]. 42 // Implicit index on [meta], index on [thumbnails].
42 EXPECT_EQ(2u, sql::test::CountSQLIndices(db)); 43 EXPECT_EQ(2u, sql::test::CountSQLIndices(db));
43 44
44 // [key] and [value]. 45 // [key] and [value].
45 EXPECT_EQ(2u, sql::test::CountTableColumns(db, "meta")); 46 EXPECT_EQ(2u, sql::test::CountTableColumns(db, "meta"));
46 47
47 // [url], [url_rank], [title], [thumbnail], [redirects], 48 // [url], [url_rank], [title], [thumbnail], [redirects],
48 // [boring_score], [good_clipping], [at_top], [last_updated], and 49 // [boring_score], [good_clipping], [at_top], [last_updated], and
49 // [load_completed]. 50 // [load_completed], [last_forced]
50 EXPECT_EQ(10u, sql::test::CountTableColumns(db, "thumbnails")); 51 EXPECT_EQ(11u, sql::test::CountTableColumns(db, "thumbnails"));
51 } 52 }
52 53
53 } // namespace 54 } // namespace
54 55
55 namespace history { 56 namespace history {
56 57
57 class TopSitesDatabaseTest : public testing::Test { 58 class TopSitesDatabaseTest : public testing::Test {
58 protected: 59 protected:
59 virtual void SetUp() { 60 virtual void SetUp() {
60 // Get a temporary directory for the test DB files. 61 // Get a temporary directory for the test DB files.
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
113 thumbnails[urls[0].url].thumbnail->size()); 114 thumbnails[urls[0].url].thumbnail->size());
114 EXPECT_TRUE(!memcmp(thumbnails[urls[0].url].thumbnail->front(), 115 EXPECT_TRUE(!memcmp(thumbnails[urls[0].url].thumbnail->front(),
115 kGoogleThumbnail, sizeof(kGoogleThumbnail) - 1)); 116 kGoogleThumbnail, sizeof(kGoogleThumbnail) - 1));
116 117
117 ASSERT_TRUE(db.RemoveURL(urls[1])); 118 ASSERT_TRUE(db.RemoveURL(urls[1]));
118 db.GetPageThumbnails(&urls, &thumbnails); 119 db.GetPageThumbnails(&urls, &thumbnails);
119 ASSERT_EQ(2u, urls.size()); 120 ASSERT_EQ(2u, urls.size());
120 ASSERT_EQ(2u, thumbnails.size()); 121 ASSERT_EQ(2u, thumbnails.size());
121 } 122 }
122 123
124 TEST_F(TopSitesDatabaseTest, Version3) {
125 ASSERT_TRUE(CreateDatabaseFromSQL(file_name_, "TopSites.v3.sql"));
126
127 TopSitesDatabase db;
128 ASSERT_TRUE(db.Init(file_name_));
129
130 VerifyTablesAndColumns(db.db_.get());
131
132 // Basic operational check.
133 MostVisitedURLList urls;
134 std::map<GURL, Images> thumbnails;
135 db.GetPageThumbnails(&urls, &thumbnails);
136 ASSERT_EQ(3u, urls.size());
137 ASSERT_EQ(3u, thumbnails.size());
138 EXPECT_EQ(kUrl, urls[0].url); // [0] because of url_rank.
139 // kGoogleThumbnail includes nul terminator.
140 ASSERT_EQ(sizeof(kGoogleThumbnail) - 1,
141 thumbnails[urls[0].url].thumbnail->size());
142 EXPECT_TRUE(!memcmp(thumbnails[urls[0].url].thumbnail->front(),
143 kGoogleThumbnail, sizeof(kGoogleThumbnail) - 1));
144
145 ASSERT_TRUE(db.RemoveURL(urls[1]));
146 db.GetPageThumbnails(&urls, &thumbnails);
147 ASSERT_EQ(2u, urls.size());
148 ASSERT_EQ(2u, thumbnails.size());
149 }
150
151 TEST_F(TopSitesDatabaseTest, AddRemoveEditThumbnails) {
152 ASSERT_TRUE(CreateDatabaseFromSQL(file_name_, "TopSites.v3.sql"));
153
154 TopSitesDatabase db;
155 ASSERT_TRUE(db.Init(file_name_));
156
157 // Add a new URL, not forced, rank = 1.
158 GURL mapsUrl = GURL("http://maps.google.com/");
159 MostVisitedURL url1(mapsUrl, ASCIIToUTF16("Google Maps"));
160 db.SetPageThumbnail(url1, 1, Images());
161
162 MostVisitedURLList urls;
163 std::map<GURL, Images> thumbnails;
164 db.GetPageThumbnails(&urls, &thumbnails);
165 ASSERT_EQ(4u, urls.size());
166 ASSERT_EQ(4u, thumbnails.size());
167 EXPECT_EQ(kUrl, urls[0].url);
168 EXPECT_EQ(mapsUrl, urls[1].url);
169
170 // Add a new URL, forced.
171 GURL driveUrl = GURL("http://drive.google.com/");
172 MostVisitedURL url2(driveUrl, ASCIIToUTF16("Google Drive"));
173 url2.last_forced_time = base::Time::FromJsTime(789714000000); // 10/1/1995
174 db.SetPageThumbnail(url2, TopSitesDatabase::kRankOfForcedURL, Images());
175
176 db.GetPageThumbnails(&urls, &thumbnails);
177 ASSERT_EQ(5u, urls.size());
178 ASSERT_EQ(5u, thumbnails.size());
179 EXPECT_EQ(driveUrl, urls[0].url); // Forced URLs always appear first.
180 EXPECT_EQ(kUrl, urls[1].url);
181 EXPECT_EQ(mapsUrl, urls[2].url);
182
183 // Add a new URL, forced (earlier).
184 GURL plusUrl = GURL("http://plus.google.com/");
185 MostVisitedURL url3(plusUrl, ASCIIToUTF16("Google Plus"));
186 url3.last_forced_time = base::Time::FromJsTime(787035600000); // 10/12/1994
187 db.SetPageThumbnail(url3, TopSitesDatabase::kRankOfForcedURL, Images());
188
189 db.GetPageThumbnails(&urls, &thumbnails);
190 ASSERT_EQ(6u, urls.size());
191 ASSERT_EQ(6u, thumbnails.size());
192 EXPECT_EQ(plusUrl, urls[0].url); // New forced URL should appear first.
193 EXPECT_EQ(driveUrl, urls[1].url);
194 EXPECT_EQ(kUrl, urls[2].url);
195 EXPECT_EQ(mapsUrl, urls[3].url);
196
197 // Change the last_forced_time of a forced URL.
198 url3.last_forced_time = base::Time::FromJsTime(792392400000); // 10/2/1995
199 db.SetPageThumbnail(url3, TopSitesDatabase::kRankOfForcedURL, Images());
200
201 db.GetPageThumbnails(&urls, &thumbnails);
202 ASSERT_EQ(6u, urls.size());
203 ASSERT_EQ(6u, thumbnails.size());
204 EXPECT_EQ(driveUrl, urls[0].url);
205 EXPECT_EQ(plusUrl, urls[1].url); // Forced URL should have moved second.
206 EXPECT_EQ(kUrl, urls[2].url);
207 EXPECT_EQ(mapsUrl, urls[3].url);
208
209 // Change a non-forced URL to forced using UpdatePageRank.
210 url1.last_forced_time = base::Time::FromJsTime(792219600000); // 8/2/1995
211 db.UpdatePageRank(url1, TopSitesDatabase::kRankOfForcedURL);
212
213 db.GetPageThumbnails(&urls, &thumbnails);
214 ASSERT_EQ(6u, urls.size());
215 ASSERT_EQ(6u, thumbnails.size());
216 EXPECT_EQ(driveUrl, urls[0].url);
217 EXPECT_EQ(mapsUrl, urls[1].url); // Maps moves to second forced URL.
218 EXPECT_EQ(plusUrl, urls[2].url);
219 EXPECT_EQ(kUrl, urls[3].url);
220
221 // Change a forced URL to non-forced using SetPageThumbnail.
222 db.SetPageThumbnail(url3, 1, Images());
223
224 db.GetPageThumbnails(&urls, &thumbnails);
225 ASSERT_EQ(6u, urls.size());
226 ASSERT_EQ(6u, thumbnails.size());
227 EXPECT_EQ(driveUrl, urls[0].url);
228 EXPECT_EQ(mapsUrl, urls[1].url);
229 EXPECT_EQ(kUrl, urls[2].url);
230 EXPECT_EQ(plusUrl, urls[3].url); // Plus moves to second non-forced URL.
231
232 // Change a non-forced URL to earlier non-forced using UpdatePageRank.
233 url3.last_forced_time = base::Time();
234 db.UpdatePageRank(url3, 0);
235
236 db.GetPageThumbnails(&urls, &thumbnails);
237 ASSERT_EQ(6u, urls.size());
238 ASSERT_EQ(6u, thumbnails.size());
239 EXPECT_EQ(driveUrl, urls[0].url);
240 EXPECT_EQ(mapsUrl, urls[1].url);
241 EXPECT_EQ(plusUrl, urls[2].url); // Plus moves to first non-forced URL.
242 EXPECT_EQ(kUrl, urls[3].url);
243
244 // Change a non-forced URL to later non-forced using SetPageThumbnail.
245 db.SetPageThumbnail(url3, 2, Images());
246
247 db.GetPageThumbnails(&urls, &thumbnails);
248 ASSERT_EQ(6u, urls.size());
249 ASSERT_EQ(6u, thumbnails.size());
250 EXPECT_EQ(driveUrl, urls[0].url);
251 EXPECT_EQ(mapsUrl, urls[1].url);
252 EXPECT_EQ(kUrl, urls[2].url);
253 EXPECT_EQ(plusUrl, urls[4].url); // Plus moves to third non-forced URL.
254
255 // Remove a non-forced URL.
256 db.RemoveURL(url3);
257
258 db.GetPageThumbnails(&urls, &thumbnails);
259 ASSERT_EQ(5u, urls.size());
260 ASSERT_EQ(5u, thumbnails.size());
261 EXPECT_EQ(driveUrl, urls[0].url);
262 EXPECT_EQ(mapsUrl, urls[1].url);
263 EXPECT_EQ(kUrl, urls[2].url);
264
265 // Remove a forced URL.
266 db.RemoveURL(url2);
267
268 db.GetPageThumbnails(&urls, &thumbnails);
269 ASSERT_EQ(4u, urls.size());
270 ASSERT_EQ(4u, thumbnails.size());
271 EXPECT_EQ(mapsUrl, urls[0].url);
272 EXPECT_EQ(kUrl, urls[1].url);
273 }
274
123 } // namespace history 275 } // namespace history
OLDNEW
« no previous file with comments | « chrome/browser/history/top_sites_database.cc ('k') | chrome/test/data/History/TopSites.v3.sql » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698