Index: chrome/common/extensions/api/input_ime/input_components_handler.cc |
diff --git a/chrome/common/extensions/api/input_ime/input_components_handler.cc b/chrome/common/extensions/api/input_ime/input_components_handler.cc |
index 67a1c95d9374a1ea12016d6fabf22f14814d0cf0..2fe6bf006708e8bc847a6fbb9b67cdbf23f3f8af 100644 |
--- a/chrome/common/extensions/api/input_ime/input_components_handler.cc |
+++ b/chrome/common/extensions/api/input_ime/input_components_handler.cc |
@@ -64,6 +64,7 @@ bool InputComponentsHandler::Parse(Extension* extension, |
std::set<std::string> layouts; |
std::string shortcut_keycode_str; |
GURL input_view_url; |
+ GURL options_page_url; |
bool shortcut_alt = false; |
bool shortcut_ctrl = false; |
bool shortcut_shift = false; |
@@ -194,6 +195,22 @@ bool InputComponentsHandler::Parse(Extension* extension, |
} |
} |
+ // Get input_components[i].options_page_url. |
+ // Note: 'options_page' is optional in manifest. |
+ std::string options_page_str; |
+ if (module_value->GetString(keys::kImeOptionsPage, &options_page_str)) { |
+ options_page_url = extension->GetResourceURL(options_page_str); |
+ if (!options_page_url.is_valid()) { |
+ *error = ErrorUtils::FormatErrorMessageUTF16( |
+ errors::kInvalidOptionsPage, |
+ base::IntToString(i)); |
+ return false; |
+ } |
+ } else { |
+ // Fall back to extension's options page for backward compatibility. |
+ options_page_url = extensions::ManifestURL::GetOptionsPage(extension); |
+ } |
+ |
info->input_components.push_back(InputComponentInfo()); |
info->input_components.back().name = name_str; |
info->input_components.back().type = type; |
@@ -206,8 +223,7 @@ bool InputComponentsHandler::Parse(Extension* extension, |
info->input_components.back().shortcut_alt = shortcut_alt; |
info->input_components.back().shortcut_ctrl = shortcut_ctrl; |
info->input_components.back().shortcut_shift = shortcut_shift; |
- info->input_components.back().options_page_url = |
- extensions::ManifestURL::GetOptionsPage(extension); |
+ info->input_components.back().options_page_url = options_page_url; |
info->input_components.back().input_view_url = input_view_url; |
} |
extension->SetManifestData(keys::kInputComponents, info.release()); |