| Index: chrome/browser/extensions/api/extension_action/extension_action_api.cc
|
| diff --git a/chrome/browser/extensions/api/extension_action/extension_action_api.cc b/chrome/browser/extensions/api/extension_action/extension_action_api.cc
|
| index 1446db771b5a5945e40ec8a63c20bf5daf1110c2..a34dc7e3f6324748e4c81c5da0b78df2554d2c54 100644
|
| --- a/chrome/browser/extensions/api/extension_action/extension_action_api.cc
|
| +++ b/chrome/browser/extensions/api/extension_action/extension_action_api.cc
|
| @@ -638,36 +638,31 @@ void ExtensionActionFunction::NotifySystemIndicatorChange() {
|
| bool ExtensionActionFunction::ParseCSSColorString(
|
| const std::string& color_string,
|
| SkColor* result) {
|
| - std::string formatted_color = "#";
|
| + std::string formatted_color;
|
| // Check the string for incorrect formatting.
|
| - if (color_string[0] != '#')
|
| + if (color_string.empty() || color_string[0] != '#')
|
| return false;
|
|
|
| // Convert the string from #FFF format to #FFFFFF format.
|
| if (color_string.length() == 4) {
|
| - for (size_t i = 1; i < color_string.length(); i++) {
|
| + for (size_t i = 1; i < 4; ++i) {
|
| formatted_color += color_string[i];
|
| formatted_color += color_string[i];
|
| }
|
| + } else if (color_string.length() == 7) {
|
| + formatted_color = color_string.substr(1, 6);
|
| } else {
|
| - formatted_color = color_string;
|
| - }
|
| -
|
| - if (formatted_color.length() != 7)
|
| return false;
|
| + }
|
|
|
| // Convert the string to an integer and make sure it is in the correct value
|
| // range.
|
| - int color_ints[3] = {0};
|
| - for (int i = 0; i < 3; i++) {
|
| - if (!base::HexStringToInt(formatted_color.substr(1 + (2 * i), 2),
|
| - color_ints + i))
|
| - return false;
|
| - if (color_ints[i] > 255 || color_ints[i] < 0)
|
| - return false;
|
| - }
|
| + std::vector<uint8> color_bytes;
|
| + if (!base::HexStringToBytes(formatted_color, &color_bytes))
|
| + return false;
|
|
|
| - *result = SkColorSetARGB(255, color_ints[0], color_ints[1], color_ints[2]);
|
| + DCHECK_EQ(3u, color_bytes.size());
|
| + *result = SkColorSetARGB(255, color_bytes[0], color_bytes[1], color_bytes[2]);
|
| return true;
|
| }
|
|
|
|
|