134680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
234680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
334680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)// found in the LICENSE file.
434680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)
534680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)#include "ash/wm/virtual_keyboard_container_layout_manager.h"
634680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)
734680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)#include "ash/shell_window_ids.h"
834680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)#include "ui/aura/window.h"
934680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)#include "ui/keyboard/keyboard_controller.h"
1034680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)
1134680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)namespace ash {
1234680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)
1334680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)////////////////////////////////////////////////////////////////////////////////
1434680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)// VirtualKeyboardContainerLayoutManager, public:
1534680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)
1634680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)VirtualKeyboardContainerLayoutManager::VirtualKeyboardContainerLayoutManager(
1734680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)    aura::Window* container)
1834680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)    : SnapToPixelLayoutManager(container),
1934680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)      parent_container_(container) {}
2034680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)
2134680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)VirtualKeyboardContainerLayoutManager::~VirtualKeyboardContainerLayoutManager()
2234680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles){
2334680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)}
2434680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)
2534680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)////////////////////////////////////////////////////////////////////////////////
2634680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)// VirtualKeyboardContainerLayoutManager, aura::LayoutManager implementation:
2734680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)
2834680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)void VirtualKeyboardContainerLayoutManager::OnWindowResized() {
2934680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)  keyboard::KeyboardController* keyboard_controller =
3034680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)      keyboard::KeyboardController::GetInstance();
3134680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)  if (!keyboard_controller)
3234680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)    return;
3334680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)
3434680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)  // The layout manager for the root window propagates a resize to its
3534680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)  // immediate children and grandchildren, but stops there. The keyboard
3634680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)  // container is three levels deep, and therefore needs to be explicitly
3734680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)  // updated when its parent is resized.
3834680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)  aura::Window* keyboard_container =
3934680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)      keyboard_controller->GetContainerWindow();
4034680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)  if (keyboard_container)
4134680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)    keyboard_container->SetBounds(parent_container_->bounds());
4234680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)}
4334680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)
4434680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)}  // namespace ash
45