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

Unified Diff: ash/system/chromeos/brightness/tray_brightness.cc

Issue 2131733002: mash: Migrate [Keyboard]Brightness code to ash/common. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address comments. Created 4 years, 5 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/system/chromeos/brightness/tray_brightness.cc
diff --git a/ash/system/chromeos/brightness/tray_brightness.cc b/ash/system/chromeos/brightness/tray_brightness.cc
deleted file mode 100644
index f2358dacac2263104dd42a7ec02c903c978a39f9..0000000000000000000000000000000000000000
--- a/ash/system/chromeos/brightness/tray_brightness.cc
+++ /dev/null
@@ -1,280 +0,0 @@
-// Copyright 2013 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/system/chromeos/brightness/tray_brightness.h"
-
-#include <algorithm>
-
-#include "ash/accelerators/accelerator_controller.h"
-#include "ash/common/ash_constants.h"
-#include "ash/common/shell_observer.h"
-#include "ash/common/system/tray/fixed_sized_image_view.h"
-#include "ash/common/system/tray/system_tray_delegate.h"
-#include "ash/common/system/tray/tray_constants.h"
-#include "ash/common/wm/maximize_mode/maximize_mode_controller.h"
-#include "ash/common/wm_shell.h"
-#include "ash/shell.h"
-#include "ash/system/brightness_control_delegate.h"
-#include "base/bind.h"
-#include "base/strings/utf_string_conversions.h"
-#include "base/threading/thread_task_runner_handle.h"
-#include "chromeos/dbus/dbus_thread_manager.h"
-#include "chromeos/dbus/power_manager_client.h"
-#include "grit/ash_resources.h"
-#include "grit/ash_strings.h"
-#include "ui/base/resource/resource_bundle.h"
-#include "ui/display/display.h"
-#include "ui/gfx/image/image.h"
-#include "ui/views/controls/button/image_button.h"
-#include "ui/views/controls/image_view.h"
-#include "ui/views/controls/label.h"
-#include "ui/views/controls/slider.h"
-#include "ui/views/layout/box_layout.h"
-#include "ui/views/view.h"
-
-namespace ash {
-namespace tray {
-namespace {
-
-// We don't let the screen brightness go lower than this when it's being
-// adjusted via the slider. Otherwise, if the user doesn't know about the
-// brightness keys, they may turn the backlight off and not know how to turn it
-// back on.
-const double kMinBrightnessPercent = 5.0;
-
-} // namespace
-
-class BrightnessView : public ShellObserver,
- public views::View,
- public views::SliderListener {
- public:
- BrightnessView(bool default_view, double initial_percent);
- ~BrightnessView() override;
-
- bool is_default_view() const { return is_default_view_; }
-
- // |percent| is in the range [0.0, 100.0].
- void SetBrightnessPercent(double percent);
-
- // ShellObserver:
- void OnMaximizeModeStarted() override;
- void OnMaximizeModeEnded() override;
-
- private:
- // views::View:
- void OnBoundsChanged(const gfx::Rect& old_bounds) override;
-
- // views:SliderListener:
- void SliderValueChanged(views::Slider* sender,
- float value,
- float old_value,
- views::SliderChangeReason reason) override;
-
- // views:SliderListener:
- void SliderDragStarted(views::Slider* slider) override;
- void SliderDragEnded(views::Slider* slider) override;
-
- views::Slider* slider_;
-
- // Is |slider_| currently being dragged?
- bool dragging_;
-
- // True if this view is for the default tray view. Used to control hide/show
- // behaviour of the default view when entering or leaving Maximize Mode.
- bool is_default_view_;
-
- // Last brightness level that we observed, in the range [0.0, 100.0].
- double last_percent_;
-
- DISALLOW_COPY_AND_ASSIGN(BrightnessView);
-};
-
-BrightnessView::BrightnessView(bool default_view, double initial_percent)
- : dragging_(false),
- is_default_view_(default_view),
- last_percent_(initial_percent) {
- SetLayoutManager(new views::BoxLayout(views::BoxLayout::kHorizontal,
- kTrayPopupPaddingHorizontal, 0,
- kTrayPopupPaddingBetweenItems));
-
- views::ImageView* icon = new FixedSizedImageView(0, kTrayPopupItemHeight);
- gfx::Image image = ui::ResourceBundle::GetSharedInstance().GetImageNamed(
- IDR_AURA_UBER_TRAY_BRIGHTNESS);
- icon->SetImage(image.ToImageSkia());
- AddChildView(icon);
-
- slider_ = new views::Slider(this, views::Slider::HORIZONTAL);
- slider_->set_focus_border_color(kFocusBorderColor);
- slider_->SetValue(static_cast<float>(initial_percent / 100.0));
- slider_->SetAccessibleName(
- ui::ResourceBundle::GetSharedInstance().GetLocalizedString(
- IDS_ASH_STATUS_TRAY_BRIGHTNESS));
- AddChildView(slider_);
-
- if (is_default_view_) {
- WmShell::Get()->AddShellObserver(this);
- SetVisible(WmShell::Get()
- ->maximize_mode_controller()
- ->IsMaximizeModeWindowManagerEnabled());
- }
-}
-
-BrightnessView::~BrightnessView() {
- if (is_default_view_)
- WmShell::Get()->RemoveShellObserver(this);
-}
-
-void BrightnessView::SetBrightnessPercent(double percent) {
- last_percent_ = percent;
- if (!dragging_)
- slider_->SetValue(static_cast<float>(percent / 100.0));
-}
-
-void BrightnessView::OnMaximizeModeStarted() {
- SetVisible(true);
-}
-
-void BrightnessView::OnMaximizeModeEnded() {
- SetVisible(false);
-}
-
-void BrightnessView::OnBoundsChanged(const gfx::Rect& old_bounds) {
- int w = width() - slider_->x();
- slider_->SetSize(gfx::Size(w, slider_->height()));
-}
-
-void BrightnessView::SliderValueChanged(views::Slider* sender,
- float value,
- float old_value,
- views::SliderChangeReason reason) {
- DCHECK_EQ(sender, slider_);
- if (reason != views::VALUE_CHANGED_BY_USER)
- return;
- AcceleratorController* ac = Shell::GetInstance()->accelerator_controller();
- if (ac->brightness_control_delegate()) {
- double percent = std::max(value * 100.0, kMinBrightnessPercent);
- ac->brightness_control_delegate()->SetBrightnessPercent(percent, true);
- }
-}
-
-void BrightnessView::SliderDragStarted(views::Slider* slider) {
- DCHECK_EQ(slider, slider_);
- dragging_ = true;
-}
-
-void BrightnessView::SliderDragEnded(views::Slider* slider) {
- DCHECK_EQ(slider, slider_);
- dragging_ = false;
- slider_->SetValue(static_cast<float>(last_percent_ / 100.0));
-}
-
-} // namespace tray
-
-TrayBrightness::TrayBrightness(SystemTray* system_tray)
- : SystemTrayItem(system_tray),
- brightness_view_(NULL),
- current_percent_(100.0),
- got_current_percent_(false),
- weak_ptr_factory_(this) {
- // Post a task to get the initial brightness; the BrightnessControlDelegate
- // isn't created yet.
- base::ThreadTaskRunnerHandle::Get()->PostTask(
- FROM_HERE, base::Bind(&TrayBrightness::GetInitialBrightness,
- weak_ptr_factory_.GetWeakPtr()));
- chromeos::DBusThreadManager::Get()->GetPowerManagerClient()->AddObserver(
- this);
-}
-
-TrayBrightness::~TrayBrightness() {
- chromeos::DBusThreadManager::Get()->GetPowerManagerClient()->RemoveObserver(
- this);
-}
-
-void TrayBrightness::GetInitialBrightness() {
- BrightnessControlDelegate* delegate = Shell::GetInstance()
- ->accelerator_controller()
- ->brightness_control_delegate();
- // Worrisome, but happens in unit tests, so don't log anything.
- if (!delegate)
- return;
- delegate->GetBrightnessPercent(
- base::Bind(&TrayBrightness::HandleInitialBrightness,
- weak_ptr_factory_.GetWeakPtr()));
-}
-
-void TrayBrightness::HandleInitialBrightness(double percent) {
- if (!got_current_percent_)
- HandleBrightnessChanged(percent, false);
-}
-
-views::View* TrayBrightness::CreateTrayView(LoginStatus status) {
- return NULL;
-}
-
-views::View* TrayBrightness::CreateDefaultView(LoginStatus status) {
- CHECK(brightness_view_ == NULL);
- brightness_view_ = new tray::BrightnessView(true, current_percent_);
- return brightness_view_;
-}
-
-views::View* TrayBrightness::CreateDetailedView(LoginStatus status) {
- CHECK(brightness_view_ == NULL);
- WmShell::Get()->RecordUserMetricsAction(
- UMA_STATUS_AREA_DETAILED_BRIGHTNESS_VIEW);
- brightness_view_ = new tray::BrightnessView(false, current_percent_);
- return brightness_view_;
-}
-
-void TrayBrightness::DestroyTrayView() {}
-
-void TrayBrightness::DestroyDefaultView() {
- if (brightness_view_ && brightness_view_->is_default_view())
- brightness_view_ = NULL;
-}
-
-void TrayBrightness::DestroyDetailedView() {
- if (brightness_view_ && !brightness_view_->is_default_view())
- brightness_view_ = NULL;
-}
-
-void TrayBrightness::UpdateAfterLoginStatusChange(LoginStatus status) {}
-
-bool TrayBrightness::ShouldHideArrow() const {
- return true;
-}
-
-bool TrayBrightness::ShouldShowShelf() const {
- return false;
-}
-
-void TrayBrightness::BrightnessChanged(int level, bool user_initiated) {
- WmShell::Get()->RecordUserMetricsAction(UMA_STATUS_AREA_BRIGHTNESS_CHANGED);
- double percent = static_cast<double>(level);
- HandleBrightnessChanged(percent, user_initiated);
-}
-
-void TrayBrightness::HandleBrightnessChanged(double percent,
- bool user_initiated) {
- current_percent_ = percent;
- got_current_percent_ = true;
-
- if (brightness_view_)
- brightness_view_->SetBrightnessPercent(percent);
-
- if (!user_initiated)
- return;
-
- // Never show the bubble on systems that lack internal displays: if an
- // external display's brightness is changed, it may already display the new
- // level via an on-screen display.
- if (!display::Display::HasInternalDisplay())
- return;
-
- if (brightness_view_)
- SetDetailedViewCloseDelay(kTrayPopupAutoCloseDelayInSeconds);
- else
- PopupDetailedView(kTrayPopupAutoCloseDelayInSeconds, false);
-}
-
-} // namespace ash
« no previous file with comments | « ash/system/chromeos/brightness/tray_brightness.h ('k') | ash/system/chromeos/brightness/tray_brightness_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698