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

Side by Side 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: Create a Tether section in the system tray network list. 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ash/common/system/chromeos/network/network_list_md.h" 5 #include "ash/common/system/chromeos/network/network_list_md.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include "ash/common/system/chromeos/network/network_icon.h" 9 #include "ash/common/system/chromeos/network/network_icon.h"
10 #include "ash/common/system/chromeos/network/network_icon_animation.h" 10 #include "ash/common/system/chromeos/network/network_icon_animation.h"
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
175 NetworkStateHandler* handler = 175 NetworkStateHandler* handler =
176 NetworkHandler::Get()->network_state_handler(); 176 NetworkHandler::Get()->network_state_handler();
177 handler->SetTechnologyEnabled(NetworkTypePattern::Cellular(), is_on, 177 handler->SetTechnologyEnabled(NetworkTypePattern::Cellular(), is_on,
178 chromeos::network_handler::ErrorCallback()); 178 chromeos::network_handler::ErrorCallback());
179 } 179 }
180 180
181 private: 181 private:
182 DISALLOW_COPY_AND_ASSIGN(CellularHeaderRowView); 182 DISALLOW_COPY_AND_ASSIGN(CellularHeaderRowView);
183 }; 183 };
184 184
185 class TetherHeaderRowView : public NetworkListViewMd::SectionHeaderRowView {
186 public:
187 TetherHeaderRowView()
188 : SectionHeaderRowView(IDS_ASH_STATUS_TRAY_NETWORK_TETHER) {}
189
190 ~TetherHeaderRowView() override {}
191
192 const char* GetClassName() const override { return "TetherHeaderRowView"; }
193
194 protected:
195 void OnToggleToggled(bool is_on) override {
196 // TODO (hansberry): Persist toggle to settings/preferences.
197 }
198
199 private:
200 DISALLOW_COPY_AND_ASSIGN(TetherHeaderRowView);
201 };
202
185 class WifiHeaderRowView : public NetworkListViewMd::SectionHeaderRowView { 203 class WifiHeaderRowView : public NetworkListViewMd::SectionHeaderRowView {
186 public: 204 public:
187 explicit WifiHeaderRowView(NetworkListDelegate* network_list_delegate) 205 explicit WifiHeaderRowView(NetworkListDelegate* network_list_delegate)
188 : SectionHeaderRowView(IDS_ASH_STATUS_TRAY_NETWORK_WIFI), 206 : SectionHeaderRowView(IDS_ASH_STATUS_TRAY_NETWORK_WIFI),
189 network_list_delegate_(network_list_delegate), 207 network_list_delegate_(network_list_delegate),
190 join_(nullptr) {} 208 join_(nullptr) {}
191 209
192 ~WifiHeaderRowView() override {} 210 ~WifiHeaderRowView() override {}
193 211
194 void SetEnabled(bool enabled) override { 212 void SetEnabled(bool enabled) override {
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
256 } // namespace 274 } // namespace
257 275
258 // NetworkListViewMd: 276 // NetworkListViewMd:
259 277
260 NetworkListViewMd::NetworkListViewMd(NetworkListDelegate* delegate) 278 NetworkListViewMd::NetworkListViewMd(NetworkListDelegate* delegate)
261 : needs_relayout_(false), 279 : needs_relayout_(false),
262 delegate_(delegate), 280 delegate_(delegate),
263 no_wifi_networks_view_(nullptr), 281 no_wifi_networks_view_(nullptr),
264 no_cellular_networks_view_(nullptr), 282 no_cellular_networks_view_(nullptr),
265 cellular_header_view_(nullptr), 283 cellular_header_view_(nullptr),
284 tether_header_view_(nullptr),
266 wifi_header_view_(nullptr), 285 wifi_header_view_(nullptr),
267 cellular_separator_view_(nullptr), 286 cellular_separator_view_(nullptr),
287 tether_separator_view_(nullptr),
268 wifi_separator_view_(nullptr) { 288 wifi_separator_view_(nullptr) {
269 CHECK(delegate_); 289 CHECK(delegate_);
270 } 290 }
271 291
272 NetworkListViewMd::~NetworkListViewMd() { 292 NetworkListViewMd::~NetworkListViewMd() {
273 network_icon::NetworkIconAnimation::GetInstance()->RemoveObserver(this); 293 network_icon::NetworkIconAnimation::GetInstance()->RemoveObserver(this);
274 } 294 }
275 295
276 void NetworkListViewMd::Update() { 296 void NetworkListViewMd::Update() {
277 CHECK(container()); 297 CHECK(container());
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
369 info->disable = 389 info->disable =
370 (network->activation_state() == shill::kActivationStateActivating) || 390 (network->activation_state() == shill::kActivationStateActivating) ||
371 prohibited_by_policy; 391 prohibited_by_policy;
372 info->connected = network->IsConnectedState(); 392 info->connected = network->IsConnectedState();
373 info->connecting = network->IsConnectingState(); 393 info->connecting = network->IsConnectingState();
374 info->highlight = info->connected || info->connecting; 394 info->highlight = info->connected || info->connecting;
375 if (network->Matches(NetworkTypePattern::WiFi())) 395 if (network->Matches(NetworkTypePattern::WiFi()))
376 info->type = NetworkInfo::Type::WIFI; 396 info->type = NetworkInfo::Type::WIFI;
377 else if (network->Matches(NetworkTypePattern::Cellular())) 397 else if (network->Matches(NetworkTypePattern::Cellular()))
378 info->type = NetworkInfo::Type::CELLULAR; 398 info->type = NetworkInfo::Type::CELLULAR;
399 else if (network->Matches(NetworkTypePattern::Tether()))
400 info->type = NetworkInfo::Type::TETHER;
379 if (prohibited_by_policy) { 401 if (prohibited_by_policy) {
380 info->tooltip = 402 info->tooltip =
381 l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_NETWORK_PROHIBITED); 403 l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_NETWORK_PROHIBITED);
382 } 404 }
383 if (!animating && network->IsConnectingState()) 405 if (!animating && network->IsConnectingState())
384 animating = true; 406 animating = true;
385 } 407 }
386 if (animating) 408 if (animating)
387 network_icon::NetworkIconAnimation::GetInstance()->AddObserver(this); 409 network_icon::NetworkIconAnimation::GetInstance()->AddObserver(this);
388 else 410 else
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
459 ++index; 481 ++index;
460 482
461 // Add cellular networks. 483 // Add cellular networks.
462 std::unique_ptr<std::set<std::string>> new_cellular_service_paths = 484 std::unique_ptr<std::set<std::string>> new_cellular_service_paths =
463 UpdateNetworkChildren(NetworkInfo::Type::CELLULAR, index); 485 UpdateNetworkChildren(NetworkInfo::Type::CELLULAR, index);
464 index += new_cellular_service_paths->size(); 486 index += new_cellular_service_paths->size();
465 new_service_paths->insert(new_cellular_service_paths->begin(), 487 new_service_paths->insert(new_cellular_service_paths->begin(),
466 new_cellular_service_paths->end()); 488 new_cellular_service_paths->end());
467 } 489 }
468 490
491 // TODO (hansberry): Use a runtime flag?
492 bool isTetherEnabled = true;
stevenjb 2017/02/15 20:59:04 You will definitely want to set up a FeatureList f
Ryan Hansberry 2017/02/16 22:42:20 We already have a flag in chromeos::switches::kEna
stevenjb 2017/02/16 22:56:35 It looks like we already have a bunch of os specif
493 if (isTetherEnabled && pattern.MatchesPattern(NetworkTypePattern::Tether())) {
494 // TODO (hansberry): Fetch isTetherTechnologyEnabled value from
495 // settings/preferences.
stevenjb 2017/02/15 20:59:04 We should leverage NetworkStateHandler::IsTechnolo
Ryan Hansberry 2017/02/16 22:42:20 Was worried about the appearance of interacting wi
stevenjb 2017/02/16 22:56:35 Acknowledged.
496 bool isTetherTechnologyEnabled = true;
497 index = UpdateSectionHeaderRow(
498 NetworkTypePattern::Tether(), isTetherTechnologyEnabled, index,
499 &tether_header_view_, &tether_separator_view_);
500
501 // Add Tether networks.
502 std::unique_ptr<std::set<std::string>> new_tether_service_paths =
stevenjb 2017/02/15 20:59:04 For teter these will be guids so i would name them
Ryan Hansberry 2017/02/16 22:42:20 Done.
503 UpdateNetworkChildren(NetworkInfo::Type::TETHER, index);
504 index += new_tether_service_paths->size();
505 new_service_paths->insert(new_tether_service_paths->begin(),
506 new_tether_service_paths->end());
507 }
508
469 if (pattern.MatchesPattern(NetworkTypePattern::WiFi())) { 509 if (pattern.MatchesPattern(NetworkTypePattern::WiFi())) {
470 index = UpdateSectionHeaderRow( 510 index = UpdateSectionHeaderRow(
471 NetworkTypePattern::WiFi(), 511 NetworkTypePattern::WiFi(),
472 handler->IsTechnologyEnabled(NetworkTypePattern::WiFi()), index, 512 handler->IsTechnologyEnabled(NetworkTypePattern::WiFi()), index,
473 &wifi_header_view_, &wifi_separator_view_); 513 &wifi_header_view_, &wifi_separator_view_);
474 514
475 // "Wifi Enabled / Disabled". 515 // "Wifi Enabled / Disabled".
476 int message_id = 0; 516 int message_id = 0;
477 if (network_list_.empty()) { 517 if (network_list_.empty()) {
478 message_id = handler->IsTechnologyEnabled(NetworkTypePattern::WiFi()) 518 message_id = handler->IsTechnologyEnabled(NetworkTypePattern::WiFi())
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
568 608
569 int NetworkListViewMd::UpdateSectionHeaderRow( 609 int NetworkListViewMd::UpdateSectionHeaderRow(
570 NetworkTypePattern pattern, 610 NetworkTypePattern pattern,
571 bool enabled, 611 bool enabled,
572 int child_index, 612 int child_index,
573 SectionHeaderRowView** view, 613 SectionHeaderRowView** view,
574 views::Separator** separator_view) { 614 views::Separator** separator_view) {
575 if (!*view) { 615 if (!*view) {
576 if (pattern.Equals(NetworkTypePattern::Cellular())) 616 if (pattern.Equals(NetworkTypePattern::Cellular()))
577 *view = new CellularHeaderRowView(); 617 *view = new CellularHeaderRowView();
618 else if (pattern.Equals(NetworkTypePattern::Tether()))
619 *view = new TetherHeaderRowView();
578 else if (pattern.Equals(NetworkTypePattern::WiFi())) 620 else if (pattern.Equals(NetworkTypePattern::WiFi()))
579 *view = new WifiHeaderRowView(delegate_); 621 *view = new WifiHeaderRowView(delegate_);
580 else 622 else
581 NOTREACHED(); 623 NOTREACHED();
582 (*view)->Init(enabled); 624 (*view)->Init(enabled);
583 } 625 }
584 // Show or hide a separator above the header. The separator should only be 626 // Show or hide a separator above the header. The separator should only be
585 // visible when the header row is not at the top of the list. 627 // visible when the header row is not at the top of the list.
586 if (child_index > 0) { 628 if (child_index > 0) {
587 if (!*separator_view) 629 if (!*separator_view)
588 *separator_view = TrayPopupUtils::CreateListSubHeaderSeparator(); 630 *separator_view = TrayPopupUtils::CreateListSubHeaderSeparator();
589 PlaceViewAtIndex(*separator_view, child_index++); 631 PlaceViewAtIndex(*separator_view, child_index++);
590 } else { 632 } else {
591 if (*separator_view) 633 if (*separator_view)
592 delete *separator_view; 634 delete *separator_view;
593 *separator_view = nullptr; 635 *separator_view = nullptr;
594 } 636 }
595 637
596 (*view)->SetEnabled(enabled); 638 (*view)->SetEnabled(enabled);
597 PlaceViewAtIndex(*view, child_index++); 639 PlaceViewAtIndex(*view, child_index++);
598 return child_index; 640 return child_index;
599 } 641 }
600 642
601 void NetworkListViewMd::NetworkIconChanged() { 643 void NetworkListViewMd::NetworkIconChanged() {
602 Update(); 644 Update();
603 } 645 }
604 646
605 } // namespace ash 647 } // namespace ash
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698