Chromium Code Reviews| Index: chrome/browser/ui/webui/chromeos/login/network_dropdown.cc |
| diff --git a/chrome/browser/ui/webui/chromeos/login/network_dropdown.cc b/chrome/browser/ui/webui/chromeos/login/network_dropdown.cc |
| index 274e7d0afbea9cd2ad71cc91cfa814f98f4575ff..d48647f69f5ef4b921d77efd6d74e39426f99143 100644 |
| --- a/chrome/browser/ui/webui/chromeos/login/network_dropdown.cc |
| +++ b/chrome/browser/ui/webui/chromeos/login/network_dropdown.cc |
| @@ -6,6 +6,7 @@ |
| #include <string> |
| +#include "base/strings/utf_string_conversions.h" |
| #include "base/time/time.h" |
| #include "base/values.h" |
| #include "chrome/browser/chromeos/login/ui/login_display_host.h" |
| @@ -26,6 +27,16 @@ namespace { |
| // scan. |
| const int kNetworkScanIntervalSecs = 60; |
| +base::string16 UnescapeAmpersands(const base::string16& input) { |
| + base::string16 str = input; |
| + size_t found = str.find(base::ASCIIToUTF16("&&")); |
| + while (found != base::string16::npos) { |
| + str.replace(found, 2, base::ASCIIToUTF16("&")); |
| + found = str.find(base::ASCIIToUTF16("&&"), found + 1); |
| + } |
| + return str; |
| +} |
| + |
| } // namespace |
| namespace chromeos { |
| @@ -86,7 +97,7 @@ base::ListValue* NetworkMenuWebUI::ConvertMenuModel(ui::MenuModel* model) { |
| id = model->GetCommandIdAt(i); |
| base::DictionaryValue* item = new base::DictionaryValue(); |
| item->SetInteger("id", id); |
| - item->SetString("label", model->GetLabelAt(i)); |
| + item->SetString("label", UnescapeAmpersands(model->GetLabelAt(i))); |
|
Nikita (slow)
2015/04/28 11:58:51
Are these escaped while being part of MenuModel?
Nikita (slow)
2015/04/28 11:58:51
ReplaceSubstringsAfterOffset(&string, 0, "&&", "&"
Dmitry Polukhin
2015/04/28 13:23:09
Done. Yes this escaping is required for real MenuM
|
| gfx::Image icon; |
| if (model->GetIconAt(i, &icon)) { |
| SkBitmap icon_bitmap = icon.ToImageSkia()->GetRepresentation( |