Commit ea4cad00 authored by Etienne Bergeron's avatar Etienne Bergeron Committed by Commit Bot

Fix invalid nul character in KeyCode accelerator

A recent change in RenderText caused a regression while showing
command accelerators on MAC (see: http://crbug.com/1016676).

The change in RenderText is replacing the embedded control characters
with their equivalent unicode visual pictures. This change should not
cause that regression.

By digging into the code, we found that some strings are incorrectly
providing string with embedded nul character. These controls characters
doesn't have 'glyphs' in font and will triggers expensive font fallbacks
before faling to find the appropriate font.

This CL is removing the leading \0 character from
Accelerator::KeyCodeToMacSymbol(...)

R=robliao@chromium.org,ellyjones@chromium.org
CC=thomasanderson@chromium.org

Bug: 1016676
Change-Id: Iaf3de8e5aec4de4e63e09f1071bf27768d0762d8
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1876468Reviewed-by: default avatarAlexei Svitkine <asvitkine@chromium.org>
Reviewed-by: default avatarElly Fong-Jones <ellyjones@chromium.org>
Reviewed-by: default avatarScott Violet <sky@chromium.org>
Auto-Submit: Etienne Bergeron <etienneb@chromium.org>
Commit-Queue: Etienne Bergeron <etienneb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#708799}
parent 51a3f4b6
...@@ -231,31 +231,31 @@ base::string16 Accelerator::GetShortcutText() const { ...@@ -231,31 +231,31 @@ base::string16 Accelerator::GetShortcutText() const {
base::string16 Accelerator::KeyCodeToMacSymbol() const { base::string16 Accelerator::KeyCodeToMacSymbol() const {
switch (key_code_) { switch (key_code_) {
case VKEY_CAPITAL: case VKEY_CAPITAL:
return base::string16({0x21ea, 0}); return base::string16({0x21ea});
case VKEY_RETURN: case VKEY_RETURN:
return base::string16({0x2324, 0}); return base::string16({0x2324});
case VKEY_BACK: case VKEY_BACK:
return base::string16({0x232b, 0}); return base::string16({0x232b});
case VKEY_ESCAPE: case VKEY_ESCAPE:
return base::string16({0x238b, 0}); return base::string16({0x238b});
case VKEY_RIGHT: case VKEY_RIGHT:
return base::string16({0x2192, 0}); return base::string16({0x2192});
case VKEY_LEFT: case VKEY_LEFT:
return base::string16({0x2190, 0}); return base::string16({0x2190});
case VKEY_UP: case VKEY_UP:
return base::string16({0x2191, 0}); return base::string16({0x2191});
case VKEY_DOWN: case VKEY_DOWN:
return base::string16({0x2193, 0}); return base::string16({0x2193});
case VKEY_PRIOR: case VKEY_PRIOR:
return base::string16({0x21de, 0}); return base::string16({0x21de});
case VKEY_NEXT: case VKEY_NEXT:
return base::string16({0x21df, 0}); return base::string16({0x21df});
case VKEY_HOME: case VKEY_HOME:
return base::string16({0x2196, 0}); return base::string16({0x2196});
case VKEY_END: case VKEY_END:
return base::string16({0x2198, 0}); return base::string16({0x2198});
case VKEY_TAB: case VKEY_TAB:
return base::string16({0x21e5, 0}); return base::string16({0x21e5});
// Mac has a shift-tab icon (0x21e4) but we don't use it. // Mac has a shift-tab icon (0x21e4) but we don't use it.
// "Space" and some other keys are written out; fall back to KeyCodeToName() // "Space" and some other keys are written out; fall back to KeyCodeToName()
// for those (and any other unhandled keys). // for those (and any other unhandled keys).
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment