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

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

Issue 296963002: Show WiFi bootstrapping devices in devices page (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@wifi_impl1_reb
Patch Set: Created 6 years, 6 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 | « chrome/browser/ui/webui/local_discovery/local_discovery_ui_handler.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/webui/local_discovery/local_discovery_ui_handler.cc
diff --git a/chrome/browser/ui/webui/local_discovery/local_discovery_ui_handler.cc b/chrome/browser/ui/webui/local_discovery/local_discovery_ui_handler.cc
index d8e662f215e5990199a6f768792879d2b21d493f..3918ed1e96a25e9a24b10bf201d34cdd9d9166cb 100644
--- a/chrome/browser/ui/webui/local_discovery/local_discovery_ui_handler.cc
+++ b/chrome/browser/ui/webui/local_discovery/local_discovery_ui_handler.cc
@@ -51,16 +51,29 @@ namespace local_discovery {
namespace {
+const char kDictionaryKeyServiceName[] = "service_name";
+const char kDictionaryKeyDisplayName[] = "display_name";
+const char kDictionaryKeyDescription[] = "description";
+const char kDictionaryKeyType[] = "type";
+const char kDictionaryKeyIsWifi[] = "is_wifi";
+const char kDictionaryKeyID[] = "id";
+
+const char kKeyPrefixMDns[] = "MDns:";
+
+#if defined(ENABLE_WIFI_BOOTSTRAPPING)
+const char kKeyPrefixWifi[] = "WiFi:";
+#endif // ENABLE_WIFI_BOOTSTRAPPING
+
int g_num_visible = 0;
scoped_ptr<base::DictionaryValue> CreateDeviceInfo(
const CloudDeviceListDelegate::Device& description) {
scoped_ptr<base::DictionaryValue> return_value(new base::DictionaryValue);
- return_value->SetString("id", description.id);
- return_value->SetString("display_name", description.display_name);
- return_value->SetString("description", description.description);
- return_value->SetString("type", description.type);
+ return_value->SetString(kDictionaryKeyID, description.id);
+ return_value->SetString(kDictionaryKeyDisplayName, description.display_name);
+ return_value->SetString(kDictionaryKeyDescription, description.description);
+ return_value->SetString(kDictionaryKeyType, description.type);
return return_value.Pass();
}
@@ -184,6 +197,13 @@ void LocalDiscoveryUIHandler::HandleStart(const base::ListValue* args) {
StartCloudPrintConnector();
#endif
+#if defined(ENABLE_WIFI_BOOTSTRAPPING)
+ if (CommandLine::ForCurrentProcess()->HasSwitch(
+ switches::kEnableCloudDevices)) {
+ StartWifiBootstrapping();
+ }
+#endif
+
CheckUserLoggedIn();
}
@@ -368,29 +388,29 @@ void LocalDiscoveryUIHandler::DeviceChanged(
base::DictionaryValue info;
- base::StringValue service_name(name);
- scoped_ptr<base::Value> null_value(base::Value::CreateNullValue());
+ base::StringValue service_key(kKeyPrefixMDns + name);
if (description.id.empty()) {
- info.SetString("service_name", name);
- info.SetString("human_readable_name", description.name);
- info.SetString("description", description.description);
- info.SetString("type", description.type);
+ info.SetString(kDictionaryKeyServiceName, name);
+ info.SetString(kDictionaryKeyDisplayName, description.name);
+ info.SetString(kDictionaryKeyDescription, description.description);
+ info.SetString(kDictionaryKeyType, description.type);
+ info.SetBoolean(kDictionaryKeyIsWifi, false);
web_ui()->CallJavascriptFunction(
- "local_discovery.onUnregisteredDeviceUpdate",
- service_name, info);
+ "local_discovery.onUnregisteredDeviceUpdate", service_key, info);
} else {
+ scoped_ptr<base::Value> null_value(base::Value::CreateNullValue());
+
web_ui()->CallJavascriptFunction(
- "local_discovery.onUnregisteredDeviceUpdate",
- service_name, *null_value);
+ "local_discovery.onUnregisteredDeviceUpdate", service_key, *null_value);
}
}
void LocalDiscoveryUIHandler::DeviceRemoved(const std::string& name) {
device_descriptions_.erase(name);
scoped_ptr<base::Value> null_value(base::Value::CreateNullValue());
- base::StringValue name_value(name);
+ base::StringValue name_value(kKeyPrefixMDns + name);
web_ui()->CallJavascriptFunction("local_discovery.onUnregisteredDeviceUpdate",
name_value, *null_value);
@@ -431,10 +451,10 @@ void LocalDiscoveryUIHandler::SendRegisterDone(
const std::string& service_name, const DeviceDescription& device) {
base::DictionaryValue printer_value;
- printer_value.SetString("id", device.id);
- printer_value.SetString("display_name", device.name);
- printer_value.SetString("description", device.description);
- printer_value.SetString("service_name", service_name);
+ printer_value.SetString(kDictionaryKeyID, device.id);
+ printer_value.SetString(kDictionaryKeyDisplayName, device.name);
+ printer_value.SetString(kDictionaryKeyDescription, device.description);
+ printer_value.SetString(kDictionaryKeyServiceName, service_name);
web_ui()->CallJavascriptFunction("local_discovery.onRegistrationSuccess",
printer_value);
@@ -637,4 +657,49 @@ void LocalDiscoveryUIHandler::RefreshCloudPrintStatusFromService() {
#endif // cloud print connector option stuff
+#if defined(ENABLE_WIFI_BOOTSTRAPPING)
+
+void LocalDiscoveryUIHandler::StartWifiBootstrapping() {
+ // Since LocalDiscoveryUIHandler isn't destroyed every time the page is
+ // refreshed, reset bootstrapping_device_lister_ so it's destoryed before
+ // wifi_manager_ is.
+ bootstrapping_device_lister_.reset();
+
+ wifi_manager_ = wifi::WifiManager::Create();
+ bootstrapping_device_lister_.reset(new wifi::BootstrappingDeviceLister(
+ wifi_manager_.get(),
+ base::Bind(&LocalDiscoveryUIHandler::OnBootstrappingDeviceChanged,
+ base::Unretained(this))));
+
+ wifi_manager_->Start();
+ bootstrapping_device_lister_->Start();
+ wifi_manager_->RequestScan();
+}
+
+void LocalDiscoveryUIHandler::OnBootstrappingDeviceChanged(
+ bool available,
+ const wifi::BootstrappingDeviceDescription& description) {
+ base::DictionaryValue info;
+
+ base::StringValue service_key(kKeyPrefixWifi + description.device_ssid);
+
+ if (available) {
+ info.SetString(kDictionaryKeyServiceName, description.device_ssid);
+ info.SetString(kDictionaryKeyDisplayName, description.device_name);
+ info.SetString(kDictionaryKeyDescription, std::string());
+ info.SetString(kDictionaryKeyType, description.device_kind);
+ info.SetBoolean(kDictionaryKeyIsWifi, true);
+
+ web_ui()->CallJavascriptFunction(
+ "local_discovery.onUnregisteredDeviceUpdate", service_key, info);
+ } else {
+ scoped_ptr<base::Value> null_value(base::Value::CreateNullValue());
+
+ web_ui()->CallJavascriptFunction(
+ "local_discovery.onUnregisteredDeviceUpdate", service_key, *null_value);
+ }
+}
+
+#endif // ENABLE_WIFI_BOOTSTRAPPING
+
} // namespace local_discovery
« no previous file with comments | « chrome/browser/ui/webui/local_discovery/local_discovery_ui_handler.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698