| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "content/browser/web_contents/aura/window_slider.h" | 5 #include "content/browser/web_contents/aura/window_slider.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/callback.h" | 10 #include "base/callback.h" |
| (...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 159 float ratio = (fabs(delta_x_) - active_start_threshold_) / width; | 159 float ratio = (fabs(delta_x_) - active_start_threshold_) / width; |
| 160 if (ratio < complete_threshold_) { | 160 if (ratio < complete_threshold_) { |
| 161 ResetScroll(); | 161 ResetScroll(); |
| 162 return; | 162 return; |
| 163 } | 163 } |
| 164 | 164 |
| 165 ui::Layer* sliding = delta_x_ < 0 ? slider_.get() : owner_->layer(); | 165 ui::Layer* sliding = delta_x_ < 0 ? slider_.get() : owner_->layer(); |
| 166 ui::ScopedLayerAnimationSettings settings(sliding->GetAnimator()); | 166 ui::ScopedLayerAnimationSettings settings(sliding->GetAnimator()); |
| 167 settings.SetPreemptionStrategy( | 167 settings.SetPreemptionStrategy( |
| 168 ui::LayerAnimator::IMMEDIATELY_ANIMATE_TO_NEW_TARGET); | 168 ui::LayerAnimator::IMMEDIATELY_ANIMATE_TO_NEW_TARGET); |
| 169 settings.SetTweenType(ui::Tween::EASE_OUT); | 169 settings.SetTweenType(gfx::Tween::EASE_OUT); |
| 170 settings.AddObserver(new CallbackAnimationObserver( | 170 settings.AddObserver(new CallbackAnimationObserver( |
| 171 base::Bind(&WindowSlider::CompleteWindowSlideAfterAnimation, | 171 base::Bind(&WindowSlider::CompleteWindowSlideAfterAnimation, |
| 172 weak_factory_.GetWeakPtr()))); | 172 weak_factory_.GetWeakPtr()))); |
| 173 | 173 |
| 174 gfx::Transform transform; | 174 gfx::Transform transform; |
| 175 transform.Translate(delta_x_ < 0 ? 0 : width, 0); | 175 transform.Translate(delta_x_ < 0 ? 0 : width, 0); |
| 176 sliding->SetTransform(transform); | 176 sliding->SetTransform(transform); |
| 177 } | 177 } |
| 178 | 178 |
| 179 void WindowSlider::ResetScroll() { | 179 void WindowSlider::ResetScroll() { |
| 180 if (!slider_.get()) | 180 if (!slider_.get()) |
| 181 return; | 181 return; |
| 182 | 182 |
| 183 // Do not trigger any callbacks if this animation replaces any in-progress | 183 // Do not trigger any callbacks if this animation replaces any in-progress |
| 184 // animation. | 184 // animation. |
| 185 weak_factory_.InvalidateWeakPtrs(); | 185 weak_factory_.InvalidateWeakPtrs(); |
| 186 | 186 |
| 187 // Reset the state of the sliding layer. | 187 // Reset the state of the sliding layer. |
| 188 if (slider_.get()) { | 188 if (slider_.get()) { |
| 189 ui::Layer* layer = slider_.release(); | 189 ui::Layer* layer = slider_.release(); |
| 190 ui::ScopedLayerAnimationSettings settings(layer->GetAnimator()); | 190 ui::ScopedLayerAnimationSettings settings(layer->GetAnimator()); |
| 191 settings.SetPreemptionStrategy( | 191 settings.SetPreemptionStrategy( |
| 192 ui::LayerAnimator::IMMEDIATELY_ANIMATE_TO_NEW_TARGET); | 192 ui::LayerAnimator::IMMEDIATELY_ANIMATE_TO_NEW_TARGET); |
| 193 settings.SetTweenType(ui::Tween::EASE_OUT); | 193 settings.SetTweenType(gfx::Tween::EASE_OUT); |
| 194 | 194 |
| 195 // Delete the layer and the shadow at the end of the animation. | 195 // Delete the layer and the shadow at the end of the animation. |
| 196 settings.AddObserver(new CallbackAnimationObserver( | 196 settings.AddObserver(new CallbackAnimationObserver( |
| 197 base::Bind(&DeleteLayerAndShadow, | 197 base::Bind(&DeleteLayerAndShadow, |
| 198 base::Unretained(layer), | 198 base::Unretained(layer), |
| 199 base::Unretained(shadow_.release())))); | 199 base::Unretained(shadow_.release())))); |
| 200 | 200 |
| 201 gfx::Transform transform; | 201 gfx::Transform transform; |
| 202 transform.Translate(delta_x_ < 0 ? layer->bounds().width() : 0, 0); | 202 transform.Translate(delta_x_ < 0 ? layer->bounds().width() : 0, 0); |
| 203 layer->SetTransform(transform); | 203 layer->SetTransform(transform); |
| 204 } | 204 } |
| 205 | 205 |
| 206 // Reset the state of the main layer. | 206 // Reset the state of the main layer. |
| 207 { | 207 { |
| 208 ui::ScopedLayerAnimationSettings settings(owner_->layer()->GetAnimator()); | 208 ui::ScopedLayerAnimationSettings settings(owner_->layer()->GetAnimator()); |
| 209 settings.SetPreemptionStrategy( | 209 settings.SetPreemptionStrategy( |
| 210 ui::LayerAnimator::IMMEDIATELY_ANIMATE_TO_NEW_TARGET); | 210 ui::LayerAnimator::IMMEDIATELY_ANIMATE_TO_NEW_TARGET); |
| 211 settings.SetTweenType(ui::Tween::EASE_OUT); | 211 settings.SetTweenType(gfx::Tween::EASE_OUT); |
| 212 settings.AddObserver(new CallbackAnimationObserver( | 212 settings.AddObserver(new CallbackAnimationObserver( |
| 213 base::Bind(&WindowSlider::AbortWindowSlideAfterAnimation, | 213 base::Bind(&WindowSlider::AbortWindowSlideAfterAnimation, |
| 214 weak_factory_.GetWeakPtr()))); | 214 weak_factory_.GetWeakPtr()))); |
| 215 owner_->layer()->SetTransform(gfx::Transform()); | 215 owner_->layer()->SetTransform(gfx::Transform()); |
| 216 owner_->layer()->SetLayerBrightness(0.f); | 216 owner_->layer()->SetLayerBrightness(0.f); |
| 217 } | 217 } |
| 218 | 218 |
| 219 delta_x_ = 0.f; | 219 delta_x_ = 0.f; |
| 220 } | 220 } |
| 221 | 221 |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 299 } else if (window == owner_) { | 299 } else if (window == owner_) { |
| 300 window->RemoveObserver(this); | 300 window->RemoveObserver(this); |
| 301 owner_ = NULL; | 301 owner_ = NULL; |
| 302 delete this; | 302 delete this; |
| 303 } else { | 303 } else { |
| 304 NOTREACHED(); | 304 NOTREACHED(); |
| 305 } | 305 } |
| 306 } | 306 } |
| 307 | 307 |
| 308 } // namespace content | 308 } // namespace content |
| OLD | NEW |