// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_WEBDATA_WEB_DATABASE_H__ #define CHROME_BROWSER_WEBDATA_WEB_DATABASE_H__ #include #include #include "base/basictypes.h" #include "chrome/browser/meta_table_helper.h" #include "chrome/browser/template_url.h" #include "chrome/common/sqlite_utils.h" #include "skia/include/SkBitmap.h" class Time; struct PasswordForm; struct IE7PasswordInfo; //////////////////////////////////////////////////////////////////////////////// // // A Sqlite database instance to store all the meta data we have about web pages // //////////////////////////////////////////////////////////////////////////////// class WebDatabase { public: WebDatabase(); ~WebDatabase(); // Initialize the database given a name. The name defines where the sqlite // file is. If false is returned, no other method should be called. bool Init(const std::wstring& db_name); // Transactions management void BeginTransaction(); void CommitTransaction(); ////////////////////////////////////////////////////////////////////////////// // // Keywords // ////////////////////////////////////////////////////////////////////////////// // Adds a new keyword, updating the id field on success. // Returns true if successful. bool AddKeyword(const TemplateURL& url); // Removes the specified keyword. // Returns true if successful. bool RemoveKeyword(TemplateURL::IDType id); // Loads the keywords into the specified vector. It's up to the caller to // delete the returned objects. // Returns true on success. bool GetKeywords(std::vector* urls); // Updates the database values for the specified url. // Returns true on success. bool UpdateKeyword(const TemplateURL& url); // ID (TemplateURL->id) of the default search provider. bool SetDefaultSearchProviderID(int64 id); int64 GetDefaulSearchProviderID(); // Version of the builtin keywords. bool SetBuitinKeywordVersion(int version); int GetBuitinKeywordVersion(); ////////////////////////////////////////////////////////////////////////////// // // Password manager support // ////////////////////////////////////////////////////////////////////////////// // Adds |form| to the list of remembered password forms. bool AddLogin(const PasswordForm& form); // Adds |info| to the list of imported passwords from ie7/ie8. bool AddIE7Login(const IE7PasswordInfo& info); // Updates remembered password form. bool UpdateLogin(const PasswordForm& form); // Removes |form| from the list of remembered password forms. bool RemoveLogin(const PasswordForm& form); // Removes |info| from the list of imported passwords from ie7/ie8. bool RemoveIE7Login(const IE7PasswordInfo& info); // Removes all logins created from |delete_begin| onwards (inclusive) and // before |delete_end|. You may use a null Time value to do an unbounded // delete in either direction. bool RemoveLoginsCreatedBetween(const Time delete_begin, const Time delete_end); // Loads a list of matching password forms into the specified vector |forms|. // The list will contain all possibly relevant entries to the observed |form|, // including blacklisted matches. bool GetLogins(const PasswordForm& form, std::vector* forms); // Return the ie7/ie8 login matching |info|. bool GetIE7Login(const IE7PasswordInfo& info, IE7PasswordInfo* result); // Loads the complete list of password forms into the specified vector |forms| // if include_blacklisted is true, otherwise only loads those which are // actually autofillable; i.e haven't been blacklisted by the user selecting // the 'Never for this site' button. bool GetAllLogins(std::vector* forms, bool include_blacklisted); ////////////////////////////////////////////////////////////////////////////// // // Web Apps // ////////////////////////////////////////////////////////////////////////////// bool SetWebAppImage(const GURL& url, const SkBitmap& image); bool GetWebAppImages(const GURL& url, std::vector* images); bool SetWebAppHasAllImages(const GURL& url, bool has_all_images); bool GetWebAppHasAllImages(const GURL& url); bool RemoveWebApp(const GURL& url); private: friend class WebDatabaseTest; bool InitKeywordsTable(); bool InitLoginsTable(); bool InitWebAppIconsTable(); bool InitWebAppsTable(); void MigrateOldVersionsAsNeeded(); sqlite3* db_; int transaction_nesting_; MetaTableHelper meta_table_; DISALLOW_EVIL_CONSTRUCTORS(WebDatabase); }; #endif // CHROME_BROWSER_WEBDATA_WEB_DATABASE_H__