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_AUTOTEST_PRIVATE_AUTOTEST_PRIVATE_API_H_ 6 #define CHROME_BROWSER_EXTENSIONS_API_AUTOTEST_PRIVATE_AUTOTEST_PRIVATE_API_H_ 7 8 #include <string> 9 10 #include "base/compiler_specific.h" 11 #include "chrome/browser/extensions/chrome_extension_function.h" 12 #include "extensions/browser/browser_context_keyed_api_factory.h" 13 14 namespace extensions { 15 16 class AutotestPrivateLogoutFunction : public ChromeSyncExtensionFunction { 17 public: 18 DECLARE_EXTENSION_FUNCTION("autotestPrivate.logout", AUTOTESTPRIVATE_LOGOUT) 19 20 private: 21 virtual ~AutotestPrivateLogoutFunction() {} 22 virtual bool RunSync() OVERRIDE; 23 }; 24 25 class AutotestPrivateRestartFunction : public ChromeSyncExtensionFunction { 26 public: 27 DECLARE_EXTENSION_FUNCTION("autotestPrivate.restart", AUTOTESTPRIVATE_RESTART) 28 29 private: 30 virtual ~AutotestPrivateRestartFunction() {} 31 virtual bool RunSync() OVERRIDE; 32 }; 33 34 class AutotestPrivateShutdownFunction : public ChromeSyncExtensionFunction { 35 public: 36 DECLARE_EXTENSION_FUNCTION("autotestPrivate.shutdown", 37 AUTOTESTPRIVATE_SHUTDOWN) 38 39 private: 40 virtual ~AutotestPrivateShutdownFunction() {} 41 virtual bool RunSync() OVERRIDE; 42 }; 43 44 class AutotestPrivateLoginStatusFunction : public ChromeSyncExtensionFunction { 45 public: 46 DECLARE_EXTENSION_FUNCTION("autotestPrivate.loginStatus", 47 AUTOTESTPRIVATE_LOGINSTATUS) 48 49 private: 50 virtual ~AutotestPrivateLoginStatusFunction() {} 51 virtual bool RunSync() OVERRIDE; 52 }; 53 54 class AutotestPrivateLockScreenFunction : public ChromeSyncExtensionFunction { 55 public: 56 DECLARE_EXTENSION_FUNCTION("autotestPrivate.lockScreen", 57 AUTOTESTPRIVATE_LOCKSCREEN) 58 59 private: 60 virtual ~AutotestPrivateLockScreenFunction() {} 61 virtual bool RunSync() OVERRIDE; 62 }; 63 64 class AutotestPrivateGetExtensionsInfoFunction 65 : public ChromeSyncExtensionFunction { 66 public: 67 DECLARE_EXTENSION_FUNCTION("autotestPrivate.getExtensionsInfo", 68 AUTOTESTPRIVATE_GETEXTENSIONSINFO) 69 70 private: 71 virtual ~AutotestPrivateGetExtensionsInfoFunction() {} 72 virtual bool RunSync() OVERRIDE; 73 }; 74 75 class AutotestPrivateSimulateAsanMemoryBugFunction 76 : public ChromeSyncExtensionFunction { 77 public: 78 DECLARE_EXTENSION_FUNCTION("autotestPrivate.simulateAsanMemoryBug", 79 AUTOTESTPRIVATE_SIMULATEASANMEMORYBUG) 80 81 private: 82 virtual ~AutotestPrivateSimulateAsanMemoryBugFunction() {} 83 virtual bool RunSync() OVERRIDE; 84 }; 85 86 // Don't kill the browser when we're in a browser test. 87 void SetAutotestPrivateTest(); 88 89 // The profile-keyed service that manages the autotestPrivate extension API. 90 class AutotestPrivateAPI : public BrowserContextKeyedAPI { 91 public: 92 static BrowserContextKeyedAPIFactory<AutotestPrivateAPI>* 93 GetFactoryInstance(); 94 95 // TODO(achuith): Replace these with a mock object for system calls. 96 bool test_mode() const { return test_mode_; } 97 void set_test_mode(bool test_mode) { test_mode_ = test_mode; } 98 99 private: 100 friend class BrowserContextKeyedAPIFactory<AutotestPrivateAPI>; 101 102 AutotestPrivateAPI(); 103 virtual ~AutotestPrivateAPI(); 104 105 // BrowserContextKeyedAPI implementation. 106 static const char* service_name() { return "AutotestPrivateAPI"; } 107 static const bool kServiceIsNULLWhileTesting = true; 108 static const bool kServiceRedirectedInIncognito = true; 109 110 bool test_mode_; // true for ExtensionApiTest.AutotestPrivate browser test. 111 }; 112 113 template <> 114 KeyedService* 115 BrowserContextKeyedAPIFactory<AutotestPrivateAPI>::BuildServiceInstanceFor( 116 content::BrowserContext* context) const; 117 118 } // namespace extensions 119 120 #endif // CHROME_BROWSER_EXTENSIONS_API_AUTOTEST_PRIVATE_AUTOTEST_PRIVATE_API_H_ 121