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