| Index: chrome/browser/ui/webui/extensions/extension_settings_handler.cc
|
| diff --git a/chrome/browser/ui/webui/extensions/extension_settings_handler.cc b/chrome/browser/ui/webui/extensions/extension_settings_handler.cc
|
| index 428bdc65c6adaf70feaec2793ba0b9dbd15d5aac..7d2fcdfae4f2618cac818296f2a79c9f88d5a428 100644
|
| --- a/chrome/browser/ui/webui/extensions/extension_settings_handler.cc
|
| +++ b/chrome/browser/ui/webui/extensions/extension_settings_handler.cc
|
| @@ -6,8 +6,6 @@
|
|
|
| #include <vector>
|
|
|
| -#include "apps/app_load_service.h"
|
| -#include "apps/saved_files_service.h"
|
| #include "base/auto_reset.h"
|
| #include "base/bind.h"
|
| #include "base/bind_helpers.h"
|
| @@ -90,45 +88,6 @@ const char kAppsDeveloperToolsExtensionId[] =
|
|
|
| namespace extensions {
|
|
|
| -// The install prompt is not necessarily modal (e.g. Mac, Linux Unity). This
|
| -// means that the user can navigate while the dialog is up, causing the dialog
|
| -// handler to outlive the ExtensionSettingsHandler. That's a problem because the
|
| -// dialog framework will try to contact us back once the dialog is closed, which
|
| -// causes a crash. This class is designed to broker the message between the two
|
| -// objects, while managing its own lifetime so that it can outlive the
|
| -// ExtensionSettingsHandler and (when doing so) gracefully ignore the message
|
| -// from the dialog.
|
| -class BrokerDelegate : public ExtensionInstallPrompt::Delegate {
|
| - public:
|
| - explicit BrokerDelegate(
|
| - const base::WeakPtr<ExtensionSettingsHandler>& delegate)
|
| - : delegate_(delegate) {}
|
| -
|
| - // ExtensionInstallPrompt::Delegate implementation.
|
| - void InstallUIProceed() override {
|
| - if (delegate_)
|
| - delegate_->InstallUIProceed();
|
| - delete this;
|
| - };
|
| -
|
| - void InstallUIAbort(bool user_initiated) override {
|
| - if (delegate_)
|
| - delegate_->InstallUIAbort(user_initiated);
|
| - delete this;
|
| - };
|
| -
|
| - void AppInfoDialogClosed() {
|
| - if (delegate_)
|
| - delegate_->AppInfoDialogClosed();
|
| - delete this;
|
| - }
|
| -
|
| - private:
|
| - base::WeakPtr<ExtensionSettingsHandler> delegate_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(BrokerDelegate);
|
| -};
|
| -
|
| ///////////////////////////////////////////////////////////////////////////////
|
| //
|
| // ExtensionSettingsHandler
|
| @@ -407,9 +366,6 @@ void ExtensionSettingsHandler::RegisterMessages() {
|
| web_ui()->RegisterMessageCallback("extensionSettingsOptions",
|
| base::Bind(&ExtensionSettingsHandler::HandleOptionsMessage,
|
| AsWeakPtr()));
|
| - web_ui()->RegisterMessageCallback("extensionSettingsPermissions",
|
| - base::Bind(&ExtensionSettingsHandler::HandlePermissionsMessage,
|
| - AsWeakPtr()));
|
| web_ui()->RegisterMessageCallback("extensionSettingsShowButton",
|
| base::Bind(&ExtensionSettingsHandler::HandleShowButtonMessage,
|
| AsWeakPtr()));
|
| @@ -514,26 +470,6 @@ void ExtensionSettingsHandler::ExtensionWarningsChanged() {
|
| MaybeUpdateAfterNotification();
|
| }
|
|
|
| -// This is called when the user clicks "Revoke File/Device Access."
|
| -void ExtensionSettingsHandler::InstallUIProceed() {
|
| - Profile* profile = Profile::FromWebUI(web_ui());
|
| - extensions::DevicePermissionsManager::Get(profile)
|
| - ->Clear(extension_id_prompting_);
|
| - apps::SavedFilesService::Get(profile)->ClearQueue(
|
| - extension_service_->GetExtensionById(extension_id_prompting_, true));
|
| - apps::AppLoadService::Get(profile)
|
| - ->RestartApplicationIfRunning(extension_id_prompting_);
|
| - extension_id_prompting_.clear();
|
| -}
|
| -
|
| -void ExtensionSettingsHandler::InstallUIAbort(bool user_initiated) {
|
| - extension_id_prompting_.clear();
|
| -}
|
| -
|
| -void ExtensionSettingsHandler::AppInfoDialogClosed() {
|
| - extension_id_prompting_.clear();
|
| -}
|
| -
|
| void ExtensionSettingsHandler::ReloadUnpackedExtensions() {
|
| ExtensionRegistry* registry =
|
| ExtensionRegistry::Get(extension_service_->profile());
|
| @@ -673,62 +609,6 @@ void ExtensionSettingsHandler::HandleOptionsMessage(
|
| chrome::FindBrowserWithWebContents(web_ui()->GetWebContents()));
|
| }
|
|
|
| -void ExtensionSettingsHandler::HandlePermissionsMessage(
|
| - const base::ListValue* args) {
|
| - std::string extension_id(base::UTF16ToUTF8(ExtractStringValue(args)));
|
| - CHECK(!extension_id.empty());
|
| - const Extension* extension =
|
| - ExtensionRegistry::Get(Profile::FromWebUI(web_ui()))
|
| - ->GetExtensionById(extension_id, ExtensionRegistry::EVERYTHING);
|
| - if (!extension)
|
| - return;
|
| -
|
| - if (!extension_id_prompting_.empty())
|
| - return; // Only one prompt at a time.
|
| - extension_id_prompting_ = extension->id();
|
| -
|
| - // The BrokerDelegate manages its own lifetime.
|
| - BrokerDelegate* broker_delegate = new BrokerDelegate(AsWeakPtr());
|
| -
|
| - // Show the new-style extensions dialog when it is available. It is currently
|
| - // unavailable by default on Mac.
|
| - if (CanShowAppInfoDialog()) {
|
| - UMA_HISTOGRAM_ENUMERATION("Apps.AppInfoDialog.Launches",
|
| - AppInfoLaunchSource::FROM_EXTENSIONS_PAGE,
|
| - AppInfoLaunchSource::NUM_LAUNCH_SOURCES);
|
| -
|
| - // Display the dialog at a size similar to the app list.
|
| - ShowAppInfoInNativeDialog(
|
| - web_contents()->GetTopLevelNativeWindow(),
|
| - GetAppInfoNativeDialogSize(),
|
| - Profile::FromWebUI(web_ui()), extension,
|
| - base::Bind(&BrokerDelegate::AppInfoDialogClosed,
|
| - base::Unretained(broker_delegate)));
|
| - } else {
|
| - prompt_.reset(new ExtensionInstallPrompt(web_contents()));
|
| - std::vector<base::FilePath> retained_file_paths;
|
| - if (extension->permissions_data()->HasAPIPermission(
|
| - APIPermission::kFileSystem)) {
|
| - std::vector<apps::SavedFileEntry> retained_file_entries =
|
| - apps::SavedFilesService::Get(Profile::FromWebUI(web_ui()))
|
| - ->GetAllFileEntries(extension_id_prompting_);
|
| - for (size_t i = 0; i < retained_file_entries.size(); ++i) {
|
| - retained_file_paths.push_back(retained_file_entries[i].path);
|
| - }
|
| - }
|
| - std::vector<base::string16> retained_device_messages;
|
| - if (extension->permissions_data()->HasAPIPermission(APIPermission::kUsb)) {
|
| - retained_device_messages =
|
| - extensions::DevicePermissionsManager::Get(
|
| - Profile::FromWebUI(web_ui()))
|
| - ->GetPermissionMessageStrings(extension_id_prompting_);
|
| - }
|
| -
|
| - prompt_->ReviewPermissions(broker_delegate, extension, retained_file_paths,
|
| - retained_device_messages);
|
| - }
|
| -}
|
| -
|
| void ExtensionSettingsHandler::HandleShowButtonMessage(
|
| const base::ListValue* args) {
|
| const Extension* extension = GetActiveExtension(args);
|
|
|