Index: athena/main/debug/debug_window.cc |
diff --git a/athena/main/debug/debug_window.cc b/athena/main/debug/debug_window.cc |
deleted file mode 100644 |
index 30f2565d7756551f9e6b14cf1247431226fce49f..0000000000000000000000000000000000000000 |
--- a/athena/main/debug/debug_window.cc |
+++ /dev/null |
@@ -1,346 +0,0 @@ |
-// Copyright 2014 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 "athena/main/debug/debug_window.h" |
- |
-#include "athena/common/container_priorities.h" |
-#include "athena/main/debug/network_selector.h" |
-#include "athena/resources/athena_resources.h" |
-#include "athena/screen/public/screen_manager.h" |
-#include "base/bind.h" |
-#include "base/macros.h" |
-#include "base/strings/stringprintf.h" |
-#include "base/strings/utf_string_conversions.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/dbus/update_engine_client.h" |
-#include "chromeos/network/network_state.h" |
-#include "chromeos/network/network_state_handler.h" |
-#include "chromeos/network/network_state_handler_observer.h" |
-#include "chromeos/network/network_type_pattern.h" |
-#include "ui/aura/window.h" |
-#include "ui/base/resource/resource_bundle.h" |
-#include "ui/gfx/image/image.h" |
-#include "ui/gfx/image/image_skia.h" |
-#include "ui/gfx/image/image_skia_operations.h" |
-#include "ui/views/background.h" |
-#include "ui/views/border.h" |
-#include "ui/views/controls/image_view.h" |
-#include "ui/views/controls/label.h" |
-#include "ui/views/layout/box_layout.h" |
-#include "ui/views/view.h" |
-#include "ui/views/widget/widget.h" |
- |
-namespace { |
- |
-views::Label* CreateDebugLabel(const std::string& text) { |
- views::Label* label = new views::Label(base::UTF8ToUTF16(text)); |
- label->SetEnabledColor(SK_ColorWHITE); |
- label->SetBackgroundColor(SK_ColorTRANSPARENT); |
- label->SetFontList(gfx::FontList().Derive(-2, gfx::Font::BOLD)); |
- return label; |
-} |
- |
-class PowerStatus : public chromeos::PowerManagerClient::Observer { |
- public: |
- PowerStatus(views::ImageView* icon, const base::Closure& closure) |
- : icon_(icon), closure_(closure) { |
- chromeos::DBusThreadManager::Get()->GetPowerManagerClient()->AddObserver( |
- this); |
- chromeos::DBusThreadManager::Get() |
- ->GetPowerManagerClient() |
- ->RequestStatusUpdate(); |
- } |
- |
- virtual ~PowerStatus() { |
- chromeos::DBusThreadManager::Get()->GetPowerManagerClient()->RemoveObserver( |
- this); |
- } |
- |
- private: |
- const gfx::ImageSkia GetPowerIcon( |
- const power_manager::PowerSupplyProperties& proto) const { |
- // Width and height of battery images. |
- const int kBatteryImageHeight = 25; |
- const int kBatteryImageWidth = 25; |
- |
- // Number of different power states. |
- const int kNumPowerImages = 15; |
- |
- gfx::Image all = ui::ResourceBundle::GetSharedInstance().GetImageNamed( |
- IDR_AURA_UBER_TRAY_POWER_SMALL); |
- int horiz_offset = IsCharging(proto) ? 1 : 0; |
- int vert_offset = -1; |
- if (proto.battery_percent() >= 100) { |
- vert_offset = kNumPowerImages - 1; |
- } else { |
- vert_offset = static_cast<int>((kNumPowerImages - 1) * |
- proto.battery_percent() / 100); |
- vert_offset = std::max(std::min(vert_offset, kNumPowerImages - 2), 0); |
- } |
- gfx::Rect region(horiz_offset * kBatteryImageWidth, |
- vert_offset * kBatteryImageHeight, |
- kBatteryImageWidth, |
- kBatteryImageHeight); |
- return gfx::ImageSkiaOperations::ExtractSubset(*all.ToImageSkia(), region); |
- } |
- |
- bool IsCharging(const power_manager::PowerSupplyProperties& proto) const { |
- return proto.external_power() != |
- power_manager::PowerSupplyProperties_ExternalPower_DISCONNECTED; |
- } |
- |
- // chromeos::PowerManagerClient::Observer: |
- virtual void PowerChanged( |
- const power_manager::PowerSupplyProperties& proto) OVERRIDE { |
- icon_->SetImage(GetPowerIcon(proto)); |
- if (!closure_.is_null()) |
- closure_.Run(); |
- } |
- |
- views::ImageView* icon_; |
- base::Closure closure_; |
- |
- DISALLOW_COPY_AND_ASSIGN(PowerStatus); |
-}; |
- |
-class NetworkStatus : public chromeos::NetworkStateHandlerObserver { |
- public: |
- NetworkStatus(views::Label* label, const base::Closure& closure) |
- : label_(label), closure_(closure) { |
- chromeos::NetworkStateHandler* handler = |
- chromeos::NetworkHandler::Get()->network_state_handler(); |
- handler->AddObserver(this, FROM_HERE); |
- } |
- |
- virtual ~NetworkStatus() { |
- chromeos::NetworkStateHandler* handler = |
- chromeos::NetworkHandler::Get()->network_state_handler(); |
- handler->RemoveObserver(this, FROM_HERE); |
- } |
- |
- private: |
- void Update() { |
- std::string status = "<unknown>"; |
- chromeos::NetworkStateHandler* handler = |
- chromeos::NetworkHandler::Get()->network_state_handler(); |
- const chromeos::NetworkState* network = handler->DefaultNetwork(); |
- if (!network) { |
- network = handler->ConnectedNetworkByType( |
- chromeos::NetworkTypePattern::NonVirtual()); |
- } |
- if (network) { |
- status = base::StringPrintf( |
- "%s (%s)", network->ip_address().c_str(), network->name().c_str()); |
- } |
- label_->SetText(base::UTF8ToUTF16(status)); |
- if (!closure_.is_null()) |
- closure_.Run(); |
- } |
- |
- // chromeos::NetworkStateHandlerObserver: |
- virtual void DefaultNetworkChanged( |
- const chromeos::NetworkState* network) OVERRIDE { |
- Update(); |
- } |
- |
- virtual void NetworkConnectionStateChanged( |
- const chromeos::NetworkState* network) OVERRIDE { |
- Update(); |
- } |
- |
- virtual void NetworkPropertiesUpdated( |
- const chromeos::NetworkState* network) OVERRIDE { |
- Update(); |
- } |
- |
- views::Label* label_; |
- base::Closure closure_; |
-}; |
- |
-void StartUpdateCallback( |
- chromeos::UpdateEngineClient::UpdateCheckResult result) { |
- VLOG(1) << "Callback from RequestUpdateCheck, result " << result; |
-} |
- |
-class UpdateStatus : public chromeos::UpdateEngineClient::Observer { |
- public: |
- UpdateStatus(views::ImageView* icon, const base::Closure& closure) |
- : icon_(icon), closure_(closure) { |
- chromeos::DBusThreadManager::Get()->GetUpdateEngineClient()->AddObserver( |
- this); |
- chromeos::DBusThreadManager::Get()->GetUpdateEngineClient()-> |
- RequestUpdateCheck(base::Bind(StartUpdateCallback)); |
- } |
- |
- virtual ~UpdateStatus() { |
- chromeos::DBusThreadManager::Get()->GetUpdateEngineClient()->RemoveObserver( |
- this); |
- } |
- |
- // chromeos::UpdateEngineClient::Observer: |
- virtual void UpdateStatusChanged( |
- const chromeos::UpdateEngineClient::Status& status) OVERRIDE { |
- if (status.status != |
- chromeos::UpdateEngineClient::UPDATE_STATUS_UPDATED_NEED_REBOOT) { |
- return; |
- } |
- icon_->SetImage(ui::ResourceBundle::GetSharedInstance().GetImageSkiaNamed( |
- IDR_AURA_UBER_TRAY_UPDATE)); |
- if (!closure_.is_null()) |
- closure_.Run(); |
- } |
- |
- private: |
- views::ImageView* icon_; |
- base::Closure closure_; |
- |
- DISALLOW_COPY_AND_ASSIGN(UpdateStatus); |
-}; |
- |
-// Processes user input to show the detailed network-list. |
-class DetailViewHandler : public ui::EventHandler { |
- public: |
- explicit DetailViewHandler(aura::Window* container) : container_(container) {} |
- virtual ~DetailViewHandler() {} |
- |
- private: |
- // ui::EventHandler: |
- virtual void OnMouseEvent(ui::MouseEvent* event) OVERRIDE { |
- if (event->type() == ui::ET_MOUSE_PRESSED) { |
- debug::CreateNetworkSelector(container_); |
- event->SetHandled(); |
- } |
- } |
- |
- virtual void OnGestureEvent(ui::GestureEvent* event) OVERRIDE { |
- if (event->type() == ui::ET_GESTURE_TAP) { |
- debug::CreateNetworkSelector(container_); |
- event->SetHandled(); |
- } |
- } |
- |
- aura::Window* container_; |
- |
- DISALLOW_COPY_AND_ASSIGN(DetailViewHandler); |
-}; |
- |
-class DebugWidget { |
- public: |
- DebugWidget() : container_(NULL), widget_(NULL) { |
- CreateContainer(); |
- CreateWidget(); |
- |
- CreateBatteryView(); |
- CreateUpdateView(); |
- CreateNetworkView(); |
- |
- UpdateSize(); |
- } |
- |
- virtual ~DebugWidget() {} |
- |
- private: |
- void CreateContainer() { |
- athena::ScreenManager::ContainerParams params("DebugContainer", |
- athena::CP_DEBUG); |
- params.can_activate_children = true; |
- container_ = athena::ScreenManager::Get()->CreateContainer(params); |
- } |
- |
- void CreateWidget() { |
- views::Widget::InitParams params; |
- params.type = views::Widget::InitParams::TYPE_WINDOW_FRAMELESS; |
- params.opacity = views::Widget::InitParams::TRANSLUCENT_WINDOW; |
- params.activatable = views::Widget::InitParams::ACTIVATABLE_NO; |
- params.accept_events = true; |
- params.bounds = gfx::Rect(200, 0, 100, 105); |
- params.parent = container_; |
- widget_ = new views::Widget(); |
- widget_->Init(params); |
- |
- event_handler_.reset(new DetailViewHandler(container_)); |
- |
- const int kHorizontalSpacing = 10; |
- const int kBorderVerticalSpacing = 3; |
- const int kBetweenChildSpacing = 10; |
- const int kBackgroundColor = SkColorSetARGB(0x7f, 0, 0, 0); |
- views::View* container = new views::View; |
- container->SetLayoutManager( |
- new views::BoxLayout(views::BoxLayout::kHorizontal, |
- kHorizontalSpacing, |
- kBorderVerticalSpacing, |
- kBetweenChildSpacing)); |
- container->set_background( |
- views::Background::CreateSolidBackground(kBackgroundColor)); |
- container->SetBorder(views::Border::CreateSolidBorder(1, kBackgroundColor)); |
- container->set_target_handler(event_handler_.get()); |
- widget_->SetContentsView(container); |
- widget_->StackAtTop(); |
- widget_->Show(); |
- |
- widget_->SetBounds(gfx::Rect(600, 0, 300, 25)); |
- } |
- |
- void CreateBatteryView() { |
- views::View* container = widget_->GetContentsView(); |
- views::ImageView* icon = new views::ImageView(); |
- container->AddChildView(icon); |
- container->Layout(); |
- |
- power_status_.reset(new PowerStatus( |
- icon, base::Bind(&DebugWidget::UpdateSize, base::Unretained(this)))); |
- } |
- |
- void CreateNetworkView() { |
- views::View* container = widget_->GetContentsView(); |
- container->AddChildView(CreateDebugLabel("Network:")); |
- |
- views::Label* label = CreateDebugLabel(std::string()); |
- container->AddChildView(label); |
- container->Layout(); |
- |
- network_status_.reset(new NetworkStatus( |
- label, base::Bind(&DebugWidget::UpdateSize, base::Unretained(this)))); |
- } |
- |
- void CreateUpdateView() { |
- views::View* container = widget_->GetContentsView(); |
- views::ImageView* icon = new views::ImageView(); |
- container->AddChildView(icon); |
- container->Layout(); |
- |
- update_status_.reset(new UpdateStatus( |
- icon, base::Bind(&DebugWidget::UpdateSize, base::Unretained(this)))); |
- } |
- |
- const gfx::Rect GetPositionForSize(const gfx::Size& size) { |
- int right = container_->bounds().right(); |
- int x = right - size.width(); |
- return gfx::Rect(x, 0, size.width(), size.height()); |
- } |
- |
- void UpdateSize() { |
- views::View* container = widget_->GetContentsView(); |
- container->Layout(); |
- gfx::Size size = container->GetPreferredSize(); |
- widget_->SetBounds(GetPositionForSize(size)); |
- } |
- |
- aura::Window* container_; |
- views::Widget* widget_; |
- scoped_ptr<PowerStatus> power_status_; |
- scoped_ptr<NetworkStatus> network_status_; |
- scoped_ptr<UpdateStatus> update_status_; |
- scoped_ptr<ui::EventHandler> event_handler_; |
- |
- DISALLOW_COPY_AND_ASSIGN(DebugWidget); |
-}; |
- |
-} // namespace |
- |
-void CreateDebugWindow() { |
- new DebugWidget(); |
-} |