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 |