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

Side by Side Diff: chrome/browser/webdata/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 (c) 2012 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/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"
11 #include "chrome/browser/webdata/logins_table.h" 8 #include "chrome/browser/webdata/logins_table.h"
12 #include "chrome/browser/webdata/web_apps_table.h" 9 #include "chrome/browser/webdata/web_apps_table.h"
13 #include "chrome/browser/webdata/web_intents_table.h" 10 #include "chrome/browser/webdata/web_intents_table.h"
14 #include "components/search_engines/template_url.h" 11 #include "components/search_engines/template_url.h"
15 #include "components/signin/core/browser/webdata/token_service_table.h" 12 #include "components/signin/core/browser/webdata/token_service_table.h"
16 #include "components/webdata/common/web_database_service.h" 13 #include "components/webdata/common/web_database_service.h"
17 #include "content/public/browser/browser_thread.h" 14 #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" 15 #include "third_party/skia/include/core/SkBitmap.h"
22 16
23 //////////////////////////////////////////////////////////////////////////////// 17 ////////////////////////////////////////////////////////////////////////////////
24 // 18 //
25 // WebDataService implementation. 19 // WebDataService implementation.
26 // 20 //
27 //////////////////////////////////////////////////////////////////////////////// 21 ////////////////////////////////////////////////////////////////////////////////
28 22
29 using base::Bind; 23 using base::Bind;
30 using base::Time;
31 using content::BrowserThread; 24 using content::BrowserThread;
32 25
33 WDAppImagesResult::WDAppImagesResult() : has_all_images(false) {} 26 WDAppImagesResult::WDAppImagesResult() : has_all_images(false) {}
34 27
35 WDAppImagesResult::~WDAppImagesResult() {} 28 WDAppImagesResult::~WDAppImagesResult() {}
36 29
37 WDKeywordsResult::WDKeywordsResult()
38 : default_search_provider_id(0),
39 builtin_keyword_version(0) {
40 }
41
42 WDKeywordsResult::~WDKeywordsResult() {}
43
44 WebDataService::KeywordBatchModeScoper::KeywordBatchModeScoper(
45 WebDataService* service)
46 : service_(service) {
47 if (service_)
48 service_->AdjustKeywordBatchModeLevel(true);
49 }
50
51 WebDataService::KeywordBatchModeScoper::~KeywordBatchModeScoper() {
52 if (service_)
53 service_->AdjustKeywordBatchModeLevel(false);
54 }
55
56 WebDataService::WebDataService(scoped_refptr<WebDatabaseService> wdbs, 30 WebDataService::WebDataService(scoped_refptr<WebDatabaseService> wdbs,
57 const ProfileErrorCallback& callback) 31 const ProfileErrorCallback& callback)
58 : WebDataServiceBase( 32 : WebDataServiceBase(
59 wdbs, callback, 33 wdbs, callback,
60 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI)), 34 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI)) {
61 keyword_batch_mode_level_(0) {
62 } 35 }
63 36
64 ////////////////////////////////////////////////////////////////////////////// 37 //////////////////////////////////////////////////////////////////////////////
65 //
66 // Keywords.
67 //
68 //////////////////////////////////////////////////////////////////////////////
69
70 void WebDataService::AddKeyword(const TemplateURLData& data) {
71 if (keyword_batch_mode_level_) {
72 queued_keyword_operations_.push_back(
73 KeywordTable::Operation(KeywordTable::ADD, data));
74 } else {
75 AdjustKeywordBatchModeLevel(true);
76 AddKeyword(data);
77 AdjustKeywordBatchModeLevel(false);
78 }
79 }
80
81 void WebDataService::RemoveKeyword(TemplateURLID id) {
82 if (keyword_batch_mode_level_) {
83 TemplateURLData data;
84 data.id = id;
85 queued_keyword_operations_.push_back(
86 KeywordTable::Operation(KeywordTable::REMOVE, data));
87 } else {
88 AdjustKeywordBatchModeLevel(true);
89 RemoveKeyword(id);
90 AdjustKeywordBatchModeLevel(false);
91 }
92 }
93
94 void WebDataService::UpdateKeyword(const TemplateURLData& data) {
95 if (keyword_batch_mode_level_) {
96 queued_keyword_operations_.push_back(
97 KeywordTable::Operation(KeywordTable::UPDATE, data));
98 } else {
99 AdjustKeywordBatchModeLevel(true);
100 UpdateKeyword(data);
101 AdjustKeywordBatchModeLevel(false);
102 }
103 }
104
105 WebDataServiceBase::Handle WebDataService::GetKeywords(
106 WebDataServiceConsumer* consumer) {
107 return wdbs_->ScheduleDBTaskWithResult(
108 FROM_HERE, Bind(&WebDataService::GetKeywordsImpl, this), consumer);
109 }
110
111 void WebDataService::SetDefaultSearchProviderID(TemplateURLID id) {
112 wdbs_->ScheduleDBTask(
113 FROM_HERE,
114 Bind(&WebDataService::SetDefaultSearchProviderIDImpl, this, id));
115 }
116
117 void WebDataService::SetBuiltinKeywordVersion(int version) {
118 wdbs_->ScheduleDBTask(
119 FROM_HERE,
120 Bind(&WebDataService::SetBuiltinKeywordVersionImpl, this, version));
121 }
122
123 //////////////////////////////////////////////////////////////////////////////
124 // 38 //
125 // Web Apps 39 // Web Apps
126 // 40 //
127 ////////////////////////////////////////////////////////////////////////////// 41 //////////////////////////////////////////////////////////////////////////////
128 42
129 void WebDataService::SetWebAppImage(const GURL& app_url, 43 void WebDataService::SetWebAppImage(const GURL& app_url,
130 const SkBitmap& image) { 44 const SkBitmap& image) {
131 wdbs_->ScheduleDBTask(FROM_HERE, 45 wdbs_->ScheduleDBTask(FROM_HERE,
132 Bind(&WebDataService::SetWebAppImageImpl, this, app_url, image)); 46 Bind(&WebDataService::SetWebAppImageImpl, this, app_url, image));
133 } 47 }
(...skipping 14 matching lines...) Expand all
148 const GURL& app_url, WebDataServiceConsumer* consumer) { 62 const GURL& app_url, WebDataServiceConsumer* consumer) {
149 return wdbs_->ScheduleDBTaskWithResult(FROM_HERE, 63 return wdbs_->ScheduleDBTaskWithResult(FROM_HERE,
150 Bind(&WebDataService::GetWebAppImagesImpl, this, app_url), consumer); 64 Bind(&WebDataService::GetWebAppImagesImpl, this, app_url), consumer);
151 } 65 }
152 66
153 //////////////////////////////////////////////////////////////////////////////// 67 ////////////////////////////////////////////////////////////////////////////////
154 68
155 WebDataService::WebDataService() 69 WebDataService::WebDataService()
156 : WebDataServiceBase( 70 : WebDataServiceBase(
157 NULL, ProfileErrorCallback(), 71 NULL, ProfileErrorCallback(),
158 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI)), 72 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI)) {
159 keyword_batch_mode_level_(0) {
160 } 73 }
161 74
162 WebDataService::~WebDataService() { 75 WebDataService::~WebDataService() {
163 DCHECK(!keyword_batch_mode_level_);
164 }
165
166 void WebDataService::AdjustKeywordBatchModeLevel(bool entering_batch_mode) {
167 if (entering_batch_mode) {
168 ++keyword_batch_mode_level_;
169 } else {
170 DCHECK(keyword_batch_mode_level_);
171 --keyword_batch_mode_level_;
172 if (!keyword_batch_mode_level_ && !queued_keyword_operations_.empty()) {
173 wdbs_->ScheduleDBTask(
174 FROM_HERE,
175 Bind(&WebDataService::PerformKeywordOperationsImpl, this,
176 queued_keyword_operations_));
177 queued_keyword_operations_.clear();
178 }
179 }
180 } 76 }
181 77
182 //////////////////////////////////////////////////////////////////////////////// 78 ////////////////////////////////////////////////////////////////////////////////
183 //
184 // Keywords implementation.
185 //
186 ////////////////////////////////////////////////////////////////////////////////
187
188 WebDatabase::State WebDataService::PerformKeywordOperationsImpl(
189 const KeywordTable::Operations& operations,
190 WebDatabase* db) {
191 return KeywordTable::FromWebDatabase(db)->PerformOperations(operations) ?
192 WebDatabase::COMMIT_NEEDED : WebDatabase::COMMIT_NOT_NEEDED;
193 }
194
195 scoped_ptr<WDTypedResult> WebDataService::GetKeywordsImpl(WebDatabase* db) {
196 scoped_ptr<WDTypedResult> result_ptr;
197 WDKeywordsResult result;
198 if (KeywordTable::FromWebDatabase(db)->GetKeywords(&result.keywords)) {
199 result.default_search_provider_id =
200 KeywordTable::FromWebDatabase(db)->GetDefaultSearchProviderID();
201 result.builtin_keyword_version =
202 KeywordTable::FromWebDatabase(db)->GetBuiltinKeywordVersion();
203 result_ptr.reset(new WDResult<WDKeywordsResult>(KEYWORDS_RESULT, result));
204 }
205 return result_ptr.Pass();
206 }
207
208 WebDatabase::State WebDataService::SetDefaultSearchProviderIDImpl(
209 TemplateURLID id,
210 WebDatabase* db) {
211 return KeywordTable::FromWebDatabase(db)->SetDefaultSearchProviderID(id) ?
212 WebDatabase::COMMIT_NEEDED : WebDatabase::COMMIT_NOT_NEEDED;
213 }
214
215 WebDatabase::State WebDataService::SetBuiltinKeywordVersionImpl(
216 int version,
217 WebDatabase* db) {
218 return KeywordTable::FromWebDatabase(db)->SetBuiltinKeywordVersion(version) ?
219 WebDatabase::COMMIT_NEEDED : WebDatabase::COMMIT_NOT_NEEDED;
220 }
221
222 ////////////////////////////////////////////////////////////////////////////////
223 // 79 //
224 // Web Apps implementation. 80 // Web Apps implementation.
225 // 81 //
226 //////////////////////////////////////////////////////////////////////////////// 82 ////////////////////////////////////////////////////////////////////////////////
227 83
228 WebDatabase::State WebDataService::SetWebAppImageImpl( 84 WebDatabase::State WebDataService::SetWebAppImageImpl(
229 const GURL& app_url, const SkBitmap& image, WebDatabase* db) { 85 const GURL& app_url, const SkBitmap& image, WebDatabase* db) {
230 WebAppsTable::FromWebDatabase(db)->SetWebAppImage(app_url, image); 86 WebAppsTable::FromWebDatabase(db)->SetWebAppImage(app_url, image);
231 return WebDatabase::COMMIT_NEEDED; 87 return WebDatabase::COMMIT_NEEDED;
232 } 88 }
(...skipping 13 matching lines...) Expand all
246 102
247 scoped_ptr<WDTypedResult> WebDataService::GetWebAppImagesImpl( 103 scoped_ptr<WDTypedResult> WebDataService::GetWebAppImagesImpl(
248 const GURL& app_url, WebDatabase* db) { 104 const GURL& app_url, WebDatabase* db) {
249 WDAppImagesResult result; 105 WDAppImagesResult result;
250 result.has_all_images = 106 result.has_all_images =
251 WebAppsTable::FromWebDatabase(db)->GetWebAppHasAllImages(app_url); 107 WebAppsTable::FromWebDatabase(db)->GetWebAppHasAllImages(app_url);
252 WebAppsTable::FromWebDatabase(db)->GetWebAppImages(app_url, &result.images); 108 WebAppsTable::FromWebDatabase(db)->GetWebAppImages(app_url, &result.images);
253 return scoped_ptr<WDTypedResult>( 109 return scoped_ptr<WDTypedResult>(
254 new WDResult<WDAppImagesResult>(WEB_APP_IMAGES, result)); 110 new WDResult<WDAppImagesResult>(WEB_APP_IMAGES, result));
255 } 111 }
OLDNEW
« no previous file with comments | « chrome/browser/webdata/web_data_service.h ('k') | chrome/browser/webdata/web_data_service_factory.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698