| Index: chrome/common/extensions/extension_file_util.cc
|
| diff --git a/chrome/common/extensions/extension_file_util.cc b/chrome/common/extensions/extension_file_util.cc
|
| index 1420b9e3120d380262c4a9e3bf94c3d1f176dab7..8347381a6ce953c618a7eb1968757411a44927bc 100644
|
| --- a/chrome/common/extensions/extension_file_util.cc
|
| +++ b/chrome/common/extensions/extension_file_util.cc
|
| @@ -1,4 +1,4 @@
|
| -// Copyright (c) 2009 The Chromium Authors. All rights reserved.
|
| +// Copyright (c) 2010 The Chromium Authors. All rights reserved.
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| @@ -16,11 +16,11 @@
|
| #include "chrome/common/extensions/extension_l10n_util.h"
|
| #include "chrome/common/extensions/extension_constants.h"
|
| #include "chrome/common/json_value_serializer.h"
|
| +#include "grit/generated_resources.h"
|
| #include "net/base/escape.h"
|
| #include "net/base/file_stream.h"
|
|
|
| namespace errors = extension_manifest_errors;
|
| -namespace keys = extension_manifest_keys;
|
|
|
| namespace extension_file_util {
|
|
|
| @@ -96,7 +96,8 @@ bool InstallExtension(const FilePath& src_dir,
|
| scoped_version_dir.Set(version_dir);
|
|
|
| if (!MoveDirSafely(src_dir, version_dir)) {
|
| - *error = "Could not move extension directory into profile.";
|
| + *error = l10n_util::GetStringUTF8(
|
| + IDS_EXTENSION_MOVE_DIRECTORY_TO_PROFILE_FAILED);
|
| return false;
|
| }
|
|
|
| @@ -110,7 +111,8 @@ Extension* LoadExtension(const FilePath& extension_path,
|
| FilePath manifest_path =
|
| extension_path.Append(Extension::kManifestFilename);
|
| if (!file_util::PathExists(manifest_path)) {
|
| - *error = extension_manifest_errors::kManifestUnreadable;
|
| + *error =
|
| + l10n_util::GetStringUTF8(IDS_EXTENSION_MANIFEST_UNREADABLE);
|
| return NULL;
|
| }
|
|
|
| @@ -122,17 +124,19 @@ Extension* LoadExtension(const FilePath& extension_path,
|
| // It would be cleaner to have the JSON reader give a specific error
|
| // in this case, but other code tests for a file error with
|
| // error->empty(). For now, be consistent.
|
| - *error = extension_manifest_errors::kManifestUnreadable;
|
| + *error =
|
| + l10n_util::GetStringUTF8(IDS_EXTENSION_MANIFEST_UNREADABLE);
|
| } else {
|
| *error = StringPrintf("%s %s",
|
| - extension_manifest_errors::kManifestParseError,
|
| + errors::kManifestParseError,
|
| error->c_str());
|
| }
|
| return NULL;
|
| }
|
|
|
| if (!root->IsType(Value::TYPE_DICTIONARY)) {
|
| - *error = extension_manifest_errors::kInvalidManifest;
|
| + *error =
|
| + l10n_util::GetStringUTF8(IDS_EXTENSION_MANIFEST_INVALID);
|
| return NULL;
|
| }
|
|
|
| @@ -158,8 +162,9 @@ bool ValidateExtension(Extension* extension, std::string* error) {
|
| extension->icons().begin(); iter != extension->icons().end(); ++iter) {
|
| const FilePath path = extension->GetResource(iter->second).GetFilePath();
|
| if (!file_util::PathExists(path)) {
|
| - *error = StringPrintf("Could not load extension icon '%s'.",
|
| - iter->second.c_str());
|
| + *error =
|
| + l10n_util::GetStringFUTF8(IDS_EXTENSION_LOAD_ICON_FAILED,
|
| + UTF8ToUTF16(iter->second));
|
| return false;
|
| }
|
| }
|
| @@ -174,9 +179,9 @@ bool ValidateExtension(Extension* extension, std::string* error) {
|
| if (images_value->GetStringWithoutPathExpansion(*iter, &val)) {
|
| FilePath image_path = extension->path().AppendASCII(val);
|
| if (!file_util::PathExists(image_path)) {
|
| - *error = StringPrintf(
|
| - "Could not load '%s' for theme.",
|
| - WideToUTF8(image_path.ToWStringHack()).c_str());
|
| + *error =
|
| + l10n_util::GetStringFUTF8(IDS_EXTENSION_INVALID_IMAGE_PATH,
|
| + WideToUTF16(image_path.ToWStringHack()));
|
| return false;
|
| }
|
| }
|
| @@ -196,9 +201,9 @@ bool ValidateExtension(Extension* extension, std::string* error) {
|
| const FilePath& path = ExtensionResource::GetFilePath(
|
| js_script.extension_root(), js_script.relative_path());
|
| if (!file_util::PathExists(path)) {
|
| - *error = StringPrintf(
|
| - "Could not load javascript '%s' for content script.",
|
| - WideToUTF8(js_script.relative_path().ToWStringHack()).c_str());
|
| + *error =
|
| + l10n_util::GetStringFUTF8(IDS_EXTENSION_LOAD_JAVASCRIPT_FAILED,
|
| + WideToUTF16(js_script.relative_path().ToWStringHack()));
|
| return false;
|
| }
|
| }
|
| @@ -208,9 +213,9 @@ bool ValidateExtension(Extension* extension, std::string* error) {
|
| const FilePath& path = ExtensionResource::GetFilePath(
|
| css_script.extension_root(), css_script.relative_path());
|
| if (!file_util::PathExists(path)) {
|
| - *error = StringPrintf(
|
| - "Could not load css '%s' for content script.",
|
| - WideToUTF8(css_script.relative_path().ToWStringHack()).c_str());
|
| + *error =
|
| + l10n_util::GetStringFUTF8(IDS_EXTENSION_LOAD_CSS_FAILED,
|
| + WideToUTF16(css_script.relative_path().ToWStringHack()));
|
| return false;
|
| }
|
| }
|
| @@ -220,8 +225,10 @@ bool ValidateExtension(Extension* extension, std::string* error) {
|
| for (size_t i = 0; i < extension->plugins().size(); ++i) {
|
| const Extension::PluginInfo& plugin = extension->plugins()[i];
|
| if (!file_util::PathExists(plugin.path)) {
|
| - *error = StringPrintf("Could not load '%s' for plugin.",
|
| - WideToUTF8(plugin.path.ToWStringHack()).c_str());
|
| + *error =
|
| + l10n_util::GetStringFUTF8(
|
| + IDS_EXTENSION_LOAD_PLUGIN_PATH_FAILED,
|
| + WideToUTF16(plugin.path.ToWStringHack()));
|
| return false;
|
| }
|
| }
|
| @@ -235,8 +242,10 @@ bool ValidateExtension(Extension* extension, std::string* error) {
|
| for (std::vector<std::string>::iterator iter = icon_paths.begin();
|
| iter != icon_paths.end(); ++iter) {
|
| if (!file_util::PathExists(extension->GetResource(*iter).GetFilePath())) {
|
| - *error = StringPrintf("Could not load icon '%s' for page action.",
|
| - iter->c_str());
|
| + *error =
|
| + l10n_util::GetStringFUTF8(
|
| + IDS_EXTENSION_LOAD_ICON_FOR_PAGE_ACTION_FAILED,
|
| + UTF8ToUTF16(*iter));
|
| return false;
|
| }
|
| }
|
| @@ -249,8 +258,10 @@ bool ValidateExtension(Extension* extension, std::string* error) {
|
| std::string path = browser_action->default_icon_path();
|
| if (!path.empty() &&
|
| !file_util::PathExists(extension->GetResource(path).GetFilePath())) {
|
| - *error = StringPrintf("Could not load icon '%s' for browser action.",
|
| - path.c_str());
|
| + *error =
|
| + l10n_util::GetStringFUTF8(
|
| + IDS_EXTENSION_LOAD_ICON_FOR_BROWSER_ACTION_FAILED,
|
| + UTF8ToUTF16(path));
|
| return false;
|
| }
|
| }
|
| @@ -261,8 +272,10 @@ bool ValidateExtension(Extension* extension, std::string* error) {
|
| extension->background_url());
|
| const FilePath path = extension->GetResource(page_path).GetFilePath();
|
| if (path.empty() || !file_util::PathExists(path)) {
|
| - *error = StringPrintf("Could not load background page '%s'.",
|
| - WideToUTF8(page_path.ToWStringHack()).c_str());
|
| + *error =
|
| + l10n_util::GetStringFUTF8(
|
| + IDS_EXTENSION_LOAD_BACKGROUND_PAGE_FAILED,
|
| + WideToUTF16(page_path.ToWStringHack()));
|
| return false;
|
| }
|
| }
|
| @@ -389,7 +402,8 @@ ExtensionMessageBundle* LoadExtensionMessageBundle(
|
|
|
| if (default_locale.empty() ||
|
| locales.find(default_locale) == locales.end()) {
|
| - *error = extension_manifest_errors::kLocalesNoDefaultLocaleSpecified;
|
| + *error = l10n_util::GetStringUTF8(
|
| + IDS_EXTENSION_LOCALES_NO_DEFAULT_LOCALE_SPECIFIED);
|
| return NULL;
|
| }
|
|
|
| @@ -415,7 +429,8 @@ static bool ValidateLocaleInfo(const Extension& extension, std::string* error) {
|
| return true;
|
|
|
| if (default_locale.empty() && path_exists) {
|
| - *error = errors::kLocalesNoDefaultLocaleSpecified;
|
| + *error = l10n_util::GetStringUTF8(
|
| + IDS_EXTENSION_LOCALES_NO_DEFAULT_LOCALE_SPECIFIED);
|
| return false;
|
| } else if (!default_locale.empty() && !path_exists) {
|
| *error = errors::kLocalesTreeMissing;
|
|
|