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

Unified Diff: components/arc/net/arc_net_host_impl.cc

Issue 1572483002: Implement OnGetNetworks for net.mojom (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 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
« components/arc/common/net.mojom ('K') | « components/arc/net/arc_net_host_impl.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/arc/net/arc_net_host_impl.cc
diff --git a/components/arc/net/arc_net_host_impl.cc b/components/arc/net/arc_net_host_impl.cc
new file mode 100644
index 0000000000000000000000000000000000000000..cf4a6f255ca1a1fafbc66fbc22f073e3a7fdad03
--- /dev/null
+++ b/components/arc/net/arc_net_host_impl.cc
@@ -0,0 +1,97 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/arc/net/arc_net_host_impl.h"
+
+#include <string>
+#include <vector>
+
+#include "base/logging.h"
+#include "base/posix/eintr_wrapper.h"
+#include "base/thread_task_runner_handle.h"
+#include "base/time/time.h"
+#include "chromeos/network/network_util.h"
+#include "chromeos/network/onc/onc_utils.h"
+#include "components/arc/arc_bridge_service.h"
+#include "components/onc/onc_constants.h"
+#include "third_party/mojo/src/mojo/edk/embedder/embedder.h"
+
+namespace {
+
+const int kGetNetworksListLimit = 100;
+
+} // namespace
+
+namespace arc {
+
+ArcNetHostImpl::ArcNetHostImpl(ArcBridgeService* arc_bridge_service)
+ : arc_bridge_service_(arc_bridge_service),
+ binding_(this),
+ weak_factory_(this) {
+ arc_bridge_service->AddObserver(this);
+ if (arc_bridge_service->net_instance())
+ OnNetInstanceReady();
+}
+
+ArcNetHostImpl::~ArcNetHostImpl() {
+ DCHECK(thread_checker_.CalledOnValidThread());
+ arc_bridge_service_->RemoveObserver(this);
+}
+
+void ArcNetHostImpl::OnNetInstanceReady() {
+ DCHECK(thread_checker_.CalledOnValidThread());
+
+ NetHostPtr host;
+ binding_.Bind(GetProxy(&host));
+ arc_bridge_service_->net_instance()->Init(std::move(host));
+}
+
+void ArcNetHostImpl::GetNetworks(bool configured_only,
+ bool visible_only,
+ const GetNetworksCallback& callback) {
+ NetworkDataPtr data = NetworkData::New();
+ data->status = NETWORK_RESULT_SUCCESS;
+
+ // Retrieve list of nearby wifi networks
+ chromeos::NetworkTypePattern network_pattern =
+ chromeos::onc::NetworkTypePatternFromOncType(onc::network_type::kWiFi);
+ scoped_ptr<base::ListValue> network_properties_list =
+ chromeos::network_util::TranslateNetworkListToONC(
+ network_pattern, configured_only, visible_only,
+ kGetNetworksListLimit);
+
+ // Extract info for each network and add it to the list.
+ for (base::Value* value : *network_properties_list) {
+ WifiConfigurationPtr wc = WifiConfiguration::New();
+
+ base::DictionaryValue* network_dict = nullptr;
+ if (!value->GetAsDictionary(&network_dict)) {
+ LOG(ERROR) << "Error parsing NetworkStateProperties";
+ continue;
+ }
+
+ std::string tmp;
+ network_dict->GetString(onc::network_config::kName, &tmp);
+ wc->ssid = tmp;
+
+ base::DictionaryValue* wifi_dict = nullptr;
+ if (!network_dict->GetDictionary(onc::network_config::kWiFi, &wifi_dict)) {
+ LOG(ERROR) << "Error parsing NetworkStateProperties.WiFi";
+ continue;
stevenjb 2016/01/14 18:18:54 DCHECK
cernekee 2016/01/14 21:22:23 Done.
+ }
+
+ wifi_dict->GetInteger(onc::wifi::kFrequency, &wc->frequency);
+ wifi_dict->GetInteger(onc::wifi::kSignalStrength, &wc->signal_strength);
+ wifi_dict->GetString(onc::wifi::kSecurity, &tmp);
+ wc->security = tmp;
+ wifi_dict->GetString(onc::wifi::kBSSID, &tmp);
+ wc->bssid = tmp;
+
+ data->networks.push_back(std::move(wc));
+ }
+
+ callback.Run(std::move(data));
+}
+
+} // namespace arc
« components/arc/common/net.mojom ('K') | « components/arc/net/arc_net_host_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698