| 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(
|
|
|