| OLD | NEW |
| 1 // Copyright (c) 2009 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 "chrome/browser/history/thumbnail_database.h" | 5 #include "chrome/browser/history/thumbnail_database.h" |
| 6 | 6 |
| 7 #include "app/gfx/codec/jpeg_codec.h" | 7 #include "app/gfx/codec/jpeg_codec.h" |
| 8 #include "app/sql/statement.h" | 8 #include "app/sql/statement.h" |
| 9 #include "app/sql/transaction.h" | 9 #include "app/sql/transaction.h" |
| 10 #include "base/file_util.h" | 10 #include "base/file_util.h" |
| 11 #include "base/time.h" | 11 #include "base/time.h" |
| 12 #include "base/string_util.h" | 12 #include "base/string_util.h" |
| 13 #include "chrome/browser/diagnostics/sqlite_diagnostics.h" |
| 13 #include "chrome/browser/history/history_publisher.h" | 14 #include "chrome/browser/history/history_publisher.h" |
| 14 #include "chrome/browser/history/url_database.h" | 15 #include "chrome/browser/history/url_database.h" |
| 15 #include "chrome/common/thumbnail_score.h" | 16 #include "chrome/common/thumbnail_score.h" |
| 16 #include "third_party/skia/include/core/SkBitmap.h" | 17 #include "third_party/skia/include/core/SkBitmap.h" |
| 17 | 18 |
| 18 namespace history { | 19 namespace history { |
| 19 | 20 |
| 20 // Version number of the database. | 21 // Version number of the database. |
| 21 static const int kCurrentVersionNumber = 3; | 22 static const int kCurrentVersionNumber = 3; |
| 22 static const int kCompatibleVersionNumber = 3; | 23 static const int kCompatibleVersionNumber = 3; |
| 23 | 24 |
| 24 ThumbnailDatabase::ThumbnailDatabase() : history_publisher_(NULL) { | 25 ThumbnailDatabase::ThumbnailDatabase() : history_publisher_(NULL) { |
| 25 } | 26 } |
| 26 | 27 |
| 27 ThumbnailDatabase::~ThumbnailDatabase() { | 28 ThumbnailDatabase::~ThumbnailDatabase() { |
| 28 // The DBCloseScoper will delete the DB and the cache. | 29 // The DBCloseScoper will delete the DB and the cache. |
| 29 } | 30 } |
| 30 | 31 |
| 31 InitStatus ThumbnailDatabase::Init(const FilePath& db_name, | 32 InitStatus ThumbnailDatabase::Init(const FilePath& db_name, |
| 32 const HistoryPublisher* history_publisher) { | 33 const HistoryPublisher* history_publisher) { |
| 33 history_publisher_ = history_publisher; | 34 history_publisher_ = history_publisher; |
| 34 | 35 |
| 36 // Set the exceptional sqlite error handler. |
| 37 db_.set_error_delegate(GetErrorHandlerForThumbnailDb()); |
| 38 |
| 35 // Set the database page size to something larger to give us | 39 // Set the database page size to something larger to give us |
| 36 // better performance (we're typically seek rather than bandwidth limited). | 40 // better performance (we're typically seek rather than bandwidth limited). |
| 37 // This only has an effect before any tables have been created, otherwise | 41 // This only has an effect before any tables have been created, otherwise |
| 38 // this is a NOP. Must be a power of 2 and a max of 8192. We use a bigger | 42 // this is a NOP. Must be a power of 2 and a max of 8192. We use a bigger |
| 39 // one because we're storing larger data (4-16K) in it, so we want a few | 43 // one because we're storing larger data (4-16K) in it, so we want a few |
| 40 // blocks per element. | 44 // blocks per element. |
| 41 db_.set_page_size(4096); | 45 db_.set_page_size(4096); |
| 42 | 46 |
| 43 // The UI is generally designed to work well when the thumbnail database is | 47 // The UI is generally designed to work well when the thumbnail database is |
| 44 // slow, so we can tolerate much less caching. The file is also very large | 48 // slow, so we can tolerate much less caching. The file is also very large |
| (...skipping 387 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 432 // Rename the temporary one. | 436 // Rename the temporary one. |
| 433 if (!db_.Execute("ALTER TABLE temp_favicons RENAME TO favicons")) | 437 if (!db_.Execute("ALTER TABLE temp_favicons RENAME TO favicons")) |
| 434 return false; | 438 return false; |
| 435 | 439 |
| 436 // The renamed table needs the index (the temporary table doesn't have one). | 440 // The renamed table needs the index (the temporary table doesn't have one). |
| 437 InitFavIconsIndex(); | 441 InitFavIconsIndex(); |
| 438 return true; | 442 return true; |
| 439 } | 443 } |
| 440 | 444 |
| 441 } // namespace history | 445 } // namespace history |
| OLD | NEW |