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 "ui/keyboard/keyboard_controller.h" | 5 #include "ui/keyboard/keyboard_controller.h" |
6 | 6 |
7 #include <set> | 7 #include <set> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 22 matching lines...) Expand all Loading... |
33 #if defined(OS_CHROMEOS) | 33 #if defined(OS_CHROMEOS) |
34 #include "base/process/launch.h" | 34 #include "base/process/launch.h" |
35 #include "base/sys_info.h" | 35 #include "base/sys_info.h" |
36 #endif | 36 #endif |
37 | 37 |
38 namespace { | 38 namespace { |
39 | 39 |
40 const int kHideKeyboardDelayMs = 100; | 40 const int kHideKeyboardDelayMs = 100; |
41 | 41 |
42 // The virtual keyboard show/hide animation duration. | 42 // The virtual keyboard show/hide animation duration. |
43 const int kAnimationDurationMs = 200; | 43 const int kShowAnimationDurationMs = 350; |
| 44 const int kHideAnimationDurationMs = 100; |
44 | 45 |
45 // The opacity of virtual keyboard container when show animation starts or | 46 // The opacity of virtual keyboard container when show animation starts or |
46 // hide animation finishes. | 47 // hide animation finishes. |
47 const float kAnimationStartOrAfterHideOpacity = 0.2f; | 48 // TODO(rsadam@): Investigate why setting this to zero crashes. |
| 49 const float kAnimationStartOrAfterHideOpacity = 0.01f; |
48 | 50 |
49 // Event targeter for the keyboard container. | 51 // Event targeter for the keyboard container. |
50 class KeyboardContainerTargeter : public wm::MaskedWindowTargeter { | 52 class KeyboardContainerTargeter : public wm::MaskedWindowTargeter { |
51 public: | 53 public: |
52 KeyboardContainerTargeter(aura::Window* container, | 54 KeyboardContainerTargeter(aura::Window* container, |
53 keyboard::KeyboardControllerProxy* proxy) | 55 keyboard::KeyboardControllerProxy* proxy) |
54 : wm::MaskedWindowTargeter(container), | 56 : wm::MaskedWindowTargeter(container), |
55 proxy_(proxy) { | 57 proxy_(proxy) { |
56 } | 58 } |
57 | 59 |
(...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
357 set_lock_keyboard(false); | 359 set_lock_keyboard(false); |
358 | 360 |
359 ui::LayerAnimator* container_animator = container_->layer()->GetAnimator(); | 361 ui::LayerAnimator* container_animator = container_->layer()->GetAnimator(); |
360 animation_observer_.reset(new CallbackAnimationObserver( | 362 animation_observer_.reset(new CallbackAnimationObserver( |
361 container_animator, | 363 container_animator, |
362 base::Bind(&KeyboardController::HideAnimationFinished, | 364 base::Bind(&KeyboardController::HideAnimationFinished, |
363 base::Unretained(this)))); | 365 base::Unretained(this)))); |
364 container_animator->AddObserver(animation_observer_.get()); | 366 container_animator->AddObserver(animation_observer_.get()); |
365 | 367 |
366 ui::ScopedLayerAnimationSettings settings(container_animator); | 368 ui::ScopedLayerAnimationSettings settings(container_animator); |
367 settings.SetTweenType(gfx::Tween::EASE_OUT); | 369 settings.SetTweenType(gfx::Tween::FAST_OUT_LINEAR_IN); |
368 settings.SetTransitionDuration( | 370 settings.SetTransitionDuration( |
369 base::TimeDelta::FromMilliseconds(kAnimationDurationMs)); | 371 base::TimeDelta::FromMilliseconds(kHideAnimationDurationMs)); |
370 gfx::Transform transform; | 372 gfx::Transform transform; |
371 transform.Translate(0, proxy_->GetKeyboardWindow()->bounds().height()); | 373 transform.Translate(0, proxy_->GetKeyboardWindow()->bounds().height()); |
372 container_->SetTransform(transform); | 374 container_->SetTransform(transform); |
373 container_->layer()->SetOpacity(kAnimationStartOrAfterHideOpacity); | 375 container_->layer()->SetOpacity(kAnimationStartOrAfterHideOpacity); |
374 } | 376 } |
375 | 377 |
376 void KeyboardController::AddObserver(KeyboardControllerObserver* observer) { | 378 void KeyboardController::AddObserver(KeyboardControllerObserver* observer) { |
377 observer_list_.AddObserver(observer); | 379 observer_list_.AddObserver(observer); |
378 } | 380 } |
379 | 381 |
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
535 container_animator->AddObserver(animation_observer_.get()); | 537 container_animator->AddObserver(animation_observer_.get()); |
536 | 538 |
537 proxy_->ShowKeyboardContainer(container_.get()); | 539 proxy_->ShowKeyboardContainer(container_.get()); |
538 | 540 |
539 { | 541 { |
540 // Scope the following animation settings as we don't want to animate | 542 // Scope the following animation settings as we don't want to animate |
541 // visibility change that triggered by a call to the base class function | 543 // visibility change that triggered by a call to the base class function |
542 // ShowKeyboardContainer with these settings. The container should become | 544 // ShowKeyboardContainer with these settings. The container should become |
543 // visible immediately. | 545 // visible immediately. |
544 ui::ScopedLayerAnimationSettings settings(container_animator); | 546 ui::ScopedLayerAnimationSettings settings(container_animator); |
545 settings.SetTweenType(gfx::Tween::EASE_IN); | 547 settings.SetTweenType(gfx::Tween::LINEAR_OUT_SLOW_IN); |
546 settings.SetTransitionDuration( | 548 settings.SetTransitionDuration( |
547 base::TimeDelta::FromMilliseconds(kAnimationDurationMs)); | 549 base::TimeDelta::FromMilliseconds(kShowAnimationDurationMs)); |
548 container_->SetTransform(gfx::Transform()); | 550 container_->SetTransform(gfx::Transform()); |
549 container_->layer()->SetOpacity(1.0); | 551 container_->layer()->SetOpacity(1.0); |
550 } | 552 } |
551 } | 553 } |
552 | 554 |
553 void KeyboardController::ResetWindowInsets() { | 555 void KeyboardController::ResetWindowInsets() { |
554 const gfx::Insets insets; | 556 const gfx::Insets insets; |
555 scoped_ptr<content::RenderWidgetHostIterator> widgets( | 557 scoped_ptr<content::RenderWidgetHostIterator> widgets( |
556 content::RenderWidgetHost::GetRenderWidgetHosts()); | 558 content::RenderWidgetHost::GetRenderWidgetHosts()); |
557 while (content::RenderWidgetHost* widget = widgets->GetNextHost()) { | 559 while (content::RenderWidgetHost* widget = widgets->GetNextHost()) { |
(...skipping 19 matching lines...) Expand all Loading... |
577 proxy_->HideKeyboardContainer(container_.get()); | 579 proxy_->HideKeyboardContainer(container_.get()); |
578 } | 580 } |
579 | 581 |
580 void KeyboardController::AddBoundsChangedObserver(aura::Window* window) { | 582 void KeyboardController::AddBoundsChangedObserver(aura::Window* window) { |
581 aura::Window* target_window = GetFrameWindow(window); | 583 aura::Window* target_window = GetFrameWindow(window); |
582 if (target_window) | 584 if (target_window) |
583 window_bounds_observer_->AddObservedWindow(target_window); | 585 window_bounds_observer_->AddObservedWindow(target_window); |
584 } | 586 } |
585 | 587 |
586 } // namespace keyboard | 588 } // namespace keyboard |
OLD | NEW |