• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2014 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 EXTENSIONS_BROWSER_API_TEST_TEST_API_H_
6 #define EXTENSIONS_BROWSER_API_TEST_TEST_API_H_
7 
8 #include "base/values.h"
9 #include "extensions/browser/extension_function.h"
10 
11 template <typename T>
12 struct DefaultSingletonTraits;
13 
14 namespace extensions {
15 
16 // A function that is only available in tests.
17 // Prior to running, checks that we are in a testing process.
18 class TestExtensionFunction : public SyncExtensionFunction {
19  protected:
20   virtual ~TestExtensionFunction();
21 
22   // SyncExtensionFunction:
23   virtual bool RunSync() OVERRIDE;
24 
25   virtual bool RunSafe() = 0;
26 };
27 
28 class TestNotifyPassFunction : public TestExtensionFunction {
29  public:
30   DECLARE_EXTENSION_FUNCTION("test.notifyPass", UNKNOWN)
31 
32  protected:
33   virtual ~TestNotifyPassFunction();
34 
35   // TestExtensionFunction:
36   virtual bool RunSafe() OVERRIDE;
37 };
38 
39 class TestNotifyFailFunction : public TestExtensionFunction {
40  public:
41   DECLARE_EXTENSION_FUNCTION("test.notifyFail", UNKNOWN)
42 
43  protected:
44   virtual ~TestNotifyFailFunction();
45 
46   // TestExtensionFunction:
47   virtual bool RunSafe() OVERRIDE;
48 };
49 
50 class TestLogFunction : public TestExtensionFunction {
51  public:
52   DECLARE_EXTENSION_FUNCTION("test.log", UNKNOWN)
53 
54  protected:
55   virtual ~TestLogFunction();
56 
57   // TestExtensionFunction:
58   virtual bool RunSafe() OVERRIDE;
59 };
60 
61 class TestSendMessageFunction : public AsyncExtensionFunction {
62  public:
63   DECLARE_EXTENSION_FUNCTION("test.sendMessage", UNKNOWN)
64 
65   // Sends a reply back to the calling extension. Many extensions don't need
66   // a reply and will just ignore it.
67   void Reply(const std::string& message);
68 
69   // Sends an error back to the calling extension.
70   void ReplyWithError(const std::string& error);
71 
72  protected:
73   virtual ~TestSendMessageFunction();
74 
75   // ExtensionFunction:
76   virtual bool RunAsync() OVERRIDE;
77 };
78 
79 class TestGetConfigFunction : public TestExtensionFunction {
80  public:
81   DECLARE_EXTENSION_FUNCTION("test.getConfig", UNKNOWN)
82 
83   // Set the dictionary returned by chrome.test.getConfig().
84   // Does not take ownership of |value|.
85   static void set_test_config_state(base::DictionaryValue* value);
86 
87  protected:
88   // Tests that set configuration state do so by calling
89   // set_test_config_state() as part of test set up, and unsetting it
90   // during tear down.  This singleton class holds a pointer to that
91   // state, owned by the test code.
92   class TestConfigState {
93    public:
94     static TestConfigState* GetInstance();
95 
set_config_state(base::DictionaryValue * config_state)96     void set_config_state(base::DictionaryValue* config_state) {
97       config_state_ = config_state;
98     }
99 
config_state()100     const base::DictionaryValue* config_state() { return config_state_; }
101 
102    private:
103     friend struct DefaultSingletonTraits<TestConfigState>;
104     TestConfigState();
105 
106     base::DictionaryValue* config_state_;
107 
108     DISALLOW_COPY_AND_ASSIGN(TestConfigState);
109   };
110 
111   virtual ~TestGetConfigFunction();
112 
113   // TestExtensionFunction:
114   virtual bool RunSafe() OVERRIDE;
115 };
116 
117 class TestWaitForRoundTripFunction : public TestExtensionFunction {
118  public:
119   DECLARE_EXTENSION_FUNCTION("test.waitForRoundTrip", UNKNOWN)
120 
121  protected:
122   virtual ~TestWaitForRoundTripFunction();
123 
124   // TestExtensionFunction:
125   virtual bool RunSafe() OVERRIDE;
126 };
127 
128 }  // namespace extensions
129 
130 #endif  // EXTENSIONS_BROWSER_API_TEST_TEST_API_H_
131