Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / ash / system / chromeos / network / tray_network.cc
index 130ff16..a5c5570 100644 (file)
@@ -5,8 +5,8 @@
 #include "ash/system/chromeos/network/tray_network.h"
 
 #include "ash/ash_switches.h"
+#include "ash/metrics/user_metrics_recorder.h"
 #include "ash/shell.h"
-#include "ash/system/chromeos/network/network_icon_animation.h"
 #include "ash/system/chromeos/network/network_state_list_detailed_view.h"
 #include "ash/system/chromeos/network/tray_network_state_observer.h"
 #include "ash/system/tray/system_tray.h"
 #include "base/strings/utf_string_conversions.h"
 #include "chromeos/network/network_state.h"
 #include "chromeos/network/network_state_handler.h"
-#include "chromeos/network/shill_property_util.h"
 #include "grit/ash_resources.h"
 #include "grit/ash_strings.h"
+#include "grit/ui_chromeos_strings.h"
 #include "third_party/cros_system_api/dbus/service_constants.h"
-#include "ui/base/accessibility/accessible_view_state.h"
+#include "ui/accessibility/ax_view_state.h"
 #include "ui/base/l10n/l10n_util.h"
 #include "ui/base/resource/resource_bundle.h"
+#include "ui/chromeos/network/network_icon.h"
+#include "ui/chromeos/network/network_icon_animation.h"
 #include "ui/views/controls/image_view.h"
 #include "ui/views/controls/link.h"
 #include "ui/views/controls/link_listener.h"
