|  | // Copyright 2015 The Chromium Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | #include "ui/keyboard/keyboard_ui.h" | 
|  |  | 
|  | #include "ui/aura/window.h" | 
|  | #include "ui/base/ime/input_method.h" | 
|  | #include "ui/base/ime/text_input_client.h" | 
|  | #include "ui/keyboard/keyboard_controller.h" | 
|  |  | 
|  | namespace keyboard { | 
|  |  | 
|  | KeyboardUI::KeyboardUI() : keyboard_controller_(nullptr) {} | 
|  | KeyboardUI::~KeyboardUI() {} | 
|  |  | 
|  | void KeyboardUI::ShowKeyboardContainer(aura::Window* container) { | 
|  | if (HasKeyboardWindow()) { | 
|  | GetKeyboardWindow()->Show(); | 
|  | container->Show(); | 
|  | } | 
|  | } | 
|  |  | 
|  | void KeyboardUI::HideKeyboardContainer(aura::Window* container) { | 
|  | if (HasKeyboardWindow()) { | 
|  | container->Hide(); | 
|  | GetKeyboardWindow()->Hide(); | 
|  | } | 
|  | } | 
|  |  | 
|  | void KeyboardUI::EnsureCaretInWorkArea() { | 
|  | if (GetInputMethod()->GetTextInputClient()) { | 
|  | aura::Window* keyboard_window = GetKeyboardWindow(); | 
|  | aura::Window* root_window = keyboard_window->GetRootWindow(); | 
|  | gfx::Rect available_bounds = root_window->bounds(); | 
|  | gfx::Rect keyboard_bounds = keyboard_window->bounds(); | 
|  | available_bounds.set_height(available_bounds.height() - | 
|  | keyboard_bounds.height()); | 
|  | GetInputMethod()->GetTextInputClient()->EnsureCaretInRect(available_bounds); | 
|  | } | 
|  | } | 
|  |  | 
|  | void KeyboardUI::SetController(KeyboardController* controller) { | 
|  | keyboard_controller_ = controller; | 
|  | } | 
|  |  | 
|  | }  // namespace keyboard |