Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6690)

Unified Diff: chrome/browser/extensions/api/gcd_private/gcd_private_api.h

Issue 411783002: Initial implementation of session APIs, sans WiFi component (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | chrome/browser/extensions/api/gcd_private/gcd_private_api.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..023c3b3a6097fe497f782a7a5326e1108f5f0147 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(const std::string& ip_address,
+ 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 {
« no previous file with comments | « no previous file | chrome/browser/extensions/api/gcd_private/gcd_private_api.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698