summaryrefslogtreecommitdiffstats
path: root/chrome/browser/webdata/web_database.h
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/webdata/web_database.h')
-rw-r--r--chrome/browser/webdata/web_database.h167
1 files changed, 167 insertions, 0 deletions
diff --git a/chrome/browser/webdata/web_database.h b/chrome/browser/webdata/web_database.h
new file mode 100644
index 0000000..f34d570
--- /dev/null
+++ b/chrome/browser/webdata/web_database.h
@@ -0,0 +1,167 @@
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef CHROME_BROWSER_WEBDATA_WEB_DATABASE_H__
+#define CHROME_BROWSER_WEBDATA_WEB_DATABASE_H__
+
+#include <string>
+#include <vector>
+#include <hash_map>
+
+#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<TemplateURL*>* 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<PasswordForm*>* 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<PasswordForm*>* forms,
+ bool include_blacklisted);
+
+ //////////////////////////////////////////////////////////////////////////////
+ //
+ // Web Apps
+ //
+ //////////////////////////////////////////////////////////////////////////////
+
+ bool SetWebAppImage(const GURL& url, const SkBitmap& image);
+ bool GetWebAppImages(const GURL& url, std::vector<SkBitmap>* 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();
+
+ sqlite3* db_;
+ int transaction_nesting_;
+ MetaTableHelper meta_table_;
+
+ DISALLOW_EVIL_CONSTRUCTORS(WebDatabase);
+};
+
+#endif // CHROME_BROWSER_WEBDATA_WEB_DATABASE_H__