| 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 265 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  276 void KeyboardController::SetKeyboardMode(KeyboardMode mode) { |  276 void KeyboardController::SetKeyboardMode(KeyboardMode mode) { | 
|  277   if (keyboard_mode_ == mode) |  277   if (keyboard_mode_ == mode) | 
|  278     return; |  278     return; | 
|  279  |  279  | 
|  280   keyboard_mode_ = mode; |  280   keyboard_mode_ = mode; | 
|  281   // When keyboard is floating, no overscroll or resize is necessary. Sets |  281   // When keyboard is floating, no overscroll or resize is necessary. Sets | 
|  282   // keyboard bounds to zero so overscroll or resize is disabled. |  282   // keyboard bounds to zero so overscroll or resize is disabled. | 
|  283   if (keyboard_mode_ == FLOATING) { |  283   if (keyboard_mode_ == FLOATING) { | 
|  284     NotifyKeyboardBoundsChanging(gfx::Rect()); |  284     NotifyKeyboardBoundsChanging(gfx::Rect()); | 
|  285   } else if (keyboard_mode_ == FULL_WIDTH) { |  285   } else if (keyboard_mode_ == FULL_WIDTH) { | 
|  286     // TODO(bshe): revisit this logic after we decide to support resize virtual |  286     AdjustKeyboardBounds(); | 
|  287     // keyboard. |  | 
|  288     int keyboard_height = GetContainerWindow()->bounds().height(); |  | 
|  289     const gfx::Rect& root_bounds = container_->GetRootWindow()->bounds(); |  | 
|  290     gfx::Rect new_bounds = root_bounds; |  | 
|  291     new_bounds.set_y(root_bounds.height() - keyboard_height); |  | 
|  292     new_bounds.set_height(keyboard_height); |  | 
|  293     GetContainerWindow()->SetBounds(new_bounds); |  | 
|  294     // No animation added, so call ShowAnimationFinished immediately. |  287     // No animation added, so call ShowAnimationFinished immediately. | 
|  295     ShowAnimationFinished(); |  288     ShowAnimationFinished(); | 
|  296   } |  289   } | 
|  297 } |  290 } | 
|  298  |  291  | 
|  299 void KeyboardController::ShowKeyboard(bool lock) { |  292 void KeyboardController::ShowKeyboard(bool lock) { | 
|  300   set_keyboard_locked(lock); |  293   set_keyboard_locked(lock); | 
|  301   ShowKeyboardInternal(display::kInvalidDisplayId); |  294   ShowKeyboardInternal(display::kInvalidDisplayId); | 
|  302 } |  295 } | 
|  303  |  296  | 
|  304 void KeyboardController::ShowKeyboardInDisplay(int64_t display_id) { |  297 void KeyboardController::ShowKeyboardInDisplay(int64_t display_id) { | 
|  305   set_keyboard_locked(true); |  298   set_keyboard_locked(true); | 
|  306   ShowKeyboardInternal(display_id); |  299   ShowKeyboardInternal(display_id); | 
|  307 } |  300 } | 
|  308  |  301  | 
|  309 bool KeyboardController::IsKeyboardWindowCreated() { |  302 bool KeyboardController::IsKeyboardWindowCreated() { | 
|  310   return keyboard_container_initialized() && ui_->HasKeyboardWindow(); |  303   return keyboard_container_initialized() && ui_->HasKeyboardWindow(); | 
|  311 } |  304 } | 
|  312  |  305  | 
|  313 void KeyboardController::OnWindowHierarchyChanged( |  306 void KeyboardController::OnWindowHierarchyChanged( | 
|  314     const HierarchyChangeParams& params) { |  307     const HierarchyChangeParams& params) { | 
|  315   if (params.new_parent && params.target == container_.get()) |  308   if (params.new_parent && params.target == container_.get()) | 
|  316     OnTextInputStateChanged(ui_->GetInputMethod()->GetTextInputClient()); |  309     OnTextInputStateChanged(ui_->GetInputMethod()->GetTextInputClient()); | 
|  317 } |  310 } | 
|  318  |  311  | 
|  319 void KeyboardController::OnWindowAddedToRootWindow(aura::Window* window) { |  312 void KeyboardController::OnWindowAddedToRootWindow(aura::Window* window) { | 
|  320   if (!window->GetRootWindow()->HasObserver(this)) |  313   if (!window->GetRootWindow()->HasObserver(this)) | 
|  321     window->GetRootWindow()->AddObserver(this); |  314     window->GetRootWindow()->AddObserver(this); | 
 |  315   AdjustKeyboardBounds(); | 
|  322 } |  316 } | 
|  323  |  317  | 
|  324 void KeyboardController::OnWindowRemovingFromRootWindow(aura::Window* window, |  318 void KeyboardController::OnWindowRemovingFromRootWindow(aura::Window* window, | 
|  325     aura::Window* new_root) { |  319     aura::Window* new_root) { | 
|  326   if (window->GetRootWindow()->HasObserver(this)) |  320   if (window->GetRootWindow()->HasObserver(this)) | 
|  327     window->GetRootWindow()->RemoveObserver(this); |  321     window->GetRootWindow()->RemoveObserver(this); | 
|  328 } |  322 } | 
|  329  |  323  | 
|  330 void KeyboardController::OnWindowBoundsChanged(aura::Window* window, |  324 void KeyboardController::OnWindowBoundsChanged(aura::Window* window, | 
|  331                                                const gfx::Rect& old_bounds, |  325                                                const gfx::Rect& old_bounds, | 
| (...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  504   NotifyKeyboardBoundsChanging(container_->bounds()); |  498   NotifyKeyboardBoundsChanging(container_->bounds()); | 
|  505   ui_->EnsureCaretInWorkArea(); |  499   ui_->EnsureCaretInWorkArea(); | 
|  506 } |  500 } | 
|  507  |  501  | 
|  508 void KeyboardController::HideAnimationFinished() { |  502 void KeyboardController::HideAnimationFinished() { | 
|  509   ui_->HideKeyboardContainer(container_.get()); |  503   ui_->HideKeyboardContainer(container_.get()); | 
|  510   for (KeyboardControllerObserver& observer : observer_list_) |  504   for (KeyboardControllerObserver& observer : observer_list_) | 
|  511     observer.OnKeyboardHidden(); |  505     observer.OnKeyboardHidden(); | 
|  512 } |  506 } | 
|  513  |  507  | 
 |  508 void KeyboardController::AdjustKeyboardBounds() { | 
 |  509   // When keyboard is floating, no resize is necessary. | 
 |  510   if (keyboard_mode_ == FLOATING) | 
 |  511     return; | 
 |  512  | 
 |  513   if (keyboard_mode_ == FULL_WIDTH) { | 
 |  514     // TODO(bshe): revisit this logic after we decide to support resize virtual | 
 |  515     // keyboard. | 
 |  516     int keyboard_height = GetContainerWindow()->bounds().height(); | 
 |  517     const gfx::Rect& root_bounds = container_->GetRootWindow()->bounds(); | 
 |  518     gfx::Rect new_bounds = root_bounds; | 
 |  519     new_bounds.set_y(root_bounds.height() - keyboard_height); | 
 |  520     new_bounds.set_height(keyboard_height); | 
 |  521     GetContainerWindow()->SetBounds(new_bounds); | 
 |  522   } | 
 |  523 } | 
 |  524  | 
|  514 }  // namespace keyboard |  525 }  // namespace keyboard | 
| OLD | NEW |