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"
15 // Result types for WebDataService.
18 BOOL_RESULT
= 1, // WDResult<bool>
19 KEYWORDS_RESULT
, // WDResult<WDKeywordsResult>
20 INT64_RESULT
, // WDResult<int64>
22 PASSWORD_IE7_RESULT
, // WDResult<IE7PasswordInfo>
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*>>
35 typedef base::Callback
<void(const WDTypedResult
*)> DestroyCallback
;
38 // The top level class for a result.
40 class WEBDATA_EXPORT WDTypedResult
{
42 virtual ~WDTypedResult() {
45 // Return the result type.
46 WDResultType
GetType() const {
50 virtual void Destroy() {
54 explicit WDTypedResult(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
{
66 WDResult(WDResultType type
, const T
& v
)
67 : WDTypedResult(type
), value_(v
) {
70 ~WDResult() override
{
73 // Return a single value result.
81 DISALLOW_COPY_AND_ASSIGN(WDResult
);
84 template <class T
> class WDDestroyableResult
: public WDResult
<T
> {
89 const DestroyCallback
& callback
)
90 : WDResult
<T
>(type
, v
),
94 ~WDDestroyableResult() override
{
97 void Destroy() override
{
98 if (!callback_
.is_null()) {
104 DestroyCallback callback_
;
106 DISALLOW_COPY_AND_ASSIGN(WDDestroyableResult
);
109 #endif // COMPONENTS_WEBDATA_COMMON_WEB_DATA_RESULTS_H_