OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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/history_database.h" | 5 #include "chrome/browser/history/history_database.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <set> | 8 #include <set> |
9 | 9 |
10 #include "base/string_util.h" | 10 #include "base/string_util.h" |
11 #include "chrome/common/sqlite_utils.h" | 11 #include "chrome/common/sqlite_utils.h" |
12 | 12 |
| 13 using base::Time; |
| 14 |
13 namespace history { | 15 namespace history { |
14 | 16 |
15 namespace { | 17 namespace { |
16 | 18 |
17 // Current version number. | 19 // Current version number. |
18 static const int kCurrentVersionNumber = 16; | 20 static const int kCurrentVersionNumber = 16; |
19 static const int kCompatibleVersionNumber = 16; | 21 static const int kCompatibleVersionNumber = 16; |
| 22 static const char kEarlyExpirationThresholdKey[] = "early_expiration_threshold"; |
20 | 23 |
21 } // namespace | 24 } // namespace |
22 | 25 |
23 HistoryDatabase::HistoryDatabase() | 26 HistoryDatabase::HistoryDatabase() |
24 : transaction_nesting_(0), | 27 : transaction_nesting_(0), |
25 db_(NULL) { | 28 db_(NULL) { |
26 } | 29 } |
27 | 30 |
28 HistoryDatabase::~HistoryDatabase() { | 31 HistoryDatabase::~HistoryDatabase() { |
29 } | 32 } |
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
164 s.bind_int64(0, visit_id); | 167 s.bind_int64(0, visit_id); |
165 if (s.step() == SQLITE_ROW) { | 168 if (s.step() == SQLITE_ROW) { |
166 if (s.column_type(0) == SQLITE_NULL) | 169 if (s.column_type(0) == SQLITE_NULL) |
167 return 0; | 170 return 0; |
168 else | 171 else |
169 return s.column_int64(0); | 172 return s.column_int64(0); |
170 } | 173 } |
171 return 0; | 174 return 0; |
172 } | 175 } |
173 | 176 |
| 177 Time HistoryDatabase::GetEarlyExpirationThreshold() { |
| 178 if (!cached_early_expiration_threshold_.is_null()) |
| 179 return cached_early_expiration_threshold_; |
| 180 |
| 181 int64 threshold; |
| 182 if (!meta_table_.GetValue(kEarlyExpirationThresholdKey, &threshold)) { |
| 183 // Set to a very early non-zero time, so it's before all history, but not |
| 184 // zero to avoid re-retrieval. |
| 185 threshold = 1L; |
| 186 } |
| 187 |
| 188 cached_early_expiration_threshold_ = Time::FromInternalValue(threshold); |
| 189 return cached_early_expiration_threshold_; |
| 190 } |
| 191 |
| 192 void HistoryDatabase::UpdateEarlyExpirationThreshold(Time threshold) { |
| 193 meta_table_.SetValue(kEarlyExpirationThresholdKey, |
| 194 threshold.ToInternalValue()); |
| 195 cached_early_expiration_threshold_ = threshold; |
| 196 } |
| 197 |
174 sqlite3* HistoryDatabase::GetDB() { | 198 sqlite3* HistoryDatabase::GetDB() { |
175 return db_; | 199 return db_; |
176 } | 200 } |
177 | 201 |
178 SqliteStatementCache& HistoryDatabase::GetStatementCache() { | 202 SqliteStatementCache& HistoryDatabase::GetStatementCache() { |
179 return *statement_cache_; | 203 return *statement_cache_; |
180 } | 204 } |
181 | 205 |
182 // Migration ------------------------------------------------------------------- | 206 // Migration ------------------------------------------------------------------- |
183 | 207 |
(...skipping 29 matching lines...) Expand all Loading... |
213 | 237 |
214 // When the version is too old, we just try to continue anyway, there should | 238 // When the version is too old, we just try to continue anyway, there should |
215 // not be a released product that makes a database too old for us to handle. | 239 // not be a released product that makes a database too old for us to handle. |
216 LOG_IF(WARNING, cur_version < kCurrentVersionNumber) << | 240 LOG_IF(WARNING, cur_version < kCurrentVersionNumber) << |
217 "History database version " << cur_version << " is too old to handle."; | 241 "History database version " << cur_version << " is too old to handle."; |
218 | 242 |
219 return INIT_OK; | 243 return INIT_OK; |
220 } | 244 } |
221 | 245 |
222 } // namespace history | 246 } // namespace history |
OLD | NEW |