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

Unified Diff: ash/autoclick/common/autoclick_ring_handler.cc

Issue 2193563002: ash: Refactor autoclick common code to ash/autoclick/common. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: deps Created 4 years, 4 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
« no previous file with comments | « ash/autoclick/common/autoclick_ring_handler.h ('k') | chrome/browser/chromeos/ui/autoclick_ring_handler.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ash/autoclick/common/autoclick_ring_handler.cc
diff --git a/chrome/browser/chromeos/ui/autoclick_ring_handler.cc b/ash/autoclick/common/autoclick_ring_handler.cc
similarity index 71%
rename from chrome/browser/chromeos/ui/autoclick_ring_handler.cc
rename to ash/autoclick/common/autoclick_ring_handler.cc
index c0e3fda8471e31e2b30e975033968176995361e8..b678555751e73f93a29924f41857f41f1d7b0dba 100644
--- a/chrome/browser/chromeos/ui/autoclick_ring_handler.cc
+++ b/ash/autoclick/common/autoclick_ring_handler.cc
@@ -2,31 +2,19 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "chrome/browser/chromeos/ui/autoclick_ring_handler.h"
+#include "ash/autoclick/common/autoclick_ring_handler.h"
-#include <memory>
-
-#include "ash/aura/wm_window_aura.h"
-#include "ash/common/shell_window_ids.h"
-#include "ash/common/wm/root_window_finder.h"
-#include "ash/root_window_controller.h"
-#include "ash/shell.h"
#include "third_party/skia/include/core/SkColor.h"
#include "third_party/skia/include/core/SkPaint.h"
#include "third_party/skia/include/core/SkPath.h"
#include "third_party/skia/include/core/SkRect.h"
-#include "ui/aura/client/screen_position_client.h"
-#include "ui/aura/env.h"
#include "ui/aura/window.h"
-#include "ui/aura/window_event_dispatcher.h"
#include "ui/compositor/layer.h"
#include "ui/gfx/canvas.h"
#include "ui/gfx/transform.h"
#include "ui/views/view.h"
-#include "ui/views/widget/widget.h"
-#include "ui/wm/core/coordinate_conversion.h"
-namespace chromeos {
+namespace ash {
namespace {
const int kAutoclickRingOuterRadius = 30;
@@ -56,23 +44,6 @@ const SkColor kAutoclickRingArcColor = SkColorSetARGB(255, 0, 255, 0);
const SkColor kAutoclickRingCircleColor = SkColorSetARGB(255, 0, 0, 255);
const int kAutoclickRingFrameRateHz = 60;
-views::Widget* CreateAutoclickRingWidget(aura::Window* root_window) {
- views::Widget* widget = new views::Widget;
- views::Widget::InitParams params;
- params.type = views::Widget::InitParams::TYPE_WINDOW_FRAMELESS;
- params.accept_events = false;
- params.activatable = views::Widget::InitParams::ACTIVATABLE_NO;
- params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
- params.context = root_window;
- params.opacity = views::Widget::InitParams::TRANSLUCENT_WINDOW;
- params.parent = ash::Shell::GetContainer(
- root_window, ash::kShellWindowId_OverlayContainer);
-
- widget->Init(params);
- widget->SetOpacity(1.f);
- return widget;
-}
-
void PaintAutoclickRingCircle(gfx::Canvas* canvas,
gfx::Point& center,
int radius) {
@@ -109,22 +80,22 @@ void PaintAutoclickRingArc(gfx::Canvas* canvas,
// animation is shown in.
class AutoclickRingHandler::AutoclickRingView : public views::View {
public:
- AutoclickRingView(const gfx::Point& event_location, aura::Window* root_window)
+ AutoclickRingView(const gfx::Point& event_location,
+ views::Widget* ring_widget)
: views::View(),
- widget_(CreateAutoclickRingWidget(root_window)),
+ widget_(ring_widget),
current_angle_(kAutoclickRingAngleStartValue),
current_scale_(kAutoclickRingScaleStartValue) {
widget_->SetContentsView(this);
// We are owned by the AutoclickRingHandler.
set_owned_by_client();
- SetNewLocation(event_location, root_window);
+ SetNewLocation(event_location);
}
~AutoclickRingView() override {}
- void SetNewLocation(const gfx::Point& new_event_location,
- aura::Window* root_window) {
+ void SetNewLocation(const gfx::Point& new_event_location) {
gfx::Point point = new_event_location;
widget_->SetBounds(gfx::Rect(
point.x() - (kAutoclickRingOuterRadius + kAutoclickRingGlowWidth),
@@ -186,7 +157,7 @@ class AutoclickRingHandler::AutoclickRingView : public views::View {
canvas->Restore();
}
- std::unique_ptr<views::Widget> widget_;
+ views::Widget* widget_;
int current_angle_;
double current_scale_;
@@ -198,7 +169,7 @@ class AutoclickRingHandler::AutoclickRingView : public views::View {
// AutoclickRingHandler, public
AutoclickRingHandler::AutoclickRingHandler()
: gfx::LinearAnimation(kAutoclickRingFrameRateHz, nullptr),
- tap_down_target_(nullptr),
+ ring_widget_(nullptr),
current_animation_type_(AnimationType::NONE) {}
AutoclickRingHandler::~AutoclickRingHandler() {
@@ -207,57 +178,40 @@ AutoclickRingHandler::~AutoclickRingHandler() {
void AutoclickRingHandler::StartGesture(
base::TimeDelta duration,
- const gfx::Point& center_point_in_screen) {
- aura::Window* target = GetTargetWindow();
- if (tap_down_target_ && tap_down_target_ != target)
- return;
+ const gfx::Point& center_point_in_screen,
+ views::Widget* widget) {
StopAutoclickRing();
- SetTapDownTarget();
tap_down_location_ = center_point_in_screen;
+ ring_widget_ = widget;
current_animation_type_ = AnimationType::GROW_ANIMATION;
animation_duration_ = duration;
StartAnimation(base::TimeDelta());
}
void AutoclickRingHandler::StopGesture() {
- aura::Window* target = GetTargetWindow();
- if (tap_down_target_ && tap_down_target_ != target)
- return;
StopAutoclickRing();
}
void AutoclickRingHandler::SetGestureCenter(
- const gfx::Point& center_point_in_screen) {
+ const gfx::Point& center_point_in_screen,
+ views::Widget* widget) {
tap_down_location_ = center_point_in_screen;
+ ring_widget_ = widget;
}
////////////////////////////////////////////////////////////////////////////////
// AutoclickRingHandler, private
-aura::Window* AutoclickRingHandler::GetTargetWindow() {
- aura::Window* target = ash::WmWindowAura::GetAuraWindow(
- ash::wm::GetRootWindowAt(tap_down_location_));
- DCHECK(target) << "Root window not found while rendering autoclick circle;";
- return target;
-}
-
-void AutoclickRingHandler::SetTapDownTarget() {
- aura::Window* target = GetTargetWindow();
- SetTapDownTarget(target);
-}
-
void AutoclickRingHandler::StartAnimation(base::TimeDelta delay) {
- int delay_ms = int{delay.InMilliseconds()};
+ int delay_ms = static_cast<int>(delay.InMilliseconds());
switch (current_animation_type_) {
case AnimationType::GROW_ANIMATION: {
- aura::Window* root_window = tap_down_target_->GetRootWindow();
- view_.reset(new AutoclickRingView(tap_down_location_, root_window));
+ view_.reset(new AutoclickRingView(tap_down_location_, ring_widget_));
SetDuration(delay_ms);
Start();
break;
}
case AnimationType::SHRINK_ANIMATION: {
- aura::Window* root_window = tap_down_target_->GetRootWindow();
- view_.reset(new AutoclickRingView(tap_down_location_, root_window));
+ view_.reset(new AutoclickRingView(tap_down_location_, ring_widget_));
SetDuration(delay_ms);
Start();
break;
@@ -275,29 +229,17 @@ void AutoclickRingHandler::StopAutoclickRing() {
current_animation_type_ = AnimationType::NONE;
Stop();
view_.reset();
- SetTapDownTarget(nullptr);
-}
-
-void AutoclickRingHandler::SetTapDownTarget(aura::Window* target) {
- if (tap_down_target_ == target)
- return;
-
- if (tap_down_target_)
- tap_down_target_->RemoveObserver(this);
- tap_down_target_ = target;
- if (tap_down_target_)
- tap_down_target_->AddObserver(this);
}
void AutoclickRingHandler::AnimateToState(double state) {
DCHECK(view_.get());
switch (current_animation_type_) {
case AnimationType::GROW_ANIMATION:
- view_->SetNewLocation(tap_down_location_, GetTargetWindow());
+ view_->SetNewLocation(tap_down_location_);
view_->UpdateWithGrowAnimation(this);
break;
case AnimationType::SHRINK_ANIMATION:
- view_->SetNewLocation(tap_down_location_, GetTargetWindow());
+ view_->SetNewLocation(tap_down_location_);
view_->UpdateWithShrinkAnimation(this);
break;
case AnimationType::NONE:
@@ -318,14 +260,8 @@ void AutoclickRingHandler::AnimationStopped() {
case AnimationType::NONE:
// fall through to reset the view.
view_.reset();
- SetTapDownTarget(nullptr);
break;
}
}
-void AutoclickRingHandler::OnWindowDestroying(aura::Window* window) {
- DCHECK_EQ(tap_down_target_, window);
- StopAutoclickRing();
-}
-
-} // namespace chromeos
+} // namespace ash
« no previous file with comments | « ash/autoclick/common/autoclick_ring_handler.h ('k') | chrome/browser/chromeos/ui/autoclick_ring_handler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698