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

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

Issue 8253002: Move PageTransition into content namespace. While I'm touching all these files, I've also updated... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 2 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) 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 "chrome/browser/history/visit_database.h" 5 #include "chrome/browser/history/visit_database.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 #include <map> 9 #include <map>
10 #include <set> 10 #include <set>
11 11
12 #include "base/logging.h" 12 #include "base/logging.h"
13 #include "base/string_number_conversions.h" 13 #include "base/string_number_conversions.h"
14 #include "chrome/browser/history/url_database.h" 14 #include "chrome/browser/history/url_database.h"
15 #include "chrome/common/url_constants.h" 15 #include "chrome/common/url_constants.h"
16 #include "content/common/page_transition_types.h" 16 #include "content/public/common/page_transition_types.h"
17 #include "sql/statement.h" 17 #include "sql/statement.h"
18 18
19 // Rows, in order, of the visit table. 19 // Rows, in order, of the visit table.
20 #define HISTORY_VISIT_ROW_FIELDS \ 20 #define HISTORY_VISIT_ROW_FIELDS \
21 " id,url,visit_time,from_visit,transition,segment_id,is_indexed " 21 " id,url,visit_time,from_visit,transition,segment_id,is_indexed "
22 22
23 namespace history { 23 namespace history {
24 24
25 VisitDatabase::VisitDatabase() { 25 VisitDatabase::VisitDatabase() {
26 } 26 }
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
84 return GetDB().Execute("DROP TABLE visits"); 84 return GetDB().Execute("DROP TABLE visits");
85 } 85 }
86 86
87 // Must be in sync with HISTORY_VISIT_ROW_FIELDS. 87 // Must be in sync with HISTORY_VISIT_ROW_FIELDS.
88 // static 88 // static
89 void VisitDatabase::FillVisitRow(sql::Statement& statement, VisitRow* visit) { 89 void VisitDatabase::FillVisitRow(sql::Statement& statement, VisitRow* visit) {
90 visit->visit_id = statement.ColumnInt64(0); 90 visit->visit_id = statement.ColumnInt64(0);
91 visit->url_id = statement.ColumnInt64(1); 91 visit->url_id = statement.ColumnInt64(1);
92 visit->visit_time = base::Time::FromInternalValue(statement.ColumnInt64(2)); 92 visit->visit_time = base::Time::FromInternalValue(statement.ColumnInt64(2));
93 visit->referring_visit = statement.ColumnInt64(3); 93 visit->referring_visit = statement.ColumnInt64(3);
94 visit->transition = PageTransition::FromInt(statement.ColumnInt(4)); 94 visit->transition = content::PageTransitionFromInt(statement.ColumnInt(4));
95 visit->segment_id = statement.ColumnInt64(5); 95 visit->segment_id = statement.ColumnInt64(5);
96 visit->is_indexed = !!statement.ColumnInt(6); 96 visit->is_indexed = !!statement.ColumnInt(6);
97 } 97 }
98 98
99 // static 99 // static
100 void VisitDatabase::FillVisitVector(sql::Statement& statement, 100 void VisitDatabase::FillVisitVector(sql::Statement& statement,
101 VisitVector* visits) { 101 VisitVector* visits) {
102 while (statement.Step()) { 102 while (statement.Step()) {
103 history::VisitRow visit; 103 history::VisitRow visit;
104 FillVisitRow(statement, &visit); 104 FillVisitRow(statement, &visit);
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after
278 statement.BindInt64(2, 278 statement.BindInt64(2,
279 max_results ? max_results : std::numeric_limits<int64>::max()); 279 max_results ? max_results : std::numeric_limits<int64>::max());
280 280
281 FillVisitVector(statement, visits); 281 FillVisitVector(statement, visits);
282 } 282 }
283 283
284 void VisitDatabase::GetVisitsInRangeForTransition( 284 void VisitDatabase::GetVisitsInRangeForTransition(
285 base::Time begin_time, 285 base::Time begin_time,
286 base::Time end_time, 286 base::Time end_time,
287 int max_results, 287 int max_results,
288 PageTransition::Type transition, 288 content::PageTransition transition,
289 VisitVector* visits) { 289 VisitVector* visits) {
290 DCHECK(visits); 290 DCHECK(visits);
291 visits->clear(); 291 visits->clear();
292 292
293 sql::Statement statement(GetDB().GetCachedStatement(SQL_FROM_HERE, 293 sql::Statement statement(GetDB().GetCachedStatement(SQL_FROM_HERE,
294 "SELECT" HISTORY_VISIT_ROW_FIELDS "FROM visits " 294 "SELECT" HISTORY_VISIT_ROW_FIELDS "FROM visits "
295 "WHERE visit_time >= ? AND visit_time < ? " 295 "WHERE visit_time >= ? AND visit_time < ? "
296 "AND (transition & ?) == ?" 296 "AND (transition & ?) == ?"
297 "ORDER BY visit_time LIMIT ?")); 297 "ORDER BY visit_time LIMIT ?"));
298 if (!statement) 298 if (!statement)
299 return; 299 return;
300 300
301 // See GetVisibleVisitsInRange for more info on how these times are bound. 301 // See GetVisibleVisitsInRange for more info on how these times are bound.
302 int64 end = end_time.ToInternalValue(); 302 int64 end = end_time.ToInternalValue();
303 statement.BindInt64(0, begin_time.ToInternalValue()); 303 statement.BindInt64(0, begin_time.ToInternalValue());
304 statement.BindInt64(1, end ? end : std::numeric_limits<int64>::max()); 304 statement.BindInt64(1, end ? end : std::numeric_limits<int64>::max());
305 statement.BindInt(2, PageTransition::CORE_MASK); 305 statement.BindInt(2, content::PAGE_TRANSITION_CORE_MASK);
306 statement.BindInt(3, transition); 306 statement.BindInt(3, transition);
307 statement.BindInt64(4, 307 statement.BindInt64(4,
308 max_results ? max_results : std::numeric_limits<int64>::max()); 308 max_results ? max_results : std::numeric_limits<int64>::max());
309 309
310 FillVisitVector(statement, visits); 310 FillVisitVector(statement, visits);
311 } 311 }
312 312
313 void VisitDatabase::GetVisibleVisitsInRange(base::Time begin_time, 313 void VisitDatabase::GetVisibleVisitsInRange(base::Time begin_time,
314 base::Time end_time, 314 base::Time end_time,
315 int max_count, 315 int max_count,
(...skipping 10 matching lines...) Expand all
326 "ORDER BY visit_time DESC, id DESC")); 326 "ORDER BY visit_time DESC, id DESC"));
327 if (!statement) 327 if (!statement)
328 return; 328 return;
329 329
330 // Note that we use min/max values for querying unlimited ranges of time using 330 // Note that we use min/max values for querying unlimited ranges of time using
331 // the same statement. Since the time has an index, this will be about the 331 // the same statement. Since the time has an index, this will be about the
332 // same amount of work as just doing a query for everything with no qualifier. 332 // same amount of work as just doing a query for everything with no qualifier.
333 int64 end = end_time.ToInternalValue(); 333 int64 end = end_time.ToInternalValue();
334 statement.BindInt64(0, begin_time.ToInternalValue()); 334 statement.BindInt64(0, begin_time.ToInternalValue());
335 statement.BindInt64(1, end ? end : std::numeric_limits<int64>::max()); 335 statement.BindInt64(1, end ? end : std::numeric_limits<int64>::max());
336 statement.BindInt(2, PageTransition::CHAIN_END); 336 statement.BindInt(2, content::PAGE_TRANSITION_CHAIN_END);
337 statement.BindInt(3, PageTransition::CORE_MASK); 337 statement.BindInt(3, content::PAGE_TRANSITION_CORE_MASK);
338 statement.BindInt(4, PageTransition::AUTO_SUBFRAME); 338 statement.BindInt(4, content::PAGE_TRANSITION_AUTO_SUBFRAME);
339 statement.BindInt(5, PageTransition::MANUAL_SUBFRAME); 339 statement.BindInt(5, content::PAGE_TRANSITION_MANUAL_SUBFRAME);
340 statement.BindInt(6, PageTransition::KEYWORD_GENERATED); 340 statement.BindInt(6, content::PAGE_TRANSITION_KEYWORD_GENERATED);
341 341
342 std::set<URLID> found_urls; 342 std::set<URLID> found_urls;
343 while (statement.Step()) { 343 while (statement.Step()) {
344 VisitRow visit; 344 VisitRow visit;
345 FillVisitRow(statement, &visit); 345 FillVisitRow(statement, &visit);
346 // Make sure the URL this visit corresponds to is unique. 346 // Make sure the URL this visit corresponds to is unique.
347 if (found_urls.find(visit.url_id) != found_urls.end()) 347 if (found_urls.find(visit.url_id) != found_urls.end())
348 continue; 348 continue;
349 found_urls.insert(visit.url_id); 349 found_urls.insert(visit.url_id);
350 visits->push_back(visit); 350 visits->push_back(visit);
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
404 GURL* to_url) { 404 GURL* to_url) {
405 sql::Statement statement(GetDB().GetCachedStatement(SQL_FROM_HERE, 405 sql::Statement statement(GetDB().GetCachedStatement(SQL_FROM_HERE,
406 "SELECT v.id,u.url " 406 "SELECT v.id,u.url "
407 "FROM visits v JOIN urls u ON v.url = u.id " 407 "FROM visits v JOIN urls u ON v.url = u.id "
408 "WHERE v.from_visit = ? " 408 "WHERE v.from_visit = ? "
409 "AND (v.transition & ?) != 0")); // IS_REDIRECT_MASK 409 "AND (v.transition & ?) != 0")); // IS_REDIRECT_MASK
410 if (!statement) 410 if (!statement)
411 return false; 411 return false;
412 412
413 statement.BindInt64(0, from_visit); 413 statement.BindInt64(0, from_visit);
414 statement.BindInt(1, PageTransition::IS_REDIRECT_MASK); 414 statement.BindInt(1, content::PAGE_TRANSITION_IS_REDIRECT_MASK);
415 415
416 if (!statement.Step()) 416 if (!statement.Step())
417 return false; // No redirect from this visit. 417 return false; // No redirect from this visit.
418 if (to_visit) 418 if (to_visit)
419 *to_visit = statement.ColumnInt64(0); 419 *to_visit = statement.ColumnInt64(0);
420 if (to_url) 420 if (to_url)
421 *to_url = GURL(statement.ColumnString(1)); 421 *to_url = GURL(statement.ColumnString(1));
422 return true; 422 return true;
423 } 423 }
424 424
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
471 "FROM visits v INNER JOIN urls u ON v.url = u.id " 471 "FROM visits v INNER JOIN urls u ON v.url = u.id "
472 "WHERE u.url >= ? AND u.url < ? " 472 "WHERE u.url >= ? AND u.url < ? "
473 "AND (transition & ?) != 0 " 473 "AND (transition & ?) != 0 "
474 "AND (transition & ?) NOT IN (?, ?, ?)")); 474 "AND (transition & ?) NOT IN (?, ?, ?)"));
475 if (!statement) 475 if (!statement)
476 return false; 476 return false;
477 477
478 statement.BindString(0, host_query_min); 478 statement.BindString(0, host_query_min);
479 statement.BindString(1, 479 statement.BindString(1,
480 host_query_min.substr(0, host_query_min.size() - 1) + '0'); 480 host_query_min.substr(0, host_query_min.size() - 1) + '0');
481 statement.BindInt(2, PageTransition::CHAIN_END); 481 statement.BindInt(2, content::PAGE_TRANSITION_CHAIN_END);
482 statement.BindInt(3, PageTransition::CORE_MASK); 482 statement.BindInt(3, content::PAGE_TRANSITION_CORE_MASK);
483 statement.BindInt(4, PageTransition::AUTO_SUBFRAME); 483 statement.BindInt(4, content::PAGE_TRANSITION_AUTO_SUBFRAME);
484 statement.BindInt(5, PageTransition::MANUAL_SUBFRAME); 484 statement.BindInt(5, content::PAGE_TRANSITION_MANUAL_SUBFRAME);
485 statement.BindInt(6, PageTransition::KEYWORD_GENERATED); 485 statement.BindInt(6, content::PAGE_TRANSITION_KEYWORD_GENERATED);
486 486
487 if (!statement.Step()) { 487 if (!statement.Step()) {
488 // We've never been to this page before. 488 // We've never been to this page before.
489 *count = 0; 489 *count = 0;
490 return true; 490 return true;
491 } 491 }
492 492
493 *first_visit = base::Time::FromInternalValue(statement.ColumnInt64(0)); 493 *first_visit = base::Time::FromInternalValue(statement.ColumnInt64(0));
494 *count = statement.ColumnInt(1); 494 *count = statement.ColumnInt(1);
495 return true; 495 return true;
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
538 // Get the source entries out of the query result. 538 // Get the source entries out of the query result.
539 while (statement.Step()) { 539 while (statement.Step()) {
540 std::pair<VisitID, VisitSource> source_entry(statement.ColumnInt64(0), 540 std::pair<VisitID, VisitSource> source_entry(statement.ColumnInt64(0),
541 static_cast<VisitSource>(statement.ColumnInt(1))); 541 static_cast<VisitSource>(statement.ColumnInt(1)));
542 sources->insert(source_entry); 542 sources->insert(source_entry);
543 } 543 }
544 } 544 }
545 } 545 }
546 546
547 } // namespace history 547 } // namespace history
OLDNEW
« no previous file with comments | « chrome/browser/history/visit_database.h ('k') | chrome/browser/history/visit_database_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698