Index: chrome/browser/extensions/extensions_ui.cc |
=================================================================== |
--- chrome/browser/extensions/extensions_ui.cc (revision 29288) |
+++ chrome/browser/extensions/extensions_ui.cc (working copy) |
@@ -8,6 +8,7 @@ |
#include "app/resource_bundle.h" |
#include "base/string_util.h" |
#include "base/thread.h" |
+#include "chrome/browser/browser.h" |
#include "chrome/browser/browser_process.h" |
#include "chrome/browser/chrome_thread.h" |
#include "chrome/browser/debugger/devtools_manager.h" |
@@ -95,6 +96,8 @@ |
NewCallback(this, &ExtensionsDOMHandler::HandleEnableMessage)); |
dom_ui_->RegisterMessageCallback("uninstall", |
NewCallback(this, &ExtensionsDOMHandler::HandleUninstallMessage)); |
+ dom_ui_->RegisterMessageCallback("options", |
+ NewCallback(this, &ExtensionsDOMHandler::HandleOptionsMessage)); |
dom_ui_->RegisterMessageCallback("load", |
NewCallback(this, &ExtensionsDOMHandler::HandleLoadMessage)); |
dom_ui_->RegisterMessageCallback("pack", |
@@ -198,6 +201,22 @@ |
extensions_service_->UninstallExtension(extension_id, false); |
} |
+void ExtensionsDOMHandler::HandleOptionsMessage(const Value* value) { |
+ CHECK(value->IsType(Value::TYPE_LIST)); |
+ const ListValue* list = static_cast<const ListValue*>(value); |
+ CHECK(list->GetSize() == 1); |
+ std::string extension_id; |
+ CHECK(list->GetString(0, &extension_id)); |
+ Extension *extension = extensions_service_->GetExtensionById(extension_id); |
+ if (!extension || extension->options_url().is_empty()) { |
+ return; |
+ } |
+ Browser* browser = Browser::GetOrCreateTabbedBrowser(dom_ui_->GetProfile()); |
+ CHECK(browser); |
+ browser->OpenURL(extension->options_url(), GURL(), NEW_FOREGROUND_TAB, |
+ PageTransition::LINK); |
+} |
+ |
void ExtensionsDOMHandler::HandleLoadMessage(const Value* value) { |
std::string string_path; |
CHECK(value->IsType(Value::TYPE_LIST)); |
@@ -399,6 +418,9 @@ |
extension_data->SetString(L"description", extension->description()); |
extension_data->SetString(L"version", extension->version()->GetString()); |
extension_data->SetBoolean(L"enabled", enabled); |
+ if (!extension->options_url().is_empty()) { |
+ extension_data->SetString(L"options_url", extension->options_url().spec()); |
+ } |
// Add list of content_script detail DictionaryValues |
ListValue *content_script_list = new ListValue(); |