OLD | NEW |
1 // Copyright (c) 2006-2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2009 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/extensions/extensions_ui.h" | 5 #include "chrome/browser/extensions/extensions_ui.h" |
6 | 6 |
7 #include "app/l10n_util.h" | 7 #include "app/l10n_util.h" |
8 #include "app/resource_bundle.h" | 8 #include "app/resource_bundle.h" |
9 #include "base/string_util.h" | 9 #include "base/string_util.h" |
10 #include "base/thread.h" | 10 #include "base/thread.h" |
| 11 #include "chrome/browser/browser.h" |
11 #include "chrome/browser/browser_process.h" | 12 #include "chrome/browser/browser_process.h" |
12 #include "chrome/browser/chrome_thread.h" | 13 #include "chrome/browser/chrome_thread.h" |
13 #include "chrome/browser/debugger/devtools_manager.h" | 14 #include "chrome/browser/debugger/devtools_manager.h" |
14 #include "chrome/browser/extensions/extension_function_dispatcher.h" | 15 #include "chrome/browser/extensions/extension_function_dispatcher.h" |
15 #include "chrome/browser/extensions/extension_message_service.h" | 16 #include "chrome/browser/extensions/extension_message_service.h" |
16 #include "chrome/browser/extensions/extensions_service.h" | 17 #include "chrome/browser/extensions/extensions_service.h" |
17 #include "chrome/browser/extensions/extension_updater.h" | 18 #include "chrome/browser/extensions/extension_updater.h" |
18 #include "chrome/browser/profile.h" | 19 #include "chrome/browser/profile.h" |
19 #include "chrome/browser/renderer_host/render_process_host.h" | 20 #include "chrome/browser/renderer_host/render_process_host.h" |
20 #include "chrome/browser/renderer_host/render_widget_host.h" | 21 #include "chrome/browser/renderer_host/render_widget_host.h" |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
88 dom_ui_->RegisterMessageCallback("requestExtensionsData", | 89 dom_ui_->RegisterMessageCallback("requestExtensionsData", |
89 NewCallback(this, &ExtensionsDOMHandler::HandleRequestExtensionsData)); | 90 NewCallback(this, &ExtensionsDOMHandler::HandleRequestExtensionsData)); |
90 dom_ui_->RegisterMessageCallback("inspect", | 91 dom_ui_->RegisterMessageCallback("inspect", |
91 NewCallback(this, &ExtensionsDOMHandler::HandleInspectMessage)); | 92 NewCallback(this, &ExtensionsDOMHandler::HandleInspectMessage)); |
92 dom_ui_->RegisterMessageCallback("reload", | 93 dom_ui_->RegisterMessageCallback("reload", |
93 NewCallback(this, &ExtensionsDOMHandler::HandleReloadMessage)); | 94 NewCallback(this, &ExtensionsDOMHandler::HandleReloadMessage)); |
94 dom_ui_->RegisterMessageCallback("enable", | 95 dom_ui_->RegisterMessageCallback("enable", |
95 NewCallback(this, &ExtensionsDOMHandler::HandleEnableMessage)); | 96 NewCallback(this, &ExtensionsDOMHandler::HandleEnableMessage)); |
96 dom_ui_->RegisterMessageCallback("uninstall", | 97 dom_ui_->RegisterMessageCallback("uninstall", |
97 NewCallback(this, &ExtensionsDOMHandler::HandleUninstallMessage)); | 98 NewCallback(this, &ExtensionsDOMHandler::HandleUninstallMessage)); |
| 99 dom_ui_->RegisterMessageCallback("options", |
| 100 NewCallback(this, &ExtensionsDOMHandler::HandleOptionsMessage)); |
98 dom_ui_->RegisterMessageCallback("load", | 101 dom_ui_->RegisterMessageCallback("load", |
99 NewCallback(this, &ExtensionsDOMHandler::HandleLoadMessage)); | 102 NewCallback(this, &ExtensionsDOMHandler::HandleLoadMessage)); |
100 dom_ui_->RegisterMessageCallback("pack", | 103 dom_ui_->RegisterMessageCallback("pack", |
101 NewCallback(this, &ExtensionsDOMHandler::HandlePackMessage)); | 104 NewCallback(this, &ExtensionsDOMHandler::HandlePackMessage)); |
102 dom_ui_->RegisterMessageCallback("autoupdate", | 105 dom_ui_->RegisterMessageCallback("autoupdate", |
103 NewCallback(this, &ExtensionsDOMHandler::HandleAutoUpdateMessage)); | 106 NewCallback(this, &ExtensionsDOMHandler::HandleAutoUpdateMessage)); |
104 dom_ui_->RegisterMessageCallback("selectFilePath", | 107 dom_ui_->RegisterMessageCallback("selectFilePath", |
105 NewCallback(this, &ExtensionsDOMHandler::HandleSelectFilePathMessage)); | 108 NewCallback(this, &ExtensionsDOMHandler::HandleSelectFilePathMessage)); |
106 } | 109 } |
107 | 110 |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
191 | 194 |
192 void ExtensionsDOMHandler::HandleUninstallMessage(const Value* value) { | 195 void ExtensionsDOMHandler::HandleUninstallMessage(const Value* value) { |
193 CHECK(value->IsType(Value::TYPE_LIST)); | 196 CHECK(value->IsType(Value::TYPE_LIST)); |
194 const ListValue* list = static_cast<const ListValue*>(value); | 197 const ListValue* list = static_cast<const ListValue*>(value); |
195 CHECK(list->GetSize() == 1); | 198 CHECK(list->GetSize() == 1); |
196 std::string extension_id; | 199 std::string extension_id; |
197 CHECK(list->GetString(0, &extension_id)); | 200 CHECK(list->GetString(0, &extension_id)); |
198 extensions_service_->UninstallExtension(extension_id, false); | 201 extensions_service_->UninstallExtension(extension_id, false); |
199 } | 202 } |
200 | 203 |
| 204 void ExtensionsDOMHandler::HandleOptionsMessage(const Value* value) { |
| 205 CHECK(value->IsType(Value::TYPE_LIST)); |
| 206 const ListValue* list = static_cast<const ListValue*>(value); |
| 207 CHECK(list->GetSize() == 1); |
| 208 std::string extension_id; |
| 209 CHECK(list->GetString(0, &extension_id)); |
| 210 Extension *extension = extensions_service_->GetExtensionById(extension_id); |
| 211 if (!extension || extension->options_url().is_empty()) { |
| 212 return; |
| 213 } |
| 214 Browser* browser = Browser::GetOrCreateTabbedBrowser(dom_ui_->GetProfile()); |
| 215 CHECK(browser); |
| 216 browser->OpenURL(extension->options_url(), GURL(), NEW_FOREGROUND_TAB, |
| 217 PageTransition::LINK); |
| 218 } |
| 219 |
201 void ExtensionsDOMHandler::HandleLoadMessage(const Value* value) { | 220 void ExtensionsDOMHandler::HandleLoadMessage(const Value* value) { |
202 std::string string_path; | 221 std::string string_path; |
203 CHECK(value->IsType(Value::TYPE_LIST)); | 222 CHECK(value->IsType(Value::TYPE_LIST)); |
204 const ListValue* list = static_cast<const ListValue*>(value); | 223 const ListValue* list = static_cast<const ListValue*>(value); |
205 CHECK(list->GetSize() == 1) << list->GetSize(); | 224 CHECK(list->GetSize() == 1) << list->GetSize(); |
206 CHECK(list->GetString(0, &string_path)); | 225 CHECK(list->GetString(0, &string_path)); |
207 FilePath file_path = FilePath::FromWStringHack(ASCIIToWide(string_path)); | 226 FilePath file_path = FilePath::FromWStringHack(ASCIIToWide(string_path)); |
208 extensions_service_->LoadExtension(file_path); | 227 extensions_service_->LoadExtension(file_path); |
209 } | 228 } |
210 | 229 |
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
392 DictionaryValue* ExtensionsDOMHandler::CreateExtensionDetailValue( | 411 DictionaryValue* ExtensionsDOMHandler::CreateExtensionDetailValue( |
393 const Extension *extension, const std::vector<ExtensionPage>& pages, | 412 const Extension *extension, const std::vector<ExtensionPage>& pages, |
394 bool enabled) { | 413 bool enabled) { |
395 DictionaryValue* extension_data = new DictionaryValue(); | 414 DictionaryValue* extension_data = new DictionaryValue(); |
396 | 415 |
397 extension_data->SetString(L"id", extension->id()); | 416 extension_data->SetString(L"id", extension->id()); |
398 extension_data->SetString(L"name", extension->name()); | 417 extension_data->SetString(L"name", extension->name()); |
399 extension_data->SetString(L"description", extension->description()); | 418 extension_data->SetString(L"description", extension->description()); |
400 extension_data->SetString(L"version", extension->version()->GetString()); | 419 extension_data->SetString(L"version", extension->version()->GetString()); |
401 extension_data->SetBoolean(L"enabled", enabled); | 420 extension_data->SetBoolean(L"enabled", enabled); |
| 421 if (!extension->options_url().is_empty()) { |
| 422 extension_data->SetString(L"options_url", extension->options_url().spec()); |
| 423 } |
402 | 424 |
403 // Add list of content_script detail DictionaryValues | 425 // Add list of content_script detail DictionaryValues |
404 ListValue *content_script_list = new ListValue(); | 426 ListValue *content_script_list = new ListValue(); |
405 UserScriptList content_scripts = extension->content_scripts(); | 427 UserScriptList content_scripts = extension->content_scripts(); |
406 for (UserScriptList::const_iterator script = content_scripts.begin(); | 428 for (UserScriptList::const_iterator script = content_scripts.begin(); |
407 script != content_scripts.end(); ++script) { | 429 script != content_scripts.end(); ++script) { |
408 content_script_list->Append( | 430 content_script_list->Append( |
409 CreateContentScriptDetailValue(*script, extension->path())); | 431 CreateContentScriptDetailValue(*script, extension->path())); |
410 } | 432 } |
411 extension_data->Set(L"content_scripts", content_script_list); | 433 extension_data->Set(L"content_scripts", content_script_list); |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
470 AddMessageHandler(handler); | 492 AddMessageHandler(handler); |
471 handler->Attach(this); | 493 handler->Attach(this); |
472 | 494 |
473 ExtensionsUIHTMLSource* html_source = new ExtensionsUIHTMLSource(); | 495 ExtensionsUIHTMLSource* html_source = new ExtensionsUIHTMLSource(); |
474 | 496 |
475 // Set up the chrome://extensions/ source. | 497 // Set up the chrome://extensions/ source. |
476 g_browser_process->io_thread()->message_loop()->PostTask(FROM_HERE, | 498 g_browser_process->io_thread()->message_loop()->PostTask(FROM_HERE, |
477 NewRunnableMethod(&chrome_url_data_manager, | 499 NewRunnableMethod(&chrome_url_data_manager, |
478 &ChromeURLDataManager::AddDataSource, html_source)); | 500 &ChromeURLDataManager::AddDataSource, html_source)); |
479 } | 501 } |
OLD | NEW |