Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(112)

Side by Side Diff: chrome/browser/ui/webui/extensions/extension_settings_handler.cc

Issue 948413005: [Extensions] Make chrome://extensions use management.uninstall (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Latest master Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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"
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
72 #include "extensions/browser/app_window/app_window.h" 72 #include "extensions/browser/app_window/app_window.h"
73 #include "extensions/browser/app_window/app_window_registry.h" 73 #include "extensions/browser/app_window/app_window_registry.h"
74 #include "extensions/browser/blacklist_state.h" 74 #include "extensions/browser/blacklist_state.h"
75 #include "extensions/browser/extension_error.h" 75 #include "extensions/browser/extension_error.h"
76 #include "extensions/browser/extension_host.h" 76 #include "extensions/browser/extension_host.h"
77 #include "extensions/browser/extension_registry.h" 77 #include "extensions/browser/extension_registry.h"
78 #include "extensions/browser/extension_system.h" 78 #include "extensions/browser/extension_system.h"
79 #include "extensions/browser/lazy_background_task_queue.h" 79 #include "extensions/browser/lazy_background_task_queue.h"
80 #include "extensions/browser/management_policy.h" 80 #include "extensions/browser/management_policy.h"
81 #include "extensions/browser/pref_names.h" 81 #include "extensions/browser/pref_names.h"
82 #include "extensions/browser/uninstall_reason.h"
83 #include "extensions/browser/view_type_utils.h" 82 #include "extensions/browser/view_type_utils.h"
84 #include "extensions/browser/warning_set.h" 83 #include "extensions/browser/warning_set.h"
85 #include "extensions/common/constants.h" 84 #include "extensions/common/constants.h"
86 #include "extensions/common/extension.h" 85 #include "extensions/common/extension.h"
87 #include "extensions/common/extension_icon_set.h" 86 #include "extensions/common/extension_icon_set.h"
88 #include "extensions/common/extension_set.h" 87 #include "extensions/common/extension_set.h"
89 #include "extensions/common/extension_urls.h" 88 #include "extensions/common/extension_urls.h"
90 #include "extensions/common/feature_switch.h" 89 #include "extensions/common/feature_switch.h"
91 #include "extensions/common/manifest.h" 90 #include "extensions/common/manifest.h"
92 #include "extensions/common/manifest_handlers/background_info.h" 91 #include "extensions/common/manifest_handlers/background_info.h"
(...skipping 599 matching lines...) Expand 10 before | Expand all | Expand 10 after
692 AsWeakPtr())); 691 AsWeakPtr()));
693 web_ui()->RegisterMessageCallback("extensionSettingsEnableErrorCollection", 692 web_ui()->RegisterMessageCallback("extensionSettingsEnableErrorCollection",
694 base::Bind(&ExtensionSettingsHandler::HandleEnableErrorCollectionMessage, 693 base::Bind(&ExtensionSettingsHandler::HandleEnableErrorCollectionMessage,
695 AsWeakPtr())); 694 AsWeakPtr()));
696 web_ui()->RegisterMessageCallback("extensionSettingsAllowFileAccess", 695 web_ui()->RegisterMessageCallback("extensionSettingsAllowFileAccess",
697 base::Bind(&ExtensionSettingsHandler::HandleAllowFileAccessMessage, 696 base::Bind(&ExtensionSettingsHandler::HandleAllowFileAccessMessage,
698 AsWeakPtr())); 697 AsWeakPtr()));
699 web_ui()->RegisterMessageCallback("extensionSettingsAllowOnAllUrls", 698 web_ui()->RegisterMessageCallback("extensionSettingsAllowOnAllUrls",
700 base::Bind(&ExtensionSettingsHandler::HandleAllowOnAllUrlsMessage, 699 base::Bind(&ExtensionSettingsHandler::HandleAllowOnAllUrlsMessage,
701 AsWeakPtr())); 700 AsWeakPtr()));
702 web_ui()->RegisterMessageCallback("extensionSettingsUninstall",
703 base::Bind(&ExtensionSettingsHandler::HandleUninstallMessage,
704 AsWeakPtr()));
705 web_ui()->RegisterMessageCallback("extensionSettingsOptions", 701 web_ui()->RegisterMessageCallback("extensionSettingsOptions",
706 base::Bind(&ExtensionSettingsHandler::HandleOptionsMessage, 702 base::Bind(&ExtensionSettingsHandler::HandleOptionsMessage,
707 AsWeakPtr())); 703 AsWeakPtr()));
708 web_ui()->RegisterMessageCallback("extensionSettingsPermissions", 704 web_ui()->RegisterMessageCallback("extensionSettingsPermissions",
709 base::Bind(&ExtensionSettingsHandler::HandlePermissionsMessage, 705 base::Bind(&ExtensionSettingsHandler::HandlePermissionsMessage,
710 AsWeakPtr())); 706 AsWeakPtr()));
711 web_ui()->RegisterMessageCallback("extensionSettingsShowButton", 707 web_ui()->RegisterMessageCallback("extensionSettingsShowButton",
712 base::Bind(&ExtensionSettingsHandler::HandleShowButtonMessage, 708 base::Bind(&ExtensionSettingsHandler::HandleShowButtonMessage,
713 AsWeakPtr())); 709 AsWeakPtr()));
714 web_ui()->RegisterMessageCallback("extensionSettingsAutoupdate", 710 web_ui()->RegisterMessageCallback("extensionSettingsAutoupdate",
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
801 797
802 void ExtensionSettingsHandler::OnExtensionDisableReasonsChanged( 798 void ExtensionSettingsHandler::OnExtensionDisableReasonsChanged(
803 const std::string& extension_id, int disable_reasons) { 799 const std::string& extension_id, int disable_reasons) {
804 MaybeUpdateAfterNotification(); 800 MaybeUpdateAfterNotification();
805 } 801 }
806 802
807 void ExtensionSettingsHandler::OnExtensionManagementSettingsChanged() { 803 void ExtensionSettingsHandler::OnExtensionManagementSettingsChanged() {
808 MaybeUpdateAfterNotification(); 804 MaybeUpdateAfterNotification();
809 } 805 }
810 806
811 void ExtensionSettingsHandler::ExtensionUninstallAccepted() {
812 DCHECK(!extension_id_prompting_.empty());
813
814 bool was_terminated = false;
815
816 // The extension can be uninstalled in another window while the UI was
817 // showing. Do nothing in that case.
818 const Extension* extension =
819 extension_service_->GetExtensionById(extension_id_prompting_, true);
820 if (!extension) {
821 extension =
822 ExtensionRegistry::Get(Profile::FromWebUI(web_ui()))->GetExtensionById(
823 extension_id_prompting_, ExtensionRegistry::TERMINATED);
824 was_terminated = true;
825 }
826 if (!extension)
827 return;
828
829 extension_service_->UninstallExtension(
830 extension_id_prompting_,
831 extensions::UNINSTALL_REASON_USER_INITIATED,
832 base::Bind(&base::DoNothing),
833 NULL); // Error.
834 extension_id_prompting_ = "";
835
836 // There will be no EXTENSION_UNLOADED notification for terminated
837 // extensions as they were already unloaded.
838 if (was_terminated)
839 HandleRequestExtensionsData(NULL);
840 }
841
842 void ExtensionSettingsHandler::ExtensionUninstallCanceled() {
843 extension_id_prompting_ = "";
844 web_ui()->CallJavascriptFunction("extensions.ExtensionList.uninstallCancel");
Dan Beam 2015/03/03 00:12:59 this functionality was dropped and code left :(
845 }
846
847 void ExtensionSettingsHandler::ExtensionWarningsChanged() { 807 void ExtensionSettingsHandler::ExtensionWarningsChanged() {
848 MaybeUpdateAfterNotification(); 808 MaybeUpdateAfterNotification();
849 } 809 }
850 810
851 // This is called when the user clicks "Revoke File/Device Access." 811 // This is called when the user clicks "Revoke File/Device Access."
852 void ExtensionSettingsHandler::InstallUIProceed() { 812 void ExtensionSettingsHandler::InstallUIProceed() {
853 Profile* profile = Profile::FromWebUI(web_ui()); 813 Profile* profile = Profile::FromWebUI(web_ui());
854 extensions::DevicePermissionsManager::Get(profile) 814 extensions::DevicePermissionsManager::Get(profile)
855 ->Clear(extension_id_prompting_); 815 ->Clear(extension_id_prompting_);
856 apps::SavedFilesService::Get(profile)->ClearQueue( 816 apps::SavedFilesService::Get(profile)->ClearQueue(
(...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after
1129 CHECK_EQ(2u, args->GetSize()); 1089 CHECK_EQ(2u, args->GetSize());
1130 std::string extension_id; 1090 std::string extension_id;
1131 std::string allow_str; 1091 std::string allow_str;
1132 CHECK(args->GetString(0, &extension_id)); 1092 CHECK(args->GetString(0, &extension_id));
1133 CHECK(args->GetString(1, &allow_str)); 1093 CHECK(args->GetString(1, &allow_str));
1134 util::SetAllowedScriptingOnAllUrls(extension_id, 1094 util::SetAllowedScriptingOnAllUrls(extension_id,
1135 extension_service_->GetBrowserContext(), 1095 extension_service_->GetBrowserContext(),
1136 allow_str == "true"); 1096 allow_str == "true");
1137 } 1097 }
1138 1098
1139 void ExtensionSettingsHandler::HandleUninstallMessage(
1140 const base::ListValue* args) {
1141 CHECK_EQ(1U, args->GetSize());
1142 std::string extension_id;
1143 CHECK(args->GetString(0, &extension_id));
1144 const Extension* extension =
1145 extension_service_->GetInstalledExtension(extension_id);
1146 if (!extension)
1147 return;
1148
1149 if (!management_policy_->UserMayModifySettings(extension, NULL) ||
1150 management_policy_->MustRemainInstalled(extension, NULL)) {
1151 LOG(ERROR) << "An attempt was made to uninstall an extension that is "
1152 << "non-usermanagable. Extension id : " << extension->id();
1153 return;
1154 }
1155
1156 if (!extension_id_prompting_.empty())
1157 return; // Only one prompt at a time.
1158
1159 extension_id_prompting_ = extension_id;
1160
1161 GetExtensionUninstallDialog()->ConfirmUninstall(extension);
1162 }
1163
1164 void ExtensionSettingsHandler::HandleOptionsMessage( 1099 void ExtensionSettingsHandler::HandleOptionsMessage(
1165 const base::ListValue* args) { 1100 const base::ListValue* args) {
1166 const Extension* extension = GetActiveExtension(args); 1101 const Extension* extension = GetActiveExtension(args);
1167 if (!extension || OptionsPageInfo::GetOptionsPage(extension).is_empty()) 1102 if (!extension || OptionsPageInfo::GetOptionsPage(extension).is_empty())
1168 return; 1103 return;
1169 ExtensionTabUtil::OpenOptionsPage(extension, 1104 ExtensionTabUtil::OpenOptionsPage(extension,
1170 chrome::FindBrowserWithWebContents(web_ui()->GetWebContents())); 1105 chrome::FindBrowserWithWebContents(web_ui()->GetWebContents()));
1171 } 1106 }
1172 1107
1173 void ExtensionSettingsHandler::HandlePermissionsMessage( 1108 void ExtensionSettingsHandler::HandlePermissionsMessage(
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after
1442 (web_contents->GetURL() == BackgroundInfo::GetBackgroundURL(extension)); 1377 (web_contents->GetURL() == BackgroundInfo::GetBackgroundURL(extension));
1443 result->push_back( 1378 result->push_back(
1444 ExtensionPage(web_contents->GetURL(), 1379 ExtensionPage(web_contents->GetURL(),
1445 process->GetID(), 1380 process->GetID(),
1446 host->GetRoutingID(), 1381 host->GetRoutingID(),
1447 process->GetBrowserContext()->IsOffTheRecord(), 1382 process->GetBrowserContext()->IsOffTheRecord(),
1448 is_background_page && has_generated_background_page)); 1383 is_background_page && has_generated_background_page));
1449 } 1384 }
1450 } 1385 }
1451 1386
1452 ExtensionUninstallDialog*
1453 ExtensionSettingsHandler::GetExtensionUninstallDialog() {
1454 if (!extension_uninstall_dialog_.get()) {
1455 Browser* browser = chrome::FindBrowserWithWebContents(
1456 web_ui()->GetWebContents());
1457 extension_uninstall_dialog_.reset(
1458 ExtensionUninstallDialog::Create(extension_service_->profile(),
1459 browser->window()->GetNativeWindow(),
1460 this));
1461 }
1462 return extension_uninstall_dialog_.get();
1463 }
1464
1465 void ExtensionSettingsHandler::OnReinstallComplete( 1387 void ExtensionSettingsHandler::OnReinstallComplete(
1466 bool success, 1388 bool success,
1467 const std::string& error, 1389 const std::string& error,
1468 webstore_install::Result result) { 1390 webstore_install::Result result) {
1469 MaybeUpdateAfterNotification(); 1391 MaybeUpdateAfterNotification();
1470 } 1392 }
1471 1393
1472 } // namespace extensions 1394 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698