| Index: chrome/browser/chromeos/login/webui_login_view.cc
|
| diff --git a/chrome/browser/chromeos/login/webui_login_view.cc b/chrome/browser/chromeos/login/webui_login_view.cc
|
| index 7b32f79ca52a1a724f57a309cbca40292990c70b..5091cb15285b2938ba7f0d64043f3e038707228c 100644
|
| --- a/chrome/browser/chromeos/login/webui_login_view.cc
|
| +++ b/chrome/browser/chromeos/login/webui_login_view.cc
|
| @@ -23,6 +23,10 @@ namespace {
|
|
|
| const char kViewClassName[] = "browser/chromeos/login/WebUILoginView";
|
|
|
| +// These strings must be kept in sync with handleAccelerator() in oobe.js.
|
| +const char kAccelNameAccessibility[] = "accessibility";
|
| +const char kAccelNameEnrollment[] = "enrollment";
|
| +
|
| } // namespace
|
|
|
| namespace chromeos {
|
| @@ -36,13 +40,14 @@ WebUILoginView::WebUILoginView()
|
| : status_area_(NULL),
|
| profile_(NULL),
|
| webui_login_(NULL),
|
| - status_window_(NULL),
|
| - accel_toggle_accessibility_(
|
| - views::Accelerator(ui::VKEY_Z, false, true, true)) {
|
| - // Accelerator events will be sent to this window until the WebUI dialog gains
|
| - // focus via keyboard or mouse input, so we have to watch for the
|
| - // accessibility hotkey here as well.
|
| - AddAccelerator(accel_toggle_accessibility_);
|
| + status_window_(NULL) {
|
| + accel_map_[views::Accelerator(ui::VKEY_Z, false, true, true)] =
|
| + kAccelNameAccessibility;
|
| + accel_map_[views::Accelerator(ui::VKEY_E, false, true, true)] =
|
| + kAccelNameEnrollment;
|
| +
|
| + for (AccelMap::iterator i(accel_map_.begin()); i != accel_map_.end(); ++i)
|
| + AddAccelerator(i->first);
|
| }
|
|
|
| WebUILoginView::~WebUILoginView() {
|
| @@ -67,11 +72,20 @@ std::string WebUILoginView::GetClassName() const {
|
|
|
| bool WebUILoginView::AcceleratorPressed(
|
| const views::Accelerator& accelerator) {
|
| - if (accelerator == accel_toggle_accessibility_) {
|
| - accessibility::ToggleAccessibility(GetWebUI());
|
| - } else {
|
| + AccelMap::const_iterator entry = accel_map_.find(accelerator);
|
| + if (entry == accel_map_.end())
|
| return false;
|
| +
|
| + if (!webui_login_)
|
| + return true;
|
| +
|
| + WebUI* web_ui = webui_login_->tab_contents()->web_ui();
|
| + if (web_ui) {
|
| + base::StringValue accel_name(entry->second);
|
| + web_ui->CallJavascriptFunction("cr.ui.Oobe.handleAccelerator",
|
| + accel_name);
|
| }
|
| +
|
| return true;
|
| }
|
|
|
| @@ -218,4 +232,9 @@ bool WebUILoginView::TakeFocus(bool reverse) {
|
| return true;
|
| }
|
|
|
| +void WebUILoginView::HandleKeyboardEvent(const NativeWebKeyboardEvent& event) {
|
| + unhandled_keyboard_event_handler_.HandleKeyboardEvent(event,
|
| + GetFocusManager());
|
| +}
|
| +
|
| } // namespace chromeos
|
|
|