| Index: chrome/browser/extensions/api/developer_private/developer_private_api.cc
|
| diff --git a/chrome/browser/extensions/api/developer_private/developer_private_api.cc b/chrome/browser/extensions/api/developer_private/developer_private_api.cc
|
| index 4d55e56bc09c21c44bfe9402d0af230f05a678a6..8815f8832a69ecc57ecfe675bdc7ec1c31dc9a4e 100644
|
| --- a/chrome/browser/extensions/api/developer_private/developer_private_api.cc
|
| +++ b/chrome/browser/extensions/api/developer_private/developer_private_api.cc
|
| @@ -4,8 +4,6 @@
|
|
|
| #include "chrome/browser/extensions/api/developer_private/developer_private_api.h"
|
|
|
| -#include "apps/app_load_service.h"
|
| -#include "apps/saved_files_service.h"
|
| #include "base/base64.h"
|
| #include "base/bind.h"
|
| #include "base/files/file_util.h"
|
| @@ -17,6 +15,7 @@
|
| #include "chrome/browser/extensions/api/developer_private/developer_private_mangle.h"
|
| #include "chrome/browser/extensions/api/developer_private/entry_picker.h"
|
| #include "chrome/browser/extensions/api/developer_private/extension_info_generator.h"
|
| +#include "chrome/browser/extensions/api/developer_private/show_permissions_dialog_helper.h"
|
| #include "chrome/browser/extensions/api/file_handlers/app_file_handler_util.h"
|
| #include "chrome/browser/extensions/devtools_util.h"
|
| #include "chrome/browser/extensions/extension_service.h"
|
| @@ -39,7 +38,6 @@
|
| #include "content/public/browser/site_instance.h"
|
| #include "content/public/browser/storage_partition.h"
|
| #include "content/public/browser/web_contents.h"
|
| -#include "extensions/browser/api/device_permissions_manager.h"
|
| #include "extensions/browser/app_window/app_window.h"
|
| #include "extensions/browser/app_window/app_window_registry.h"
|
| #include "extensions/browser/extension_error.h"
|
| @@ -88,6 +86,8 @@ const char kNoSuchRendererError[] = "No such renderer.";
|
| const char kInvalidPathError[] = "Invalid path.";
|
| const char kManifestKeyIsRequiredError[] =
|
| "The 'manifestKey' argument is required for manifest files.";
|
| +const char kCouldNotFindWebContentsError[] =
|
| + "Could not find a valid web contents.";
|
|
|
| const char kUnpackedAppsFolder[] = "apps_target";
|
| const char kManifestFile[] = "manifest.json";
|
| @@ -540,6 +540,8 @@ DeveloperPrivateAllowIncognitoFunction::Run() {
|
| DeveloperPrivateAllowIncognitoFunction::
|
| ~DeveloperPrivateAllowIncognitoFunction() {}
|
|
|
| +DeveloperPrivateReloadFunction::~DeveloperPrivateReloadFunction() {}
|
| +
|
| ExtensionFunction::ResponseAction DeveloperPrivateReloadFunction::Run() {
|
| scoped_ptr<Reload::Params> params(Reload::Params::Create(*args_));
|
| EXTENSION_FUNCTION_VALIDATE(params.get());
|
| @@ -563,71 +565,39 @@ ExtensionFunction::ResponseAction DeveloperPrivateReloadFunction::Run() {
|
| return RespondNow(NoArguments());
|
| }
|
|
|
| -bool DeveloperPrivateShowPermissionsDialogFunction::RunSync() {
|
| - EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, &extension_id_));
|
| - CHECK(!extension_id_.empty());
|
| - AppWindowRegistry* registry = AppWindowRegistry::Get(GetProfile());
|
| - DCHECK(registry);
|
| - AppWindow* app_window =
|
| - registry->GetAppWindowForRenderViewHost(render_view_host());
|
| - prompt_.reset(new ExtensionInstallPrompt(app_window->web_contents()));
|
| - const Extension* extension =
|
| - ExtensionRegistry::Get(GetProfile())
|
| - ->GetExtensionById(extension_id_, ExtensionRegistry::EVERYTHING);
|
| +DeveloperPrivateShowPermissionsDialogFunction::
|
| +DeveloperPrivateShowPermissionsDialogFunction() {}
|
|
|
| - if (!extension)
|
| - return false;
|
| +DeveloperPrivateShowPermissionsDialogFunction::
|
| +~DeveloperPrivateShowPermissionsDialogFunction() {}
|
|
|
| - // Released by InstallUIAbort or InstallUIProceed.
|
| - AddRef();
|
| - std::vector<base::FilePath> retained_file_paths;
|
| - if (extension->permissions_data()->HasAPIPermission(
|
| - APIPermission::kFileSystem)) {
|
| - std::vector<apps::SavedFileEntry> retained_file_entries =
|
| - apps::SavedFilesService::Get(GetProfile())
|
| - ->GetAllFileEntries(extension_id_);
|
| - 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(GetProfile())
|
| - ->GetPermissionMessageStrings(extension_id_);
|
| - }
|
| - prompt_->ReviewPermissions(
|
| - this, extension, retained_file_paths, retained_device_messages);
|
| - return true;
|
| -}
|
| +ExtensionFunction::ResponseAction
|
| +DeveloperPrivateShowPermissionsDialogFunction::Run() {
|
| + scoped_ptr<developer::ShowPermissionsDialog::Params> params(
|
| + developer::ShowPermissionsDialog::Params::Create(*args_));
|
| + EXTENSION_FUNCTION_VALIDATE(params);
|
|
|
| -DeveloperPrivateReloadFunction::~DeveloperPrivateReloadFunction() {}
|
| + const Extension* target_extension = GetExtensionById(params->extension_id);
|
| + if (!target_extension)
|
| + return RespondNow(Error(kNoSuchExtensionError));
|
|
|
| -// This is called when the user clicks "Revoke File Access."
|
| -void DeveloperPrivateShowPermissionsDialogFunction::InstallUIProceed() {
|
| - Profile* profile = GetProfile();
|
| - extensions::DevicePermissionsManager::Get(profile)->Clear(extension_id_);
|
| - const Extension* extension = ExtensionRegistry::Get(
|
| - profile)->GetExtensionById(extension_id_, ExtensionRegistry::EVERYTHING);
|
| - apps::SavedFilesService::Get(profile)->ClearQueue(extension);
|
| - apps::AppLoadService::Get(profile)
|
| - ->RestartApplicationIfRunning(extension_id_);
|
| - SendResponse(true);
|
| - Release();
|
| + content::WebContents* web_contents = GetSenderWebContents();
|
| + if (!web_contents)
|
| + return RespondNow(Error(kCouldNotFindWebContentsError));
|
| +
|
| + ShowPermissionsDialogHelper::Show(
|
| + browser_context(),
|
| + web_contents,
|
| + target_extension,
|
| + source_context_type() == Feature::WEBUI_CONTEXT,
|
| + base::Bind(&DeveloperPrivateShowPermissionsDialogFunction::Finish, this));
|
| + return RespondLater();
|
| }
|
|
|
| -void DeveloperPrivateShowPermissionsDialogFunction::InstallUIAbort(
|
| - bool user_initiated) {
|
| - SendResponse(true);
|
| - Release();
|
| +void DeveloperPrivateShowPermissionsDialogFunction::Finish() {
|
| + Respond(NoArguments());
|
| }
|
|
|
| -DeveloperPrivateShowPermissionsDialogFunction::
|
| - DeveloperPrivateShowPermissionsDialogFunction() {}
|
| -
|
| -DeveloperPrivateShowPermissionsDialogFunction::
|
| - ~DeveloperPrivateShowPermissionsDialogFunction() {}
|
| -
|
| ExtensionFunction::ResponseAction DeveloperPrivateInspectFunction::Run() {
|
| scoped_ptr<developer::Inspect::Params> params(
|
| developer::Inspect::Params::Create(*args_));
|
|
|