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

Unified Diff: chrome/browser/ui/webui/extensions/extension_loader_handler.cc

Issue 2767173002: [MD Extensions] Respond with a load error when loading unpacked fails (Closed)
Patch Set: . Created 3 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/ui/webui/extensions/extension_loader_handler.cc
diff --git a/chrome/browser/ui/webui/extensions/extension_loader_handler.cc b/chrome/browser/ui/webui/extensions/extension_loader_handler.cc
index e2e40ce189e526bbd778144cc69b509c7f47c9f8..f85d09dcae0c8da2418ede3428ef9248f182f48b 100644
--- a/chrome/browser/ui/webui/extensions/extension_loader_handler.cc
+++ b/chrome/browser/ui/webui/extensions/extension_loader_handler.cc
@@ -101,6 +101,33 @@ void ExtensionLoaderHandler::RegisterMessages() {
weak_ptr_factory_.GetWeakPtr()));
}
+// static
+void ExtensionLoaderHandler::GetManifestError(
+ const std::string& error,
+ const base::FilePath& extension_path,
+ const GetManifestErrorCallback& callback) {
+ size_t line = 0u;
+ size_t column = 0u;
+ std::string regex = base::StringPrintf("%s Line: (\\d+), column: (\\d+), .*",
+ manifest_errors::kManifestParseError);
+ // If this was a JSON parse error, we can highlight the exact line with the
+ // error. Otherwise, we should still display the manifest (for consistency,
+ // reference, and so that if we ever make this really fancy and add an editor,
+ // it's ready).
+ //
+ // This regex call can fail, but if it does, we just don't highlight anything.
+ re2::RE2::FullMatch(error, regex, &line, &column);
+
+ // This will read the manifest and call AddFailure with the read manifest
+ // contents.
+ base::PostTaskWithTraitsAndReplyWithResult(
+ FROM_HERE,
+ base::TaskTraits().MayBlock().WithPriority(
+ base::TaskPriority::USER_BLOCKING),
+ base::Bind(&ReadFileToString, extension_path.Append(kManifestFilename)),
+ base::Bind(callback, extension_path, error, line));
+}
+
void ExtensionLoaderHandler::HandleRetry(const base::ListValue* args) {
DCHECK(args->empty());
const base::FilePath file_path = failed_paths_.back();
@@ -144,28 +171,9 @@ void ExtensionLoaderHandler::OnLoadFailure(
if (web_ui()->GetWebContents()->GetBrowserContext() != browser_context)
return;
- size_t line = 0u;
- size_t column = 0u;
- std::string regex =
- base::StringPrintf("%s Line: (\\d+), column: (\\d+), .*",
- manifest_errors::kManifestParseError);
- // If this was a JSON parse error, we can highlight the exact line with the
- // error. Otherwise, we should still display the manifest (for consistency,
- // reference, and so that if we ever make this really fancy and add an editor,
- // it's ready).
- //
- // This regex call can fail, but if it does, we just don't highlight anything.
- re2::RE2::FullMatch(error, regex, &line, &column);
-
- // This will read the manifest and call AddFailure with the read manifest
- // contents.
- base::PostTaskWithTraitsAndReplyWithResult(
- FROM_HERE,
- base::TaskTraits().MayBlock().WithPriority(
- base::TaskPriority::USER_BLOCKING),
- base::Bind(&ReadFileToString, file_path.Append(kManifestFilename)),
- base::Bind(&ExtensionLoaderHandler::AddFailure,
- weak_ptr_factory_.GetWeakPtr(), file_path, error, line));
+ GetManifestError(error, file_path,
+ base::Bind(&ExtensionLoaderHandler::AddFailure,
+ weak_ptr_factory_.GetWeakPtr()));
}
void ExtensionLoaderHandler::DidStartNavigation(
« no previous file with comments | « chrome/browser/ui/webui/extensions/extension_loader_handler.h ('k') | chrome/common/extensions/api/developer_private.idl » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698