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

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

Issue 367023002: Componentize TemplateURLService (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
(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_WEB_DATA_SERVICE_H__
6 #define CHROME_BROWSER_WEBDATA_KEYWORD_WEB_DATA_SERVICE_H__
7
8 #include "base/memory/ref_counted.h"
9 #include "chrome/browser/webdata/keyword_table.h"
10 #include "components/search_engines/template_url_id.h"
11 #include "components/webdata/common/web_data_service_base.h"
12 #include "components/webdata/common/web_database.h"
13
14 namespace base {
15 class MessageLoopProxy;
16 }
17
18 class WDTypedResult;
19 class WebDatabaseService;
20 struct TemplateURLData;
21
22 struct WDKeywordsResult {
23 WDKeywordsResult();
24 ~WDKeywordsResult();
25
26 KeywordTable::Keywords keywords;
27 // Identifies the ID of the TemplateURL that is the default search. A value of
28 // 0 indicates there is no default search provider.
29 int64 default_search_provider_id;
30 // Version of the built-in keywords. A value of 0 indicates a first run.
31 int builtin_keyword_version;
32 };
33
34 class WebDataServiceConsumer;
35
36 class KeywordWebDataService : public WebDataServiceBase {
37 public:
38 // Instantiate this to turn on batch mode on the provided |service|
39 // until the scoper is destroyed. When batch mode is on, calls to any of the
40 // three keyword table modification functions below will result in locally
41 // queueing the operation; on setting this back to false, all the
42 // modifications will be performed at once. This is a performance
43 // optimization; see comments on KeywordTable::PerformOperations().
44 //
45 // If multiple scopers are in-scope simultaneously, batch mode will only be
46 // exited when all are destroyed. If |service| is NULL, the object will do
47 // nothing.
48 class BatchModeScoper {
49 public:
50 explicit BatchModeScoper(KeywordWebDataService* service);
51 ~BatchModeScoper();
52
53 private:
54 KeywordWebDataService* service_;
55
56 DISALLOW_COPY_AND_ASSIGN(BatchModeScoper);
57 };
58
59 KeywordWebDataService(scoped_refptr<WebDatabaseService> wdbs,
60 scoped_refptr<base::MessageLoopProxy> ui_thread,
61 const ProfileErrorCallback& callback);
62
63 // As the database processes requests at a later date, all deletion is
64 // done on the background thread.
65 //
66 // Many of the keyword related methods do not return a handle. This is because
67 // the caller (TemplateURLService) does not need to know when the request is
68 // done.
69
70 void AddKeyword(const TemplateURLData& data);
71 void RemoveKeyword(TemplateURLID id);
72 void UpdateKeyword(const TemplateURLData& data);
73
74 // Fetches the keywords.
75 // On success, consumer is notified with WDResult<KeywordTable::Keywords>.
76 Handle GetKeywords(WebDataServiceConsumer* consumer);
77
78 // Sets the ID of the default search provider.
79 void SetDefaultSearchProviderID(TemplateURLID id);
80
81 // Sets the version of the builtin keywords.
82 void SetBuiltinKeywordVersion(int version);
83
84 protected:
85 virtual ~KeywordWebDataService();
86
87 private:
88 // Called by the BatchModeScoper (see comments there).
89 void AdjustBatchModeLevel(bool entering_batch_mode);
90
91 //////////////////////////////////////////////////////////////////////////////
92 //
93 // The following methods are only invoked on the DB thread.
94 //
95 //////////////////////////////////////////////////////////////////////////////
96 WebDatabase::State PerformKeywordOperationsImpl(
97 const KeywordTable::Operations& operations,
98 WebDatabase* db);
99 scoped_ptr<WDTypedResult> GetKeywordsImpl(WebDatabase* db);
100 WebDatabase::State SetDefaultSearchProviderIDImpl(TemplateURLID id,
101 WebDatabase* db);
102 WebDatabase::State SetBuiltinKeywordVersionImpl(int version, WebDatabase* db);
103
104 size_t batch_mode_level_;
105 KeywordTable::Operations queued_keyword_operations_;
106
107 DISALLOW_COPY_AND_ASSIGN(KeywordWebDataService);
108 };
109
110 #endif // CHROME_BROWSER_WEBDATA_KEYWORD_WEB_DATA_SERVICE_H__
OLDNEW
« no previous file with comments | « chrome/browser/webdata/keyword_table_unittest.cc ('k') | chrome/browser/webdata/keyword_web_data_service.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698