Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(42)

Side by Side Diff: athena/virtual_keyboard/virtual_keyboard_manager_impl.cc

Issue 863033002: Delete athena/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « athena/virtual_keyboard/public/virtual_keyboard_manager.h ('k') | athena/wm/DEPS » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "athena/virtual_keyboard/public/virtual_keyboard_manager.h"
6
7 #include "athena/screen/public/screen_manager.h"
8 #include "athena/util/container_priorities.h"
9 #include "athena/util/fill_layout_manager.h"
10 #include "base/bind.h"
11 #include "base/memory/singleton.h"
12 #include "base/values.h"
13 #include "content/public/browser/browser_context.h"
14 #include "ui/aura/client/aura_constants.h"
15 #include "ui/aura/layout_manager.h"
16 #include "ui/aura/window.h"
17 #include "ui/keyboard/keyboard.h"
18 #include "ui/keyboard/keyboard_constants.h"
19 #include "ui/keyboard/keyboard_controller.h"
20 #include "ui/keyboard/keyboard_controller_proxy.h"
21 #include "ui/keyboard/keyboard_util.h"
22
23 namespace athena {
24
25 namespace {
26
27 VirtualKeyboardManager* instance;
28
29 // A very basic and simple implementation of KeyboardControllerProxy.
30 class BasicKeyboardControllerProxy : public keyboard::KeyboardControllerProxy {
31 public:
32 BasicKeyboardControllerProxy(content::BrowserContext* context,
33 aura::Window* root_window)
34 : keyboard::KeyboardControllerProxy(context), root_window_(root_window) {}
35 ~BasicKeyboardControllerProxy() override {}
36
37 // keyboard::KeyboardControllerProxy:
38 virtual ui::InputMethod* GetInputMethod() override {
39 ui::InputMethod* input_method =
40 root_window_->GetProperty(aura::client::kRootWindowInputMethodKey);
41 return input_method;
42 }
43
44 virtual void RequestAudioInput(
45 content::WebContents* web_contents,
46 const content::MediaStreamRequest& request,
47 const content::MediaResponseCallback& callback) override {}
48
49 virtual void SetUpdateInputType(ui::TextInputType type) override {}
50
51 private:
52 aura::Window* root_window_;
53
54 DISALLOW_COPY_AND_ASSIGN(BasicKeyboardControllerProxy);
55 };
56
57 class VirtualKeyboardManagerImpl : public VirtualKeyboardManager {
58 public:
59 explicit VirtualKeyboardManagerImpl(content::BrowserContext* browser_context)
60 : browser_context_(browser_context), container_(nullptr) {
61 CHECK(!instance);
62 instance = this;
63 Init();
64 }
65
66 ~VirtualKeyboardManagerImpl() override {
67 CHECK_EQ(this, instance);
68 instance = nullptr;
69
70 keyboard::KeyboardController::ResetInstance(nullptr);
71 }
72
73 private:
74 void Init() {
75 athena::ScreenManager::ContainerParams params("VirtualKeyboardContainer",
76 CP_VIRTUAL_KEYBOARD);
77 container_ = athena::ScreenManager::Get()->CreateContainer(params);
78 container_->SetLayoutManager(new FillLayoutManager(container_));
79
80 keyboard::KeyboardController* controller = new keyboard::KeyboardController(
81 new BasicKeyboardControllerProxy(browser_context_,
82 container_->GetRootWindow()));
83 // ResetInstance takes ownership.
84 keyboard::KeyboardController::ResetInstance(controller);
85 aura::Window* kb_container = controller->GetContainerWindow();
86 FillLayoutManager::SetAlwaysFill(kb_container);
87 container_->AddChild(kb_container);
88 }
89
90 content::BrowserContext* browser_context_;
91 aura::Window* container_;
92
93 DISALLOW_COPY_AND_ASSIGN(VirtualKeyboardManagerImpl);
94 };
95
96 } // namespace
97
98 // static
99 VirtualKeyboardManager* VirtualKeyboardManager::Create(
100 content::BrowserContext* browser_context) {
101 CHECK(!instance);
102 keyboard::InitializeKeyboard();
103 keyboard::SetTouchKeyboardEnabled(true);
104 keyboard::InitializeWebUIBindings();
105
106 new VirtualKeyboardManagerImpl(browser_context);
107 CHECK(instance);
108 return instance;
109 }
110
111 VirtualKeyboardManager* VirtualKeyboardManager::Get() {
112 return instance;
113 }
114
115 void VirtualKeyboardManager::Shutdown() {
116 CHECK(instance);
117 delete instance;
118 CHECK(!instance);
119 }
120
121 } // namespace athena
OLDNEW
« no previous file with comments | « athena/virtual_keyboard/public/virtual_keyboard_manager.h ('k') | athena/wm/DEPS » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698