| 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_util.h" | 5 #include "ui/keyboard/keyboard_util.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
| 10 #include "base/lazy_instance.h" | 10 #include "base/lazy_instance.h" |
| 11 #include "base/logging.h" | 11 #include "base/logging.h" |
| 12 #include "base/metrics/histogram_macros.h" | 12 #include "base/metrics/histogram_macros.h" |
| 13 #include "base/strings/string16.h" | 13 #include "base/strings/string16.h" |
| 14 #include "ui/aura/client/aura_constants.h" | 14 #include "ui/aura/client/aura_constants.h" |
| 15 #include "ui/aura/window_tree_host.h" | 15 #include "ui/aura/window_tree_host.h" |
| 16 #include "ui/base/ime/input_method.h" | 16 #include "ui/base/ime/input_method.h" |
| 17 #include "ui/base/ime/input_method_base.h" | 17 #include "ui/base/ime/input_method_base.h" |
| 18 #include "ui/base/ime/text_input_client.h" | 18 #include "ui/base/ime/text_input_client.h" |
| 19 #include "ui/base/ime/text_input_flags.h" | 19 #include "ui/base/ime/text_input_flags.h" |
| 20 #include "ui/events/event_processor.h" | 20 #include "ui/events/event_sink.h" |
| 21 #include "ui/events/event_utils.h" | 21 #include "ui/events/event_utils.h" |
| 22 #include "ui/events/keycodes/dom/dom_code.h" | 22 #include "ui/events/keycodes/dom/dom_code.h" |
| 23 #include "ui/events/keycodes/dom/dom_key.h" | 23 #include "ui/events/keycodes/dom/dom_key.h" |
| 24 #include "ui/events/keycodes/dom/keycode_converter.h" | 24 #include "ui/events/keycodes/dom/keycode_converter.h" |
| 25 #include "ui/events/keycodes/keyboard_code_conversion.h" | 25 #include "ui/events/keycodes/keyboard_code_conversion.h" |
| 26 #include "ui/keyboard/keyboard_controller.h" | 26 #include "ui/keyboard/keyboard_controller.h" |
| 27 #include "ui/keyboard/keyboard_switches.h" | 27 #include "ui/keyboard/keyboard_switches.h" |
| 28 #include "ui/keyboard/keyboard_ui.h" | 28 #include "ui/keyboard/keyboard_ui.h" |
| 29 #include "ui/keyboard/scoped_keyboard_disabler.h" | 29 #include "ui/keyboard/scoped_keyboard_disabler.h" |
| 30 | 30 |
| 31 namespace { | 31 namespace { |
| 32 | 32 |
| 33 const char kKeyDown[] ="keydown"; | 33 const char kKeyDown[] ="keydown"; |
| 34 const char kKeyUp[] = "keyup"; | 34 const char kKeyUp[] = "keyup"; |
| 35 | 35 |
| 36 void SendProcessKeyEvent(ui::EventType type, | 36 void SendProcessKeyEvent(ui::EventType type, |
| 37 aura::WindowTreeHost* host) { | 37 aura::WindowTreeHost* host) { |
| 38 ui::KeyEvent event(type, ui::VKEY_PROCESSKEY, ui::DomCode::NONE, | 38 ui::KeyEvent event(type, ui::VKEY_PROCESSKEY, ui::DomCode::NONE, |
| 39 ui::EF_IS_SYNTHESIZED, ui::DomKey::PROCESS, | 39 ui::EF_IS_SYNTHESIZED, ui::DomKey::PROCESS, |
| 40 ui::EventTimeForNow()); | 40 ui::EventTimeForNow()); |
| 41 ui::EventDispatchDetails details = | 41 ui::EventDispatchDetails details = |
| 42 host->event_processor()->OnEventFromSource(&event); | 42 host->event_sink()->OnEventFromSource(&event); |
| 43 CHECK(!details.dispatcher_destroyed); | 43 CHECK(!details.dispatcher_destroyed); |
| 44 } | 44 } |
| 45 | 45 |
| 46 base::LazyInstance<base::Time>::DestructorAtExit g_keyboard_load_time_start = | 46 base::LazyInstance<base::Time>::DestructorAtExit g_keyboard_load_time_start = |
| 47 LAZY_INSTANCE_INITIALIZER; | 47 LAZY_INSTANCE_INITIALIZER; |
| 48 | 48 |
| 49 bool g_accessibility_keyboard_enabled = false; | 49 bool g_accessibility_keyboard_enabled = false; |
| 50 | 50 |
| 51 bool g_hotrod_keyboard_enabled = false; | 51 bool g_hotrod_keyboard_enabled = false; |
| 52 | 52 |
| (...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 260 // First deal with the x movement. | 260 // First deal with the x movement. |
| 261 if (domcodex != ui::DomCode::NONE) { | 261 if (domcodex != ui::DomCode::NONE) { |
| 262 ui::KeyboardCode codex = ui::VKEY_UNKNOWN; | 262 ui::KeyboardCode codex = ui::VKEY_UNKNOWN; |
| 263 ui::DomKey domkeyx = ui::DomKey::NONE; | 263 ui::DomKey domkeyx = ui::DomKey::NONE; |
| 264 ignore_result(DomCodeToUsLayoutDomKey(domcodex, ui::EF_NONE, &domkeyx, | 264 ignore_result(DomCodeToUsLayoutDomKey(domcodex, ui::EF_NONE, &domkeyx, |
| 265 &codex)); | 265 &codex)); |
| 266 ui::KeyEvent press_event(ui::ET_KEY_PRESSED, codex, domcodex, | 266 ui::KeyEvent press_event(ui::ET_KEY_PRESSED, codex, domcodex, |
| 267 modifier_flags, domkeyx, | 267 modifier_flags, domkeyx, |
| 268 ui::EventTimeForNow()); | 268 ui::EventTimeForNow()); |
| 269 ui::EventDispatchDetails details = | 269 ui::EventDispatchDetails details = |
| 270 host->event_processor()->OnEventFromSource(&press_event); | 270 host->event_sink()->OnEventFromSource(&press_event); |
| 271 CHECK(!details.dispatcher_destroyed); | 271 CHECK(!details.dispatcher_destroyed); |
| 272 ui::KeyEvent release_event(ui::ET_KEY_RELEASED, codex, domcodex, | 272 ui::KeyEvent release_event(ui::ET_KEY_RELEASED, codex, domcodex, |
| 273 modifier_flags, domkeyx, | 273 modifier_flags, domkeyx, |
| 274 ui::EventTimeForNow()); | 274 ui::EventTimeForNow()); |
| 275 details = host->event_processor()->OnEventFromSource(&release_event); | 275 details = host->event_sink()->OnEventFromSource(&release_event); |
| 276 CHECK(!details.dispatcher_destroyed); | 276 CHECK(!details.dispatcher_destroyed); |
| 277 } | 277 } |
| 278 | 278 |
| 279 // Then deal with the y movement. | 279 // Then deal with the y movement. |
| 280 if (domcodey != ui::DomCode::NONE) { | 280 if (domcodey != ui::DomCode::NONE) { |
| 281 ui::KeyboardCode codey = ui::VKEY_UNKNOWN; | 281 ui::KeyboardCode codey = ui::VKEY_UNKNOWN; |
| 282 ui::DomKey domkeyy = ui::DomKey::NONE; | 282 ui::DomKey domkeyy = ui::DomKey::NONE; |
| 283 ignore_result(DomCodeToUsLayoutDomKey(domcodey, ui::EF_NONE, &domkeyy, | 283 ignore_result(DomCodeToUsLayoutDomKey(domcodey, ui::EF_NONE, &domkeyy, |
| 284 &codey)); | 284 &codey)); |
| 285 ui::KeyEvent press_event(ui::ET_KEY_PRESSED, codey, domcodey, | 285 ui::KeyEvent press_event(ui::ET_KEY_PRESSED, codey, domcodey, |
| 286 modifier_flags, domkeyy, | 286 modifier_flags, domkeyy, |
| 287 ui::EventTimeForNow()); | 287 ui::EventTimeForNow()); |
| 288 ui::EventDispatchDetails details = | 288 ui::EventDispatchDetails details = |
| 289 host->event_processor()->OnEventFromSource(&press_event); | 289 host->event_sink()->OnEventFromSource(&press_event); |
| 290 CHECK(!details.dispatcher_destroyed); | 290 CHECK(!details.dispatcher_destroyed); |
| 291 ui::KeyEvent release_event(ui::ET_KEY_RELEASED, codey, domcodey, | 291 ui::KeyEvent release_event(ui::ET_KEY_RELEASED, codey, domcodey, |
| 292 modifier_flags, domkeyy, | 292 modifier_flags, domkeyy, |
| 293 ui::EventTimeForNow()); | 293 ui::EventTimeForNow()); |
| 294 details = host->event_processor()->OnEventFromSource(&release_event); | 294 details = host->event_sink()->OnEventFromSource(&release_event); |
| 295 CHECK(!details.dispatcher_destroyed); | 295 CHECK(!details.dispatcher_destroyed); |
| 296 } | 296 } |
| 297 return true; | 297 return true; |
| 298 } | 298 } |
| 299 | 299 |
| 300 bool SendKeyEvent(const std::string type, | 300 bool SendKeyEvent(const std::string type, |
| 301 int key_value, | 301 int key_value, |
| 302 int key_code, | 302 int key_code, |
| 303 std::string key_name, | 303 std::string key_name, |
| 304 int modifiers, | 304 int modifiers, |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 351 CHECK(dom_code != ui::DomCode::NONE); | 351 CHECK(dom_code != ui::DomCode::NONE); |
| 352 ui::KeyEvent event( | 352 ui::KeyEvent event( |
| 353 event_type, | 353 event_type, |
| 354 code, | 354 code, |
| 355 dom_code, | 355 dom_code, |
| 356 modifiers); | 356 modifiers); |
| 357 if (input_method) { | 357 if (input_method) { |
| 358 input_method->DispatchKeyEvent(&event); | 358 input_method->DispatchKeyEvent(&event); |
| 359 } else { | 359 } else { |
| 360 ui::EventDispatchDetails details = | 360 ui::EventDispatchDetails details = |
| 361 host->event_processor()->OnEventFromSource(&event); | 361 host->event_sink()->OnEventFromSource(&event); |
| 362 CHECK(!details.dispatcher_destroyed); | 362 CHECK(!details.dispatcher_destroyed); |
| 363 } | 363 } |
| 364 } | 364 } |
| 365 return true; | 365 return true; |
| 366 } | 366 } |
| 367 | 367 |
| 368 void MarkKeyboardLoadStarted() { | 368 void MarkKeyboardLoadStarted() { |
| 369 if (!g_keyboard_load_time_start.Get().ToInternalValue()) | 369 if (!g_keyboard_load_time_start.Get().ToInternalValue()) |
| 370 g_keyboard_load_time_start.Get() = base::Time::Now(); | 370 g_keyboard_load_time_start.Get() = base::Time::Now(); |
| 371 } | 371 } |
| (...skipping 23 matching lines...) Expand all Loading... |
| 395 "VirtualKeyboard.KeyboardControlEvent", | 395 "VirtualKeyboard.KeyboardControlEvent", |
| 396 event, | 396 event, |
| 397 keyboard::KEYBOARD_CONTROL_MAX); | 397 keyboard::KEYBOARD_CONTROL_MAX); |
| 398 } | 398 } |
| 399 | 399 |
| 400 void SetOverscrollEnabledWithAccessibilityKeyboard(bool enabled) { | 400 void SetOverscrollEnabledWithAccessibilityKeyboard(bool enabled) { |
| 401 g_overscroll_enabled_with_accessibility_keyboard = enabled; | 401 g_overscroll_enabled_with_accessibility_keyboard = enabled; |
| 402 } | 402 } |
| 403 | 403 |
| 404 } // namespace keyboard | 404 } // namespace keyboard |
| OLD | NEW |