Disable firewall check. It takes signifficant time, need to be on FILE thread.
[chromium-blink-merge.git] / components / webdata / common / web_data_results.h
blob1878dc0cc1842534fcea267c2ace889cf0d48bf1
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
3 // found in the LICENSE file.
5 #ifndef COMPONENTS_WEBDATA_COMMON_WEB_DATA_RESULTS_H_
6 #define COMPONENTS_WEBDATA_COMMON_WEB_DATA_RESULTS_H_
8 #include "base/basictypes.h"
9 #include "base/callback.h"
10 #include "components/webdata/common/webdata_export.h"
12 class WDTypedResult;
15 // Result types for WebDataService.
17 typedef enum {
18 BOOL_RESULT = 1, // WDResult<bool>
19 KEYWORDS_RESULT, // WDResult<WDKeywordsResult>
20 INT64_RESULT, // WDResult<int64>
21 #if defined(OS_WIN)
22 PASSWORD_IE7_RESULT, // WDResult<IE7PasswordInfo>
23 #endif
24 WEB_APP_IMAGES, // WDResult<WDAppImagesResult>
25 TOKEN_RESULT, // WDResult<std::vector<std::string>>
26 AUTOFILL_VALUE_RESULT, // WDResult<std::vector<base::string16>>
27 AUTOFILL_CHANGES, // WDResult<std::vector<AutofillChange>>
28 AUTOFILL_PROFILE_RESULT, // WDResult<AutofillProfile>
29 AUTOFILL_PROFILES_RESULT, // WDResult<std::vector<AutofillProfile*>>
30 AUTOFILL_CREDITCARD_RESULT, // WDResult<CreditCard>
31 AUTOFILL_CREDITCARDS_RESULT, // WDResult<std::vector<CreditCard*>>
32 WEB_INTENTS_RESULT, // WDResult<std::vector<WebIntentServiceData>>
33 WEB_INTENTS_DEFAULTS_RESULT, // WDResult<std::vector<DefaultWebIntentService>>
34 } WDResultType;
37 typedef base::Callback<void(const WDTypedResult*)> DestroyCallback;
40 // The top level class for a result.
42 class WEBDATA_EXPORT WDTypedResult {
43 public:
44 virtual ~WDTypedResult() {
47 // Return the result type.
48 WDResultType GetType() const {
49 return type_;
52 virtual void Destroy() {
55 protected:
56 explicit WDTypedResult(WDResultType type)
57 : type_(type) {
60 private:
61 WDResultType type_;
62 DISALLOW_COPY_AND_ASSIGN(WDTypedResult);
65 // A result containing one specific pointer or literal value.
66 template <class T> class WDResult : public WDTypedResult {
67 public:
68 WDResult(WDResultType type, const T& v)
69 : WDTypedResult(type), value_(v) {
72 virtual ~WDResult() {
75 // Return a single value result.
76 T GetValue() const {
77 return value_;
80 private:
81 T value_;
83 DISALLOW_COPY_AND_ASSIGN(WDResult);
86 template <class T> class WDDestroyableResult : public WDTypedResult {
87 public:
88 WDDestroyableResult(
89 WDResultType type,
90 const T& v,
91 const DestroyCallback& callback)
92 : WDTypedResult(type),
93 value_(v),
94 callback_(callback) {
97 virtual ~WDDestroyableResult() {
101 virtual void Destroy() OVERRIDE {
102 if (!callback_.is_null()) {
103 callback_.Run(this);
107 // Return a single value result.
108 T GetValue() const {
109 return value_;
112 private:
113 T value_;
114 DestroyCallback callback_;
116 DISALLOW_COPY_AND_ASSIGN(WDDestroyableResult);
119 template <class T> class WDObjectResult : public WDTypedResult {
120 public:
121 explicit WDObjectResult(WDResultType type)
122 : WDTypedResult(type) {
125 T* GetValue() const {
126 return &value_;
129 private:
130 // mutable to keep GetValue() const.
131 mutable T value_;
132 DISALLOW_COPY_AND_ASSIGN(WDObjectResult);
135 #endif // COMPONENTS_WEBDATA_COMMON_WEB_DATA_RESULTS_H_