Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(155)

Side by Side Diff: chrome/browser/webdata/keyword_table.h

Issue 368273011: Revert of Componentize TemplateURLService (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/webdata/OWNERS ('k') | chrome/browser/webdata/keyword_table.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2014 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
8 #include <string>
9 #include <vector>
10
11 #include "base/compiler_specific.h"
12 #include "base/gtest_prod_util.h"
13 #include "base/strings/string16.h"
14 #include "components/search_engines/template_url_id.h"
15 #include "components/webdata/common/web_database_table.h"
16
17 struct TemplateURLData;
18 class WebDatabase;
19
20 namespace sql {
21 class Statement;
22 } // namespace sql
23
24 // This class manages the |keywords| MetaTable within the SQLite database
25 // passed to the constructor. It expects the following schema:
26 //
27 // Note: The database stores time in seconds, UTC.
28 //
29 // keywords Most of the columns mirror that of a field in
30 // TemplateURLData. See that struct for more details.
31 // id
32 // short_name
33 // keyword
34 // favicon_url
35 // url
36 // show_in_default_list
37 // safe_for_autoreplace
38 // originating_url
39 // date_created This column was added after we allowed keywords.
40 // Keywords created before we started tracking
41 // creation date have a value of 0 for this.
42 // usage_count
43 // input_encodings Semicolon separated list of supported input
44 // encodings, may be empty.
45 // suggest_url
46 // prepopulate_id See TemplateURLData::prepopulate_id.
47 // created_by_policy See TemplateURLData::created_by_policy. This was
48 // added in version 26.
49 // instant_url See TemplateURLData::instant_url. This was added in
50 // version 29.
51 // last_modified See TemplateURLData::last_modified. This was added
52 // in version 38.
53 // sync_guid See TemplateURLData::sync_guid. This was added in
54 // version 39.
55 // alternate_urls See TemplateURLData::alternate_urls. This was added
56 // in version 47.
57 // search_terms_replacement_key
58 // See TemplateURLData::search_terms_replacement_key.
59 // This was added in version 49.
60 // image_url See TemplateURLData::image_url. This was added in
61 // version 52.
62 // search_url_post_params See TemplateURLData::search_url_post_params. This
63 // was added in version 52.
64 // suggest_url_post_params See TemplateURLData::suggestions_url_post_params.
65 // This was added in version 52.
66 // instant_url_post_params See TemplateURLData::instant_url_post_params. This
67 // was added in version 52.
68 // image_url_post_params See TemplateURLData::image_url_post_params. This
69 // was added in version 52.
70 // new_tab_url See TemplateURLData::new_tab_url. This was added in
71 // version 53.
72 //
73 // This class also manages some fields in the |meta| table:
74 //
75 // Default Search Provider ID The id of the default search provider.
76 // Builtin Keyword Version The version of builtin keywords data.
77 //
78 class KeywordTable : public WebDatabaseTable {
79 public:
80 enum OperationType {
81 ADD,
82 REMOVE,
83 UPDATE,
84 };
85
86 typedef std::pair<OperationType, TemplateURLData> Operation;
87 typedef std::vector<Operation> Operations;
88 typedef std::vector<TemplateURLData> Keywords;
89
90 // Constants exposed for the benefit of test code:
91
92 static const char kDefaultSearchProviderKey[];
93
94 KeywordTable();
95 virtual ~KeywordTable();
96
97 // Retrieves the KeywordTable* owned by |database|.
98 static KeywordTable* FromWebDatabase(WebDatabase* db);
99
100 virtual WebDatabaseTable::TypeKey GetTypeKey() const OVERRIDE;
101 virtual bool CreateTablesIfNecessary() OVERRIDE;
102 virtual bool IsSyncable() OVERRIDE;
103 virtual bool MigrateToVersion(int version,
104 bool* update_compatible_version) OVERRIDE;
105
106 // Performs an arbitrary number of Add/Remove/Update operations as a single
107 // transaction. This is provided for efficiency reasons: if the caller needs
108 // to perform a large number of operations, doing them in a single transaction
109 // instead of one-per-transaction can be dramatically more efficient.
110 bool PerformOperations(const Operations& operations);
111
112 // Loads the keywords into the specified vector. It's up to the caller to
113 // delete the returned objects.
114 // Returns true on success.
115 bool GetKeywords(Keywords* keywords);
116
117 // ID (TemplateURLData->id) of the default search provider.
118 bool SetDefaultSearchProviderID(int64 id);
119 int64 GetDefaultSearchProviderID();
120
121 // Version of the built-in keywords.
122 bool SetBuiltinKeywordVersion(int version);
123 int GetBuiltinKeywordVersion();
124
125 // Returns a comma-separated list of the keyword columns for the current
126 // version of the table.
127 static std::string GetKeywordColumns();
128
129 // Table migration functions.
130 bool MigrateToVersion21AutoGenerateKeywordColumn();
131 bool MigrateToVersion25AddLogoIDColumn();
132 bool MigrateToVersion26AddCreatedByPolicyColumn();
133 bool MigrateToVersion28SupportsInstantColumn();
134 bool MigrateToVersion29InstantURLToSupportsInstant();
135 bool MigrateToVersion38AddLastModifiedColumn();
136 bool MigrateToVersion39AddSyncGUIDColumn();
137 bool MigrateToVersion44AddDefaultSearchProviderBackup();
138 bool MigrateToVersion45RemoveLogoIDAndAutogenerateColumns();
139 bool MigrateToVersion47AddAlternateURLsColumn();
140 bool MigrateToVersion48RemoveKeywordsBackup();
141 bool MigrateToVersion49AddSearchTermsReplacementKeyColumn();
142 bool MigrateToVersion52AddImageSearchAndPOSTSupport();
143 bool MigrateToVersion53AddNewTabURLColumn();
144
145 private:
146 friend class KeywordTableTest;
147 FRIEND_TEST_ALL_PREFIXES(WebDatabaseMigrationTest, MigrateVersion44ToCurrent);
148
149 // NOTE: Since the table columns have changed in different versions, many
150 // functions below take a |table_version| argument which dictates which
151 // version number's column set to use.
152
153 // Fills |data| with the data in |s|. Returns false if we couldn't fill
154 // |data| for some reason, e.g. |s| tried to set one of the fields to an
155 // illegal value.
156 static bool GetKeywordDataFromStatement(const sql::Statement& s,
157 TemplateURLData* data);
158
159 // Adds a new keyword, updating the id field on success.
160 // Returns true if successful.
161 bool AddKeyword(const TemplateURLData& data);
162
163 // Removes the specified keyword.
164 // Returns true if successful.
165 bool RemoveKeyword(TemplateURLID id);
166
167 // Updates the database values for the specified url.
168 // Returns true on success.
169 bool UpdateKeyword(const TemplateURLData& data);
170
171 // Gets a string representation for keyword with id specified.
172 // Used to store its result in |meta| table or to compare with another
173 // keyword. Returns true on success, false otherwise.
174 bool GetKeywordAsString(TemplateURLID id,
175 const std::string& table_name,
176 std::string* result);
177
178 // Migrates table |name| (which should be either "keywords" or
179 // "keywords_backup") from version 44 to version 45.
180 bool MigrateKeywordsTableForVersion45(const std::string& name);
181
182 DISALLOW_COPY_AND_ASSIGN(KeywordTable);
183 };
184
185 #endif // CHROME_BROWSER_WEBDATA_KEYWORD_TABLE_H_
OLDNEW
« no previous file with comments | « chrome/browser/webdata/OWNERS ('k') | chrome/browser/webdata/keyword_table.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698