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

Unified Diff: ash/common/system/chromeos/network/network_list_md.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 | « ash/common/system/chromeos/network/network_list_md.h ('k') | chromeos/network/network_state_handler.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ash/common/system/chromeos/network/network_list_md.cc
diff --git a/ash/common/system/chromeos/network/network_list_md.cc b/ash/common/system/chromeos/network/network_list_md.cc
index dd12aa12aaf570679805488a529f688dadc23d84..140071e4e7652d25deae04f4198a968782105300 100644
--- a/ash/common/system/chromeos/network/network_list_md.cc
+++ b/ash/common/system/chromeos/network/network_list_md.cc
@@ -182,6 +182,24 @@ class CellularHeaderRowView : public NetworkListViewMd::SectionHeaderRowView {
DISALLOW_COPY_AND_ASSIGN(CellularHeaderRowView);
};
+class TetherHeaderRowView : public NetworkListViewMd::SectionHeaderRowView {
+ public:
+ TetherHeaderRowView()
+ : SectionHeaderRowView(IDS_ASH_STATUS_TRAY_NETWORK_TETHER) {}
+
+ ~TetherHeaderRowView() override {}
+
+ const char* GetClassName() const override { return "TetherHeaderRowView"; }
+
+ protected:
+ void OnToggleToggled(bool is_on) override {
+ // TODO (hansberry): Persist toggle to settings/preferences.
+ }
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(TetherHeaderRowView);
+};
+
class WifiHeaderRowView : public NetworkListViewMd::SectionHeaderRowView {
public:
explicit WifiHeaderRowView(NetworkListDelegate* network_list_delegate)
@@ -263,8 +281,10 @@ NetworkListViewMd::NetworkListViewMd(NetworkListDelegate* delegate)
no_wifi_networks_view_(nullptr),
no_cellular_networks_view_(nullptr),
cellular_header_view_(nullptr),
+ tether_header_view_(nullptr),
wifi_header_view_(nullptr),
cellular_separator_view_(nullptr),
+ tether_separator_view_(nullptr),
wifi_separator_view_(nullptr) {
CHECK(delegate_);
}
@@ -275,10 +295,20 @@ NetworkListViewMd::~NetworkListViewMd() {
void NetworkListViewMd::Update() {
CHECK(container());
- NetworkStateHandler::NetworkStateList network_list;
+
NetworkStateHandler* handler = NetworkHandler::Get()->network_state_handler();
+
+ NetworkStateHandler::NetworkStateList network_list;
handler->GetVisibleNetworkList(&network_list);
UpdateNetworks(network_list);
+
+ NetworkStateHandler::NetworkStateList tether_network_list;
+ handler->GetTetherNetworkList(0 /* no limit */, &tether_network_list);
+ for (const auto& tether_network : tether_network_list) {
+ network_list_.push_back(
+ base::MakeUnique<NetworkInfo>(tether_network->guid()));
+ }
+
UpdateNetworkIcons();
OrderNetworks();
UpdateNetworkListInternal();
@@ -376,6 +406,8 @@ void NetworkListViewMd::UpdateNetworkIcons() {
info->type = NetworkInfo::Type::WIFI;
else if (network->Matches(NetworkTypePattern::Cellular()))
info->type = NetworkInfo::Type::CELLULAR;
+ else if (network->Matches(NetworkTypePattern::Tether()))
+ info->type = NetworkInfo::Type::TETHER;
if (prohibited_by_policy) {
info->tooltip =
l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_NETWORK_PROHIBITED);
@@ -464,6 +496,25 @@ NetworkListViewMd::UpdateNetworkListEntries() {
new_guids->insert(new_cellular_guids->begin(), new_cellular_guids->end());
}
+ // TODO (hansberry): Audit existing usage of NonVirtual and consider changing
+ // it to include Tether. See crbug.com/693647.
+ if (handler->IsTechnologyAvailable(NetworkTypePattern::Tether())) {
+ index = UpdateSectionHeaderRow(
+ NetworkTypePattern::Tether(),
+ handler->IsTechnologyEnabled(NetworkTypePattern::Tether()), index,
+ &tether_header_view_, &tether_separator_view_);
+
+ // TODO (hansberry): Should a message similar to
+ // IDS_ASH_STATUS_TRAY_NO_CELLULAR_NETWORKS be shown if Tether technology
+ // is enabled but no networks are around?
+
+ // Add Tether networks.
+ std::unique_ptr<std::set<std::string>> new_tether_guids =
+ UpdateNetworkChildren(NetworkInfo::Type::TETHER, index);
+ index += new_tether_guids->size();
+ new_guids->insert(new_tether_guids->begin(), new_tether_guids->end());
+ }
+
if (pattern.MatchesPattern(NetworkTypePattern::WiFi())) {
index = UpdateSectionHeaderRow(
NetworkTypePattern::WiFi(),
@@ -570,6 +621,8 @@ int NetworkListViewMd::UpdateSectionHeaderRow(
if (!*view) {
if (pattern.Equals(NetworkTypePattern::Cellular()))
*view = new CellularHeaderRowView();
+ else if (pattern.Equals(NetworkTypePattern::Tether()))
+ *view = new TetherHeaderRowView();
else if (pattern.Equals(NetworkTypePattern::WiFi()))
*view = new WifiHeaderRowView(delegate_);
else
« no previous file with comments | « ash/common/system/chromeos/network/network_list_md.h ('k') | chromeos/network/network_state_handler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698