in_memory_database.h revision 5821806d5e7f356e8fa4b058a389a808ea183019
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2011 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CHROME_BROWSER_HISTORY_IN_MEMORY_DATABASE_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROME_BROWSER_HISTORY_IN_MEMORY_DATABASE_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/history/url_database.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "sql/connection.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class FilePath;
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace history {
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Class used for a fast in-memory cache of typed URLs. Used for inline
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// autocomplete since it is fast enough to be called synchronously as the user
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// is typing.
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class InMemoryDatabase : public URLDatabase {
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InMemoryDatabase();
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~InMemoryDatabase();
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Creates an empty in-memory database.
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool InitFromScratch();
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Initializes the database by directly slurping the data from the given
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // file. Conceptually, the InMemoryHistoryBackend should do the populating
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // after this object does some common initialization, but that would be
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // much slower.
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool InitFromDisk(const FilePath& history_name);
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected:
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Implemented for URLDatabase.
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual sql::Connection& GetDB() OVERRIDE;
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Initializes the database connection, this is the shared code between
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // InitFromScratch() and InitFromDisk() above. Returns true on success.
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool InitDB();
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  sql::Connection db_;
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(InMemoryDatabase);
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace history
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // CHROME_BROWSER_HISTORY_IN_MEMORY_DATABASE_H_
50