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

Side by Side Diff: chrome/browser/webdata/keyword_web_data_service.cc

Issue 355573008: Split keyword related parts of WebDataService as KeywordWebDataService (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/webdata/web_data_service.h" 5 #include "chrome/browser/webdata/keyword_web_data_service.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/stl_util.h"
9 #include "chrome/browser/chrome_notification_types.h"
10 #include "chrome/browser/webdata/keyword_table.h" 8 #include "chrome/browser/webdata/keyword_table.h"
11 #include "chrome/browser/webdata/logins_table.h" 9 #include "components/search_engines/template_url_data.h"
12 #include "chrome/browser/webdata/web_apps_table.h" 10 #include "components/webdata/common/web_data_results.h"
13 #include "chrome/browser/webdata/web_intents_table.h"
14 #include "components/search_engines/template_url.h"
15 #include "components/signin/core/browser/webdata/token_service_table.h"
16 #include "components/webdata/common/web_database_service.h" 11 #include "components/webdata/common/web_database_service.h"
17 #include "content/public/browser/browser_thread.h"
18 #include "content/public/browser/notification_details.h"
19 #include "content/public/browser/notification_service.h"
20 #include "content/public/browser/notification_source.h"
21 #include "third_party/skia/include/core/SkBitmap.h"
22
23 ////////////////////////////////////////////////////////////////////////////////
24 //
25 // WebDataService implementation.
26 //
27 ////////////////////////////////////////////////////////////////////////////////
28 12
29 using base::Bind; 13 using base::Bind;
30 using base::Time;
31 using content::BrowserThread;
32
33 WDAppImagesResult::WDAppImagesResult() : has_all_images(false) {}
34
35 WDAppImagesResult::~WDAppImagesResult() {}
36 14
37 WDKeywordsResult::WDKeywordsResult() 15 WDKeywordsResult::WDKeywordsResult()
38 : default_search_provider_id(0), 16 : default_search_provider_id(0),
39 builtin_keyword_version(0) { 17 builtin_keyword_version(0) {
40 } 18 }
41 19
42 WDKeywordsResult::~WDKeywordsResult() {} 20 WDKeywordsResult::~WDKeywordsResult() {}
43 21
44 WebDataService::KeywordBatchModeScoper::KeywordBatchModeScoper( 22 KeywordWebDataService::BatchModeScoper::BatchModeScoper(
45 WebDataService* service) 23 KeywordWebDataService* service)
46 : service_(service) { 24 : service_(service) {
47 if (service_) 25 if (service_)
48 service_->AdjustKeywordBatchModeLevel(true); 26 service_->AdjustBatchModeLevel(true);
49 } 27 }
50 28
51 WebDataService::KeywordBatchModeScoper::~KeywordBatchModeScoper() { 29 KeywordWebDataService::BatchModeScoper::~BatchModeScoper() {
52 if (service_) 30 if (service_)
53 service_->AdjustKeywordBatchModeLevel(false); 31 service_->AdjustBatchModeLevel(false);
54 } 32 }
55 33
56 WebDataService::WebDataService(scoped_refptr<WebDatabaseService> wdbs, 34 KeywordWebDataService::KeywordWebDataService(
57 const ProfileErrorCallback& callback) 35 scoped_refptr<WebDatabaseService> wdbs,
58 : WebDataServiceBase( 36 scoped_refptr<base::MessageLoopProxy> ui_thread,
59 wdbs, callback, 37 const ProfileErrorCallback& callback)
60 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI)), 38 : WebDataServiceBase(wdbs, callback, ui_thread),
61 keyword_batch_mode_level_(0) { 39 batch_mode_level_(0) {
62 } 40 }
63 41
64 ////////////////////////////////////////////////////////////////////////////// 42 void KeywordWebDataService::AddKeyword(const TemplateURLData& data) {
65 // 43 if (batch_mode_level_) {
66 // Keywords.
67 //
68 //////////////////////////////////////////////////////////////////////////////
69
70 void WebDataService::AddKeyword(const TemplateURLData& data) {
71 if (keyword_batch_mode_level_) {
72 queued_keyword_operations_.push_back( 44 queued_keyword_operations_.push_back(
73 KeywordTable::Operation(KeywordTable::ADD, data)); 45 KeywordTable::Operation(KeywordTable::ADD, data));
74 } else { 46 } else {
75 AdjustKeywordBatchModeLevel(true); 47 AdjustBatchModeLevel(true);
76 AddKeyword(data); 48 AddKeyword(data);
77 AdjustKeywordBatchModeLevel(false); 49 AdjustBatchModeLevel(false);
78 } 50 }
79 } 51 }
80 52
81 void WebDataService::RemoveKeyword(TemplateURLID id) { 53 void KeywordWebDataService::RemoveKeyword(TemplateURLID id) {
82 if (keyword_batch_mode_level_) { 54 if (batch_mode_level_) {
83 TemplateURLData data; 55 TemplateURLData data;
84 data.id = id; 56 data.id = id;
85 queued_keyword_operations_.push_back( 57 queued_keyword_operations_.push_back(
86 KeywordTable::Operation(KeywordTable::REMOVE, data)); 58 KeywordTable::Operation(KeywordTable::REMOVE, data));
87 } else { 59 } else {
88 AdjustKeywordBatchModeLevel(true); 60 AdjustBatchModeLevel(true);
89 RemoveKeyword(id); 61 RemoveKeyword(id);
90 AdjustKeywordBatchModeLevel(false); 62 AdjustBatchModeLevel(false);
91 } 63 }
92 } 64 }
93 65
94 void WebDataService::UpdateKeyword(const TemplateURLData& data) { 66 void KeywordWebDataService::UpdateKeyword(const TemplateURLData& data) {
95 if (keyword_batch_mode_level_) { 67 if (batch_mode_level_) {
96 queued_keyword_operations_.push_back( 68 queued_keyword_operations_.push_back(
97 KeywordTable::Operation(KeywordTable::UPDATE, data)); 69 KeywordTable::Operation(KeywordTable::UPDATE, data));
98 } else { 70 } else {
99 AdjustKeywordBatchModeLevel(true); 71 AdjustBatchModeLevel(true);
100 UpdateKeyword(data); 72 UpdateKeyword(data);
101 AdjustKeywordBatchModeLevel(false); 73 AdjustBatchModeLevel(false);
102 } 74 }
103 } 75 }
104 76
105 WebDataServiceBase::Handle WebDataService::GetKeywords( 77 WebDataServiceBase::Handle KeywordWebDataService::GetKeywords(
106 WebDataServiceConsumer* consumer) { 78 WebDataServiceConsumer* consumer) {
107 return wdbs_->ScheduleDBTaskWithResult( 79 return wdbs_->ScheduleDBTaskWithResult(
108 FROM_HERE, Bind(&WebDataService::GetKeywordsImpl, this), consumer); 80 FROM_HERE, Bind(&KeywordWebDataService::GetKeywordsImpl, this), consumer);
109 } 81 }
110 82
111 void WebDataService::SetDefaultSearchProviderID(TemplateURLID id) { 83 void KeywordWebDataService::SetDefaultSearchProviderID(TemplateURLID id) {
112 wdbs_->ScheduleDBTask( 84 wdbs_->ScheduleDBTask(
113 FROM_HERE, 85 FROM_HERE,
114 Bind(&WebDataService::SetDefaultSearchProviderIDImpl, this, id)); 86 Bind(&KeywordWebDataService::SetDefaultSearchProviderIDImpl, this, id));
115 } 87 }
116 88
117 void WebDataService::SetBuiltinKeywordVersion(int version) { 89 void KeywordWebDataService::SetBuiltinKeywordVersion(int version) {
118 wdbs_->ScheduleDBTask( 90 wdbs_->ScheduleDBTask(
119 FROM_HERE, 91 FROM_HERE,
120 Bind(&WebDataService::SetBuiltinKeywordVersionImpl, this, version)); 92 Bind(&KeywordWebDataService::SetBuiltinKeywordVersionImpl,
93 this, version));
121 } 94 }
122 95
123 ////////////////////////////////////////////////////////////////////////////// 96 KeywordWebDataService::~KeywordWebDataService() {
124 // 97 DCHECK(!batch_mode_level_);
125 // Web Apps
126 //
127 //////////////////////////////////////////////////////////////////////////////
128
129 void WebDataService::SetWebAppImage(const GURL& app_url,
130 const SkBitmap& image) {
131 wdbs_->ScheduleDBTask(FROM_HERE,
132 Bind(&WebDataService::SetWebAppImageImpl, this, app_url, image));
133 } 98 }
134 99
135 void WebDataService::SetWebAppHasAllImages(const GURL& app_url, 100 void KeywordWebDataService::AdjustBatchModeLevel(bool entering_batch_mode) {
136 bool has_all_images) {
137 wdbs_->ScheduleDBTask(FROM_HERE,
138 Bind(&WebDataService::SetWebAppHasAllImagesImpl, this, app_url,
139 has_all_images));
140 }
141
142 void WebDataService::RemoveWebApp(const GURL& app_url) {
143 wdbs_->ScheduleDBTask(FROM_HERE,
144 Bind(&WebDataService::RemoveWebAppImpl, this, app_url));
145 }
146
147 WebDataServiceBase::Handle WebDataService::GetWebAppImages(
148 const GURL& app_url, WebDataServiceConsumer* consumer) {
149 return wdbs_->ScheduleDBTaskWithResult(FROM_HERE,
150 Bind(&WebDataService::GetWebAppImagesImpl, this, app_url), consumer);
151 }
152
153 ////////////////////////////////////////////////////////////////////////////////
154
155 WebDataService::WebDataService()
156 : WebDataServiceBase(
157 NULL, ProfileErrorCallback(),
158 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI)),
159 keyword_batch_mode_level_(0) {
160 }
161
162 WebDataService::~WebDataService() {
163 DCHECK(!keyword_batch_mode_level_);
164 }
165
166 void WebDataService::AdjustKeywordBatchModeLevel(bool entering_batch_mode) {
167 if (entering_batch_mode) { 101 if (entering_batch_mode) {
168 ++keyword_batch_mode_level_; 102 ++batch_mode_level_;
169 } else { 103 } else {
170 DCHECK(keyword_batch_mode_level_); 104 DCHECK(batch_mode_level_);
171 --keyword_batch_mode_level_; 105 --batch_mode_level_;
172 if (!keyword_batch_mode_level_ && !queued_keyword_operations_.empty()) { 106 if (!batch_mode_level_ && !queued_keyword_operations_.empty()) {
173 wdbs_->ScheduleDBTask( 107 wdbs_->ScheduleDBTask(
174 FROM_HERE, 108 FROM_HERE,
175 Bind(&WebDataService::PerformKeywordOperationsImpl, this, 109 Bind(&KeywordWebDataService::PerformKeywordOperationsImpl, this,
176 queued_keyword_operations_)); 110 queued_keyword_operations_));
177 queued_keyword_operations_.clear(); 111 queued_keyword_operations_.clear();
178 } 112 }
179 } 113 }
180 } 114 }
181 115
182 //////////////////////////////////////////////////////////////////////////////// 116 WebDatabase::State KeywordWebDataService::PerformKeywordOperationsImpl(
183 //
184 // Keywords implementation.
185 //
186 ////////////////////////////////////////////////////////////////////////////////
187
188 WebDatabase::State WebDataService::PerformKeywordOperationsImpl(
189 const KeywordTable::Operations& operations, 117 const KeywordTable::Operations& operations,
190 WebDatabase* db) { 118 WebDatabase* db) {
191 return KeywordTable::FromWebDatabase(db)->PerformOperations(operations) ? 119 return KeywordTable::FromWebDatabase(db)->PerformOperations(operations) ?
192 WebDatabase::COMMIT_NEEDED : WebDatabase::COMMIT_NOT_NEEDED; 120 WebDatabase::COMMIT_NEEDED : WebDatabase::COMMIT_NOT_NEEDED;
193 } 121 }
194 122
195 scoped_ptr<WDTypedResult> WebDataService::GetKeywordsImpl(WebDatabase* db) { 123 scoped_ptr<WDTypedResult> KeywordWebDataService::GetKeywordsImpl(
124 WebDatabase* db) {
196 scoped_ptr<WDTypedResult> result_ptr; 125 scoped_ptr<WDTypedResult> result_ptr;
197 WDKeywordsResult result; 126 WDKeywordsResult result;
198 if (KeywordTable::FromWebDatabase(db)->GetKeywords(&result.keywords)) { 127 if (KeywordTable::FromWebDatabase(db)->GetKeywords(&result.keywords)) {
199 result.default_search_provider_id = 128 result.default_search_provider_id =
200 KeywordTable::FromWebDatabase(db)->GetDefaultSearchProviderID(); 129 KeywordTable::FromWebDatabase(db)->GetDefaultSearchProviderID();
201 result.builtin_keyword_version = 130 result.builtin_keyword_version =
202 KeywordTable::FromWebDatabase(db)->GetBuiltinKeywordVersion(); 131 KeywordTable::FromWebDatabase(db)->GetBuiltinKeywordVersion();
203 result_ptr.reset(new WDResult<WDKeywordsResult>(KEYWORDS_RESULT, result)); 132 result_ptr.reset(new WDResult<WDKeywordsResult>(KEYWORDS_RESULT, result));
204 } 133 }
205 return result_ptr.Pass(); 134 return result_ptr.Pass();
206 } 135 }
207 136
208 WebDatabase::State WebDataService::SetDefaultSearchProviderIDImpl( 137 WebDatabase::State KeywordWebDataService::SetDefaultSearchProviderIDImpl(
209 TemplateURLID id, 138 TemplateURLID id,
210 WebDatabase* db) { 139 WebDatabase* db) {
211 return KeywordTable::FromWebDatabase(db)->SetDefaultSearchProviderID(id) ? 140 return KeywordTable::FromWebDatabase(db)->SetDefaultSearchProviderID(id) ?
212 WebDatabase::COMMIT_NEEDED : WebDatabase::COMMIT_NOT_NEEDED; 141 WebDatabase::COMMIT_NEEDED : WebDatabase::COMMIT_NOT_NEEDED;
213 } 142 }
214 143
215 WebDatabase::State WebDataService::SetBuiltinKeywordVersionImpl( 144 WebDatabase::State KeywordWebDataService::SetBuiltinKeywordVersionImpl(
216 int version, 145 int version,
217 WebDatabase* db) { 146 WebDatabase* db) {
218 return KeywordTable::FromWebDatabase(db)->SetBuiltinKeywordVersion(version) ? 147 return KeywordTable::FromWebDatabase(db)->SetBuiltinKeywordVersion(version) ?
219 WebDatabase::COMMIT_NEEDED : WebDatabase::COMMIT_NOT_NEEDED; 148 WebDatabase::COMMIT_NEEDED : WebDatabase::COMMIT_NOT_NEEDED;
220 } 149 }
221
222 ////////////////////////////////////////////////////////////////////////////////
223 //
224 // Web Apps implementation.
225 //
226 ////////////////////////////////////////////////////////////////////////////////
227
228 WebDatabase::State WebDataService::SetWebAppImageImpl(
229 const GURL& app_url, const SkBitmap& image, WebDatabase* db) {
230 WebAppsTable::FromWebDatabase(db)->SetWebAppImage(app_url, image);
231 return WebDatabase::COMMIT_NEEDED;
232 }
233
234 WebDatabase::State WebDataService::SetWebAppHasAllImagesImpl(
235 const GURL& app_url, bool has_all_images, WebDatabase* db) {
236 WebAppsTable::FromWebDatabase(db)->SetWebAppHasAllImages(app_url,
237 has_all_images);
238 return WebDatabase::COMMIT_NEEDED;
239 }
240
241 WebDatabase::State WebDataService::RemoveWebAppImpl(
242 const GURL& app_url, WebDatabase* db) {
243 WebAppsTable::FromWebDatabase(db)->RemoveWebApp(app_url);
244 return WebDatabase::COMMIT_NEEDED;
245 }
246
247 scoped_ptr<WDTypedResult> WebDataService::GetWebAppImagesImpl(
248 const GURL& app_url, WebDatabase* db) {
249 WDAppImagesResult result;
250 result.has_all_images =
251 WebAppsTable::FromWebDatabase(db)->GetWebAppHasAllImages(app_url);
252 WebAppsTable::FromWebDatabase(db)->GetWebAppImages(app_url, &result.images);
253 return scoped_ptr<WDTypedResult>(
254 new WDResult<WDAppImagesResult>(WEB_APP_IMAGES, result));
255 }
OLDNEW
« no previous file with comments | « chrome/browser/webdata/keyword_web_data_service.h ('k') | chrome/browser/webdata/web_data_service.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698