[Extensions] Convert Accelerator modifiers to OS modifiers

This CL fixes a bug where the GlobalShortcutListenerWin was registering
hotkeys using the Accelerator modifiers directly instead of converting
them to Windows modifiers first.

Bug: 941284
Change-Id: Ib2e72182a0608f8ebe1a5874943ac6b12e90365f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1520359
Reviewed-by: Ken Rockot <rockot@google.com>
Commit-Queue: Tommy Steimel <steimel@chromium.org>
Cr-Original-Commit-Position: refs/heads/master@{#640474}(cherry picked from commit e6765601c90f09783f187798bca1d8f872ea091c)
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1525403
Reviewed-by: Tommy Steimel <steimel@chromium.org>
Cr-Commit-Position: refs/branch-heads/3683@{#825}
Cr-Branched-From: e51029943e0a38dd794b73caaf6373d5496ae783-refs/heads/master@{#625896}
diff --git a/chrome/browser/extensions/global_shortcut_listener_win.cc b/chrome/browser/extensions/global_shortcut_listener_win.cc
index eb58c51..f5d0ac4 100644
--- a/chrome/browser/extensions/global_shortcut_listener_win.cc
+++ b/chrome/browser/extensions/global_shortcut_listener_win.cc
@@ -93,12 +93,18 @@
     return success;
   }
 
+  // Convert Accelerator modifiers to OS modifiers.
+  int modifiers = 0;
+  modifiers |= accelerator.IsShiftDown() ? MOD_SHIFT : 0;
+  modifiers |= accelerator.IsCtrlDown() ? MOD_CONTROL : 0;
+  modifiers |= accelerator.IsAltDown() ? MOD_ALT : 0;
+
   // Create an observer that registers a hot key for |accelerator|.
   std::unique_ptr<gfx::SingletonHwndHotKeyObserver> observer =
       gfx::SingletonHwndHotKeyObserver::Create(
           base::BindRepeating(&GlobalShortcutListenerWin::OnWndProc,
                               base::Unretained(this)),
-          accelerator.key_code(), accelerator.modifiers());
+          accelerator.key_code(), modifiers);
 
   if (!observer) {
     // Most likely error: 1409 (Hotkey already registered).