Index: chrome/browser/local_discovery/privetv3_setup_flow.h |
diff --git a/chrome/browser/local_discovery/privetv3_setup_flow.h b/chrome/browser/local_discovery/privetv3_setup_flow.h |
index 405b02cc9c92f3f5869910d1e83a52195f38ca94..81e7b449435685ada74c7cb6e4582507af60cea9 100644 |
--- a/chrome/browser/local_discovery/privetv3_setup_flow.h |
+++ b/chrome/browser/local_discovery/privetv3_setup_flow.h |
@@ -9,57 +9,72 @@ |
#include "base/callback.h" |
#include "base/memory/scoped_ptr.h" |
+#include "chrome/browser/local_discovery/gcd_api_flow.h" |
+#include "chrome/browser/local_discovery/privet_http_asynchronous_factory.h" |
namespace local_discovery { |
-class ServiceDiscoveryClient; |
- |
-#if defined(ENABLE_WIFI_BOOTSTRAPPING) |
-namespace wifi { |
-class WifiManager; |
-}; |
-#endif |
- |
+// Provides complete flow for Privet v3 device setup. |
class PrivetV3SetupFlow { |
public: |
+ // Delegate to be implemented by client code. |
class Delegate { |
public: |
- typedef base::Callback<void(bool confirm)> ConfirmationCallback; |
- typedef base::Callback<void(const std::string& key)> CredentialsCallback; |
+ typedef base::Callback<void(bool success)> ResultCallback; |
+ // If |ssid| is empty, call failed to get credentials. |
+ // If |key| is empty, network is open. |
+ typedef base::Callback<void(const std::string& ssid, |
+ const std::string& key)> CredentialsCallback; |
- virtual ~Delegate() {} |
+ virtual ~Delegate(); |
-#if defined(ENABLE_WIFI_BOOTSTRAPPING) |
- virtual void OnSetupCredentialsNeeded(const std::string& ssid, |
- const CredentialsCallback& callback); |
-#endif |
+ // Creates |GCDApiFlow| for making requests to GCD server. |
+ virtual scoped_ptr<GCDApiFlow> CreateApiFlow( |
+ scoped_ptr<GCDApiFlow::Request> request) = 0; |
+ |
+ // Requests WiFi credentials. |
+ virtual void GetWiFiCredentials(const CredentialsCallback& callback) = 0; |
- virtual void OnSetupConfirmationNeeded( |
- const std::string& confirmation_code, |
- const ConfirmationCallback& callback) = 0; |
+ // Switches to setup WiFi network. |
+ // If switch was successfully |RestoreWifi| should be called later. |
+ virtual void SwitchToSetupWiFi(const ResultCallback& callback) = 0; |
+ // Starts device resolution that should callback with ready |
+ // |PrivetHTTPClient|. |
+ virtual scoped_ptr<PrivetHTTPResolution> CreatePrivetHTTP( |
+ const std::string& service_name, |
+ const PrivetHTTPAsynchronousFactory::ResultCallback& callback) = 0; |
+ |
+ // Requests client to prompt user to check |confirmation_code|. |
+ virtual void ConfirmSecurityCode(const std::string& confirmation_code, |
+ const ResultCallback& callback) = 0; |
+ |
+ // Restores WiFi network. |
+ virtual void RestoreWifi(const ResultCallback& callback) = 0; |
+ |
+ // Notifies client that device is set up. |
virtual void OnSetupDone() = 0; |
+ // Notifies client setup failed. |
virtual void OnSetupError() = 0; |
}; |
- virtual ~PrivetV3SetupFlow() {} |
+ explicit PrivetV3SetupFlow(Delegate* delegate); |
+ ~PrivetV3SetupFlow(); |
- static scoped_ptr<PrivetV3SetupFlow> CreateMDnsOnlyFlow( |
- ServiceDiscoveryClient* service_discovery_client, |
- const std::string& service_name); |
+ // Starts registration. |
+ void Register(const std::string& service_name); |
#if defined(ENABLE_WIFI_BOOTSTRAPPING) |
- static scoped_ptr<PrivetV3SetupFlow> CreateWifiFlow( |
- ServiceDiscoveryClient* service_discovery_client, |
- wifi::WifiManager* wifi_manager, |
- // The SSID of the network whose credentials we will be provisioning. |
- const std::string& credentials_ssid, |
- // The SSID of the device we will be provisioning. |
- const std::string& device_ssid); |
-#endif |
- |
- virtual void Start() = 0; |
+ void SetupWifiAndRegister(const std::string& device_ssid); |
+#endif // ENABLE_WIFI_BOOTSTRAPPING |
+ |
+ private: |
+ Delegate* delegate_; |
+ std::string service_name_; |
+ base::WeakPtrFactory<PrivetV3SetupFlow> weak_ptr_factory_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(PrivetV3SetupFlow); |
}; |
} // namespace local_discovery |