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

Unified Diff: ash/common/system/chromeos/network/network_list_md.cc

Issue 2734653002: chromeos: Move files in //ash/common to //ash (Closed)
Patch Set: fix a11y tests, fix docs 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
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
deleted file mode 100644
index 4fb46745033a8889e55f4da76cf99a49608b21e5..0000000000000000000000000000000000000000
--- a/ash/common/system/chromeos/network/network_list_md.cc
+++ /dev/null
@@ -1,653 +0,0 @@
-// Copyright 2016 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 "ash/common/system/chromeos/network/network_list_md.h"
-
-#include <stddef.h>
-
-#include "ash/common/system/chromeos/network/network_icon.h"
-#include "ash/common/system/chromeos/network/network_icon_animation.h"
-#include "ash/common/system/chromeos/network/network_list_delegate.h"
-#include "ash/common/system/tray/system_menu_button.h"
-#include "ash/common/system/tray/tray_constants.h"
-#include "ash/common/system/tray/tray_popup_item_style.h"
-#include "ash/common/system/tray/tray_popup_utils.h"
-#include "ash/strings/grit/ash_strings.h"
-#include "base/memory/ptr_util.h"
-#include "chromeos/dbus/dbus_thread_manager.h"
-#include "chromeos/dbus/power_manager/power_supply_properties.pb.h"
-#include "chromeos/dbus/power_manager_client.h"
-#include "chromeos/login/login_state.h"
-#include "chromeos/network/managed_network_configuration_handler.h"
-#include "chromeos/network/network_state.h"
-#include "chromeos/network/network_state_handler.h"
-#include "chromeos/network/network_state_handler_observer.h"
-#include "components/device_event_log/device_event_log.h"
-#include "ui/base/l10n/l10n_util.h"
-#include "ui/base/resource/resource_bundle.h"
-#include "ui/gfx/color_palette.h"
-#include "ui/gfx/font.h"
-#include "ui/gfx/paint_vector_icon.h"
-#include "ui/gfx/vector_icons_public.h"
-#include "ui/views/controls/button/toggle_button.h"
-#include "ui/views/controls/label.h"
-#include "ui/views/controls/separator.h"
-#include "ui/views/layout/box_layout.h"
-#include "ui/views/layout/fill_layout.h"
-#include "ui/views/painter.h"
-#include "ui/views/view.h"
-
-using chromeos::LoginState;
-using chromeos::NetworkHandler;
-using chromeos::NetworkStateHandler;
-using chromeos::ManagedNetworkConfigurationHandler;
-using chromeos::NetworkTypePattern;
-
-namespace ash {
-
-namespace {
-
-bool IsProhibitedByPolicy(const chromeos::NetworkState* network) {
- if (!NetworkTypePattern::WiFi().MatchesType(network->type()))
- return false;
- if (!LoginState::IsInitialized() || !LoginState::Get()->IsUserLoggedIn())
- return false;
- ManagedNetworkConfigurationHandler* managed_configuration_handler =
- NetworkHandler::Get()->managed_network_configuration_handler();
- const base::DictionaryValue* global_network_config =
- managed_configuration_handler->GetGlobalConfigFromPolicy(
- std::string() /* no username hash, device policy */);
- bool policy_prohibites_unmanaged = false;
- if (global_network_config) {
- global_network_config->GetBooleanWithoutPathExpansion(
- ::onc::global_network_config::kAllowOnlyPolicyNetworksToConnect,
- &policy_prohibites_unmanaged);
- }
- if (!policy_prohibites_unmanaged)
- return false;
- return !managed_configuration_handler->FindPolicyByGuidAndProfile(
- network->guid(), network->profile_path());
-}
-
-} // namespace
-
-// A header row for sections in network detailed view which contains a title and
-// a toggle button to turn on/off the section. Subclasses are given the
-// opportunity to add extra buttons before the toggle button is added.
-class NetworkListViewMd::SectionHeaderRowView : public views::View,
- public views::ButtonListener {
- public:
- explicit SectionHeaderRowView(int title_id)
- : title_id_(title_id),
- container_(nullptr),
- toggle_(nullptr),
- style_(
- new TrayPopupItemStyle(TrayPopupItemStyle::FontStyle::SUB_HEADER)) {
- }
-
- ~SectionHeaderRowView() override {}
-
- void Init(bool enabled) {
- InitializeLayout();
- AddExtraButtons(enabled);
- AddToggleButton(enabled);
- }
-
- virtual void SetEnabled(bool enabled) { toggle_->SetIsOn(enabled, true); }
-
- protected:
- // This is called before the toggle button is added to give subclasses an
- // opportunity to add more buttons before the toggle button. Subclasses can
- // add buttons to container() using AddChildView().
- virtual void AddExtraButtons(bool enabled) {}
-
- // Called when |toggle_| is clicked and toggled. Subclasses can override to
- // enabled/disable their respective technology, for example.
- virtual void OnToggleToggled(bool is_on) = 0;
-
- TriView* container() const { return container_; }
- TrayPopupItemStyle* style() const { return style_.get(); }
-
- int GetHeightForWidth(int w) const override {
- // Make row height fixed avoiding layout manager adjustments.
- return GetPreferredSize().height();
- }
-
- // views::ButtonListener:
- void ButtonPressed(views::Button* sender, const ui::Event& event) override {
- DCHECK_EQ(toggle_, sender);
- OnToggleToggled(toggle_->is_on());
- }
-
- private:
- void InitializeLayout() {
- // TODO(mohsen): Consider using TriView class and adding a utility function
- // to TrayPopupUtils to simplify creation of the following layout. See
- // https://crbug.com/614453.
- TrayPopupUtils::ConfigureAsStickyHeader(this);
- SetLayoutManager(new views::FillLayout);
- container_ = TrayPopupUtils::CreateSubHeaderRowView();
- AddChildView(container_);
-
- views::Label* label = TrayPopupUtils::CreateDefaultLabel();
- style()->SetupLabel(label);
- label->SetText(l10n_util::GetStringUTF16(title_id_));
- container_->AddView(TriView::Container::CENTER, label);
- }
-
- void AddToggleButton(bool enabled) {
- toggle_ = TrayPopupUtils::CreateToggleButton(this, title_id_);
- toggle_->SetIsOn(enabled, false);
- container_->AddView(TriView::Container::END, toggle_);
- }
-
- // Resource ID for the string to use as the title of the section and for the
- // accessible text on the section header toggle button.
- const int title_id_;
-
- // View containing header row views, including title, toggle, and extra
- // buttons.
- TriView* container_;
-
- // ToggleButton to toggle section on or off.
- views::ToggleButton* toggle_;
-
- // TrayPopupItemStyle used to configure labels and buttons.
- std::unique_ptr<TrayPopupItemStyle> style_;
-
- DISALLOW_COPY_AND_ASSIGN(SectionHeaderRowView);
-};
-
-namespace {
-
-class CellularHeaderRowView : public NetworkListViewMd::SectionHeaderRowView {
- public:
- CellularHeaderRowView()
- : SectionHeaderRowView(IDS_ASH_STATUS_TRAY_NETWORK_MOBILE) {}
-
- ~CellularHeaderRowView() override {}
-
- const char* GetClassName() const override { return "CellularHeaderRowView"; }
-
- protected:
- void OnToggleToggled(bool is_on) override {
- NetworkStateHandler* handler =
- NetworkHandler::Get()->network_state_handler();
- handler->SetTechnologyEnabled(NetworkTypePattern::Cellular(), is_on,
- chromeos::network_handler::ErrorCallback());
- }
-
- private:
- 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)
- : SectionHeaderRowView(IDS_ASH_STATUS_TRAY_NETWORK_WIFI),
- network_list_delegate_(network_list_delegate),
- join_(nullptr) {}
-
- ~WifiHeaderRowView() override {}
-
- void SetEnabled(bool enabled) override {
- join_->SetEnabled(enabled);
- SectionHeaderRowView::SetEnabled(enabled);
- }
-
- const char* GetClassName() const override { return "WifiHeaderRowView"; }
-
- protected:
- // SectionHeaderRowView:
- void OnToggleToggled(bool is_on) override {
- NetworkStateHandler* handler =
- NetworkHandler::Get()->network_state_handler();
- handler->SetTechnologyEnabled(NetworkTypePattern::WiFi(), is_on,
- chromeos::network_handler::ErrorCallback());
- }
-
- void AddExtraButtons(bool enabled) override {
- const SkColor prominent_color = GetNativeTheme()->GetSystemColor(
- ui::NativeTheme::kColorId_ProminentButtonColor);
- gfx::ImageSkia normal_image = network_icon::GetImageForNewWifiNetwork(
- SkColorSetA(prominent_color, kJoinIconAlpha),
- SkColorSetA(prominent_color, kJoinBadgeAlpha));
- gfx::ImageSkia disabled_image = network_icon::GetImageForNewWifiNetwork(
- SkColorSetA(prominent_color, kDisabledJoinIconAlpha),
- SkColorSetA(prominent_color, kDisabledJoinBadgeAlpha));
- join_ = new SystemMenuButton(this, TrayPopupInkDropStyle::HOST_CENTERED,
- normal_image, disabled_image,
- IDS_ASH_STATUS_TRAY_OTHER_WIFI);
- join_->SetInkDropColor(prominent_color);
- join_->SetEnabled(enabled);
- container()->AddView(TriView::Container::END, join_);
- }
-
- void ButtonPressed(views::Button* sender, const ui::Event& event) override {
- if (sender == join_) {
- network_list_delegate_->OnOtherWifiClicked();
- return;
- }
- SectionHeaderRowView::ButtonPressed(sender, event);
- }
-
- private:
- // Full opacity for badge.
- static constexpr int kJoinBadgeAlpha = 0xFF;
-
- // .30 opacity for icon.
- static constexpr int kJoinIconAlpha = 0x4D;
-
- // .38 opacity for disabled badge.
- static constexpr int kDisabledJoinBadgeAlpha = 0x61;
-
- // .30 * .38 opacity for disabled icon.
- static constexpr int kDisabledJoinIconAlpha = 0x1D;
-
- NetworkListDelegate* network_list_delegate_;
-
- // A button to invoke "Join Wi-Fi network" dialog.
- SystemMenuButton* join_;
-
- DISALLOW_COPY_AND_ASSIGN(WifiHeaderRowView);
-};
-
-} // namespace
-
-// NetworkListViewMd:
-
-NetworkListViewMd::NetworkListViewMd(NetworkListDelegate* delegate)
- : needs_relayout_(false),
- delegate_(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_);
-}
-
-NetworkListViewMd::~NetworkListViewMd() {
- network_icon::NetworkIconAnimation::GetInstance()->RemoveObserver(this);
-}
-
-void NetworkListViewMd::Update() {
- CHECK(container());
-
- 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();
-}
-
-bool NetworkListViewMd::IsNetworkEntry(views::View* view,
- std::string* guid) const {
- std::map<views::View*, std::string>::const_iterator found =
- network_map_.find(view);
- if (found == network_map_.end())
- return false;
- *guid = found->second;
- return true;
-}
-
-void NetworkListViewMd::UpdateNetworks(
- const NetworkStateHandler::NetworkStateList& networks) {
- SCOPED_NET_LOG_IF_SLOW();
- network_list_.clear();
- const NetworkTypePattern pattern = delegate_->GetNetworkTypePattern();
- for (const auto* network : networks) {
- if (pattern.MatchesType(network->type()))
- network_list_.push_back(base::MakeUnique<NetworkInfo>(network->guid()));
- }
-}
-
-void NetworkListViewMd::OrderNetworks() {
- struct CompareNetwork {
- explicit CompareNetwork(NetworkStateHandler* handler) : handler_(handler) {}
-
- // Returns true if |network1| is less than (i.e. is ordered before)
- // |network2|.
- bool operator()(const std::unique_ptr<NetworkInfo>& network1,
- const std::unique_ptr<NetworkInfo>& network2) {
- const int order1 =
- GetOrder(handler_->GetNetworkStateFromGuid(network1->guid));
- const int order2 =
- GetOrder(handler_->GetNetworkStateFromGuid(network2->guid));
- if (order1 != order2)
- return order1 < order2;
- if (network1->connected != network2->connected)
- return network1->connected;
- if (network1->connecting != network2->connecting)
- return network1->connecting;
- if (network1->highlight != network2->highlight)
- return network1->highlight;
- return network1->guid.compare(network2->guid) < 0;
- }
-
- private:
- static int GetOrder(const chromeos::NetworkState* network) {
- if (!network)
- return 999;
- if (network->Matches(NetworkTypePattern::Ethernet()))
- return 0;
- if (network->Matches(NetworkTypePattern::Cellular()))
- return 1;
- if (network->Matches(NetworkTypePattern::Mobile()))
- return 2;
- if (network->Matches(NetworkTypePattern::WiFi()))
- return 3;
- return 4;
- }
-
- NetworkStateHandler* handler_;
- };
- std::sort(network_list_.begin(), network_list_.end(),
- CompareNetwork(NetworkHandler::Get()->network_state_handler()));
-}
-
-void NetworkListViewMd::UpdateNetworkIcons() {
- SCOPED_NET_LOG_IF_SLOW();
- NetworkStateHandler* handler = NetworkHandler::Get()->network_state_handler();
-
- // First, update state for all networks.
- bool animating = false;
-
- for (auto& info : network_list_) {
- const chromeos::NetworkState* network =
- handler->GetNetworkStateFromGuid(info->guid);
- if (!network)
- continue;
- bool prohibited_by_policy = IsProhibitedByPolicy(network);
- info->label = network_icon::GetLabelForNetwork(
- network, network_icon::ICON_TYPE_MENU_LIST);
- info->image =
- network_icon::GetImageForNetwork(network, network_icon::ICON_TYPE_LIST);
- info->disable =
- (network->activation_state() == shill::kActivationStateActivating) ||
- prohibited_by_policy;
- info->connected = network->IsConnectedState();
- info->connecting = network->IsConnectingState();
- info->highlight = info->connected || info->connecting;
- if (network->Matches(NetworkTypePattern::WiFi()))
- 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);
- }
- if (!animating && network->IsConnectingState())
- animating = true;
- }
- if (animating)
- network_icon::NetworkIconAnimation::GetInstance()->AddObserver(this);
- else
- network_icon::NetworkIconAnimation::GetInstance()->RemoveObserver(this);
-}
-
-void NetworkListViewMd::UpdateNetworkListInternal() {
- SCOPED_NET_LOG_IF_SLOW();
- // Get the updated list entries.
- needs_relayout_ = false;
- network_map_.clear();
- std::unique_ptr<std::set<std::string>> new_guids = UpdateNetworkListEntries();
-
- // Remove old children.
- std::set<std::string> remove_guids;
- for (const auto& iter : network_guid_map_) {
- if (new_guids->find(iter.first) == new_guids->end()) {
- remove_guids.insert(iter.first);
- network_map_.erase(iter.second);
- delete iter.second;
- needs_relayout_ = true;
- }
- }
-
- for (const auto& remove_iter : remove_guids)
- network_guid_map_.erase(remove_iter);
-
- if (!needs_relayout_)
- return;
-
- views::View* selected_view = nullptr;
- for (const auto& iter : network_guid_map_) {
- if (delegate_->IsViewHovered(iter.second)) {
- selected_view = iter.second;
- break;
- }
- }
- container()->SizeToPreferredSize();
- delegate_->RelayoutScrollList();
- if (selected_view)
- container()->ScrollRectToVisible(selected_view->bounds());
-}
-
-std::unique_ptr<std::set<std::string>>
-NetworkListViewMd::UpdateNetworkListEntries() {
- NetworkStateHandler* handler = NetworkHandler::Get()->network_state_handler();
-
- // First add high-priority networks (not Wi-Fi nor cellular).
- std::unique_ptr<std::set<std::string>> new_guids =
- UpdateNetworkChildren(NetworkInfo::Type::UNKNOWN, 0);
-
- // Keep an index where the next child should be inserted.
- int index = new_guids->size();
-
- const NetworkTypePattern pattern = delegate_->GetNetworkTypePattern();
- if (pattern.MatchesPattern(NetworkTypePattern::Cellular())) {
- if (handler->IsTechnologyAvailable(NetworkTypePattern::Cellular())) {
- index = UpdateSectionHeaderRow(
- NetworkTypePattern::Cellular(),
- handler->IsTechnologyEnabled(NetworkTypePattern::Cellular()), index,
- &cellular_header_view_, &cellular_separator_view_);
- }
-
- // Cellular initializing.
- int message_id = network_icon::GetCellularUninitializedMsg();
- if (!message_id &&
- handler->IsTechnologyEnabled(NetworkTypePattern::Mobile()) &&
- !handler->FirstNetworkByType(NetworkTypePattern::Mobile())) {
- message_id = IDS_ASH_STATUS_TRAY_NO_MOBILE_NETWORKS;
- }
- UpdateInfoLabel(message_id, index, &no_cellular_networks_view_);
- if (message_id)
- ++index;
-
- // Add cellular networks.
- std::unique_ptr<std::set<std::string>> new_cellular_guids =
- UpdateNetworkChildren(NetworkInfo::Type::CELLULAR, index);
- index += new_cellular_guids->size();
- 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(),
- handler->IsTechnologyEnabled(NetworkTypePattern::WiFi()), index,
- &wifi_header_view_, &wifi_separator_view_);
-
- // "Wifi Enabled / Disabled".
- int message_id = 0;
- if (network_list_.empty()) {
- message_id = handler->IsTechnologyEnabled(NetworkTypePattern::WiFi())
- ? IDS_ASH_STATUS_TRAY_NETWORK_WIFI_ENABLED
- : IDS_ASH_STATUS_TRAY_NETWORK_WIFI_DISABLED;
- }
- UpdateInfoLabel(message_id, index, &no_wifi_networks_view_);
- if (message_id)
- ++index;
-
- // Add Wi-Fi networks.
- std::unique_ptr<std::set<std::string>> new_wifi_guids =
- UpdateNetworkChildren(NetworkInfo::Type::WIFI, index);
- index += new_wifi_guids->size();
- new_guids->insert(new_wifi_guids->begin(), new_wifi_guids->end());
- }
-
- // No networks or other messages (fallback).
- if (index == 0) {
- UpdateInfoLabel(IDS_ASH_STATUS_TRAY_NO_NETWORKS, index,
- &no_wifi_networks_view_);
- }
-
- return new_guids;
-}
-
-std::unique_ptr<std::set<std::string>> NetworkListViewMd::UpdateNetworkChildren(
- NetworkInfo::Type type,
- int index) {
- std::unique_ptr<std::set<std::string>> new_guids(new std::set<std::string>);
- for (const auto& info : network_list_) {
- if (info->type != type)
- continue;
- UpdateNetworkChild(index++, info.get());
- new_guids->insert(info->guid);
- }
- return new_guids;
-}
-
-void NetworkListViewMd::UpdateNetworkChild(int index, const NetworkInfo* info) {
- views::View* network_view = nullptr;
- NetworkGuidMap::const_iterator found = network_guid_map_.find(info->guid);
- if (found == network_guid_map_.end()) {
- network_view = delegate_->CreateViewForNetwork(*info);
- } else {
- network_view = found->second;
- network_view->RemoveAllChildViews(true);
- delegate_->UpdateViewForNetwork(network_view, *info);
- network_view->Layout();
- network_view->SchedulePaint();
- }
- PlaceViewAtIndex(network_view, index);
- if (info->disable)
- network_view->SetEnabled(false);
- network_map_[network_view] = info->guid;
- network_guid_map_[info->guid] = network_view;
-}
-
-void NetworkListViewMd::PlaceViewAtIndex(views::View* view, int index) {
- if (view->parent() != container()) {
- container()->AddChildViewAt(view, index);
- } else {
- if (container()->child_at(index) == view)
- return;
- container()->ReorderChildView(view, index);
- }
- needs_relayout_ = true;
-}
-
-void NetworkListViewMd::UpdateInfoLabel(int message_id,
- int insertion_index,
- views::Label** label_ptr) {
- views::Label* label = *label_ptr;
- if (!message_id) {
- if (label) {
- needs_relayout_ = true;
- delete label;
- *label_ptr = nullptr;
- }
- return;
- }
- base::string16 text =
- ui::ResourceBundle::GetSharedInstance().GetLocalizedString(message_id);
- if (!label)
- label = delegate_->CreateInfoLabel();
- label->SetText(text);
- PlaceViewAtIndex(label, insertion_index);
- *label_ptr = label;
-}
-
-int NetworkListViewMd::UpdateSectionHeaderRow(
- NetworkTypePattern pattern,
- bool enabled,
- int child_index,
- SectionHeaderRowView** view,
- views::Separator** separator_view) {
- 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
- NOTREACHED();
- (*view)->Init(enabled);
- }
- // Show or hide a separator above the header. The separator should only be
- // visible when the header row is not at the top of the list.
- if (child_index > 0) {
- if (!*separator_view)
- *separator_view = TrayPopupUtils::CreateListSubHeaderSeparator();
- PlaceViewAtIndex(*separator_view, child_index++);
- } else {
- if (*separator_view)
- delete *separator_view;
- *separator_view = nullptr;
- }
-
- (*view)->SetEnabled(enabled);
- PlaceViewAtIndex(*view, child_index++);
- return child_index;
-}
-
-void NetworkListViewMd::NetworkIconChanged() {
- Update();
-}
-
-} // namespace ash
« no previous file with comments | « ash/common/system/chromeos/network/network_list_md.h ('k') | ash/common/system/chromeos/network/network_list_view_base.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698