Commit 1737b40c authored by James Cook's avatar James Cook Committed by Commit Bot

Revert "Add animated voice interaction icon."

This reverts commit 875aa3d7b80dd3d6a2f0a265d4ca1875b502abc6.

Reason for revert:

Breaks the M61 branch build

cc -o obj/ash/ash/voice_interaction_overlay.o
../../ash/shelf/voice_interaction_overlay.cc:170:43: error: no member named 'since_origin' in 'base::TimeTicks'
    uint64_t now = base::TimeTicks::Now().since_origin().InMilliseconds();

Original change's description:
> Add animated voice interaction icon.
> 
> BUG=b:62276007
> TEST=build flash locally, see animation as spec
> TBR=xiaohuic@google.com
> 
> (cherry picked from commit cc92f7ae)
> 
> Change-Id: I5542b68e084fe465c2f8b424b521c8faef51f686
> Reviewed-on: https://chromium-review.googlesource.com/585245
> Commit-Queue: Xiaohui Chen <xiaohuic@chromium.org>
> Reviewed-by: Mitsuru Oshima <oshima@chromium.org>
> Cr-Original-Commit-Position: refs/heads/master@{#490447}
> Reviewed-on: https://chromium-review.googlesource.com/595143
> Reviewed-by: Vladislav Kaznacheev <kaznacheev@chromium.org>
> Cr-Commit-Position: refs/branch-heads/3163@{#198}
> Cr-Branched-From: ff259bab-refs/heads/master@{#488528}

TBR=kaznacheev@chromium.org,oshima@chromium.org,xiaohuic@chromium.org

# Not skipping CQ checks because original CL landed > 1 day ago.

Bug: b:62276007
Change-Id: Ie8e554ca79f054e0e4d18621402123455950aa9c
Reviewed-on: https://chromium-review.googlesource.com/597071Reviewed-by: default avatarJames Cook <jamescook@chromium.org>
Cr-Original-Commit-Position: refs/branch-heads/3163@{#229}
Cr-Original-Branched-From: ff259bab-refs/heads/master@{#488528}(cherry picked from commit 020cdf35035e30942aa34ca571fce561bff18cf6)
Reviewed-on: https://chromium-review.googlesource.com/598507
Commit-Queue: Xiaohui Chen <xiaohuic@chromium.org>
Cr-Commit-Position: refs/heads/master@{#491521}
parent a4579977
......@@ -23,8 +23,6 @@
#include "base/memory/ptr_util.h"
#include "base/metrics/user_metrics.h"
#include "base/metrics/user_metrics_action.h"
#include "base/time/time.h"
#include "base/timer/timer.h"
#include "chromeos/chromeos_switches.h"
#include "ui/accessibility/ax_node_data.h"
#include "ui/app_list/presenter/app_list.h"
......@@ -37,11 +35,11 @@
#include "ui/compositor/paint_context.h"
#include "ui/compositor/paint_recorder.h"
#include "ui/compositor/scoped_layer_animation_settings.h"
#include "ui/gfx/animation/linear_animation.h"
#include "ui/gfx/canvas.h"
#include "ui/gfx/image/canvas_image_source.h"
#include "ui/gfx/image/image_skia.h"
#include "ui/gfx/image/image_skia_operations.h"
#include "ui/gfx/paint_vector_icon.h"
#include "ui/gfx/scoped_canvas.h"
#include "ui/gfx/skia_paint_util.h"
#include "ui/views/animation/flood_fill_ink_drop_ripple.h"
......@@ -99,121 +97,31 @@ constexpr float kMinimumRectScale = 0.0001f;
// were causing visual anomalies.
constexpr float kMinimumCircleScale = 0.001f;
// These are voice interaction logo specs.
constexpr float kMoleculeOffsetXDip[] = {-10.f, 10.f, 10.f, 19.f};
constexpr float kMoleculeOffsetYDip[] = {-8.f, -2.f, 13.f, -9.f};
constexpr float kMoleculeRadiusDip[] = {12.f, 6.f, 7.f, 3.f};
constexpr float kMoleculeAmplitude = 2.f;
constexpr SkColor kMoleculeColors[] = {
static_cast<SkColor>(0xFF4184F3), // Blue
static_cast<SkColor>(0xFFEA4335), // Red
static_cast<SkColor>(0xFFFBBC05), // Yellow
static_cast<SkColor>(0xFF34A853) // Green
};
constexpr int kMoleculeAnimationDurationMs = 1200;
constexpr int kMoleculeAnimationOffset = 50;
constexpr int kMoleculeOrder[] = {0, 2, 3, 1};
} // namespace
class VoiceInteractionIcon : public ui::Layer {
class VoiceInteractionIcon : public ui::Layer, public ui::LayerDelegate {
public:
VoiceInteractionIcon() : Layer(ui::LAYER_NOT_DRAWN) {
VoiceInteractionIcon() {
set_name("VoiceInteractionOverlay:ICON_LAYER");
SetBounds(gfx::Rect(0, 0, kIconInitSizeDip, kIconInitSizeDip));
SetFillsBoundsOpaquely(false);
SetMasksToBounds(false);
InitMoleculeShape();
}
void StartAnimation() {
animation_timer_.Start(FROM_HERE,
base::TimeDelta::FromMilliseconds(
base::TimeTicks::kMillisecondsPerSecond /
gfx::LinearAnimation::kDefaultFrameRate),
this, &VoiceInteractionIcon::AnimationProgressed);
set_delegate(this);
}
void StopAnimation() { animation_timer_.Stop(); }
private:
enum Dot {
BLUE_DOT = 0,
RED_DOT,
YELLOW_DOT,
GREEN_DOT,
// The total number of shapes, not an actual shape.
DOT_COUNT
};
std::string ToLayerName(Dot dot) {
switch (dot) {
case BLUE_DOT:
return "BLUE_DOT";
case RED_DOT:
return "RED_DOT";
case YELLOW_DOT:
return "YELLOW_DOT";
case GREEN_DOT:
return "GREEN_DOT";
case DOT_COUNT:
NOTREACHED() << "The DOT_COUNT value should never be used.";
return "DOT_COUNT";
}
return "UNKNOWN";
}
void AnimationProgressed() {
gfx::Transform transform;
uint64_t now = base::TimeTicks::Now().since_origin().InMilliseconds();
for (int i = 0; i < DOT_COUNT; ++i) {
float normalizedTime =
((now - kMoleculeAnimationOffset * kMoleculeOrder[i]) %
kMoleculeAnimationDurationMs) /
static_cast<float>(kMoleculeAnimationDurationMs);
transform.MakeIdentity();
transform.Translate(0,
kMoleculeAmplitude * sin(normalizedTime * 2 * M_PI));
dot_layers_[i]->SetTransform(transform);
}
}
/**
* Convenience method to place dots to Molecule shape used by Molecule
* animations.
*/
void InitMoleculeShape() {
for (int i = 0; i < DOT_COUNT; ++i) {
dot_layer_delegates_[i] = base::MakeUnique<views::CircleLayerDelegate>(
kMoleculeColors[i], kMoleculeRadiusDip[i]);
dot_layers_[i] = base::MakeUnique<ui::Layer>();
dot_layers_[i]->SetBounds(gfx::Rect(
kIconInitSizeDip / 2 + kMoleculeOffsetXDip[i] - kMoleculeRadiusDip[i],
kIconInitSizeDip / 2 + kMoleculeOffsetYDip[i] - kMoleculeRadiusDip[i],
kMoleculeRadiusDip[i] * 2, kMoleculeRadiusDip[i] * 2));
dot_layers_[i]->SetFillsBoundsOpaquely(false);
dot_layers_[i]->set_delegate(dot_layer_delegates_[i].get());
dot_layers_[i]->SetVisible(true);
dot_layers_[i]->SetOpacity(1.0);
dot_layers_[i]->SetMasksToBounds(false);
dot_layers_[i]->set_name("DOT:" + ToLayerName(static_cast<Dot>(i)));
Add(dot_layers_[i].get());
}
// ui::LayerDelegate:
void OnPaintLayer(const ui::PaintContext& context) override {
ui::PaintRecorder recorder(context, size());
gfx::PaintVectorIcon(recorder.canvas(), kShelfVoiceInteractionIcon,
kIconInitSizeDip, 0);
}
std::unique_ptr<ui::Layer> dot_layers_[DOT_COUNT];
std::unique_ptr<views::CircleLayerDelegate> dot_layer_delegates_[DOT_COUNT];
void OnDelegatedFrameDamage(const gfx::Rect& damage_rect_in_dip) override {}
base::RepeatingTimer animation_timer_;
void OnDeviceScaleFactorChanged(float device_scale_factor) override {}
DISALLOW_COPY_AND_ASSIGN(VoiceInteractionIcon);
};
} // namespace
class VoiceInteractionIconBackground : public ui::Layer,
public ui::LayerDelegate {
......@@ -756,7 +664,6 @@ void VoiceInteractionOverlay::BurstAnimation() {
transform.Scale(scale_factor, scale_factor);
icon_layer_->SetTransform(transform);
icon_layer_->StartAnimation();
}
// Setup background animation.
......@@ -889,7 +796,6 @@ void VoiceInteractionOverlay::HideAnimation() {
ui::LayerAnimator::PreemptionStrategy::ENQUEUE_NEW_ANIMATION);
icon_layer_->SetOpacity(0);
icon_layer_->StopAnimation();
}
// Setup background animation.
......
......@@ -21,7 +21,6 @@ namespace ash {
class AppListButton;
class VoiceInteractionIconBackground;
class VoiceInteractionIcon;
class ASH_EXPORT VoiceInteractionOverlay : public views::View {
public:
......@@ -39,7 +38,7 @@ class ASH_EXPORT VoiceInteractionOverlay : public views::View {
const ui::CallbackLayerAnimationObserver& observer);
std::unique_ptr<ui::Layer> ripple_layer_;
std::unique_ptr<VoiceInteractionIcon> icon_layer_;
std::unique_ptr<ui::Layer> icon_layer_;
std::unique_ptr<VoiceInteractionIconBackground> background_layer_;
AppListButton* host_view_;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment