diff options
Diffstat (limited to 'chrome/browser/api/webdata/web_data_results.h')
-rw-r--r-- | chrome/browser/api/webdata/web_data_results.h | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/chrome/browser/api/webdata/web_data_results.h b/chrome/browser/api/webdata/web_data_results.h new file mode 100644 index 0000000..6d2d5b8 --- /dev/null +++ b/chrome/browser/api/webdata/web_data_results.h @@ -0,0 +1,89 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_API_WEBDATA_WEB_DATA_RESULTS_H_ +#define CHROME_BROWSER_API_WEBDATA_WEB_DATA_RESULTS_H_ + +#include "base/basictypes.h" + +// +// Result types for WebDataService. +// +typedef enum { + BOOL_RESULT = 1, // WDResult<bool> + KEYWORDS_RESULT, // WDResult<WDKeywordsResult> + INT64_RESULT, // WDResult<int64> +#if defined(OS_WIN) + PASSWORD_IE7_RESULT, // WDResult<IE7PasswordInfo> +#endif + WEB_APP_IMAGES, // WDResult<WDAppImagesResult> + TOKEN_RESULT, // WDResult<std::vector<std::string>> + AUTOFILL_VALUE_RESULT, // WDResult<std::vector<string16>> + AUTOFILL_CHANGES, // WDResult<std::vector<AutofillChange>> + AUTOFILL_PROFILE_RESULT, // WDResult<AutofillProfile> + AUTOFILL_PROFILES_RESULT, // WDResult<std::vector<AutofillProfile*>> + AUTOFILL_CREDITCARD_RESULT, // WDResult<CreditCard> + AUTOFILL_CREDITCARDS_RESULT, // WDResult<std::vector<CreditCard*>> + WEB_INTENTS_RESULT, // WDResult<std::vector<WebIntentServiceData>> + WEB_INTENTS_DEFAULTS_RESULT, // WDResult<std::vector<DefaultWebIntentService>> +} WDResultType; + +// +// The top level class for a result. +// +class WDTypedResult { + public: + virtual ~WDTypedResult() {} + + // Return the result type. + WDResultType GetType() const { + return type_; + } + + protected: + explicit WDTypedResult(WDResultType type) : type_(type) { + } + + private: + WDResultType type_; + DISALLOW_COPY_AND_ASSIGN(WDTypedResult); +}; + +// A result containing one specific pointer or literal value. +template <class T> class WDResult : public WDTypedResult { + public: + + WDResult(WDResultType type, const T& v) : WDTypedResult(type), value_(v) { + } + + virtual ~WDResult() { + } + + // Return a single value result. + T GetValue() const { + return value_; + } + + private: + T value_; + + DISALLOW_COPY_AND_ASSIGN(WDResult); +}; + +template <class T> class WDObjectResult : public WDTypedResult { + public: + explicit WDObjectResult(WDResultType type) : WDTypedResult(type) { + } + + T* GetValue() const { + return &value_; + } + + private: + // mutable to keep GetValue() const. + mutable T value_; + DISALLOW_COPY_AND_ASSIGN(WDObjectResult); +}; + +#endif // CHROME_BROWSER_API_WEBDATA_WEB_DATA_RESULTS_H_ |