in_memory_database.h revision 3345a6884c488ff3a535c2c9acdd33d74b37e311
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 13class FilePath; 14 15namespace 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. 20class 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