// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_EXTENSIONS_API_GCD_PRIVATE_GCD_PRIVATE_API_H_ #define CHROME_BROWSER_EXTENSIONS_API_GCD_PRIVATE_GCD_PRIVATE_API_H_ #include "base/memory/scoped_ptr.h" #include "chrome/browser/extensions/chrome_extension_function.h" #include "chrome/common/extensions/api/gcd_private.h" #include "extensions/browser/browser_context_keyed_api_factory.h" namespace extensions { class GcdPrivateAPIImpl; class GcdPrivateAPI : public BrowserContextKeyedAPI { public: explicit GcdPrivateAPI(content::BrowserContext* context); ~GcdPrivateAPI() override; // BrowserContextKeyedAPI implementation. static BrowserContextKeyedAPIFactory<GcdPrivateAPI>* GetFactoryInstance(); private: friend class BrowserContextKeyedAPIFactory<GcdPrivateAPI>; friend class GcdPrivateAPIImpl; // BrowserContextKeyedAPI implementation. static const char* service_name() { return "GcdPrivateAPI"; } scoped_ptr<GcdPrivateAPIImpl> impl_; }; class GcdPrivateGetDeviceInfoFunction : public ChromeAsyncExtensionFunction { public: DECLARE_EXTENSION_FUNCTION("gcdPrivate.getDeviceInfo", GCDPRIVATE_GETDEVICEINFO) GcdPrivateGetDeviceInfoFunction(); protected: ~GcdPrivateGetDeviceInfoFunction() override; // AsyncExtensionFunction overrides. bool RunAsync() override; private: void OnSessionInitialized( int session_id, api::gcd_private::Status status, const base::DictionaryValue& info); }; class GcdPrivateCreateSessionFunction : public ChromeAsyncExtensionFunction { public: DECLARE_EXTENSION_FUNCTION("gcdPrivate.createSession", GCDPRIVATE_ESTABLISHSESSION) GcdPrivateCreateSessionFunction(); protected: ~GcdPrivateCreateSessionFunction() override; // AsyncExtensionFunction overrides. bool RunAsync() override; private: void OnSessionInitialized( int session_id, api::gcd_private::Status status, const base::DictionaryValue& info); }; class GcdPrivateStartPairingFunction : public ChromeAsyncExtensionFunction { public: DECLARE_EXTENSION_FUNCTION("gcdPrivate.startPairing", GCDPRIVATE_STARTPAIRING) GcdPrivateStartPairingFunction(); protected: ~GcdPrivateStartPairingFunction() override; // AsyncExtensionFunction overrides. bool RunAsync() override; private: void OnPairingStarted(api::gcd_private::Status status); }; class GcdPrivateConfirmCodeFunction : public ChromeAsyncExtensionFunction { public: DECLARE_EXTENSION_FUNCTION("gcdPrivate.confirmCode", GCDPRIVATE_CONFIRMCODE) GcdPrivateConfirmCodeFunction(); protected: ~GcdPrivateConfirmCodeFunction() override; // AsyncExtensionFunction overrides. bool RunAsync() override; private: void OnCodeConfirmed(api::gcd_private::Status status); }; class GcdPrivateSendMessageFunction : public ChromeAsyncExtensionFunction { public: DECLARE_EXTENSION_FUNCTION("gcdPrivate.sendMessage", GCDPRIVATE_SENDMESSAGE) GcdPrivateSendMessageFunction(); protected: ~GcdPrivateSendMessageFunction() override; // AsyncExtensionFunction overrides. bool RunAsync() override; private: void OnMessageSentCallback(api::gcd_private::Status status, const base::DictionaryValue& value); }; class GcdPrivateTerminateSessionFunction : public ChromeAsyncExtensionFunction { public: DECLARE_EXTENSION_FUNCTION("gcdPrivate.terminateSession", GCDPRIVATE_TERMINATESESSION) GcdPrivateTerminateSessionFunction(); protected: ~GcdPrivateTerminateSessionFunction() override; // AsyncExtensionFunction overrides. bool RunAsync() override; }; } // namespace extensions #endif // CHROME_BROWSER_EXTENSIONS_API_GCD_PRIVATE_GCD_PRIVATE_API_H_