1// Copyright (c) 2010 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_WEB_DATA_SERVICE_TEST_UTIL_H__
6#define CHROME_BROWSER_WEBDATA_WEB_DATA_SERVICE_TEST_UTIL_H__
7#pragma once
8
9#include "base/basictypes.h"
10#include "base/message_loop.h"
11#include "chrome/browser/webdata/web_data_service.h"
12#include "content/browser/browser_thread.h"
13
14template <class T>
15class AutofillWebDataServiceConsumer: public WebDataServiceConsumer {
16 public:
17  AutofillWebDataServiceConsumer() : handle_(0) {}
18  virtual ~AutofillWebDataServiceConsumer() {}
19
20  virtual void OnWebDataServiceRequestDone(WebDataService::Handle handle,
21                                           const WDTypedResult* result) {
22    DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
23    handle_ = handle;
24    const WDResult<T>* wrapped_result =
25        static_cast<const WDResult<T>*>(result);
26    result_ = wrapped_result->GetValue();
27
28    MessageLoop::current()->Quit();
29  }
30
31  WebDataService::Handle handle() { return handle_; }
32  T& result() { return result_; }
33
34 private:
35  WebDataService::Handle handle_;
36  T result_;
37  DISALLOW_COPY_AND_ASSIGN(AutofillWebDataServiceConsumer);
38};
39
40#endif  // CHROME_BROWSER_WEBDATA_WEB_DATA_SERVICE_TEST_UTIL_H__
41