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 |