Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / extensions / api / gcd_private / gcd_private_api.cc
index b01e6f4..7f97009 100644 (file)
@@ -42,13 +42,11 @@ const char kIDPrefixCloudPrinter[] = "cloudprint:";
 const char kIDPrefixGcd[] = "gcd:";
 const char kIDPrefixMdns[] = "mdns:";
 
-#if defined(ENABLE_WIFI_BOOTSTRAPPING)
 const char kPrivatAPISetup[] = "/privet/v3/setup/start";
 const char kPrivetKeyWifi[] = "wifi";
 const char kPrivetKeyPassphrase[] = "passphrase";
 const char kPrivetKeySSID[] = "ssid";
 const char kPrivetKeyPassphraseDotted[] = "wifi.passphrase";
-#endif  // ENABLE_WIFI_BOOTSTRAPPING
 
 scoped_ptr<Event> MakeDeviceStateChangedEvent(
     const gcd_private::GCDDevice& device) {
@@ -124,7 +122,9 @@ class GcdPrivateAPIImpl : public EventRouter::Observer,
                         int port,
                         ConfirmationCodeCallback callback);
 
-  void ConfirmCode(int session_id, SessionEstablishedCallback callback);
+  void ConfirmCode(int session_id,
+                   const std::string& code,
+                   SessionEstablishedCallback callback);
 
   void SendMessage(int session_id,
                    const std::string& api,
@@ -186,8 +186,8 @@ class GcdPrivateAPIImpl : public EventRouter::Observer,
 
 #if defined(ENABLE_WIFI_BOOTSTRAPPING)
   scoped_ptr<local_discovery::wifi::WifiManager> wifi_manager_;
-  PasswordMap wifi_passwords_;
 #endif
+  PasswordMap wifi_passwords_;
 };
 
 class GcdPrivateRequest : public local_discovery::PrivetV3Session::Request {
@@ -229,6 +229,7 @@ class GcdPrivateSessionHolder
   void Start(const ConfirmationCodeCallback& callback);
 
   void ConfirmCode(
+      const std::string& code,
       const GcdPrivateAPIImpl::SessionEstablishedCallback& callback);
 
   void SendMessage(const std::string& api,
@@ -240,9 +241,9 @@ class GcdPrivateSessionHolder
  private:
   // local_discovery::PrivetV3Session::Delegate implementation.
   virtual void OnSetupConfirmationNeeded(
-      const std::string& confirmation_code) OVERRIDE;
-  virtual void OnSessionEstablished() OVERRIDE;
-  virtual void OnCannotEstablishSession() OVERRIDE;
+      const std::string& confirmation_code,
+      api::gcd_private::ConfirmationType confirmation_type) OVERRIDE;
+  virtual void OnSessionStatus(api::gcd_private::Status status) OVERRIDE;
 
   scoped_ptr<local_discovery::PrivetHTTPClient> http_client_;
   scoped_ptr<local_discovery::PrivetV3Session> privet_session_;
@@ -371,6 +372,7 @@ void GcdPrivateAPIImpl::EstablishSession(const std::string& ip_address,
 }
 
 void GcdPrivateAPIImpl::ConfirmCode(int session_id,
+                                    const std::string& code,
                                     SessionEstablishedCallback callback) {
   GCDSessionMap::iterator found = sessions_.find(session_id);
 
@@ -379,7 +381,7 @@ void GcdPrivateAPIImpl::ConfirmCode(int session_id,
     return;
   }
 
-  found->second->ConfirmCode(callback);
+  found->second->ConfirmCode(code, callback);
 }
 
 void GcdPrivateAPIImpl::SendMessage(int session_id,
@@ -387,7 +389,6 @@ void GcdPrivateAPIImpl::SendMessage(int session_id,
                                     const base::DictionaryValue& input,
                                     MessageResponseCallback callback) {
   const base::DictionaryValue* input_actual = &input;
-#if defined(ENABLE_WIFI_BOOTSTRAPPING)
   scoped_ptr<base::DictionaryValue> input_cloned;
 
   if (api == kPrivatAPISetup) {
@@ -419,7 +420,6 @@ void GcdPrivateAPIImpl::SendMessage(int session_id,
       }
     }
   }
-#endif
 
   GCDSessionMap::iterator found = sessions_.find(session_id);
 
@@ -551,9 +551,10 @@ void GcdPrivateSessionHolder::Start(const ConfirmationCodeCallback& callback) {
 }
 
 void GcdPrivateSessionHolder::ConfirmCode(
+    const std::string& code,
     const GcdPrivateAPIImpl::SessionEstablishedCallback& callback) {
   session_established_callback_ = callback;
-  privet_session_->ConfirmCode();
+  privet_session_->ConfirmCode(code);
 }
 
 void GcdPrivateSessionHolder::SendMessage(
@@ -578,22 +579,16 @@ void GcdPrivateSessionHolder::DeleteRequest(GcdPrivateRequest* request) {
 }
 
 void GcdPrivateSessionHolder::OnSetupConfirmationNeeded(
-    const std::string& confirmation_code) {
-  confirm_callback_.Run(gcd_private::STATUS_SUCCESS,
-                        confirmation_code,
-                        gcd_private::CONFIRMATION_TYPE_DISPLAYCODE);
+    const std::string& confirmation_code,
+    gcd_private::ConfirmationType confirmation_type) {
+  confirm_callback_.Run(
+      gcd_private::STATUS_SUCCESS, confirmation_code, confirmation_type);
 
   confirm_callback_.Reset();
 }
 
-void GcdPrivateSessionHolder::OnSessionEstablished() {
-  session_established_callback_.Run(gcd_private::STATUS_SUCCESS);
-
-  session_established_callback_.Reset();
-}
-
-void GcdPrivateSessionHolder::OnCannotEstablishSession() {
-  session_established_callback_.Run(gcd_private::STATUS_SESSIONERROR);
+void GcdPrivateSessionHolder::OnSessionStatus(gcd_private::Status status) {
+  session_established_callback_.Run(status);
 
   session_established_callback_.Reset();
 }
@@ -774,8 +769,15 @@ void GcdPrivateEstablishSessionFunction::OnConfirmCodeCallback(
     gcd_private::Status status,
     const std::string& confirm_code,
     gcd_private::ConfirmationType confirmation_type) {
-  results_ = gcd_private::EstablishSession::Results::Create(
-      session_id, status, confirm_code, confirmation_type);
+  gcd_private::ConfirmationInfo info;
+
+  info.type = confirmation_type;
+  if (!confirm_code.empty()) {
+    info.code.reset(new std::string(confirm_code));
+  }
+
+  results_ =
+      gcd_private::EstablishSession::Results::Create(session_id, status, info);
   SendResponse(true);
 }
 
@@ -796,6 +798,7 @@ bool GcdPrivateConfirmCodeFunction::RunAsync() {
 
   gcd_api->ConfirmCode(
       params->session_id,
+      params->code,
       base::Bind(&GcdPrivateConfirmCodeFunction::OnSessionEstablishedCallback,
                  this));