Index: content/browser/android/edge_effect_l.cc |
diff --git a/content/browser/android/edge_effect_l.cc b/content/browser/android/edge_effect_l.cc |
index 4bf264651455f26f4b1044dfa228408d4c7c8ba9..ccec8a41c47217acde500f6973eb71088cf78ae2 100644 |
--- a/content/browser/android/edge_effect_l.cc |
+++ b/content/browser/android/edge_effect_l.cc |
@@ -12,12 +12,16 @@ namespace content { |
namespace { |
// Time it will take the effect to fully recede in ms |
-const int kRecedeTimeMs = 1000; |
+const int kRecedeTimeMs = 600; |
// Time it will take before a pulled glow begins receding in ms |
const int kPullTimeMs = 167; |
-const float kMaxAlpha = 1.f; |
+// Time it will take for a pulled glow to decay to partial strength before |
+// release |
+const int kPullDecayTimeMs = 2000; |
+ |
+const float kMaxAlpha = 0.5f; |
const float kPullGlowBegin = 0.f; |
@@ -32,9 +36,9 @@ const float kCos = 0.866f; // cos(PI / 6); |
// How much dragging should effect the height of the glow image. |
// Number determined by user testing. |
-const float kPullDistanceAlphaGlowFactor = 1.1f; |
+const float kPullDistanceAlphaGlowFactor = 0.8f; |
-const int kVelocityGlowFactor = 12; |
+const int kVelocityGlowFactor = 6; |
const ui::SystemUIResourceManager::ResourceType kResourceType = |
ui::SystemUIResourceManager::OVERSCROLL_GLOW_L; |
@@ -196,7 +200,16 @@ bool EdgeEffectL::Update(base::TimeTicks current_time) { |
glow_scale_y_finish_ = 0.f; |
break; |
case STATE_PULL: |
- // Hold in this state until explicitly released. |
+ state_ = STATE_PULL_DECAY; |
+ start_time_ = current_time; |
+ duration_ = base::TimeDelta::FromMilliseconds(kPullDecayTimeMs); |
+ |
+ glow_alpha_start_ = glow_alpha_; |
+ glow_scale_y_start_ = glow_scale_y_; |
+ |
+ // After pull, the glow should fade to nothing. |
+ glow_alpha_finish_ = 0.f; |
+ glow_scale_y_finish_ = 0.f; |
break; |
case STATE_PULL_DECAY: |
state_ = STATE_RECEDE; |
@@ -233,8 +246,13 @@ void EdgeEffectL::ApplyToLayers(const gfx::SizeF& size, |
const float r = size.width() * 0.75f / kSin; |
const float y = kCos * r; |
const float h = r - y; |
+ const float o_r = size.height() * 0.75f / kSin; |
+ const float o_y = kCos * o_r; |
+ const float o_h = o_r - o_y; |
+ const float base_glow_scale = h > 0.f ? std::min(o_h / h, 1.f) : 1.f; |
bounds_ = gfx::Size(size.width(), (int)std::min(size.height(), h)); |
- gfx::Size image_bounds(r, std::min(1.f, glow_scale_y_) * bounds_.height()); |
+ gfx::Size image_bounds( |
+ r, std::min(1.f, glow_scale_y_) * base_glow_scale * bounds_.height()); |
glow_->SetIsDrawable(true); |
glow_->SetUIResourceId(resource_manager_->GetUIResourceId(kResourceType)); |