Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / components / webdata / common / web_data_results.h
blobd6d07fd07c9a008e15fc66c4ffb748816df48e1f
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 } WDResultType;
35 typedef base::Callback<void(const WDTypedResult*)> DestroyCallback;
38 // The top level class for a result.
40 class WEBDATA_EXPORT WDTypedResult {
41 public:
42 virtual ~WDTypedResult() {
45 // Return the result type.
46 WDResultType GetType() const {
47 return type_;
50 virtual void Destroy() {
53 protected:
54 explicit WDTypedResult(WDResultType type)
55 : type_(type) {
58 private:
59 WDResultType type_;
60 DISALLOW_COPY_AND_ASSIGN(WDTypedResult);
63 // A result containing one specific pointer or literal value.
64 template <class T> class WDResult : public WDTypedResult {
65 public:
66 WDResult(WDResultType type, const T& v)
67 : WDTypedResult(type), value_(v) {
70 ~WDResult() override {
73 // Return a single value result.
74 T GetValue() const {
75 return value_;
78 private:
79 T value_;
81 DISALLOW_COPY_AND_ASSIGN(WDResult);
84 template <class T> class WDDestroyableResult : public WDResult<T> {
85 public:
86 WDDestroyableResult(
87 WDResultType type,
88 const T& v,
89 const DestroyCallback& callback)
90 : WDResult<T>(type, v),
91 callback_(callback) {
94 ~WDDestroyableResult() override {
97 void Destroy() override {
98 if (!callback_.is_null()) {
99 callback_.Run(this);
103 private:
104 DestroyCallback callback_;
106 DISALLOW_COPY_AND_ASSIGN(WDDestroyableResult);
109 #endif // COMPONENTS_WEBDATA_COMMON_WEB_DATA_RESULTS_H_