Home | History | Annotate | Download | only in webdata
      1 // Copyright (c) 2011 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_WEBDATA_KEYWORD_TABLE_H_
      6 #define CHROME_BROWSER_WEBDATA_KEYWORD_TABLE_H_
      7 #pragma once
      8 
      9 #include <vector>
     10 
     11 #include "chrome/browser/webdata/web_database_table.h"
     12 #include "chrome/browser/search_engines/template_url_id.h"
     13 
     14 class GURL;
     15 class TemplateURL;
     16 
     17 namespace base {
     18 class Time;
     19 }
     20 
     21 // This class manages the |keywords| MetaTable within the SQLite database
     22 // passed to the constructor. It expects the following schema:
     23 //
     24 // Note: The database stores time in seconds, UTC.
     25 //
     26 // keywords                 Most of the columns mirror that of a field in
     27 //                          TemplateURL. See TemplateURL for more details.
     28 //   id
     29 //   short_name
     30 //   keyword
     31 //   favicon_url
     32 //   url
     33 //   show_in_default_list
     34 //   safe_for_autoreplace
     35 //   originating_url
     36 //   date_created           This column was added after we allowed keywords.
     37 //                          Keywords created before we started tracking
     38 //                          creation date have a value of 0 for this.
     39 //   usage_count
     40 //   input_encodings        Semicolon separated list of supported input
     41 //                          encodings, may be empty.
     42 //   suggest_url
     43 //   prepopulate_id         See TemplateURL::prepopulate_id.
     44 //   autogenerate_keyword
     45 //   logo_id                See TemplateURL::logo_id
     46 //   created_by_policy      See TemplateURL::created_by_policy.  This was added
     47 //                          in version 26.
     48 //   instant_url            See TemplateURL::instant_url.  This was added
     49 //                          in version 29.
     50 //
     51 class KeywordTable : public WebDatabaseTable {
     52  public:
     53   KeywordTable(sql::Connection* db, sql::MetaTable* meta_table)
     54       : WebDatabaseTable(db, meta_table) {}
     55   virtual ~KeywordTable();
     56   virtual bool Init();
     57   virtual bool IsSyncable();
     58 
     59   // Adds a new keyword, updating the id field on success.
     60   // Returns true if successful.
     61   bool AddKeyword(const TemplateURL& url);
     62 
     63   // Removes the specified keyword.
     64   // Returns true if successful.
     65   bool RemoveKeyword(TemplateURLID id);
     66 
     67   // Loads the keywords into the specified vector. It's up to the caller to
     68   // delete the returned objects.
     69   // Returns true on success.
     70   bool GetKeywords(std::vector<TemplateURL*>* urls);
     71 
     72   // Updates the database values for the specified url.
     73   // Returns true on success.
     74   bool UpdateKeyword(const TemplateURL& url);
     75 
     76   // ID (TemplateURL->id) of the default search provider.
     77   bool SetDefaultSearchProviderID(int64 id);
     78   int64 GetDefaulSearchProviderID();
     79 
     80   // Version of the built-in keywords.
     81   bool SetBuitinKeywordVersion(int version);
     82   int GetBuitinKeywordVersion();
     83 
     84   // Table migration functions.
     85   bool MigrateToVersion21AutoGenerateKeywordColumn();
     86   bool MigrateToVersion25AddLogoIDColumn();
     87   bool MigrateToVersion26AddCreatedByPolicyColumn();
     88   bool MigrateToVersion28SupportsInstantColumn();
     89   bool MigrateToVersion29InstantUrlToSupportsInstant();
     90 
     91  private:
     92   DISALLOW_COPY_AND_ASSIGN(KeywordTable);
     93 };
     94 
     95 #endif  // CHROME_BROWSER_WEBDATA_KEYWORD_TABLE_H_
     96