1// Copyright 2013 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 COMPONENTS_AUTOFILL_CORE_BROWSER_TEST_AUTOFILL_DRIVER_H_
6#define COMPONENTS_AUTOFILL_CORE_BROWSER_TEST_AUTOFILL_DRIVER_H_
7
8#include "base/basictypes.h"
9#include "base/compiler_specific.h"
10#include "base/memory/ref_counted.h"
11#include "components/autofill/core/browser/autofill_driver.h"
12
13namespace base {
14class SequencedWorkerPoolOwner;
15}
16
17namespace autofill {
18
19// This class is only for easier writing of tests.
20class TestAutofillDriver : public AutofillDriver {
21 public:
22  TestAutofillDriver();
23  virtual ~TestAutofillDriver();
24
25  // AutofillDriver implementation.
26  virtual bool IsOffTheRecord() const OVERRIDE;
27  // Returns the value passed in to the last call to |SetURLRequestContext()|
28  // or NULL if that method has never been called.
29  virtual net::URLRequestContextGetter* GetURLRequestContext() OVERRIDE;
30  virtual base::SequencedWorkerPool* GetBlockingPool() OVERRIDE;
31  virtual bool RendererIsAvailable() OVERRIDE;
32  virtual void SendFormDataToRenderer(int query_id,
33                                      RendererFormDataAction action,
34                                      const FormData& data) OVERRIDE;
35  virtual void PingRenderer() OVERRIDE;
36  virtual void SendAutofillTypePredictionsToRenderer(
37      const std::vector<FormStructure*>& forms) OVERRIDE;
38  virtual void RendererShouldAcceptDataListSuggestion(
39      const base::string16& value) OVERRIDE;
40  virtual void RendererShouldClearFilledForm() OVERRIDE;
41  virtual void RendererShouldClearPreviewedForm() OVERRIDE;
42  virtual void RendererShouldFillFieldWithValue(
43      const base::string16& value) OVERRIDE;
44  virtual void RendererShouldPreviewFieldWithValue(
45      const base::string16& value) OVERRIDE;
46
47  // Methods that tests can use to specialize functionality.
48
49  // Sets the URL request context for this instance. |url_request_context|
50  // should outlive this instance.
51  void SetURLRequestContext(net::URLRequestContextGetter* url_request_context);
52
53 private:
54  scoped_ptr<base::SequencedWorkerPoolOwner> blocking_pool_owner_;
55  net::URLRequestContextGetter* url_request_context_;
56
57  DISALLOW_COPY_AND_ASSIGN(TestAutofillDriver);
58};
59
60}  // namespace autofill
61
62#endif  // COMPONENTS_AUTOFILL_CORE_BROWSER_TEST_AUTOFILL_DRIVER_H_
63