| 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 684 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 724 management_policy_ = ExtensionSystem::Get( | 722 management_policy_ = ExtensionSystem::Get( |
| 725 extension_service_->profile())->management_policy(); | 723 extension_service_->profile())->management_policy(); |
| 726 } | 724 } |
| 727 | 725 |
| 728 web_ui()->RegisterMessageCallback("extensionSettingsRequestExtensionsData", | 726 web_ui()->RegisterMessageCallback("extensionSettingsRequestExtensionsData", |
| 729 base::Bind(&ExtensionSettingsHandler::HandleRequestExtensionsData, | 727 base::Bind(&ExtensionSettingsHandler::HandleRequestExtensionsData, |
| 730 AsWeakPtr())); | 728 AsWeakPtr())); |
| 731 web_ui()->RegisterMessageCallback("extensionSettingsToggleDeveloperMode", | 729 web_ui()->RegisterMessageCallback("extensionSettingsToggleDeveloperMode", |
| 732 base::Bind(&ExtensionSettingsHandler::HandleToggleDeveloperMode, | 730 base::Bind(&ExtensionSettingsHandler::HandleToggleDeveloperMode, |
| 733 AsWeakPtr())); | 731 AsWeakPtr())); |
| 734 web_ui()->RegisterMessageCallback("extensionSettingsInspect", | |
| 735 base::Bind(&ExtensionSettingsHandler::HandleInspectMessage, | |
| 736 AsWeakPtr())); | |
| 737 web_ui()->RegisterMessageCallback("extensionSettingsLaunch", | 732 web_ui()->RegisterMessageCallback("extensionSettingsLaunch", |
| 738 base::Bind(&ExtensionSettingsHandler::HandleLaunchMessage, | 733 base::Bind(&ExtensionSettingsHandler::HandleLaunchMessage, |
| 739 AsWeakPtr())); | 734 AsWeakPtr())); |
| 740 web_ui()->RegisterMessageCallback("extensionSettingsRepair", | 735 web_ui()->RegisterMessageCallback("extensionSettingsRepair", |
| 741 base::Bind(&ExtensionSettingsHandler::HandleRepairMessage, | 736 base::Bind(&ExtensionSettingsHandler::HandleRepairMessage, |
| 742 AsWeakPtr())); | 737 AsWeakPtr())); |
| 743 web_ui()->RegisterMessageCallback("extensionSettingsEnableErrorCollection", | 738 web_ui()->RegisterMessageCallback("extensionSettingsEnableErrorCollection", |
| 744 base::Bind(&ExtensionSettingsHandler::HandleEnableErrorCollectionMessage, | 739 base::Bind(&ExtensionSettingsHandler::HandleEnableErrorCollectionMessage, |
| 745 AsWeakPtr())); | 740 AsWeakPtr())); |
| 746 web_ui()->RegisterMessageCallback("extensionSettingsAllowOnAllUrls", | 741 web_ui()->RegisterMessageCallback("extensionSettingsAllowOnAllUrls", |
| (...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 987 Profile* profile = Profile::FromWebUI(web_ui()); | 982 Profile* profile = Profile::FromWebUI(web_ui()); |
| 988 if (profile->IsSupervised()) | 983 if (profile->IsSupervised()) |
| 989 return; | 984 return; |
| 990 | 985 |
| 991 bool developer_mode_on; | 986 bool developer_mode_on; |
| 992 CHECK(args->GetBoolean(0, &developer_mode_on)); | 987 CHECK(args->GetBoolean(0, &developer_mode_on)); |
| 993 profile->GetPrefs()->SetBoolean(prefs::kExtensionsUIDeveloperMode, | 988 profile->GetPrefs()->SetBoolean(prefs::kExtensionsUIDeveloperMode, |
| 994 developer_mode_on); | 989 developer_mode_on); |
| 995 } | 990 } |
| 996 | 991 |
| 997 void ExtensionSettingsHandler::HandleInspectMessage( | |
| 998 const base::ListValue* args) { | |
| 999 std::string extension_id; | |
| 1000 std::string render_process_id_str; | |
| 1001 std::string render_view_id_str; | |
| 1002 int render_process_id; | |
| 1003 int render_view_id; | |
| 1004 bool incognito; | |
| 1005 CHECK_EQ(4U, args->GetSize()); | |
| 1006 CHECK(args->GetString(0, &extension_id)); | |
| 1007 CHECK(args->GetString(1, &render_process_id_str)); | |
| 1008 CHECK(args->GetString(2, &render_view_id_str)); | |
| 1009 CHECK(args->GetBoolean(3, &incognito)); | |
| 1010 CHECK(base::StringToInt(render_process_id_str, &render_process_id)); | |
| 1011 CHECK(base::StringToInt(render_view_id_str, &render_view_id)); | |
| 1012 | |
| 1013 if (render_process_id == -1) { | |
| 1014 // This message is for a lazy background page. Start the page if necessary. | |
| 1015 Profile* profile = Profile::FromWebUI(web_ui()); | |
| 1016 const Extension* extension = | |
| 1017 ExtensionRegistry::Get(profile)->enabled_extensions().GetByID( | |
| 1018 extension_id); | |
| 1019 DCHECK(extension); | |
| 1020 if (incognito) | |
| 1021 profile = profile->GetOffTheRecordProfile(); | |
| 1022 devtools_util::InspectBackgroundPage(extension, profile); | |
| 1023 return; | |
| 1024 } | |
| 1025 | |
| 1026 RenderViewHost* host = RenderViewHost::FromID(render_process_id, | |
| 1027 render_view_id); | |
| 1028 if (!host || !WebContents::FromRenderViewHost(host)) { | |
| 1029 // This can happen if the host has gone away since the page was displayed. | |
| 1030 return; | |
| 1031 } | |
| 1032 | |
| 1033 DevToolsWindow::OpenDevToolsWindow(WebContents::FromRenderViewHost(host)); | |
| 1034 } | |
| 1035 | |
| 1036 void ExtensionSettingsHandler::HandleLaunchMessage( | 992 void ExtensionSettingsHandler::HandleLaunchMessage( |
| 1037 const base::ListValue* args) { | 993 const base::ListValue* args) { |
| 1038 CHECK_EQ(1U, args->GetSize()); | 994 CHECK_EQ(1U, args->GetSize()); |
| 1039 std::string extension_id; | 995 std::string extension_id; |
| 1040 CHECK(args->GetString(0, &extension_id)); | 996 CHECK(args->GetString(0, &extension_id)); |
| 1041 const Extension* extension = | 997 const Extension* extension = |
| 1042 extension_service_->GetExtensionById(extension_id, false); | 998 extension_service_->GetExtensionById(extension_id, false); |
| 1043 OpenApplication(AppLaunchParams(extension_service_->profile(), extension, | 999 OpenApplication(AppLaunchParams(extension_service_->profile(), extension, |
| 1044 extensions::LAUNCH_CONTAINER_WINDOW, | 1000 extensions::LAUNCH_CONTAINER_WINDOW, |
| 1045 NEW_WINDOW, | 1001 NEW_WINDOW, |
| (...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1372 } | 1328 } |
| 1373 | 1329 |
| 1374 void ExtensionSettingsHandler::OnReinstallComplete( | 1330 void ExtensionSettingsHandler::OnReinstallComplete( |
| 1375 bool success, | 1331 bool success, |
| 1376 const std::string& error, | 1332 const std::string& error, |
| 1377 webstore_install::Result result) { | 1333 webstore_install::Result result) { |
| 1378 MaybeUpdateAfterNotification(); | 1334 MaybeUpdateAfterNotification(); |
| 1379 } | 1335 } |
| 1380 | 1336 |
| 1381 } // namespace extensions | 1337 } // namespace extensions |
| OLD | NEW |