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