Chromium Code Reviews| Index: chrome/browser/extensions/api/gcd_private/gcd_private_api.h |
| diff --git a/chrome/browser/extensions/api/gcd_private/gcd_private_api.h b/chrome/browser/extensions/api/gcd_private/gcd_private_api.h |
| index 488b60810cf25d73099a75c74f0879945c9acfb3..fceac0a9e9a28eeefebc7e451807fa8f57a5ec30 100644 |
| --- a/chrome/browser/extensions/api/gcd_private/gcd_private_api.h |
| +++ b/chrome/browser/extensions/api/gcd_private/gcd_private_api.h |
| @@ -11,6 +11,7 @@ |
| #include "chrome/browser/local_discovery/cloud_device_list_delegate.h" |
| #include "chrome/browser/local_discovery/gcd_api_flow.h" |
| #include "chrome/browser/local_discovery/privet_device_lister.h" |
| +#include "chrome/browser/local_discovery/privetv3_session.h" |
| #include "chrome/browser/local_discovery/service_discovery_shared_client.h" |
| #include "chrome/common/extensions/api/gcd_private.h" |
| #include "extensions/browser/browser_context_keyed_api_factory.h" |
| @@ -18,10 +19,25 @@ |
| namespace extensions { |
| +class GcdPrivateSessionHolder; |
| + |
| class GcdPrivateAPI : public BrowserContextKeyedAPI, |
| public EventRouter::Observer, |
| public local_discovery::PrivetDeviceLister::Delegate { |
| public: |
| + typedef base::Callback<void(int session_id, |
| + api::gcd_private::Status status, |
| + const std::string& code, |
| + api::gcd_private::ConfirmationType type)> |
| + ConfirmationCodeCallback; |
| + |
| + typedef base::Callback<void(api::gcd_private::Status status)> |
| + SessionEstablishedCallback; |
| + |
| + typedef base::Callback<void(api::gcd_private::Status status, |
| + const base::DictionaryValue& response)> |
| + MessageResponseCallback; |
| + |
| class GCDApiFlowFactoryForTests { |
| public: |
| virtual ~GCDApiFlowFactoryForTests() {} |
| @@ -39,12 +55,28 @@ class GcdPrivateAPI : public BrowserContextKeyedAPI, |
| bool QueryForDevices(); |
| + void EstablishSession(std::string ip_address, |
|
asargent_no_longer_on_chrome
2014/07/25 20:50:10
nit: should this be "const std::string&" ?
Noam Samuel
2014/07/25 21:15:56
Done.
|
| + int port, |
| + ConfirmationCodeCallback callback); |
| + |
| + void ConfirmCode(int session_id, SessionEstablishedCallback callback); |
| + |
| + void SendMessage(int session_id, |
| + const std::string& api, |
| + const base::DictionaryValue& input, |
| + MessageResponseCallback callback); |
| + |
| + void RemoveSession(int session_id); |
| + |
| private: |
| friend class BrowserContextKeyedAPIFactory<GcdPrivateAPI>; |
| typedef std::map<std::string /* id_string */, |
| linked_ptr<api::gcd_private::GCDDevice> > GCDDeviceMap; |
| + typedef std::map<int /* session id*/, linked_ptr<GcdPrivateSessionHolder> > |
| + GCDSessionMap; |
| + |
| // EventRouter::Observer implementation. |
| virtual void OnListenerAdded(const EventListenerInfo& details) OVERRIDE; |
| virtual void OnListenerRemoved(const EventListenerInfo& details) OVERRIDE; |
| @@ -66,6 +98,9 @@ class GcdPrivateAPI : public BrowserContextKeyedAPI, |
| scoped_ptr<local_discovery::PrivetDeviceLister> privet_device_lister_; |
| GCDDeviceMap known_devices_; |
| + GCDSessionMap sessions_; |
| + int last_session_id_; |
| + |
| content::BrowserContext* const browser_context_; |
| }; |
| @@ -141,6 +176,13 @@ class GcdPrivateEstablishSessionFunction : public ChromeAsyncExtensionFunction { |
| // AsyncExtensionFunction overrides. |
| virtual bool RunAsync() OVERRIDE; |
| + |
| + private: |
| + void OnConfirmCodeCallback( |
| + int session_id, |
| + api::gcd_private::Status status, |
| + const std::string& confirm_code, |
| + api::gcd_private::ConfirmationType confirmation_type); |
| }; |
| class GcdPrivateConfirmCodeFunction : public ChromeAsyncExtensionFunction { |
| @@ -156,6 +198,7 @@ class GcdPrivateConfirmCodeFunction : public ChromeAsyncExtensionFunction { |
| virtual bool RunAsync() OVERRIDE; |
| private: |
| + void OnSessionEstablishedCallback(api::gcd_private::Status status); |
| }; |
| class GcdPrivateSendMessageFunction : public ChromeAsyncExtensionFunction { |
| @@ -171,6 +214,8 @@ class GcdPrivateSendMessageFunction : public ChromeAsyncExtensionFunction { |
| virtual bool RunAsync() OVERRIDE; |
| private: |
| + void OnMessageSentCallback(api::gcd_private::Status status, |
| + const base::DictionaryValue& value); |
| }; |
| class GcdPrivateTerminateSessionFunction : public ChromeAsyncExtensionFunction { |