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

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

Issue 2802010: Revert 49594 - Convert page contents grabbing from wide to UTF16. The current... (Closed) Base URL: svn://svn.chromium.org/chrome/branches/437/src/
Patch Set: Created 10 years, 6 months 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
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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 "app/sql/connection.h" 5 #include "app/sql/connection.h"
6 #include "base/file_path.h" 6 #include "base/file_path.h"
7 #include "base/file_util.h" 7 #include "base/file_util.h"
8 #include "base/message_loop.h" 8 #include "base/message_loop.h"
9 #include "base/utf_string_conversions.h"
10 #include "chrome/browser/history/text_database_manager.h" 9 #include "chrome/browser/history/text_database_manager.h"
11 #include "chrome/browser/history/visit_database.h" 10 #include "chrome/browser/history/visit_database.h"
12 #include "testing/gtest/include/gtest/gtest.h" 11 #include "testing/gtest/include/gtest/gtest.h"
13 12
14 using base::Time; 13 using base::Time;
15 using base::TimeDelta; 14 using base::TimeDelta;
16 using base::TimeTicks; 15 using base::TimeTicks;
17 16
18 namespace history { 17 namespace history {
19 18
20 namespace { 19 namespace {
21 20
22 const char* kURL1 = "http://www.google.com/asdf"; 21 const char* kURL1 = "http://www.google.com/asdf";
23 const wchar_t* kTitle1 = L"Google A"; 22 const wchar_t* kTitle1 = L"Google A";
24 const char* kBody1 = "FOO page one."; 23 const wchar_t* kBody1 = L"FOO page one.";
25 24
26 const char* kURL2 = "http://www.google.com/qwer"; 25 const char* kURL2 = "http://www.google.com/qwer";
27 const wchar_t* kTitle2 = L"Google B"; 26 const wchar_t* kTitle2 = L"Google B";
28 const char* kBody2 = "FOO two."; 27 const wchar_t* kBody2 = L"FOO two.";
29 28
30 const char* kURL3 = "http://www.google.com/zxcv"; 29 const char* kURL3 = "http://www.google.com/zxcv";
31 const wchar_t* kTitle3 = L"Google C"; 30 const wchar_t* kTitle3 = L"Google C";
32 const char* kBody3 = "FOO drei"; 31 const wchar_t* kBody3 = L"FOO drei";
33 32
34 const char* kURL4 = "http://www.google.com/hjkl"; 33 const char* kURL4 = "http://www.google.com/hjkl";
35 const wchar_t* kTitle4 = L"Google D"; 34 const wchar_t* kTitle4 = L"Google D";
36 const char* kBody4 = "FOO lalala four."; 35 const wchar_t* kBody4 = L"FOO lalala four.";
37 36
38 const char* kURL5 = "http://www.google.com/uiop"; 37 const char* kURL5 = "http://www.google.com/uiop";
39 const wchar_t* kTitle5 = L"Google cinq"; 38 const wchar_t* kTitle5 = L"Google cinq";
40 const char* kBody5 = "FOO page one."; 39 const wchar_t* kBody5 = L"FOO page one.";
41 40
42 // This provides a simple implementation of a URL+VisitDatabase using an 41 // This provides a simple implementation of a URL+VisitDatabase using an
43 // in-memory sqlite connection. The text database manager expects to be able to 42 // in-memory sqlite connection. The text database manager expects to be able to
44 // update the visit database to keep in sync. 43 // update the visit database to keep in sync.
45 class InMemDB : public URLDatabase, public VisitDatabase { 44 class InMemDB : public URLDatabase, public VisitDatabase {
46 public: 45 public:
47 InMemDB() { 46 InMemDB() {
48 EXPECT_TRUE(db_.OpenInMemory()); 47 EXPECT_TRUE(db_.OpenInMemory());
49 CreateURLTable(false); 48 CreateURLTable(false);
50 InitVisitTable(); 49 InitVisitTable();
(...skipping 25 matching lines...) Expand all
76 visit_row.url_id = 1; 75 visit_row.url_id = 1;
77 visit_row.visit_time = Time::FromUTCExploded(exploded); 76 visit_row.visit_time = Time::FromUTCExploded(exploded);
78 visit_row.referring_visit = 0; 77 visit_row.referring_visit = 0;
79 visit_row.transition = 0; 78 visit_row.transition = 0;
80 visit_row.segment_id = 0; 79 visit_row.segment_id = 0;
81 visit_row.is_indexed = false; 80 visit_row.is_indexed = false;
82 VisitID visit_id = visit_db->AddVisit(&visit_row); 81 VisitID visit_id = visit_db->AddVisit(&visit_row);
83 82
84 times->push_back(visit_row.visit_time); 83 times->push_back(visit_row.visit_time);
85 manager.AddPageData(GURL(kURL1), visit_row.url_id, visit_row.visit_id, 84 manager.AddPageData(GURL(kURL1), visit_row.url_id, visit_row.visit_id,
86 visit_row.visit_time, kTitle1, UTF8ToUTF16(kBody1)); 85 visit_row.visit_time, kTitle1, kBody1);
87 86
88 exploded.day_of_month++; 87 exploded.day_of_month++;
89 visit_row.url_id = 2; 88 visit_row.url_id = 2;
90 visit_row.visit_time = Time::FromUTCExploded(exploded); 89 visit_row.visit_time = Time::FromUTCExploded(exploded);
91 visit_id = visit_db->AddVisit(&visit_row); 90 visit_id = visit_db->AddVisit(&visit_row);
92 times->push_back(visit_row.visit_time); 91 times->push_back(visit_row.visit_time);
93 manager.AddPageData(GURL(kURL2), visit_row.url_id, visit_row.visit_id, 92 manager.AddPageData(GURL(kURL2), visit_row.url_id, visit_row.visit_id,
94 visit_row.visit_time, kTitle2, UTF8ToUTF16(kBody2)); 93 visit_row.visit_time, kTitle2, kBody2);
95 94
96 exploded.day_of_month++; 95 exploded.day_of_month++;
97 visit_row.url_id = 2; 96 visit_row.url_id = 2;
98 visit_row.visit_time = Time::FromUTCExploded(exploded); 97 visit_row.visit_time = Time::FromUTCExploded(exploded);
99 visit_id = visit_db->AddVisit(&visit_row); 98 visit_id = visit_db->AddVisit(&visit_row);
100 times->push_back(visit_row.visit_time); 99 times->push_back(visit_row.visit_time);
101 manager.AddPageData(GURL(kURL3), visit_row.url_id, visit_row.visit_id, 100 manager.AddPageData(GURL(kURL3), visit_row.url_id, visit_row.visit_id,
102 visit_row.visit_time, kTitle3, UTF8ToUTF16(kBody3)); 101 visit_row.visit_time, kTitle3, kBody3);
103 102
104 // Put the next ones in the next month. 103 // Put the next ones in the next month.
105 exploded.month++; 104 exploded.month++;
106 visit_row.url_id = 2; 105 visit_row.url_id = 2;
107 visit_row.visit_time = Time::FromUTCExploded(exploded); 106 visit_row.visit_time = Time::FromUTCExploded(exploded);
108 visit_id = visit_db->AddVisit(&visit_row); 107 visit_id = visit_db->AddVisit(&visit_row);
109 times->push_back(visit_row.visit_time); 108 times->push_back(visit_row.visit_time);
110 manager.AddPageData(GURL(kURL4), visit_row.url_id, visit_row.visit_id, 109 manager.AddPageData(GURL(kURL4), visit_row.url_id, visit_row.visit_id,
111 visit_row.visit_time, kTitle4, UTF8ToUTF16(kBody4)); 110 visit_row.visit_time, kTitle4, kBody4);
112 111
113 exploded.day_of_month++; 112 exploded.day_of_month++;
114 visit_row.url_id = 2; 113 visit_row.url_id = 2;
115 visit_row.visit_time = Time::FromUTCExploded(exploded); 114 visit_row.visit_time = Time::FromUTCExploded(exploded);
116 visit_id = visit_db->AddVisit(&visit_row); 115 visit_id = visit_db->AddVisit(&visit_row);
117 times->push_back(visit_row.visit_time); 116 times->push_back(visit_row.visit_time);
118 manager.AddPageData(GURL(kURL5), visit_row.url_id, visit_row.visit_id, 117 manager.AddPageData(GURL(kURL5), visit_row.url_id, visit_row.visit_id,
119 visit_row.visit_time, kTitle5, UTF8ToUTF16(kBody5)); 118 visit_row.visit_time, kTitle5, kBody5);
120 119
121 // Put the first one in again in the second month. 120 // Put the first one in again in the second month.
122 exploded.day_of_month++; 121 exploded.day_of_month++;
123 visit_row.url_id = 2; 122 visit_row.url_id = 2;
124 visit_row.visit_time = Time::FromUTCExploded(exploded); 123 visit_row.visit_time = Time::FromUTCExploded(exploded);
125 visit_id = visit_db->AddVisit(&visit_row); 124 visit_id = visit_db->AddVisit(&visit_row);
126 times->push_back(visit_row.visit_time); 125 times->push_back(visit_row.visit_time);
127 manager.AddPageData(GURL(kURL1), visit_row.url_id, visit_row.visit_id, 126 manager.AddPageData(GURL(kURL1), visit_row.url_id, visit_row.visit_id,
128 visit_row.visit_time, kTitle1, UTF8ToUTF16(kBody1)); 127 visit_row.visit_time, kTitle1, kBody1);
129 } 128 }
130 129
131 bool ResultsHaveURL(const std::vector<TextDatabase::Match>& results, 130 bool ResultsHaveURL(const std::vector<TextDatabase::Match>& results,
132 const char* url) { 131 const char* url) {
133 GURL gurl(url); 132 GURL gurl(url);
134 for (size_t i = 0; i < results.size(); i++) { 133 for (size_t i = 0; i < results.size(); i++) {
135 if (results[i].url == gurl) 134 if (results[i].url == gurl)
136 return true; 135 return true;
137 } 136 }
138 return false; 137 return false;
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
198 TEST_F(TextDatabaseManagerTest, InsertCompleteNoVisit) { 197 TEST_F(TextDatabaseManagerTest, InsertCompleteNoVisit) {
199 ASSERT_TRUE(Init()); 198 ASSERT_TRUE(Init());
200 InMemDB visit_db; 199 InMemDB visit_db;
201 TextDatabaseManager manager(dir_, &visit_db, &visit_db); 200 TextDatabaseManager manager(dir_, &visit_db, &visit_db);
202 ASSERT_TRUE(manager.Init(NULL)); 201 ASSERT_TRUE(manager.Init(NULL));
203 202
204 // First add one without a visit. 203 // First add one without a visit.
205 const GURL url(kURL1); 204 const GURL url(kURL1);
206 manager.AddPageURL(url, 0, 0, Time::Now()); 205 manager.AddPageURL(url, 0, 0, Time::Now());
207 manager.AddPageTitle(url, kTitle1); 206 manager.AddPageTitle(url, kTitle1);
208 manager.AddPageContents(url, UTF8ToUTF16(kBody1)); 207 manager.AddPageContents(url, kBody1);
209 208
210 // Check that the page got added. 209 // Check that the page got added.
211 QueryOptions options; 210 QueryOptions options;
212 std::vector<TextDatabase::Match> results; 211 std::vector<TextDatabase::Match> results;
213 Time first_time_searched; 212 Time first_time_searched;
214 213
215 manager.GetTextMatches(L"FOO", options, &results, &first_time_searched); 214 manager.GetTextMatches(L"FOO", options, &results, &first_time_searched);
216 ASSERT_EQ(1U, results.size()); 215 ASSERT_EQ(1U, results.size());
217 EXPECT_EQ(kTitle1, results[0].title); 216 EXPECT_EQ(kTitle1, results[0].title);
218 } 217 }
(...skipping 13 matching lines...) Expand all
232 visit.visit_time = Time::Now(); 231 visit.visit_time = Time::Now();
233 visit.referring_visit = 0; 232 visit.referring_visit = 0;
234 visit.transition = PageTransition::LINK; 233 visit.transition = PageTransition::LINK;
235 visit.segment_id = 0; 234 visit.segment_id = 0;
236 visit.is_indexed = false; 235 visit.is_indexed = false;
237 visit_db.AddVisit(&visit); 236 visit_db.AddVisit(&visit);
238 237
239 // Add a full text indexed entry for that visit. 238 // Add a full text indexed entry for that visit.
240 const GURL url(kURL2); 239 const GURL url(kURL2);
241 manager.AddPageURL(url, visit.url_id, visit.visit_id, visit.visit_time); 240 manager.AddPageURL(url, visit.url_id, visit.visit_id, visit.visit_time);
242 manager.AddPageContents(url, UTF8ToUTF16(kBody2)); 241 manager.AddPageContents(url, kBody2);
243 manager.AddPageTitle(url, kTitle2); 242 manager.AddPageTitle(url, kTitle2);
244 243
245 // Check that the page got added. 244 // Check that the page got added.
246 QueryOptions options; 245 QueryOptions options;
247 std::vector<TextDatabase::Match> results; 246 std::vector<TextDatabase::Match> results;
248 Time first_time_searched; 247 Time first_time_searched;
249 248
250 manager.GetTextMatches(L"FOO", options, &results, &first_time_searched); 249 manager.GetTextMatches(L"FOO", options, &results, &first_time_searched);
251 ASSERT_EQ(1U, results.size()); 250 ASSERT_EQ(1U, results.size());
252 EXPECT_EQ(kTitle2, results[0].title); 251 EXPECT_EQ(kTitle2, results[0].title);
(...skipping 16 matching lines...) Expand all
269 manager.AddPageURL(url1, 0, 0, Time::Now()); 268 manager.AddPageURL(url1, 0, 0, Time::Now());
270 269
271 // Now add a second one with a URL and title. 270 // Now add a second one with a URL and title.
272 GURL url2(kURL2); 271 GURL url2(kURL2);
273 manager.AddPageURL(url2, 0, 0, Time::Now()); 272 manager.AddPageURL(url2, 0, 0, Time::Now());
274 manager.AddPageTitle(url2, kTitle2); 273 manager.AddPageTitle(url2, kTitle2);
275 274
276 // The third one has a URL and body. 275 // The third one has a URL and body.
277 GURL url3(kURL3); 276 GURL url3(kURL3);
278 manager.AddPageURL(url3, 0, 0, Time::Now()); 277 manager.AddPageURL(url3, 0, 0, Time::Now());
279 manager.AddPageContents(url3, UTF8ToUTF16(kBody3)); 278 manager.AddPageContents(url3, kBody3);
280 279
281 // Expire stuff very fast. This assumes that the time between the first 280 // Expire stuff very fast. This assumes that the time between the first
282 // AddPageURL and this line is less than the expiration time (20 seconds). 281 // AddPageURL and this line is less than the expiration time (20 seconds).
283 TimeTicks added_time = TimeTicks::Now(); 282 TimeTicks added_time = TimeTicks::Now();
284 TimeTicks expire_time = added_time + TimeDelta::FromSeconds(5); 283 TimeTicks expire_time = added_time + TimeDelta::FromSeconds(5);
285 manager.FlushOldChangesForTime(expire_time); 284 manager.FlushOldChangesForTime(expire_time);
286 285
287 // Do a query, nothing should be added yet. 286 // Do a query, nothing should be added yet.
288 QueryOptions options; 287 QueryOptions options;
289 std::vector<TextDatabase::Match> results; 288 std::vector<TextDatabase::Match> results;
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
336 manager.AddPageTitle(url, L"Some unique title"); 335 manager.AddPageTitle(url, L"Some unique title");
337 Time first_time_searched; 336 Time first_time_searched;
338 QueryOptions options; 337 QueryOptions options;
339 std::vector<TextDatabase::Match> results; 338 std::vector<TextDatabase::Match> results;
340 manager.GetTextMatches(L"unique", options, &results, &first_time_searched); 339 manager.GetTextMatches(L"unique", options, &results, &first_time_searched);
341 EXPECT_EQ(1U, results.size()); 340 EXPECT_EQ(1U, results.size());
342 manager.GetTextMatches(L"chocolate", options, &results, &first_time_searched); 341 manager.GetTextMatches(L"chocolate", options, &results, &first_time_searched);
343 EXPECT_EQ(0U, results.size()); 342 EXPECT_EQ(0U, results.size());
344 343
345 // Now add the body, which should be queryable. 344 // Now add the body, which should be queryable.
346 manager.AddPageContents(url, UTF8ToUTF16("Very awesome body")); 345 manager.AddPageContents(url, L"Very awesome body");
347 manager.GetTextMatches(L"awesome", options, &results, &first_time_searched); 346 manager.GetTextMatches(L"awesome", options, &results, &first_time_searched);
348 EXPECT_EQ(1U, results.size()); 347 EXPECT_EQ(1U, results.size());
349 348
350 // Adding the body will actually copy the title from the URL table rather 349 // Adding the body will actually copy the title from the URL table rather
351 // than the previously indexed row (we made them not match above). This isn't 350 // than the previously indexed row (we made them not match above). This isn't
352 // necessarily what we want, but it's how it's implemented, and we don't want 351 // necessarily what we want, but it's how it's implemented, and we don't want
353 // to regress it. 352 // to regress it.
354 manager.GetTextMatches(L"chocolate", options, &results, &first_time_searched); 353 manager.GetTextMatches(L"chocolate", options, &results, &first_time_searched);
355 EXPECT_EQ(1U, results.size()); 354 EXPECT_EQ(1U, results.size());
356 } 355 }
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
508 EXPECT_TRUE(ResultsHaveURL(results, kURL2)); 507 EXPECT_TRUE(ResultsHaveURL(results, kURL2));
509 EXPECT_TRUE(ResultsHaveURL(results, kURL1)); 508 EXPECT_TRUE(ResultsHaveURL(results, kURL1));
510 509
511 // Try to query some more, there should be no results. 510 // Try to query some more, there should be no results.
512 options.end_time = first_time_searched; 511 options.end_time = first_time_searched;
513 manager.GetTextMatches(L"FOO", options, &results, &first_time_searched); 512 manager.GetTextMatches(L"FOO", options, &results, &first_time_searched);
514 EXPECT_EQ(0U, results.size()); 513 EXPECT_EQ(0U, results.size());
515 } 514 }
516 515
517 } // namespace history 516 } // namespace history
OLDNEW
« no previous file with comments | « chrome/browser/history/text_database_manager.cc ('k') | chrome/browser/renderer_host/render_view_host.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698