1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CHROME_BROWSER_HISTORY_IN_MEMORY_DATABASE_H_ 6 #define CHROME_BROWSER_HISTORY_IN_MEMORY_DATABASE_H_ 7 #pragma once 8 9 #include "app/sql/connection.h" 10 #include "base/basictypes.h" 11 #include "chrome/browser/history/url_database.h" 12 13 class FilePath; 14 15 namespace history { 16 17 // Class used for a fast in-memory cache of typed URLs. Used for inline 18 // autocomplete since it is fast enough to be called synchronously as the user 19 // is typing. 20 class InMemoryDatabase : public URLDatabase { 21 public: 22 InMemoryDatabase(); 23 virtual ~InMemoryDatabase(); 24 25 // Creates an empty in-memory database. 26 bool InitFromScratch(); 27 28 // Initializes the database by directly slurping the data from the given 29 // file. Conceptually, the InMemoryHistoryBackend should do the populating 30 // after this object does some common initialization, but that would be 31 // much slower. 32 bool InitFromDisk(const FilePath& history_name); 33 34 protected: 35 // Implemented for URLDatabase. 36 virtual sql::Connection& GetDB(); 37 38 private: 39 // Initializes the database connection, this is the shared code between 40 // InitFromScratch() and InitFromDisk() above. Returns true on success. 41 bool InitDB(); 42 43 sql::Connection db_; 44 45 DISALLOW_COPY_AND_ASSIGN(InMemoryDatabase); 46 }; 47 48 } // namespace history 49 50 #endif // CHROME_BROWSER_HISTORY_IN_MEMORY_DATABASE_H_ 51