| Index: ash/system/chromeos/network/tray_network_state_observer.cc
|
| diff --git a/ash/system/chromeos/network/tray_network_state_observer.cc b/ash/system/chromeos/network/tray_network_state_observer.cc
|
| index a33eeaa6dcc9dc5daeca0436198e085c703da15d..30b6ca7928a3fcfe083540724a1aa172feeaebbc 100644
|
| --- a/ash/system/chromeos/network/tray_network_state_observer.cc
|
| +++ b/ash/system/chromeos/network/tray_network_state_observer.cc
|
| @@ -4,18 +4,27 @@
|
|
|
| #include "ash/system/chromeos/network/tray_network_state_observer.h"
|
|
|
| -#include "ash/system/chromeos/network/network_detailed_view.h"
|
| -#include "ash/system/chromeos/network/tray_network.h"
|
| -#include "ash/system/tray/tray_constants.h"
|
| +#include <set>
|
| +#include <string>
|
| +
|
| +#include "chromeos/network/network_state.h"
|
| #include "chromeos/network/network_state_handler.h"
|
| #include "third_party/cros_system_api/dbus/service_constants.h"
|
|
|
| +namespace {
|
| +
|
| +std::set<std::string>& GetConnectingNetworks() {
|
| + static std::set<std::string> s_connecting_networks_;
|
| + return s_connecting_networks_;
|
| +}
|
| +
|
| +}
|
| +
|
| namespace ash {
|
| namespace internal {
|
|
|
| -TrayNetworkStateObserver::TrayNetworkStateObserver(TrayNetwork* tray)
|
| - : tray_(tray),
|
| - wifi_state_(WIFI_UNKNOWN) {
|
| +TrayNetworkStateObserver::TrayNetworkStateObserver(Delegate* delegate)
|
| + : delegate_(delegate) {
|
| chromeos::NetworkStateHandler::Get()->AddObserver(this);
|
| }
|
|
|
| @@ -24,46 +33,39 @@ TrayNetworkStateObserver::~TrayNetworkStateObserver() {
|
| }
|
|
|
| void TrayNetworkStateObserver::NetworkManagerChanged() {
|
| - tray::NetworkDetailedView* detailed = tray_->detailed();
|
| - bool wifi_enabled = chromeos::NetworkStateHandler::Get()->
|
| - TechnologyEnabled(flimflam::kTypeWifi);
|
| - WifiState wifi_state = wifi_enabled ? WIFI_ENABLED : WIFI_DISABLED;
|
| - if ((wifi_state_ != WIFI_UNKNOWN && wifi_state_ != wifi_state) &&
|
| - (!detailed ||
|
| - detailed->GetViewType() == tray::NetworkDetailedView::WIFI_VIEW)) {
|
| - tray_->set_request_wifi_view(true);
|
| - tray_->PopupDetailedView(kTrayPopupAutoCloseDelayForTextInSeconds, false);
|
| - }
|
| - wifi_state_ = wifi_state;
|
| - if (detailed)
|
| - detailed->ManagerChanged();
|
| + delegate_->NetworkStateChanged(false);
|
| }
|
|
|
| void TrayNetworkStateObserver::NetworkListChanged() {
|
| - tray::NetworkDetailedView* detailed = tray_->detailed();
|
| - if (detailed)
|
| - detailed->NetworkListChanged();
|
| - tray_->TrayNetworkUpdated();
|
| + delegate_->NetworkStateChanged(true);
|
| }
|
|
|
| void TrayNetworkStateObserver::DeviceListChanged() {
|
| - tray::NetworkDetailedView* detailed = tray_->detailed();
|
| - if (detailed)
|
| - detailed->ManagerChanged();
|
| - tray_->TrayNetworkUpdated();
|
| + delegate_->NetworkStateChanged(false);
|
| }
|
|
|
| void TrayNetworkStateObserver::DefaultNetworkChanged(
|
| const chromeos::NetworkState* network) {
|
| - tray_->TrayNetworkUpdated();
|
| + delegate_->NetworkStateChanged(true);
|
| }
|
|
|
| void TrayNetworkStateObserver::NetworkPropertiesUpdated(
|
| const chromeos::NetworkState* network) {
|
| - tray_->NetworkServiceChanged(network);
|
| - tray::NetworkDetailedView* detailed = tray_->detailed();
|
| - if (detailed)
|
| - detailed->NetworkServiceChanged(network);
|
| + if (!network->IsConnectingState())
|
| + GetConnectingNetworks().erase(network->path());
|
| + delegate_->NetworkServiceChanged(network);
|
| +}
|
| +
|
| +// static
|
| +void TrayNetworkStateObserver::AddConnectingNetwork(
|
| + const std::string& service_path) {
|
| + GetConnectingNetworks().insert(service_path);
|
| +}
|
| +
|
| +// static
|
| +bool TrayNetworkStateObserver::HasConnectingNetwork(
|
| + const std::string& service_path) {
|
| + return GetConnectingNetworks().count(service_path) > 0;
|
| }
|
|
|
| } // namespace ash
|
|
|