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

Unified Diff: chrome/browser/ui/webui/local_discovery/local_discovery_ui_handler.h

Issue 20070002: Demo UI for device discovery and registration (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added FILE_PATH_LITERAL macro to fix windows compile problem Created 7 years, 4 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
Index: chrome/browser/ui/webui/local_discovery/local_discovery_ui_handler.h
diff --git a/chrome/browser/ui/webui/local_discovery/local_discovery_ui_handler.h b/chrome/browser/ui/webui/local_discovery/local_discovery_ui_handler.h
index f2b7eec9a3495bb856c68662ba700ea5f7a4a512..a22ab1b2808936554c7f7e7b6b415a801729c59a 100644
--- a/chrome/browser/ui/webui/local_discovery/local_discovery_ui_handler.h
+++ b/chrome/browser/ui/webui/local_discovery/local_discovery_ui_handler.h
@@ -5,29 +5,107 @@
#ifndef CHROME_BROWSER_UI_WEBUI_LOCAL_DISCOVERY_LOCAL_DISCOVERY_UI_HANDLER_H_
#define CHROME_BROWSER_UI_WEBUI_LOCAL_DISCOVERY_LOCAL_DISCOVERY_UI_HANDLER_H_
+#include <map>
+#include <string>
+
+#include "chrome/browser/local_discovery/privet_confirm_api_flow.h"
+#include "chrome/browser/local_discovery/privet_device_lister.h"
+#include "chrome/browser/local_discovery/privet_http.h"
+#include "chrome/browser/local_discovery/service_discovery_host_client.h"
+#include "chrome/common/local_discovery/service_discovery_client.h"
#include "content/public/browser/user_metrics.h"
#include "content/public/browser/web_ui_message_handler.h"
+namespace local_discovery {
+
// UI Handler for chrome://devices/
// It listens to local discovery notifications and passes those notifications
// into the Javascript to update the page.
-class LocalDiscoveryUIHandler : public content::WebUIMessageHandler {
+class LocalDiscoveryUIHandler : public content::WebUIMessageHandler,
+ public PrivetRegisterOperation::Delegate,
+ public PrivetDeviceLister::Delegate {
public:
+ class Factory {
+ public:
+ virtual ~Factory() {}
+ virtual LocalDiscoveryUIHandler* CreateLocalDiscoveryUIHandler() = 0;
+ };
+
LocalDiscoveryUIHandler();
+ // This constructor should only used by tests.
+ explicit LocalDiscoveryUIHandler(
+ scoped_ptr<PrivetDeviceLister> privet_lister);
virtual ~LocalDiscoveryUIHandler();
+ static LocalDiscoveryUIHandler* Create();
+ static void SetFactory(Factory* factory);
+
// WebUIMessageHandler implementation.
- // Does nothing for now.
virtual void RegisterMessages() OVERRIDE;
+ // PrivetRegisterOperation::Delegate implementation.
+ virtual void OnPrivetRegisterClaimToken(const std::string& token,
+ const GURL& url) OVERRIDE;
+ virtual void OnPrivetRegisterError(
+ const std::string& action,
+ PrivetRegisterOperation::FailureReason reason,
+ int printer_http_code,
+ const DictionaryValue* json) OVERRIDE;
+ virtual void OnPrivetRegisterDone(const std::string& device_id) OVERRIDE;
+
+ // PrivetDeviceLister::Delegate implementation.
+ virtual void DeviceChanged(
+ bool added,
+ const std::string& name,
+ const DeviceDescription& description) OVERRIDE;
+ virtual void DeviceRemoved(const std::string& name) OVERRIDE;
+
private:
- // Callback for adding new device to the devices page.
- // |name| contains a user friendly name of the device.
- void OnNewDevice(const std::string& name);
+ // Message handlers:
+ // For registering a device.
+ void HandleRegisterDevice(const base::ListValue* args);
+ // For when the page is ready to recieve device notifications.
+ void HandleStart(const base::ListValue* args);
+
+ // For when the IP address of the printer has been resolved.
+ void OnDomainResolved(bool success, const net::IPAddressNumber& address);
+
+ // For when the confirm operation on the cloudprint server has finished
+ // executing.
+ void OnConfirmDone(PrivetConfirmApiCallFlow::Status status);
+
+ // Log an error to the web interface.
+ void LogRegisterErrorToWeb(const std::string& error);
+
+ // Log a successful registration to the web inteface.
+ void LogRegisterDoneToWeb(const std::string& id);
+
+ // The current HTTP client (used for the current operation).
+ scoped_ptr<PrivetHTTPClient> current_http_client_;
+
+ // The current register operation. Only one allowed at any time.
+ scoped_ptr<PrivetRegisterOperation> current_register_operation_;
+
+ // The current confirm call used during the registration flow.
+ scoped_ptr<PrivetConfirmApiCallFlow> confirm_api_call_flow_;
+
+ // The name of the currently registering device.
+ std::string currently_registering_device_;
+
+ // The device lister used to list devices on the local network.
+ scoped_ptr<PrivetDeviceLister> privet_lister_;
+
+ // The service discovery client used listen for devices on the local network.
+ scoped_refptr<ServiceDiscoveryHostClient> service_discovery_client_;
+
+ // A map of current device descriptions provided by the PrivetDeviceLister.
+ std::map<std::string, DeviceDescription> device_descriptions_;
- content::ActionCallback action_callback_;
+ // The local domain resolver used to resolve the domains for local devices.
+ scoped_ptr<LocalDomainResolver> domain_resolver_;
DISALLOW_COPY_AND_ASSIGN(LocalDiscoveryUIHandler);
};
+} // namespace local_discovery
#endif // CHROME_BROWSER_UI_WEBUI_LOCAL_DISCOVERY_LOCAL_DISCOVERY_UI_HANDLER_H_

Powered by Google App Engine
This is Rietveld 408576698