| Index: chrome/browser/accessibility/accessibility_extension_api.cc
|
| diff --git a/chrome/browser/accessibility/accessibility_extension_api.cc b/chrome/browser/accessibility/accessibility_extension_api.cc
|
| index 62abc25566768286c5c722d2896334b09bbf0b2b..14bffc3fdb6255edc3046b265ea42f63e31f7692 100644
|
| --- a/chrome/browser/accessibility/accessibility_extension_api.cc
|
| +++ b/chrome/browser/accessibility/accessibility_extension_api.cc
|
| @@ -27,6 +27,7 @@
|
| #include "extensions/common/error_utils.h"
|
| #include "extensions/common/image_util.h"
|
| #include "extensions/common/manifest_handlers/background_info.h"
|
| +#include "ui/events/keycodes/keyboard_codes.h"
|
|
|
| #if defined(OS_CHROMEOS)
|
| #include "chrome/browser/chromeos/accessibility/accessibility_manager.h"
|
| @@ -164,3 +165,31 @@ AccessibilityPrivateDarkenScreenFunction::Run() {
|
|
|
| return RespondNow(Error(kErrorNotSupported));
|
| }
|
| +
|
| +#if defined(OS_CHROMEOS)
|
| +ExtensionFunction::ResponseAction
|
| +AccessibilityPrivateSetSwitchAccessKeysFunction::Run() {
|
| + base::ListValue* key_codes_list = nullptr;
|
| + EXTENSION_FUNCTION_VALIDATE(args_->GetSize() == 1);
|
| + EXTENSION_FUNCTION_VALIDATE(args_->GetList(0, &key_codes_list));
|
| +
|
| + // For now, only accept key code if it represents an alphanumeric character.
|
| + std::unordered_set<int> key_codes;
|
| + for (size_t i = 0; i < key_codes_list->GetSize(); ++i) {
|
| + int key_code = 0;
|
| + EXTENSION_FUNCTION_VALIDATE(key_codes_list->GetInteger(i, &key_code));
|
| + EXTENSION_FUNCTION_VALIDATE(
|
| + key_code >= ui::VKEY_0 && key_code <= ui::VKEY_Z);
|
| + key_codes.insert(key_code);
|
| + }
|
| +
|
| + chromeos::AccessibilityManager* manager =
|
| + chromeos::AccessibilityManager::Get();
|
| +
|
| + // AccessibilityManager can be null during system shut down, but no need to
|
| + // return error in this case, so just check that manager is not null.
|
| + if (manager)
|
| + manager->SetSwitchAccessKeys(key_codes);
|
| + return RespondNow(NoArguments());
|
| +}
|
| +#endif // defined (OS_CHROMEOS)
|
|
|