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

Unified Diff: chromeos/network/network_state_handler.cc

Issue 2701463003: Create a Tether section in the system tray network list. (Closed)
Patch Set: Comments. Created 3 years, 10 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 | « chromeos/network/network_state_handler.h ('k') | chromeos/network/network_state_handler_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chromeos/network/network_state_handler.cc
diff --git a/chromeos/network/network_state_handler.cc b/chromeos/network/network_state_handler.cc
index eaed6e9ce3c70e4908cc14f6f4b8b1ca8aae67cc..d8af06c7a8e3e12dbf596d669b8ad337dce5b154 100644
--- a/chromeos/network/network_state_handler.cc
+++ b/chromeos/network/network_state_handler.cc
@@ -7,6 +7,7 @@
#include <stddef.h>
#include "base/bind.h"
+#include "base/command_line.h"
#include "base/format_macros.h"
#include "base/guid.h"
#include "base/json/json_string_value_serializer.h"
@@ -19,6 +20,7 @@
#include "base/strings/string_util.h"
#include "base/strings/stringprintf.h"
#include "base/values.h"
+#include "chromeos/chromeos_switches.h"
#include "chromeos/network/device_state.h"
#include "chromeos/network/network_event_log.h"
#include "chromeos/network/network_state.h"
@@ -122,6 +124,13 @@ void NetworkStateHandler::RemoveObserver(
NetworkStateHandler::TechnologyState NetworkStateHandler::GetTechnologyState(
const NetworkTypePattern& type) const {
std::string technology = GetTechnologyForType(type);
+
+ if (technology == kTypeTether) {
+ bool is_tether_enabled = base::CommandLine::ForCurrentProcess()->HasSwitch(
+ chromeos::switches::kEnableTether);
+ return is_tether_enabled ? TECHNOLOGY_ENABLED : TECHNOLOGY_UNAVAILABLE;
+ }
+
TechnologyState state;
if (shill_property_handler_->IsTechnologyEnabled(technology))
state = TECHNOLOGY_ENABLED;
@@ -307,6 +316,20 @@ void NetworkStateHandler::GetNetworkListByType(const NetworkTypePattern& type,
}
}
+void NetworkStateHandler::GetTetherNetworkList(int limit,
+ NetworkStateList* list) {
+ DCHECK(list);
+ list->clear();
+ int count = 0;
+
+ for (auto iter = tether_network_list_.begin();
+ iter != tether_network_list_.end(); ++iter) {
+ list->push_back((*iter)->AsNetworkState());
+ if (limit > 0 && ++count >= limit)
+ return;
+ }
+}
+
const NetworkState* NetworkStateHandler::GetNetworkStateFromServicePath(
const std::string& service_path,
bool configured_only) const {
@@ -343,9 +366,19 @@ const NetworkState* NetworkStateHandler::GetNetworkStateFromGuid(
return nullptr;
}
-const std::string NetworkStateHandler::CreateTetherNetworkState(
- const std::string& name) {
- const std::string& guid = base::GenerateGUID();
+void NetworkStateHandler::AddTetherNetworkState(const std::string& guid,
+ const std::string& name) {
+ DCHECK(!guid.empty());
+
+ // If the network already exists, do nothing.
+ for (auto iter = tether_network_list_.begin();
+ iter != tether_network_list_.end(); ++iter) {
+ if (iter->get()->AsNetworkState()->guid() == guid) {
+ NET_LOG(ERROR) << "AddTetherNetworkState: " << name
+ << " called with existing guid:" << guid;
+ return;
+ }
+ }
std::unique_ptr<NetworkState> tether_managed_state =
base::MakeUnique<NetworkState>(base::GenerateGUID());
@@ -357,8 +390,6 @@ const std::string NetworkStateHandler::CreateTetherNetworkState(
tether_network_list_.push_back(std::move(tether_managed_state));
NotifyNetworkListChanged();
-
- return guid;
}
void NetworkStateHandler::RemoveTetherNetworkState(const std::string& guid) {
@@ -1028,6 +1059,9 @@ std::string NetworkStateHandler::GetTechnologyForType(
if (type.MatchesType(shill::kTypeCellular))
return shill::kTypeCellular;
+ if (type.MatchesType(kTypeTether))
+ return kTypeTether;
+
NOTREACHED();
return std::string();
}
« no previous file with comments | « chromeos/network/network_state_handler.h ('k') | chromeos/network/network_state_handler_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698