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 { |