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

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

Issue 989843002: [Extensions] Make chrome://extensions use developerPrivate for inspect (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 b618c1d3f99aa513280dcdab105e3abd6542e017..32ae4d52dca5484c6206884c0388d62214c224b1 100644
--- a/chrome/browser/extensions/api/developer_private/developer_private_api.cc
+++ b/chrome/browser/extensions/api/developer_private/developer_private_api.cc
@@ -103,10 +103,10 @@ const char kCouldNotShowSelectFileDialogError[] =
"Could not show a file chooser.";
const char kFileSelectionCanceled[] =
"File selection was canceled.";
+const char kNoSuchRendererError[] = "No such renderer.";
const char kInvalidPathError[] = "Invalid path.";
const char kManifestKeyIsRequiredError[] =
"The 'manifestKey' argument is required for manifest files.";
-const char kNoSuchRendererError[] = "Could not find the renderer.";
const char kUnpackedAppsFolder[] = "apps_target";
const char kManifestFile[] = "manifest.json";
@@ -850,39 +850,54 @@ DeveloperPrivateShowPermissionsDialogFunction::
DeveloperPrivateShowPermissionsDialogFunction::
~DeveloperPrivateShowPermissionsDialogFunction() {}
-bool DeveloperPrivateInspectFunction::RunSync() {
+ExtensionFunction::ResponseAction DeveloperPrivateInspectFunction::Run() {
scoped_ptr<developer::Inspect::Params> params(
developer::Inspect::Params::Create(*args_));
- EXTENSION_FUNCTION_VALIDATE(params.get() != NULL);
+ EXTENSION_FUNCTION_VALIDATE(params);
const developer::InspectOptions& options = params->options;
- int render_process_id;
- base::StringToInt(options.render_process_id, &render_process_id);
+ int render_process_id = 0;
+ if (options.render_process_id.as_string &&
+ !base::StringToInt(*options.render_process_id.as_string,
+ &render_process_id)) {
+ return RespondNow(Error(kNoSuchRendererError));
+ } else {
+ render_process_id = *options.render_process_id.as_integer;
+ }
+
+ int render_view_id = 0;
+ if (options.render_view_id.as_string &&
+ !base::StringToInt(*options.render_view_id.as_string, &render_view_id)) {
+ return RespondNow(Error(kNoSuchRendererError));
+ } else {
+ render_view_id = *options.render_view_id.as_integer;
+ }
if (render_process_id == -1) {
- // This is a lazy background page. Identify if it is a normal
- // or incognito background page.
+ // This is a lazy background page.
const Extension* extension = ExtensionRegistry::Get(
- GetProfile())->enabled_extensions().GetByID(options.extension_id);
- DCHECK(extension);
- // Wakes up the background page and opens the inspect window.
- devtools_util::InspectBackgroundPage(extension, GetProfile());
- return false;
+ browser_context())->enabled_extensions().GetByID(options.extension_id);
+ if (!extension)
+ return RespondNow(Error(kNoSuchExtensionError));
+
+ Profile* profile = Profile::FromBrowserContext(browser_context());
+ if (options.incognito)
+ profile = profile->GetOffTheRecordProfile();
+
+ // Wakes up the background page and opens the inspect window.
+ devtools_util::InspectBackgroundPage(extension, profile);
+ return RespondNow(NoArguments());
}
- int render_view_id;
- base::StringToInt(options.render_view_id, &render_view_id);
content::RenderViewHost* host = content::RenderViewHost::FromID(
render_process_id, render_view_id);
- if (!host || !content::WebContents::FromRenderViewHost(host)) {
- // This can happen if the host has gone away since the page was displayed.
- return false;
- }
+ if (!host || !content::WebContents::FromRenderViewHost(host))
+ return RespondNow(Error(kNoSuchRendererError));
DevToolsWindow::OpenDevToolsWindow(
content::WebContents::FromRenderViewHost(host));
- return true;
+ return RespondNow(NoArguments());
}
DeveloperPrivateInspectFunction::~DeveloperPrivateInspectFunction() {}

Powered by Google App Engine
This is Rietveld 408576698