Index: chrome/browser/history/visitsegment_database.cc |
diff --git a/chrome/browser/history/visitsegment_database.cc b/chrome/browser/history/visitsegment_database.cc |
index 98e782785f73ddb883441129ce16e80feb1f7ecf..ecb272763b15fd9636233007fc43250fae5ab841 100644 |
--- a/chrome/browser/history/visitsegment_database.cc |
+++ b/chrome/browser/history/visitsegment_database.cc |
@@ -217,6 +217,14 @@ void VisitSegmentDatabase::QuerySegmentUsage( |
base::Time from_time, |
int max_result_count, |
std::vector<PageUsageData*>* results) { |
+ QuerySegmentUsageTimeInterval(from_time, base::Time(), max_result_count, |
+ results); |
+} |
+void VisitSegmentDatabase::QuerySegmentUsageTimeInterval( |
+ base::Time from_time, |
+ base::Time to_time, |
+ int max_result_count, |
+ std::vector<PageUsageData*>* results) { |
// This function gathers the highest-ranked segments in two queries. |
// The first gathers scores for all segments. |
// The second gathers segment data (url, title, etc.) for the highest-ranked |
@@ -226,15 +234,25 @@ void VisitSegmentDatabase::QuerySegmentUsage( |
// does as well. |
// Gather all the segment scores. |
- sql::Statement statement(GetDB().GetCachedStatement(SQL_FROM_HERE, |
- "SELECT segment_id, time_slot, visit_count " |
- "FROM segment_usage WHERE time_slot >= ? " |
- "ORDER BY segment_id")); |
+ sql::Statement statement; |
+ if (to_time.is_null()) { |
+ statement.Assign(GetDB().GetCachedStatement(SQL_FROM_HERE, |
+ "SELECT segment_id, time_slot, visit_count " |
+ "FROM segment_usage WHERE time_slot >= ? " |
+ "ORDER BY segment_id")); |
+ } else { |
+ statement.Assign(GetDB().GetCachedStatement(SQL_FROM_HERE, |
+ "SELECT segment_id, time_slot, visit_count " |
+ "FROM segment_usage WHERE time_slot >= ? AND time_slot <= ?" |
+ "ORDER BY segment_id")); |
+ } |
if (!statement.is_valid()) |
return; |
- base::Time ts = from_time.LocalMidnight(); |
+ base::Time ts = (to_time.is_null()) ? from_time.LocalMidnight() : from_time; |
statement.BindInt64(0, ts.ToInternalValue()); |
+ if (!to_time.is_null()) |
+ statement.BindInt64(1, to_time.ToInternalValue()); |
base::Time now = base::Time::Now(); |
SegmentID last_segment_id = 0; |