keyboard_util.cc 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  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
  3. // found in the LICENSE file.
  4. #include "ash/keyboard/ui/keyboard_util.h"
  5. #include <string>
  6. #include "ash/keyboard/ui/keyboard_ui_controller.h"
  7. #include "ash/public/cpp/keyboard/keyboard_switches.h"
  8. #include "base/command_line.h"
  9. #include "base/metrics/histogram_macros.h"
  10. namespace keyboard {
  11. namespace {
  12. // Until src/chrome is fully transitioned to use ChromeKeyboardControllerClient
  13. // we need to test whether KeyboardController exists; it is null in OopMash.
  14. // TODO(stevenjb): Remove remaining calls from src/chrome.
  15. // https://crbug.com/84332.
  16. bool GetFlag(KeyboardEnableFlag flag) {
  17. return KeyboardUIController::HasInstance()
  18. ? KeyboardUIController::Get()->IsEnableFlagSet(flag)
  19. : false;
  20. }
  21. void SetOrClearEnableFlag(KeyboardEnableFlag flag, bool enabled) {
  22. // This function can get called asynchronously after the instance has been
  23. // destroyed, so return early if there is no instance.
  24. if (!KeyboardUIController::HasInstance())
  25. return;
  26. auto* controller = KeyboardUIController::Get();
  27. if (enabled)
  28. controller->SetEnableFlag(flag);
  29. else
  30. controller->ClearEnableFlag(flag);
  31. }
  32. } // namespace
  33. void SetAccessibilityKeyboardEnabled(bool enabled) {
  34. SetOrClearEnableFlag(KeyboardEnableFlag::kAccessibilityEnabled, enabled);
  35. }
  36. bool GetAccessibilityKeyboardEnabled() {
  37. return GetFlag(KeyboardEnableFlag::kAccessibilityEnabled);
  38. }
  39. void SetKeyboardEnabledFromShelf(bool enabled) {
  40. SetOrClearEnableFlag(KeyboardEnableFlag::kShelfEnabled, enabled);
  41. }
  42. bool GetKeyboardEnabledFromShelf() {
  43. return GetFlag(KeyboardEnableFlag::kShelfEnabled);
  44. }
  45. void SetTouchKeyboardEnabled(bool enabled) {
  46. SetOrClearEnableFlag(KeyboardEnableFlag::kTouchEnabled, enabled);
  47. }
  48. bool GetTouchKeyboardEnabled() {
  49. return GetFlag(KeyboardEnableFlag::kTouchEnabled);
  50. }
  51. bool IsKeyboardEnabled() {
  52. return KeyboardUIController::Get()->IsEnabled();
  53. }
  54. } // namespace keyboard