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

Unified Diff: chrome/browser/extensions/api/developer_private/developer_private_api.cc

Issue 1008973002: [Extensions UI] Update extensions page to use api methods for permissions prompt (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 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 side-by-side diff with in-line comments
Download patch
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..c4453273a2b20f0c1da94027649da0c2d91ea4f7 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(
+ web_contents,
+ browser_context(),
+ target_extension,
+ extension() == nullptr, // From extensions page if no calling extension.
not at google - send to devlin 2015/03/16 17:39:55 There's a method IsWebUI() or something, use that
Devlin 2015/03/16 21:10:54 Done.
+ 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_));

Powered by Google App Engine
This is Rietveld 408576698