| 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..4e975f3e5d89e23a7080041bbcc0073d6c02f1fc 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,29 @@ AccessibilityPrivateDarkenScreenFunction::Run() {
 | 
|  
 | 
|    return RespondNow(Error(kErrorNotSupported));
 | 
|  }
 | 
| +
 | 
| +#if defined(OS_CHROMEOS)
 | 
| +ExtensionFunction::ResponseAction
 | 
| +AccessibilityPrivateSetSwitchAccessKeysFunction::Run() {
 | 
| +  std::unique_ptr<accessibility_private::SetSwitchAccessKeys::Params> params =
 | 
| +      accessibility_private::SetSwitchAccessKeys::Params::Create(*args_);
 | 
| +  EXTENSION_FUNCTION_VALIDATE(params);
 | 
| +
 | 
| +  // For now, only accept key code if it represents an alphanumeric character.
 | 
| +  std::set<int> key_codes;
 | 
| +  for (auto key_code : params->key_codes) {
 | 
| +    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)
 | 
| 
 |