@@ -39,12 +41,10 @@ using chromeos::NetworkStateHandler;
 using chromeos::NetworkTypePattern;
 
 namespace ash {
-namespace internal {
-
 namespace tray {
 
 class NetworkTrayView : public TrayItemView,
-                        public network_icon::AnimationObserver {
+                        public ui::network_icon::AnimationObserver {
  public:
   explicit NetworkTrayView(TrayNetwork* network_tray)
       : TrayItemView(network_tray),
@@ -59,10 +59,10 @@ class NetworkTrayView : public TrayItemView,
   }
 
   virtual ~NetworkTrayView() {
-    network_icon::NetworkIconAnimation::GetInstance()->RemoveObserver(this);
+    ui::network_icon::NetworkIconAnimation::GetInstance()->RemoveObserver(this);
   }
 
-  virtual const char* GetClassName() const OVERRIDE {
+  virtual const char* GetClassName() const override {
     return "NetworkTrayView";
   }
 
@@ -72,21 +72,24 @@ class NetworkTrayView : public TrayItemView,
     gfx::ImageSkia image;
     base::string16 name;
     bool animating = false;
-    network_icon::GetDefaultNetworkImageAndLabel(
-        network_icon::ICON_TYPE_TRAY, &image, &name, &animating);
+    ui::network_icon::GetDefaultNetworkImageAndLabel(
+        ui::network_icon::ICON_TYPE_TRAY, &image, &name, &animating);
     bool show_in_tray = !image.isNull();
     UpdateIcon(show_in_tray, image);
     if (animating)
-      network_icon::NetworkIconAnimation::GetInstance()->AddObserver(this);
+      ui::network_icon::NetworkIconAnimation::GetInstance()->AddObserver(this);
     else
-      network_icon::NetworkIconAnimation::GetInstance()->RemoveObserver(this);
+      ui::network_icon::NetworkIconAnimation::GetInstance()->RemoveObserver(
+          this);
     // Update accessibility.
     const NetworkState* connected_network =
         handler->ConnectedNetworkByType(NetworkTypePattern::NonVirtual());
-    if (connected_network)
-      UpdateConnectionStatus(UTF8ToUTF16(connected_network->name()), true);
-    else
+    if (connected_network) {
+      UpdateConnectionStatus(
+          base::UTF8ToUTF16(connected_network->name()), true);
+    } else {
       UpdateConnectionStatus(base::string16(), false);
+    }
   }
 
   void UpdateAlignment(ShelfAlignment alignment) {
@@ -98,13 +101,13 @@ class NetworkTrayView : public TrayItemView,
   }
 
   // views::View override.
-  virtual void GetAccessibleState(ui::AccessibleViewState* state) OVERRIDE {
+  virtual void GetAccessibleState(ui::AXViewState* state) override {
     state->name = connection_status_string_;
-    state->role = ui::AccessibilityTypes::ROLE_PUSHBUTTON;
+    state->role = ui::AX_ROLE_BUTTON;
   }
 
-  // network_icon::AnimationObserver
-  virtual void NetworkIconChanged() OVERRIDE {
+  // ui::network_icon::AnimationObserver
+  virtual void NetworkIconChanged() override {
     UpdateNetworkStateHandlerIcon();
   }
 
@@ -120,7 +123,7 @@ class NetworkTrayView : public TrayItemView,
     if (new_connection_status_string != connection_status_string_) {
       connection_status_string_ = new_connection_status_string;
       if(!connection_status_string_.empty())
-        NotifyAccessibilityEvent(ui::AccessibilityTypes::EVENT_ALERT, true);
+        NotifyAccessibilityEvent(ui::AX_EVENT_ALERT, true);
     }
   }
 
@@ -138,7 +141,7 @@ class NetworkTrayView : public TrayItemView,
 };
 
 class NetworkDefaultView : public TrayItemMore,
-                           public network_icon::AnimationObserver {
+                           public ui::network_icon::AnimationObserver {
  public:
   NetworkDefaultView(TrayNetwork* network_tray, bool show_more)
       : TrayItemMore(network_tray, show_more),
@@ -147,26 +150,27 @@ class NetworkDefaultView : public TrayItemMore,
   }
 
   virtual ~NetworkDefaultView() {
-    network_icon::NetworkIconAnimation::GetInstance()->RemoveObserver(this);
+    ui::network_icon::NetworkIconAnimation::GetInstance()->RemoveObserver(this);
   }
 
   void Update() {
     gfx::ImageSkia image;
     base::string16 label;
     bool animating = false;
-    network_icon::GetDefaultNetworkImageAndLabel(
-        network_icon::ICON_TYPE_DEFAULT_VIEW, &image, &label, &animating);
+    ui::network_icon::GetDefaultNetworkImageAndLabel(
+        ui::network_icon::ICON_TYPE_DEFAULT_VIEW, &image, &label, &animating);
     if (animating)
-      network_icon::NetworkIconAnimation::GetInstance()->AddObserver(this);
+      ui::network_icon::NetworkIconAnimation::GetInstance()->AddObserver(this);
     else
-      network_icon::NetworkIconAnimation::GetInstance()->RemoveObserver(this);
+      ui::network_icon::NetworkIconAnimation::GetInstance()->RemoveObserver(
+          this);
     SetImage(&image);
     SetLabel(label);
     SetAccessibleName(label);
   }
 
-  // network_icon::AnimationObserver
-  virtual void NetworkIconChanged() OVERRIDE {
+  // ui::network_icon::AnimationObserver
+  virtual void NetworkIconChanged() override {
     Update();
   }
 
@@ -200,27 +204,27 @@ class NetworkWifiDetailedView : public NetworkDetailedView {
 
   // Overridden from NetworkDetailedView:
 
-  virtual void Init() OVERRIDE {
+  virtual void Init() override {
   }
 
-  virtual NetworkDetailedView::DetailedViewType GetViewType() const OVERRIDE {
+  virtual NetworkDetailedView::DetailedViewType GetViewType() const override {
     return NetworkDetailedView::WIFI_VIEW;
   }
 
-  virtual void ManagerChanged() OVERRIDE {
+  virtual void ManagerChanged() override {
     Update();
   }
 
-  virtual void NetworkListChanged() OVERRIDE {
+  virtual void NetworkListChanged() override {
     Update();
   }
 
   virtual void NetworkServiceChanged(
-      const chromeos::NetworkState* network) OVERRIDE {
+      const chromeos::NetworkState* network) override {
   }
 
  private:
-  virtual void Layout() OVERRIDE {
+  virtual void Layout() override {
     // Center both views vertically.
     views::View::Layout();
     image_view_->SetY(
@@ -262,11 +266,15 @@ TrayNetwork::TrayNetwork(SystemTray* system_tray)
       detailed_(NULL),
       request_wifi_view_(false) {
   network_state_observer_.reset(new TrayNetworkStateObserver(this));
-  Shell::GetInstance()->system_tray_notifier()->AddNetworkObserver(this);
+  SystemTrayNotifier* notifier = Shell::GetInstance()->system_tray_notifier();
+  notifier->AddNetworkObserver(this);
+  notifier->AddNetworkPortalDetectorObserver(this);
 }
 
 TrayNetwork::~TrayNetwork() {
-  Shell::GetInstance()->system_tray_notifier()->RemoveNetworkObserver(this);
+  SystemTrayNotifier* notifier = Shell::GetInstance()->system_tray_notifier();
+  notifier->RemoveNetworkObserver(this);
+  notifier->RemoveNetworkPortalDetectorObserver(this);
 }
 
 views::View* TrayNetwork::CreateTrayView(user::LoginStatus status) {
@@ -289,6 +297,8 @@ views::View* TrayNetwork::CreateDefaultView(user::LoginStatus status) {
 
 views::View* TrayNetwork::CreateDetailedView(user::LoginStatus status) {
   CHECK(detailed_ == NULL);
+  Shell::GetInstance()->metrics()->RecordUserMetricsAction(
+    ash::UMA_STATUS_AREA_DETAILED_NETWORK_VIEW);
   if (!chromeos::NetworkHandler::IsInitialized())
     return NULL;
   if (request_wifi_view_) {
@@ -333,11 +343,20 @@ void TrayNetwork::RequestToggleWifi() {
   }
   NetworkStateHandler* handler = NetworkHandler::Get()->network_state_handler();
   bool enabled = handler->IsTechnologyEnabled(NetworkTypePattern::WiFi());
+  Shell::GetInstance()->metrics()->RecordUserMetricsAction(
+      enabled ?
+      ash::UMA_STATUS_AREA_DISABLE_WIFI :
+      ash::UMA_STATUS_AREA_ENABLE_WIFI);
   handler->SetTechnologyEnabled(NetworkTypePattern::WiFi(),
                                 !enabled,
                                 chromeos::network_handler::ErrorCallback());
 }
 
+void TrayNetwork::OnCaptivePortalDetected(
+    const std::string& /* service_path */) {
+  NetworkStateChanged(false);
+}
+
 void TrayNetwork::NetworkStateChanged(bool list_changed) {
   if (tray_)
     tray_->UpdateNetworkStateHandlerIcon();
@@ -356,5 +375,4 @@ void TrayNetwork::NetworkServiceChanged(const chromeos::NetworkState* network) {
     detailed_->NetworkServiceChanged(network);
 }
 
-}  // namespace internal
 }  // namespace ash