1c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Copyright (c) 2009 The Chromium Authors. All rights reserved. 2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file. 4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_TEST_API_H_ 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define CHROME_BROWSER_EXTENSIONS_EXTENSION_TEST_API_H_ 73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once 8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 9731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#include "base/values.h" 10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/extensions/extension_function.h" 11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsentemplate <typename T> struct DefaultSingletonTraits; 1321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass ExtensionTestPassFunction : public SyncExtensionFunction { 15731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick ~ExtensionTestPassFunction(); 16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual bool RunImpl(); 17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch DECLARE_EXTENSION_FUNCTION_NAME("test.notifyPass") 18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass ExtensionTestFailFunction : public SyncExtensionFunction { 21731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick ~ExtensionTestFailFunction(); 22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual bool RunImpl(); 23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch DECLARE_EXTENSION_FUNCTION_NAME("test.notifyFail") 24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass ExtensionTestLogFunction : public SyncExtensionFunction { 27731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick ~ExtensionTestLogFunction(); 28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual bool RunImpl(); 29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch DECLARE_EXTENSION_FUNCTION_NAME("test.log") 30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass ExtensionTestQuotaResetFunction : public SyncExtensionFunction { 33731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick ~ExtensionTestQuotaResetFunction(); 34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual bool RunImpl(); 35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch DECLARE_EXTENSION_FUNCTION_NAME("test.resetQuota") 36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass ExtensionTestCreateIncognitoTabFunction : public SyncExtensionFunction { 39731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick ~ExtensionTestCreateIncognitoTabFunction(); 40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual bool RunImpl(); 41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch DECLARE_EXTENSION_FUNCTION_NAME("test.createIncognitoTab") 42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 44731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickclass ExtensionTestSendMessageFunction : public AsyncExtensionFunction { 45731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick public: 46731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick // Sends a reply back to the calling extension. Many extensions don't need 47731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick // a reply and will just ignore it. 48731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick void Reply(const std::string& message); 49731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 50731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick private: 51731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick ~ExtensionTestSendMessageFunction(); 523345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick virtual bool RunImpl(); 533345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick DECLARE_EXTENSION_FUNCTION_NAME("test.sendMessage") 543345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick}; 553345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 56731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickclass ExtensionTestGetConfigFunction : public SyncExtensionFunction { 57731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick public: 58731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick // Set the dictionary returned by chrome.test.getConfig(). 59731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick // Does not take ownership of |value|. 60731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick static void set_test_config_state(DictionaryValue* value); 61731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 62731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick private: 63731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick // Tests that set configuration state do so by calling 64731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick // set_test_config_state() as part of test set up, and unsetting it 65731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick // during tear down. This singleton class holds a pointer to that 66731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick // state, owned by the test code. 67731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick class TestConfigState { 68731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick public: 6921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen static TestConfigState* GetInstance(); 7021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 71731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick void set_config_state(DictionaryValue* config_state) { 72731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick config_state_ = config_state; 73731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick } 74731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick const DictionaryValue* config_state() { 75731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick return config_state_; 76731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick } 77731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick private: 78731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick friend struct DefaultSingletonTraits<TestConfigState>; 79731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick TestConfigState(); 80731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick DictionaryValue* config_state_; 81731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick DISALLOW_COPY_AND_ASSIGN(TestConfigState); 82731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick }; 83731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 84731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick ~ExtensionTestGetConfigFunction(); 85731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick virtual bool RunImpl(); 86731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick DECLARE_EXTENSION_FUNCTION_NAME("test.getConfig") 87731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick}; 88731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 89c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_TEST_API_H_ 90