OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 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 "ash/display/virtual_keyboard_window_controller.h" | 5 #include "ash/display/virtual_keyboard_window_controller.h" |
6 | 6 |
7 #include "ash/display/display_controller.h" | 7 #include "ash/display/display_controller.h" |
8 #include "ash/display/display_info.h" | 8 #include "ash/display/display_info.h" |
9 #include "ash/display/display_manager.h" | 9 #include "ash/display/display_manager.h" |
10 #include "ash/display/root_window_transformers.h" | 10 #include "ash/display/root_window_transformers.h" |
11 #include "ash/host/window_tree_host_factory.h" | 11 #include "ash/host/ash_window_tree_host.h" |
| 12 #include "ash/host/root_window_transformer.h" |
12 #include "ash/root_window_controller.h" | 13 #include "ash/root_window_controller.h" |
13 #include "ash/root_window_settings.h" | 14 #include "ash/root_window_settings.h" |
14 #include "ash/shell.h" | 15 #include "ash/shell.h" |
15 #include "ash/shell_window_ids.h" | 16 #include "ash/shell_window_ids.h" |
16 #include "base/strings/stringprintf.h" | 17 #include "base/strings/stringprintf.h" |
17 #include "base/strings/utf_string_conversions.h" | 18 #include "base/strings/utf_string_conversions.h" |
18 #include "ui/aura/env.h" | 19 #include "ui/aura/env.h" |
19 #include "ui/aura/root_window_transformer.h" | |
20 #include "ui/aura/window_event_dispatcher.h" | 20 #include "ui/aura/window_event_dispatcher.h" |
21 #include "ui/keyboard/keyboard_controller.h" | 21 #include "ui/keyboard/keyboard_controller.h" |
22 #include "ui/keyboard/keyboard_util.h" | 22 #include "ui/keyboard/keyboard_util.h" |
23 | 23 |
24 namespace ash { | 24 namespace ash { |
25 | 25 |
26 VirtualKeyboardWindowController::VirtualKeyboardWindowController() { | 26 VirtualKeyboardWindowController::VirtualKeyboardWindowController() { |
27 Shell::GetInstance()->AddShellObserver(this); | 27 Shell::GetInstance()->AddShellObserver(this); |
28 } | 28 } |
29 | 29 |
30 VirtualKeyboardWindowController::~VirtualKeyboardWindowController() { | 30 VirtualKeyboardWindowController::~VirtualKeyboardWindowController() { |
31 Shell::GetInstance()->RemoveShellObserver(this); | 31 Shell::GetInstance()->RemoveShellObserver(this); |
32 // Make sure the root window gets deleted before cursor_window_delegate. | 32 // Make sure the root window gets deleted before cursor_window_delegate. |
33 Close(); | 33 Close(); |
34 } | 34 } |
35 | 35 |
36 void VirtualKeyboardWindowController::ActivateKeyboard( | 36 void VirtualKeyboardWindowController::ActivateKeyboard( |
37 keyboard::KeyboardController* keyboard_controller) { | 37 keyboard::KeyboardController* keyboard_controller) { |
38 root_window_controller_->ActivateKeyboard(keyboard_controller); | 38 root_window_controller_->ActivateKeyboard(keyboard_controller); |
39 } | 39 } |
40 | 40 |
41 void VirtualKeyboardWindowController::UpdateWindow( | 41 void VirtualKeyboardWindowController::UpdateWindow( |
42 const DisplayInfo& display_info) { | 42 const DisplayInfo& display_info) { |
43 static int virtual_keyboard_host_count = 0; | 43 static int virtual_keyboard_host_count = 0; |
44 if (!root_window_controller_.get()) { | 44 if (!root_window_controller_.get()) { |
45 const gfx::Rect& bounds_in_native = display_info.bounds_in_native(); | 45 const gfx::Rect& bounds_in_native = display_info.bounds_in_native(); |
46 aura::WindowTreeHost* host = | 46 AshWindowTreeHost* ash_host = AshWindowTreeHost::Create(bounds_in_native); |
47 Shell::GetInstance()->window_tree_host_factory()->CreateWindowTreeHost( | 47 aura::WindowTreeHost* host = ash_host->AsWindowTreeHost(); |
48 bounds_in_native); | 48 |
49 host->window()->SetName( | 49 host->window()->SetName(base::StringPrintf("VirtualKeyboardRootWindow-%d", |
50 base::StringPrintf("VirtualKeyboardRootWindow-%d", | 50 virtual_keyboard_host_count++)); |
51 virtual_keyboard_host_count++)); | |
52 | 51 |
53 // No need to remove WindowTreeHostObserver because the DisplayController | 52 // No need to remove WindowTreeHostObserver because the DisplayController |
54 // outlives the host. | 53 // outlives the host. |
55 host->AddObserver(Shell::GetInstance()->display_controller()); | 54 host->AddObserver(Shell::GetInstance()->display_controller()); |
56 InitRootWindowSettings(host->window())->display_id = display_info.id(); | 55 InitRootWindowSettings(host->window())->display_id = display_info.id(); |
57 host->InitHost(); | 56 host->InitHost(); |
58 RootWindowController::CreateForVirtualKeyboardDisplay(host); | 57 RootWindowController::CreateForVirtualKeyboardDisplay(ash_host); |
59 root_window_controller_.reset(GetRootWindowController(host->window())); | 58 root_window_controller_.reset(GetRootWindowController(host->window())); |
60 root_window_controller_->host()->Show(); | 59 root_window_controller_->GetHost()->Show(); |
61 root_window_controller_->ActivateKeyboard( | 60 root_window_controller_->ActivateKeyboard( |
62 keyboard::KeyboardController::GetInstance()); | 61 keyboard::KeyboardController::GetInstance()); |
63 FlipDisplay(); | 62 FlipDisplay(); |
64 } else { | 63 } else { |
65 aura::WindowTreeHost* host = root_window_controller_->host(); | 64 aura::WindowTreeHost* host = root_window_controller_->GetHost(); |
66 GetRootWindowSettings(host->window())->display_id = display_info.id(); | 65 GetRootWindowSettings(host->window())->display_id = display_info.id(); |
67 host->SetBounds(display_info.bounds_in_native()); | 66 host->SetBounds(display_info.bounds_in_native()); |
68 } | 67 } |
69 } | 68 } |
70 | 69 |
71 void VirtualKeyboardWindowController::Close() { | 70 void VirtualKeyboardWindowController::Close() { |
72 if (root_window_controller_.get()) { | 71 if (root_window_controller_.get()) { |
73 root_window_controller_->host()->RemoveObserver( | 72 root_window_controller_->GetHost()->RemoveObserver( |
74 Shell::GetInstance()->display_controller()); | 73 Shell::GetInstance()->display_controller()); |
75 root_window_controller_->Shutdown(); | 74 root_window_controller_->Shutdown(); |
76 root_window_controller_.reset(); | 75 root_window_controller_.reset(); |
77 } | 76 } |
78 } | 77 } |
79 | 78 |
80 void VirtualKeyboardWindowController::FlipDisplay() { | 79 void VirtualKeyboardWindowController::FlipDisplay() { |
81 DisplayManager* display_manager = Shell::GetInstance()->display_manager(); | 80 DisplayManager* display_manager = Shell::GetInstance()->display_manager(); |
82 if (!display_manager->virtual_keyboard_root_window_enabled()) { | 81 if (!display_manager->virtual_keyboard_root_window_enabled()) { |
83 NOTREACHED() << "Attempting to flip virtual keyboard root window when it " | 82 NOTREACHED() << "Attempting to flip virtual keyboard root window when it " |
84 << "is not enabled."; | 83 << "is not enabled."; |
85 return; | 84 return; |
86 } | 85 } |
87 display_manager->SetDisplayRotation( | 86 display_manager->SetDisplayRotation( |
88 display_manager->non_desktop_display().id(), gfx::Display::ROTATE_180); | 87 display_manager->non_desktop_display().id(), gfx::Display::ROTATE_180); |
89 | 88 |
90 aura::WindowTreeHost* host = root_window_controller_->host(); | 89 aura::WindowTreeHost* host = root_window_controller_->GetHost(); |
91 scoped_ptr<aura::RootWindowTransformer> transformer( | 90 scoped_ptr<RootWindowTransformer> transformer( |
92 CreateRootWindowTransformerForDisplay( | 91 CreateRootWindowTransformerForDisplay( |
93 host->window(), display_manager->non_desktop_display())); | 92 host->window(), display_manager->non_desktop_display())); |
94 host->SetRootWindowTransformer(transformer.Pass()); | 93 root_window_controller_->ash_host()->SetRootWindowTransformer( |
| 94 transformer.Pass()); |
95 } | 95 } |
96 | 96 |
97 void VirtualKeyboardWindowController::OnMaximizeModeStarted() { | 97 void VirtualKeyboardWindowController::OnMaximizeModeStarted() { |
98 keyboard::SetTouchKeyboardEnabled(true); | 98 keyboard::SetTouchKeyboardEnabled(true); |
99 Shell::GetInstance()->CreateKeyboard(); | 99 Shell::GetInstance()->CreateKeyboard(); |
100 } | 100 } |
101 | 101 |
102 void VirtualKeyboardWindowController::OnMaximizeModeEnded() { | 102 void VirtualKeyboardWindowController::OnMaximizeModeEnded() { |
103 keyboard::SetTouchKeyboardEnabled(false); | 103 keyboard::SetTouchKeyboardEnabled(false); |
104 if (!keyboard::IsKeyboardEnabled()) | 104 if (!keyboard::IsKeyboardEnabled()) |
105 Shell::GetInstance()->DeactivateKeyboard(); | 105 Shell::GetInstance()->DeactivateKeyboard(); |
106 } | 106 } |
107 | 107 |
108 } // namespace ash | 108 } // namespace ash |
OLD | NEW |