Home | History | Annotate | Download | only in history
      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