| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/ui/webui/extensions/extension_settings_handler.h" | 5 #include "chrome/browser/ui/webui/extensions/extension_settings_handler.h" |
| 6 | 6 |
| 7 #include "apps/app_load_service.h" | 7 #include "apps/app_load_service.h" |
| 8 #include "apps/saved_files_service.h" | 8 #include "apps/saved_files_service.h" |
| 9 #include "base/auto_reset.h" | 9 #include "base/auto_reset.h" |
| 10 #include "base/base64.h" | 10 #include "base/base64.h" |
| 11 #include "base/bind.h" | 11 #include "base/bind.h" |
| 12 #include "base/bind_helpers.h" | 12 #include "base/bind_helpers.h" |
| 13 #include "base/location.h" | 13 #include "base/location.h" |
| 14 #include "base/message_loop/message_loop.h" | 14 #include "base/message_loop/message_loop.h" |
| 15 #include "base/metrics/histogram.h" | 15 #include "base/metrics/histogram.h" |
| 16 #include "base/prefs/pref_service.h" | 16 #include "base/prefs/pref_service.h" |
| 17 #include "base/strings/string_number_conversions.h" | 17 #include "base/strings/string_number_conversions.h" |
| 18 #include "base/strings/string_util.h" | 18 #include "base/strings/string_util.h" |
| 19 #include "base/strings/utf_string_conversions.h" | 19 #include "base/strings/utf_string_conversions.h" |
| 20 #include "base/values.h" | 20 #include "base/values.h" |
| 21 #include "base/version.h" | 21 #include "base/version.h" |
| 22 #include "chrome/browser/background/background_contents.h" | 22 #include "chrome/browser/background/background_contents.h" |
| 23 #include "chrome/browser/browser_process.h" | 23 #include "chrome/browser/browser_process.h" |
| 24 #include "chrome/browser/chrome_notification_types.h" | 24 #include "chrome/browser/chrome_notification_types.h" |
| 25 #include "chrome/browser/devtools/devtools_window.h" | |
| 26 #include "chrome/browser/extensions/api/extension_action/extension_action_api.h" | 25 #include "chrome/browser/extensions/api/extension_action/extension_action_api.h" |
| 27 #include "chrome/browser/extensions/component_loader.h" | 26 #include "chrome/browser/extensions/component_loader.h" |
| 28 #include "chrome/browser/extensions/crx_installer.h" | 27 #include "chrome/browser/extensions/crx_installer.h" |
| 29 #include "chrome/browser/extensions/devtools_util.h" | |
| 30 #include "chrome/browser/extensions/error_console/error_console.h" | 28 #include "chrome/browser/extensions/error_console/error_console.h" |
| 31 #include "chrome/browser/extensions/extension_action_manager.h" | 29 #include "chrome/browser/extensions/extension_action_manager.h" |
| 32 #include "chrome/browser/extensions/extension_error_reporter.h" | 30 #include "chrome/browser/extensions/extension_error_reporter.h" |
| 33 #include "chrome/browser/extensions/extension_management.h" | 31 #include "chrome/browser/extensions/extension_management.h" |
| 34 #include "chrome/browser/extensions/extension_service.h" | 32 #include "chrome/browser/extensions/extension_service.h" |
| 35 #include "chrome/browser/extensions/extension_tab_util.h" | 33 #include "chrome/browser/extensions/extension_tab_util.h" |
| 36 #include "chrome/browser/extensions/extension_ui_util.h" | 34 #include "chrome/browser/extensions/extension_ui_util.h" |
| 37 #include "chrome/browser/extensions/extension_util.h" | 35 #include "chrome/browser/extensions/extension_util.h" |
| 38 #include "chrome/browser/extensions/install_verifier.h" | 36 #include "chrome/browser/extensions/install_verifier.h" |
| 39 #include "chrome/browser/extensions/path_util.h" | 37 #include "chrome/browser/extensions/path_util.h" |
| (...skipping 651 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 691 management_policy_ = ExtensionSystem::Get( | 689 management_policy_ = ExtensionSystem::Get( |
| 692 extension_service_->profile())->management_policy(); | 690 extension_service_->profile())->management_policy(); |
| 693 } | 691 } |
| 694 | 692 |
| 695 web_ui()->RegisterMessageCallback("extensionSettingsRequestExtensionsData", | 693 web_ui()->RegisterMessageCallback("extensionSettingsRequestExtensionsData", |
| 696 base::Bind(&ExtensionSettingsHandler::HandleRequestExtensionsData, | 694 base::Bind(&ExtensionSettingsHandler::HandleRequestExtensionsData, |
| 697 AsWeakPtr())); | 695 AsWeakPtr())); |
| 698 web_ui()->RegisterMessageCallback("extensionSettingsToggleDeveloperMode", | 696 web_ui()->RegisterMessageCallback("extensionSettingsToggleDeveloperMode", |
| 699 base::Bind(&ExtensionSettingsHandler::HandleToggleDeveloperMode, | 697 base::Bind(&ExtensionSettingsHandler::HandleToggleDeveloperMode, |
| 700 AsWeakPtr())); | 698 AsWeakPtr())); |
| 701 web_ui()->RegisterMessageCallback("extensionSettingsInspect", | |
| 702 base::Bind(&ExtensionSettingsHandler::HandleInspectMessage, | |
| 703 AsWeakPtr())); | |
| 704 web_ui()->RegisterMessageCallback("extensionSettingsLaunch", | 699 web_ui()->RegisterMessageCallback("extensionSettingsLaunch", |
| 705 base::Bind(&ExtensionSettingsHandler::HandleLaunchMessage, | 700 base::Bind(&ExtensionSettingsHandler::HandleLaunchMessage, |
| 706 AsWeakPtr())); | 701 AsWeakPtr())); |
| 707 web_ui()->RegisterMessageCallback("extensionSettingsRepair", | 702 web_ui()->RegisterMessageCallback("extensionSettingsRepair", |
| 708 base::Bind(&ExtensionSettingsHandler::HandleRepairMessage, | 703 base::Bind(&ExtensionSettingsHandler::HandleRepairMessage, |
| 709 AsWeakPtr())); | 704 AsWeakPtr())); |
| 710 web_ui()->RegisterMessageCallback("extensionSettingsEnableErrorCollection", | 705 web_ui()->RegisterMessageCallback("extensionSettingsEnableErrorCollection", |
| 711 base::Bind(&ExtensionSettingsHandler::HandleEnableErrorCollectionMessage, | 706 base::Bind(&ExtensionSettingsHandler::HandleEnableErrorCollectionMessage, |
| 712 AsWeakPtr())); | 707 AsWeakPtr())); |
| 713 web_ui()->RegisterMessageCallback("extensionSettingsAllowOnAllUrls", | 708 web_ui()->RegisterMessageCallback("extensionSettingsAllowOnAllUrls", |
| (...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 954 Profile* profile = Profile::FromWebUI(web_ui()); | 949 Profile* profile = Profile::FromWebUI(web_ui()); |
| 955 if (profile->IsSupervised()) | 950 if (profile->IsSupervised()) |
| 956 return; | 951 return; |
| 957 | 952 |
| 958 bool developer_mode_on; | 953 bool developer_mode_on; |
| 959 CHECK(args->GetBoolean(0, &developer_mode_on)); | 954 CHECK(args->GetBoolean(0, &developer_mode_on)); |
| 960 profile->GetPrefs()->SetBoolean(prefs::kExtensionsUIDeveloperMode, | 955 profile->GetPrefs()->SetBoolean(prefs::kExtensionsUIDeveloperMode, |
| 961 developer_mode_on); | 956 developer_mode_on); |
| 962 } | 957 } |
| 963 | 958 |
| 964 void ExtensionSettingsHandler::HandleInspectMessage( | |
| 965 const base::ListValue* args) { | |
| 966 std::string extension_id; | |
| 967 std::string render_process_id_str; | |
| 968 std::string render_view_id_str; | |
| 969 int render_process_id; | |
| 970 int render_view_id; | |
| 971 bool incognito; | |
| 972 CHECK_EQ(4U, args->GetSize()); | |
| 973 CHECK(args->GetString(0, &extension_id)); | |
| 974 CHECK(args->GetString(1, &render_process_id_str)); | |
| 975 CHECK(args->GetString(2, &render_view_id_str)); | |
| 976 CHECK(args->GetBoolean(3, &incognito)); | |
| 977 CHECK(base::StringToInt(render_process_id_str, &render_process_id)); | |
| 978 CHECK(base::StringToInt(render_view_id_str, &render_view_id)); | |
| 979 | |
| 980 if (render_process_id == -1) { | |
| 981 // This message is for a lazy background page. Start the page if necessary. | |
| 982 Profile* profile = Profile::FromWebUI(web_ui()); | |
| 983 const Extension* extension = | |
| 984 ExtensionRegistry::Get(profile)->enabled_extensions().GetByID( | |
| 985 extension_id); | |
| 986 DCHECK(extension); | |
| 987 if (incognito) | |
| 988 profile = profile->GetOffTheRecordProfile(); | |
| 989 devtools_util::InspectBackgroundPage(extension, profile); | |
| 990 return; | |
| 991 } | |
| 992 | |
| 993 RenderViewHost* host = RenderViewHost::FromID(render_process_id, | |
| 994 render_view_id); | |
| 995 if (!host || !WebContents::FromRenderViewHost(host)) { | |
| 996 // This can happen if the host has gone away since the page was displayed. | |
| 997 return; | |
| 998 } | |
| 999 | |
| 1000 DevToolsWindow::OpenDevToolsWindow(WebContents::FromRenderViewHost(host)); | |
| 1001 } | |
| 1002 | |
| 1003 void ExtensionSettingsHandler::HandleLaunchMessage( | 959 void ExtensionSettingsHandler::HandleLaunchMessage( |
| 1004 const base::ListValue* args) { | 960 const base::ListValue* args) { |
| 1005 CHECK_EQ(1U, args->GetSize()); | 961 CHECK_EQ(1U, args->GetSize()); |
| 1006 std::string extension_id; | 962 std::string extension_id; |
| 1007 CHECK(args->GetString(0, &extension_id)); | 963 CHECK(args->GetString(0, &extension_id)); |
| 1008 const Extension* extension = | 964 const Extension* extension = |
| 1009 extension_service_->GetExtensionById(extension_id, false); | 965 extension_service_->GetExtensionById(extension_id, false); |
| 1010 OpenApplication(AppLaunchParams(extension_service_->profile(), extension, | 966 OpenApplication(AppLaunchParams(extension_service_->profile(), extension, |
| 1011 extensions::LAUNCH_CONTAINER_WINDOW, | 967 extensions::LAUNCH_CONTAINER_WINDOW, |
| 1012 NEW_WINDOW, | 968 NEW_WINDOW, |
| (...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1339 } | 1295 } |
| 1340 | 1296 |
| 1341 void ExtensionSettingsHandler::OnReinstallComplete( | 1297 void ExtensionSettingsHandler::OnReinstallComplete( |
| 1342 bool success, | 1298 bool success, |
| 1343 const std::string& error, | 1299 const std::string& error, |
| 1344 webstore_install::Result result) { | 1300 webstore_install::Result result) { |
| 1345 MaybeUpdateAfterNotification(); | 1301 MaybeUpdateAfterNotification(); |
| 1346 } | 1302 } |
| 1347 | 1303 |
| 1348 } // namespace extensions | 1304 } // namespace extensions |
| OLD | NEW |