summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/DEPS1
-rw-r--r--chrome/browser/background/background_application_list_model.cc7
-rw-r--r--chrome/browser/browser_process_impl.cc1
-rw-r--r--chrome/browser/chromeos/accessibility/accessibility_util.cc12
-rw-r--r--chrome/browser/component_updater/component_unpacker.cc2
-rw-r--r--chrome/browser/extensions/all_urls_apitest.cc5
-rw-r--r--chrome/browser/extensions/api/developer_private/developer_private_api.cc2
-rw-r--r--chrome/browser/extensions/api/tabs/tabs_api.cc2
-rw-r--r--chrome/browser/extensions/api/tabs/tabs_api.h4
-rw-r--r--chrome/browser/extensions/component_loader.cc4
-rw-r--r--chrome/browser/extensions/component_loader_unittest.cc5
-rw-r--r--chrome/browser/extensions/convert_user_script.cc4
-rw-r--r--chrome/browser/extensions/convert_user_script_unittest.cc5
-rw-r--r--chrome/browser/extensions/convert_web_app.cc4
-rw-r--r--chrome/browser/extensions/convert_web_app_unittest.cc2
-rw-r--r--chrome/browser/extensions/crx_installer.cc1
-rw-r--r--chrome/browser/extensions/crx_installer.h2
-rw-r--r--chrome/browser/extensions/extension_browsertest.cc3
-rw-r--r--chrome/browser/extensions/extension_browsertest.h2
-rw-r--r--chrome/browser/extensions/extension_creator.cc7
-rw-r--r--chrome/browser/extensions/extension_function_test_utils.cc3
-rw-r--r--chrome/browser/extensions/extension_icon_image.cc6
-rw-r--r--chrome/browser/extensions/extension_icon_manager.cc11
-rw-r--r--chrome/browser/extensions/extension_icon_manager_unittest.cc5
-rw-r--r--chrome/browser/extensions/extension_install_prompt.cc4
-rw-r--r--chrome/browser/extensions/extension_protocols.cc6
-rw-r--r--chrome/browser/extensions/extension_service.cc1
-rw-r--r--chrome/browser/extensions/extension_service_unittest.cc17
-rw-r--r--chrome/browser/extensions/extension_ui_unittest.cc3
-rw-r--r--chrome/browser/extensions/extension_uninstall_dialog.cc4
-rw-r--r--chrome/browser/extensions/extension_web_ui.cc4
-rw-r--r--chrome/browser/extensions/image_loader.h2
-rw-r--r--chrome/browser/extensions/image_loader_unittest.cc3
-rw-r--r--chrome/browser/extensions/installed_loader.cc3
-rw-r--r--chrome/browser/extensions/sandboxed_unpacker.cc11
-rw-r--r--chrome/browser/extensions/sandboxed_unpacker_unittest.cc7
-rw-r--r--chrome/browser/extensions/tab_helper.cc2
-rw-r--r--chrome/browser/extensions/unpacked_installer.cc3
-rw-r--r--chrome/browser/extensions/updater/extension_updater_unittest.cc19
-rw-r--r--chrome/browser/extensions/user_script_master.cc2
-rw-r--r--chrome/browser/managed_mode/managed_mode_site_list.cc5
-rw-r--r--chrome/browser/managed_mode/managed_mode_site_list.h6
-rw-r--r--chrome/browser/managed_mode/managed_user_service.cc3
-rw-r--r--chrome/browser/sync/test/integration/sync_app_helper.cc10
-rw-r--r--chrome/browser/sync/test/integration/sync_extension_helper.cc32
-rw-r--r--chrome/browser/sync/test/integration/sync_extension_helper.h3
-rw-r--r--chrome/browser/sync/test/integration/themes_helper.cc5
-rw-r--r--chrome/browser/sync_file_system/drive_file_sync_service_mock_unittest.cc7
-rw-r--r--chrome/browser/themes/browser_theme_pack.cc8
-rw-r--r--chrome/browser/ui/ash/launcher/chrome_launcher_controller_per_app.cc2
-rw-r--r--chrome/browser/ui/ash/launcher/chrome_launcher_controller_per_browser.cc1
-rw-r--r--chrome/browser/ui/cocoa/extensions/browser_action_button.mm1
-rw-r--r--chrome/browser/ui/cocoa/infobars/extension_infobar_controller.mm4
-rw-r--r--chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.mm1
-rw-r--r--chrome/browser/ui/cocoa/location_bar/page_action_decoration.mm1
-rw-r--r--chrome/browser/ui/gtk/browser_actions_toolbar_gtk.cc1
-rw-r--r--chrome/browser/ui/gtk/create_application_shortcuts_dialog_gtk.cc1
-rw-r--r--chrome/browser/ui/gtk/infobars/extension_infobar_gtk.cc11
-rw-r--r--chrome/browser/ui/gtk/infobars/extension_infobar_gtk.h1
-rw-r--r--chrome/browser/ui/gtk/location_bar_view_gtk.cc1
-rw-r--r--chrome/browser/ui/views/create_application_shortcut_view.cc1
-rw-r--r--chrome/browser/ui/views/frame/browser_view.cc1
-rw-r--r--chrome/browser/ui/views/infobars/extension_infobar.cc7
-rw-r--r--chrome/browser/ui/views/location_bar/page_action_image_view.cc1
-rw-r--r--chrome/browser/ui/views/script_bubble_view.cc3
-rw-r--r--chrome/browser/ui/web_applications/web_app_ui.cc10
-rw-r--r--chrome/browser/ui/webui/extensions/extension_icon_source.cc11
-rw-r--r--chrome/browser/ui/webui/extensions/extension_icon_source.h5
-rw-r--r--chrome/browser/ui/webui/extensions/extension_settings_handler.h1
-rw-r--r--chrome/browser/ui/webui/ntp/app_launcher_handler.cc1
-rw-r--r--chrome/browser/ui/webui/ntp/favicon_webui_handler.cc1
-rw-r--r--chrome/chrome_browser_extensions.gypi6
-rw-r--r--chrome/chrome_common.gypi8
-rw-r--r--chrome/chrome_tests_unit.gypi5
-rw-r--r--chrome/common/extensions/api/i18n/default_locale_handler.cc7
-rw-r--r--chrome/common/extensions/api/icons/icons_handler.h2
-rw-r--r--chrome/common/extensions/extension.cc80
-rw-r--r--chrome/common/extensions/extension.h30
-rw-r--r--chrome/common/extensions/extension_file_util.cc13
-rw-r--r--chrome/common/extensions/extension_file_util_unittest.cc5
-rw-r--r--chrome/common/extensions/extension_l10n_util.cc9
-rw-r--r--chrome/common/extensions/extension_l10n_util.h2
-rw-r--r--chrome/common/extensions/extension_l10n_util_unittest.cc59
-rw-r--r--chrome/common/extensions/extension_test_util.cc9
-rw-r--r--chrome/common/extensions/extension_unittest.cc46
-rw-r--r--chrome/common/extensions/unpacker.cc8
-rw-r--r--extensions/DEPS14
-rw-r--r--extensions/browser/DEPS3
-rw-r--r--extensions/browser/file_reader.cc (renamed from chrome/browser/extensions/file_reader.cc)5
-rw-r--r--extensions/browser/file_reader.h (renamed from chrome/browser/extensions/file_reader.h)13
-rw-r--r--extensions/browser/file_reader_unittest.cc (renamed from chrome/browser/extensions/file_reader_unittest.cc)17
-rw-r--r--extensions/common/DEPS4
-rw-r--r--extensions/common/constants.cc9
-rw-r--r--extensions/common/constants.h14
-rw-r--r--extensions/common/crx_file.cc (renamed from chrome/browser/extensions/crx_file.cc)2
-rw-r--r--extensions/common/crx_file.h (renamed from chrome/browser/extensions/crx_file.h)6
-rw-r--r--extensions/common/extension_resource.cc (renamed from chrome/common/extensions/extension_resource.cc)6
-rw-r--r--extensions/common/extension_resource.h (renamed from chrome/common/extensions/extension_resource.h)10
-rw-r--r--extensions/common/extension_resource_unittest.cc (renamed from chrome/common/extensions/extension_resource_unittest.cc)19
-rw-r--r--extensions/common/id_util.cc73
-rw-r--r--extensions/common/id_util.h35
-rw-r--r--extensions/common/id_util_unittest.cc44
102 files changed, 472 insertions, 428 deletions
diff --git a/chrome/browser/DEPS b/chrome/browser/DEPS
index 85dd2dd..c5807bc 100644
--- a/chrome/browser/DEPS
+++ b/chrome/browser/DEPS
@@ -16,6 +16,7 @@ include_rules = [
"+content/public/browser",
"+device/bluetooth",
"+device/media_transfer_protocol",
+ "+extensions/browser",
"+extensions/common",
"+google/cacheinvalidation", # Sync invalidation API protobuf files.
"+google_apis",
diff --git a/chrome/browser/background/background_application_list_model.cc b/chrome/browser/background/background_application_list_model.cc
index a039ece..8772918 100644
--- a/chrome/browser/background/background_application_list_model.cc
+++ b/chrome/browser/background/background_application_list_model.cc
@@ -25,10 +25,10 @@
#include "chrome/common/extensions/extension.h"
#include "chrome/common/extensions/extension_constants.h"
#include "chrome/common/extensions/extension_icon_set.h"
-#include "chrome/common/extensions/extension_resource.h"
#include "chrome/common/extensions/permissions/permission_set.h"
#include "content/public/browser/notification_details.h"
#include "content/public/browser/notification_source.h"
+#include "extensions/common/extension_resource.h"
#include "ui/base/l10n/l10n_util_collator.h"
#include "ui/gfx/image/image.h"
#include "ui/gfx/image/image_skia.h"
@@ -154,8 +154,9 @@ void BackgroundApplicationListModel::Application::OnImageLoaded(
void BackgroundApplicationListModel::Application::RequestIcon(
extension_misc::ExtensionIcons size) {
- ExtensionResource resource = extensions::IconsInfo::GetIconResource(
- extension_, size, ExtensionIconSet::MATCH_BIGGER);
+ extensions::ExtensionResource resource =
+ extensions::IconsInfo::GetIconResource(
+ extension_, size, ExtensionIconSet::MATCH_BIGGER);
extensions::ImageLoader::Get(model_->profile_)->LoadImageAsync(
extension_, resource, gfx::Size(size, size),
base::Bind(&Application::OnImageLoaded, AsWeakPtr()));
diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc
index 574a2f8..00f01b8eb 100644
--- a/chrome/browser/browser_process_impl.cc
+++ b/chrome/browser/browser_process_impl.cc
@@ -72,7 +72,6 @@
#include "chrome/common/chrome_paths.h"
#include "chrome/common/chrome_switches.h"
#include "chrome/common/extensions/extension_l10n_util.h"
-#include "chrome/common/extensions/extension_resource.h"
#include "chrome/common/pref_names.h"
#include "chrome/common/switch_utils.h"
#include "chrome/common/url_constants.h"
diff --git a/chrome/browser/chromeos/accessibility/accessibility_util.cc b/chrome/browser/chromeos/accessibility/accessibility_util.cc
index e5a8476..f8f71aa 100644
--- a/chrome/browser/chromeos/accessibility/accessibility_util.cc
+++ b/chrome/browser/chromeos/accessibility/accessibility_util.cc
@@ -22,14 +22,12 @@
#include "chrome/browser/extensions/component_loader.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/extension_system.h"
-#include "chrome/browser/extensions/file_reader.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/profiles/profile_manager.h"
#include "chrome/browser/speech/tts_controller.h"
#include "chrome/browser/ui/singleton_tabs.h"
#include "chrome/common/extensions/extension.h"
#include "chrome/common/extensions/extension_messages.h"
-#include "chrome/common/extensions/extension_resource.h"
#include "chrome/common/extensions/user_script.h"
#include "chrome/common/pref_names.h"
#include "chrome/common/url_constants.h"
@@ -39,6 +37,8 @@
#include "content/public/browser/render_view_host.h"
#include "content/public/browser/web_contents.h"
#include "content/public/browser/web_ui.h"
+#include "extensions/browser/file_reader.h"
+#include "extensions/common/extension_resource.h"
#include "googleurl/src/gurl.h"
#include "grit/browser_resources.h"
#include "grit/generated_resources.h"
@@ -65,7 +65,7 @@ class ContentScriptLoader {
// Call this once with the ExtensionResource corresponding to each
// content script to be loaded.
- void AppendScript(ExtensionResource resource) {
+ void AppendScript(extensions::ExtensionResource resource) {
resources_.push(resource);
}
@@ -77,7 +77,7 @@ class ContentScriptLoader {
return;
}
- ExtensionResource resource = resources_.front();
+ extensions::ExtensionResource resource = resources_.front();
resources_.pop();
scoped_refptr<FileReader> reader(new FileReader(resource, base::Bind(
&ContentScriptLoader::OnFileLoaded, base::Unretained(this))));
@@ -109,7 +109,7 @@ class ContentScriptLoader {
std::string extension_id_;
int render_process_id_;
int render_view_id_;
- std::queue<ExtensionResource> resources_;
+ std::queue<extensions::ExtensionResource> resources_;
};
void UpdateChromeOSAccessibilityHistograms() {
@@ -201,7 +201,7 @@ void EnableSpokenFeedback(bool enabled,
const extensions::UserScript& script = extension->content_scripts()[i];
for (size_t j = 0; j < script.js_scripts().size(); ++j) {
const extensions::UserScript::File &file = script.js_scripts()[j];
- ExtensionResource resource = extension->GetResource(
+ extensions::ExtensionResource resource = extension->GetResource(
file.relative_path());
loader->AppendScript(resource);
}
diff --git a/chrome/browser/component_updater/component_unpacker.cc b/chrome/browser/component_updater/component_unpacker.cc
index 9fa9a9c..0ddad1f 100644
--- a/chrome/browser/component_updater/component_unpacker.cc
+++ b/chrome/browser/component_updater/component_unpacker.cc
@@ -13,11 +13,11 @@
#include "base/stringprintf.h"
#include "base/strings/string_number_conversions.h"
#include "chrome/browser/component_updater/component_updater_service.h"
-#include "chrome/browser/extensions/crx_file.h"
#include "chrome/common/extensions/extension_constants.h"
#include "chrome/common/zip.h"
#include "crypto/secure_hash.h"
#include "crypto/signature_verifier.h"
+#include "extensions/common/crx_file.h"
using crypto::SecureHash;
diff --git a/chrome/browser/extensions/all_urls_apitest.cc b/chrome/browser/extensions/all_urls_apitest.cc
index 233e2f4..a29c260 100644
--- a/chrome/browser/extensions/all_urls_apitest.cc
+++ b/chrome/browser/extensions/all_urls_apitest.cc
@@ -10,6 +10,7 @@
#include "chrome/browser/ui/browser.h"
#include "chrome/common/extensions/extension.h"
#include "chrome/test/base/ui_test_utils.h"
+#include "extensions/common/id_util.h"
const std::string kAllUrlsTarget =
"files/extensions/api_test/all_urls/index.html";
@@ -31,8 +32,8 @@ IN_PROC_BROWSER_TEST_F(AllUrlsApiTest, MAYBE_WhitelistedExtension) {
// Then add the two extensions to the whitelist.
extensions::Extension::ScriptingWhitelist whitelist;
- whitelist.push_back(extensions::Extension::GenerateIdForPath(extension_dir1));
- whitelist.push_back(extensions::Extension::GenerateIdForPath(extension_dir2));
+ whitelist.push_back(extensions::id_util::GenerateIdForPath(extension_dir1));
+ whitelist.push_back(extensions::id_util::GenerateIdForPath(extension_dir2));
extensions::Extension::SetScriptingWhitelist(whitelist);
// Then load extensions.
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 c4f082d..fc212a4 100644
--- a/chrome/browser/extensions/api/developer_private/developer_private_api.cc
+++ b/chrome/browser/extensions/api/developer_private/developer_private_api.cc
@@ -30,13 +30,13 @@
#include "chrome/common/extensions/api/icons/icons_handler.h"
#include "chrome/common/extensions/background_info.h"
#include "chrome/common/extensions/extension_icon_set.h"
-#include "chrome/common/extensions/extension_resource.h"
#include "chrome/common/extensions/manifest_url_handler.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/render_process_host.h"
#include "content/public/browser/render_view_host.h"
#include "content/public/browser/web_contents.h"
#include "extensions/common/constants.h"
+#include "extensions/common/extension_resource.h"
#include "grit/chromium_strings.h"
#include "grit/generated_resources.h"
#include "net/base/net_util.h"
diff --git a/chrome/browser/extensions/api/tabs/tabs_api.cc b/chrome/browser/extensions/api/tabs/tabs_api.cc
index 91b95d6..22dcf1e 100644
--- a/chrome/browser/extensions/api/tabs/tabs_api.cc
+++ b/chrome/browser/extensions/api/tabs/tabs_api.cc
@@ -27,7 +27,6 @@
#include "chrome/browser/extensions/extension_host.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/extension_tab_util.h"
-#include "chrome/browser/extensions/file_reader.h"
#include "chrome/browser/extensions/script_executor.h"
#include "chrome/browser/extensions/tab_helper.h"
#include "chrome/browser/extensions/window_controller.h"
@@ -73,6 +72,7 @@
#include "content/public/browser/web_contents.h"
#include "content/public/browser/web_contents_view.h"
#include "content/public/common/url_constants.h"
+#include "extensions/browser/file_reader.h"
#include "extensions/common/constants.h"
#include "extensions/common/error_utils.h"
#include "skia/ext/image_operations.h"
diff --git a/chrome/browser/extensions/api/tabs/tabs_api.h b/chrome/browser/extensions/api/tabs/tabs_api.h
index 9077284..5df900a 100644
--- a/chrome/browser/extensions/api/tabs/tabs_api.h
+++ b/chrome/browser/extensions/api/tabs/tabs_api.h
@@ -10,10 +10,10 @@
#include "base/compiler_specific.h"
#include "chrome/browser/extensions/extension_function.h"
-#include "chrome/common/extensions/extension_resource.h"
#include "chrome/common/extensions/user_script.h"
#include "content/public/browser/notification_observer.h"
#include "content/public/browser/notification_registrar.h"
+#include "extensions/common/extension_resource.h"
#include "googleurl/src/gurl.h"
class BackingStore;
@@ -262,7 +262,7 @@ class ExecuteCodeInTabFunction : public AsyncExtensionFunction {
// Contains extension resource built from path of file which is
// specified in JSON arguments.
- ExtensionResource resource_;
+ extensions::ExtensionResource resource_;
};
class TabsExecuteScriptFunction : public ExecuteCodeInTabFunction {
diff --git a/chrome/browser/extensions/component_loader.cc b/chrome/browser/extensions/component_loader.cc
index dbe212b..5749f13 100644
--- a/chrome/browser/extensions/component_loader.cc
+++ b/chrome/browser/extensions/component_loader.cc
@@ -24,6 +24,7 @@
#include "components/user_prefs/pref_registry_syncable.h"
#include "content/public/browser/notification_details.h"
#include "content/public/browser/notification_source.h"
+#include "extensions/common/id_util.h"
#include "grit/browser_resources.h"
#include "ui/base/resource/resource_bundle.h"
@@ -50,10 +51,9 @@ std::string GenerateId(const DictionaryValue* manifest,
const base::FilePath& path) {
std::string raw_key;
std::string id_input;
- std::string id;
CHECK(manifest->GetString(extension_manifest_keys::kPublicKey, &raw_key));
CHECK(Extension::ParsePEMKeyBytes(raw_key, &id_input));
- CHECK(Extension::GenerateId(id_input, &id));
+ std::string id = id_util::GenerateId(id_input);
return id;
}
diff --git a/chrome/browser/extensions/component_loader_unittest.cc b/chrome/browser/extensions/component_loader_unittest.cc
index fe69e04..8923c5a 100644
--- a/chrome/browser/extensions/component_loader_unittest.cc
+++ b/chrome/browser/extensions/component_loader_unittest.cc
@@ -17,6 +17,7 @@
#include "chrome/common/pref_names.h"
#include "chrome/test/base/testing_pref_service_syncable.h"
#include "components/user_prefs/pref_registry_syncable.h"
+#include "extensions/common/constants.h"
#include "testing/gtest/include/gtest/gtest.h"
using extensions::Extension;
@@ -92,8 +93,8 @@ class ComponentLoaderTest : public testing::Test {
// Read in the extension manifest.
ASSERT_TRUE(file_util::ReadFileToString(
- extension_path_.Append(Extension::kManifestFilename),
- &manifest_contents_));
+ extension_path_.Append(kManifestFilename),
+ &manifest_contents_));
// Register the user prefs that ComponentLoader will read.
prefs_.registry()->RegisterStringPref(
diff --git a/chrome/browser/extensions/convert_user_script.cc b/chrome/browser/extensions/convert_user_script.cc
index ad200b6..de4a2b5 100644
--- a/chrome/browser/extensions/convert_user_script.cc
+++ b/chrome/browser/extensions/convert_user_script.cc
@@ -22,6 +22,7 @@
#include "chrome/common/extensions/extension_manifest_constants.h"
#include "chrome/common/extensions/user_script.h"
#include "crypto/sha2.h"
+#include "extensions/common/constants.h"
#include "googleurl/src/gurl.h"
namespace keys = extension_manifest_keys;
@@ -155,8 +156,7 @@ scoped_refptr<Extension> ConvertUserScriptToExtension(
root->Set(keys::kContentScripts, content_scripts);
- base::FilePath manifest_path = temp_dir.path().Append(
- Extension::kManifestFilename);
+ base::FilePath manifest_path = temp_dir.path().Append(kManifestFilename);
JSONFileValueSerializer serializer(manifest_path);
if (!serializer.Serialize(*root)) {
*error = ASCIIToUTF16("Could not write JSON.");
diff --git a/chrome/browser/extensions/convert_user_script_unittest.cc b/chrome/browser/extensions/convert_user_script_unittest.cc
index e87cb1f..9985909 100644
--- a/chrome/browser/extensions/convert_user_script_unittest.cc
+++ b/chrome/browser/extensions/convert_user_script_unittest.cc
@@ -14,6 +14,7 @@
#include "chrome/browser/extensions/convert_user_script.h"
#include "chrome/common/chrome_paths.h"
#include "chrome/common/extensions/extension.h"
+#include "extensions/common/constants.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace extensions {
@@ -74,7 +75,7 @@ TEST(ExtensionFromUserScript, Basic) {
EXPECT_TRUE(file_util::PathExists(
extension->path().Append(script.js_scripts()[0].relative_path())));
EXPECT_TRUE(file_util::PathExists(
- extension->path().Append(Extension::kManifestFilename)));
+ extension->path().Append(kManifestFilename)));
}
TEST(ExtensionFromUserScript, NoMetdata) {
@@ -120,7 +121,7 @@ TEST(ExtensionFromUserScript, NoMetdata) {
EXPECT_TRUE(file_util::PathExists(
extension->path().Append(script.js_scripts()[0].relative_path())));
EXPECT_TRUE(file_util::PathExists(
- extension->path().Append(Extension::kManifestFilename)));
+ extension->path().Append(kManifestFilename)));
}
TEST(ExtensionFromUserScript, NotUTF8) {
diff --git a/chrome/browser/extensions/convert_web_app.cc b/chrome/browser/extensions/convert_web_app.cc
index d818a74..7ed143e 100644
--- a/chrome/browser/extensions/convert_web_app.cc
+++ b/chrome/browser/extensions/convert_web_app.cc
@@ -25,6 +25,7 @@
#include "chrome/common/extensions/extension_manifest_constants.h"
#include "chrome/common/web_apps.h"
#include "crypto/sha2.h"
+#include "extensions/common/constants.h"
#include "googleurl/src/gurl.h"
#include "third_party/skia/include/core/SkBitmap.h"
#include "ui/gfx/codec/png_codec.h"
@@ -143,8 +144,7 @@ scoped_refptr<Extension> ConvertWebAppToExtension(
}
// Write the manifest.
- base::FilePath manifest_path = temp_dir.path().Append(
- Extension::kManifestFilename);
+ base::FilePath manifest_path = temp_dir.path().Append(kManifestFilename);
JSONFileValueSerializer serializer(manifest_path);
if (!serializer.Serialize(*root)) {
LOG(ERROR) << "Could not serialize manifest.";
diff --git a/chrome/browser/extensions/convert_web_app_unittest.cc b/chrome/browser/extensions/convert_web_app_unittest.cc
index 5da7064..fbb5128 100644
--- a/chrome/browser/extensions/convert_web_app_unittest.cc
+++ b/chrome/browser/extensions/convert_web_app_unittest.cc
@@ -19,9 +19,9 @@
#include "chrome/common/extensions/api/icons/icons_handler.h"
#include "chrome/common/extensions/extension.h"
#include "chrome/common/extensions/extension_icon_set.h"
-#include "chrome/common/extensions/extension_resource.h"
#include "chrome/common/extensions/permissions/permission_set.h"
#include "chrome/common/web_apps.h"
+#include "extensions/common/extension_resource.h"
#include "extensions/common/url_pattern.h"
#include "googleurl/src/gurl.h"
#include "testing/gtest/include/gtest/gtest.h"
diff --git a/chrome/browser/extensions/crx_installer.cc b/chrome/browser/extensions/crx_installer.cc
index 3e00209..87f4b1c 100644
--- a/chrome/browser/extensions/crx_installer.cc
+++ b/chrome/browser/extensions/crx_installer.cc
@@ -23,6 +23,7 @@
#include "base/version.h"
#include "chrome/browser/extensions/convert_user_script.h"
#include "chrome/browser/extensions/convert_web_app.h"
+#include "chrome/browser/extensions/crx_installer_error.h"
#include "chrome/browser/extensions/extension_error_reporter.h"
#include "chrome/browser/extensions/extension_install_ui.h"
#include "chrome/browser/extensions/extension_service.h"
diff --git a/chrome/browser/extensions/crx_installer.h b/chrome/browser/extensions/crx_installer.h
index ae6205a..1913591 100644
--- a/chrome/browser/extensions/crx_installer.h
+++ b/chrome/browser/extensions/crx_installer.h
@@ -12,7 +12,6 @@
#include "base/memory/ref_counted.h"
#include "base/memory/weak_ptr.h"
#include "base/version.h"
-#include "chrome/browser/extensions/crx_installer_error.h"
#include "chrome/browser/extensions/extension_install_prompt.h"
#include "chrome/browser/extensions/sandboxed_unpacker.h"
#include "chrome/browser/extensions/webstore_installer.h"
@@ -30,6 +29,7 @@ class SequencedTaskRunner;
}
namespace extensions {
+class CrxInstallerError;
class ExtensionUpdaterTest;
class RequirementsChecker;
diff --git a/chrome/browser/extensions/extension_browsertest.cc b/chrome/browser/extensions/extension_browsertest.cc
index bd255b0..bb85609 100644
--- a/chrome/browser/extensions/extension_browsertest.cc
+++ b/chrome/browser/extensions/extension_browsertest.cc
@@ -43,6 +43,7 @@
#include "content/public/browser/notification_service.h"
#include "content/public/browser/render_view_host.h"
#include "content/public/test/browser_test_utils.h"
+#include "extensions/common/constants.h"
#include "sync/api/string_ordinal.h"
using extensions::Extension;
@@ -231,7 +232,7 @@ const Extension* ExtensionBrowserTest::LoadExtensionAsComponentWithManifest(
const Extension* ExtensionBrowserTest::LoadExtensionAsComponent(
const base::FilePath& path) {
return LoadExtensionAsComponentWithManifest(path,
- Extension::kManifestFilename);
+ extensions::kManifestFilename);
}
base::FilePath ExtensionBrowserTest::PackExtension(
diff --git a/chrome/browser/extensions/extension_browsertest.h b/chrome/browser/extensions/extension_browsertest.h
index 412adcb..9d1203c 100644
--- a/chrome/browser/extensions/extension_browsertest.h
+++ b/chrome/browser/extensions/extension_browsertest.h
@@ -89,7 +89,7 @@ class ExtensionBrowserTest : virtual public InProcessBrowserTest,
// Loads unpacked extension from |path| and imitates that it is a component
// extension. Equivalent to
- // LoadExtensionAsComponentWithManifest(path, Extensions::kManifestFilename).
+ // LoadExtensionAsComponentWithManifest(path, extensions::kManifestFilename).
const extensions::Extension* LoadExtensionAsComponent(
const base::FilePath& path);
diff --git a/chrome/browser/extensions/extension_creator.cc b/chrome/browser/extensions/extension_creator.cc
index c4bc70d..8842e0d 100644
--- a/chrome/browser/extensions/extension_creator.cc
+++ b/chrome/browser/extensions/extension_creator.cc
@@ -13,13 +13,14 @@
#include "base/files/scoped_temp_dir.h"
#include "base/memory/scoped_handle.h"
#include "base/string_util.h"
-#include "chrome/browser/extensions/crx_file.h"
#include "chrome/browser/extensions/extension_creator_filter.h"
#include "chrome/common/extensions/extension.h"
#include "chrome/common/extensions/extension_file_util.h"
#include "chrome/common/zip.h"
#include "crypto/rsa_private_key.h"
#include "crypto/signature_creator.h"
+#include "extensions/common/crx_file.h"
+#include "extensions/common/id_util.h"
#include "grit/generated_resources.h"
#include "ui/base/l10n/l10n_util.h"
@@ -97,9 +98,7 @@ bool ExtensionCreator::ValidateManifest(const base::FilePath& extension_dir,
public_key.insert(public_key.begin(),
public_key_bytes.begin(), public_key_bytes.end());
- std::string extension_id;
- if (!Extension::GenerateId(public_key, &extension_id))
- return false;
+ std::string extension_id = id_util::GenerateId(public_key);
// Load the extension once. We don't really need it, but this does a lot of
// useful validation of the structure.
diff --git a/chrome/browser/extensions/extension_function_test_utils.cc b/chrome/browser/extensions/extension_function_test_utils.cc
index b642c1f..d834aa00 100644
--- a/chrome/browser/extensions/extension_function_test_utils.cc
+++ b/chrome/browser/extensions/extension_function_test_utils.cc
@@ -15,6 +15,7 @@
#include "chrome/browser/ui/browser.h"
#include "chrome/common/extensions/extension.h"
#include "chrome/test/base/ui_test_utils.h"
+#include "extensions/common/id_util.h"
#include "testing/gtest/include/gtest/gtest.h"
using content::WebContents;
@@ -135,7 +136,7 @@ scoped_refptr<Extension> CreateExtension(
const base::FilePath test_extension_path;
std::string id;
if (!id_input.empty())
- CHECK(Extension::GenerateId(id_input, &id));
+ id = extensions::id_util::GenerateId(id_input);
scoped_refptr<Extension> extension(Extension::Create(
test_extension_path,
location,
diff --git a/chrome/browser/extensions/extension_icon_image.cc b/chrome/browser/extensions/extension_icon_image.cc
index c2fd3cd..d051ee7 100644
--- a/chrome/browser/extensions/extension_icon_image.cc
+++ b/chrome/browser/extensions/extension_icon_image.cc
@@ -42,14 +42,14 @@ namespace {
const int kMatchBiggerTreshold = 32;
-ExtensionResource GetExtensionIconResource(
+extensions::ExtensionResource GetExtensionIconResource(
const extensions::Extension* extension,
const ExtensionIconSet& icons,
int size,
ExtensionIconSet::MatchType match_type) {
std::string path = icons.Get(size, match_type);
if (path.empty())
- return ExtensionResource();
+ return extensions::ExtensionResource();
return extension->GetResource(path);
}
@@ -167,7 +167,7 @@ gfx::ImageSkiaRep IconImage::LoadImageForScaleFactor(
const int resource_size_in_pixel =
static_cast<int>(resource_size_in_dip_ * scale);
- ExtensionResource resource;
+ extensions::ExtensionResource resource;
// Find extension resource for non bundled component extensions.
// We try loading bigger image only if resource size is >= 32.
diff --git a/chrome/browser/extensions/extension_icon_manager.cc b/chrome/browser/extensions/extension_icon_manager.cc
index 292d00b5..a557f42 100644
--- a/chrome/browser/extensions/extension_icon_manager.cc
+++ b/chrome/browser/extensions/extension_icon_manager.cc
@@ -12,7 +12,7 @@
#include "chrome/common/extensions/extension.h"
#include "chrome/common/extensions/extension_constants.h"
#include "chrome/common/extensions/extension_icon_set.h"
-#include "chrome/common/extensions/extension_resource.h"
+#include "extensions/common/extension_resource.h"
#include "grit/theme_resources.h"
#include "skia/ext/image_operations.h"
#include "ui/base/resource/resource_bundle.h"
@@ -54,10 +54,11 @@ ExtensionIconManager::~ExtensionIconManager() {
void ExtensionIconManager::LoadIcon(Profile* profile,
const extensions::Extension* extension) {
- ExtensionResource icon_resource = extensions::IconsInfo::GetIconResource(
- extension,
- extension_misc::EXTENSION_ICON_BITTY,
- ExtensionIconSet::MATCH_BIGGER);
+ extensions::ExtensionResource icon_resource =
+ extensions::IconsInfo::GetIconResource(
+ extension,
+ extension_misc::EXTENSION_ICON_BITTY,
+ ExtensionIconSet::MATCH_BIGGER);
if (!icon_resource.extension_root().empty()) {
// Insert into pending_icons_ first because LoadImage can call us back
// synchronously if the image is already cached.
diff --git a/chrome/browser/extensions/extension_icon_manager_unittest.cc b/chrome/browser/extensions/extension_icon_manager_unittest.cc
index 26495b2..b47a72f 100644
--- a/chrome/browser/extensions/extension_icon_manager_unittest.cc
+++ b/chrome/browser/extensions/extension_icon_manager_unittest.cc
@@ -9,9 +9,9 @@
#include "chrome/browser/extensions/extension_icon_manager.h"
#include "chrome/common/chrome_paths.h"
#include "chrome/common/extensions/extension.h"
-#include "chrome/common/extensions/extension_resource.h"
#include "chrome/test/base/testing_profile.h"
#include "content/public/test/test_browser_thread.h"
+#include "extensions/common/id_util.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/gfx/skia_util.h"
@@ -93,8 +93,7 @@ class TestIconManager : public ExtensionIconManager {
// Returns the default icon that ExtensionIconManager gives when an extension
// doesn't have an icon.
SkBitmap GetDefaultIcon() {
- std::string dummy_id;
- EXPECT_TRUE(Extension::GenerateId(std::string("whatever"), &dummy_id));
+ std::string dummy_id = extensions::id_util::GenerateId("whatever");
ExtensionIconManager manager;
return manager.GetIcon(dummy_id);
}
diff --git a/chrome/browser/extensions/extension_install_prompt.cc b/chrome/browser/extensions/extension_install_prompt.cc
index d88fe9a..38a13493 100644
--- a/chrome/browser/extensions/extension_install_prompt.cc
+++ b/chrome/browser/extensions/extension_install_prompt.cc
@@ -29,13 +29,13 @@
#include "chrome/common/extensions/extension_constants.h"
#include "chrome/common/extensions/extension_icon_set.h"
#include "chrome/common/extensions/extension_manifest_constants.h"
-#include "chrome/common/extensions/extension_resource.h"
#include "chrome/common/extensions/feature_switch.h"
#include "chrome/common/extensions/manifest.h"
#include "chrome/common/extensions/permissions/permission_set.h"
#include "chrome/common/pref_names.h"
#include "content/public/browser/web_contents.h"
#include "content/public/browser/web_contents_view.h"
+#include "extensions/common/extension_resource.h"
#include "extensions/common/url_pattern.h"
#include "grit/chromium_strings.h"
#include "grit/generated_resources.h"
@@ -609,7 +609,7 @@ void ExtensionInstallPrompt::LoadImageIfNeeded() {
}
// Load the image asynchronously. For the response, check OnImageLoaded.
- ExtensionResource image = extensions::IconsInfo::GetIconResource(
+ extensions::ExtensionResource image = extensions::IconsInfo::GetIconResource(
extension_,
extension_misc::EXTENSION_ICON_LARGE,
ExtensionIconSet::MATCH_BIGGER);
diff --git a/chrome/browser/extensions/extension_protocols.cc b/chrome/browser/extensions/extension_protocols.cc
index ff367bb..3423088 100644
--- a/chrome/browser/extensions/extension_protocols.cc
+++ b/chrome/browser/extensions/extension_protocols.cc
@@ -24,11 +24,11 @@
#include "chrome/common/extensions/background_info.h"
#include "chrome/common/extensions/extension.h"
#include "chrome/common/extensions/extension_file_util.h"
-#include "chrome/common/extensions/extension_resource.h"
#include "chrome/common/extensions/web_accessible_resources_handler.h"
#include "chrome/common/url_constants.h"
#include "content/public/browser/resource_request_info.h"
#include "extensions/common/constants.h"
+#include "extensions/common/extension_resource.h"
#include "googleurl/src/url_util.h"
#include "grit/component_extension_resources_map.h"
#include "net/base/mime_util.h"
@@ -191,7 +191,7 @@ class GeneratedBackgroundPageJob : public net::URLRequestSimpleJob {
net::HttpResponseInfo response_info_;
};
-void ReadResourceFilePath(const ExtensionResource& resource,
+void ReadResourceFilePath(const extensions::ExtensionResource& resource,
base::FilePath* file_path) {
*file_path = resource.GetFilePath();
}
@@ -241,7 +241,7 @@ class URLRequestExtensionJob : public net::URLRequestFileJob {
}
net::HttpResponseInfo response_info_;
- ExtensionResource resource_;
+ extensions::ExtensionResource resource_;
base::WeakPtrFactory<URLRequestExtensionJob> weak_factory_;
};
diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc
index 832218d..5098729 100644
--- a/chrome/browser/extensions/extension_service.cc
+++ b/chrome/browser/extensions/extension_service.cc
@@ -83,7 +83,6 @@
#include "chrome/common/extensions/extension_file_util.h"
#include "chrome/common/extensions/extension_manifest_constants.h"
#include "chrome/common/extensions/extension_messages.h"
-#include "chrome/common/extensions/extension_resource.h"
#include "chrome/common/extensions/feature_switch.h"
#include "chrome/common/extensions/features/feature.h"
#include "chrome/common/extensions/manifest.h"
diff --git a/chrome/browser/extensions/extension_service_unittest.cc b/chrome/browser/extensions/extension_service_unittest.cc
index 256b28a..ad0134d 100644
--- a/chrome/browser/extensions/extension_service_unittest.cc
+++ b/chrome/browser/extensions/extension_service_unittest.cc
@@ -68,7 +68,6 @@
#include "chrome/common/extensions/extension.h"
#include "chrome/common/extensions/extension_l10n_util.h"
#include "chrome/common/extensions/extension_manifest_constants.h"
-#include "chrome/common/extensions/extension_resource.h"
#include "chrome/common/extensions/manifest_handler.h"
#include "chrome/common/extensions/manifest_url_handler.h"
#include "chrome/common/extensions/permissions/permission_set.h"
@@ -86,6 +85,8 @@
#include "content/public/common/content_constants.h"
#include "content/public/common/gpu_info.h"
#include "content/public/test/test_browser_thread.h"
+#include "extensions/common/constants.h"
+#include "extensions/common/extension_resource.h"
#include "extensions/common/url_pattern.h"
#include "googleurl/src/gurl.h"
#include "grit/browser_resources.h"
@@ -122,6 +123,7 @@ using extensions::CrxInstaller;
using extensions::Extension;
using extensions::ExtensionCreator;
using extensions::ExtensionPrefs;
+using extensions::ExtensionResource;
using extensions::ExtensionSystem;
using extensions::FeatureSwitch;
using extensions::Manifest;
@@ -1929,7 +1931,7 @@ TEST_F(ExtensionServiceTest, PackExtension) {
// Try packing with an invalid manifest.
std::string invalid_manifest_content = "I am not a manifest.";
ASSERT_TRUE(file_util::WriteFile(
- temp_dir2.path().Append(Extension::kManifestFilename),
+ temp_dir2.path().Append(extensions::kManifestFilename),
invalid_manifest_content.c_str(), invalid_manifest_content.size()));
creator.reset(new ExtensionCreator());
ASSERT_FALSE(creator->Run(temp_dir2.path(), crx_path, privkey_path,
@@ -2147,7 +2149,7 @@ TEST_F(ExtensionServiceTest, UnpackedExtensionCanChangeID) {
base::FilePath extension_path = temp.path();
base::FilePath manifest_path =
- extension_path.Append(Extension::kManifestFilename);
+ extension_path.Append(extensions::kManifestFilename);
base::FilePath manifest_no_key = data_dir_.
AppendASCII("unpacked").
AppendASCII("manifest_no_key.json");
@@ -2198,7 +2200,8 @@ TEST_F(ExtensionServiceTest, UnpackedExtensionMayContainSymlinkedFiles) {
base::ScopedTempDir temp;
ASSERT_TRUE(temp.CreateUniqueTempDir());
base::FilePath extension_path = temp.path();
- base::FilePath manifest = extension_path.Append(Extension::kManifestFilename);
+ base::FilePath manifest = extension_path.Append(
+ extensions::kManifestFilename);
base::FilePath icon_symlink = extension_path.AppendASCII("icon.png");
file_util::CopyFile(source_manifest, manifest);
file_util::CreateSymbolicLink(source_icon, icon_symlink);
@@ -2637,7 +2640,7 @@ TEST_F(ExtensionServiceTest, LoadExtensionsCanDowngrade) {
// to make it easier to change the version number.
base::FilePath extension_path = temp.path();
base::FilePath manifest_path =
- extension_path.Append(Extension::kManifestFilename);
+ extension_path.Append(extensions::kManifestFilename);
ASSERT_FALSE(file_util::PathExists(manifest_path));
// Start with version 2.0.
@@ -3205,7 +3208,7 @@ TEST_F(ExtensionServiceTest, ComponentExtensionWhitelisted) {
.AppendASCII("1.0.0.0");
std::string manifest;
ASSERT_TRUE(file_util::ReadFileToString(
- path.Append(Extension::kManifestFilename), &manifest));
+ path.Append(extensions::kManifestFilename), &manifest));
service_->component_loader()->Add(manifest, path);
service_->Init();
@@ -4741,7 +4744,7 @@ TEST_F(ExtensionServiceTest, ComponentExtensions) {
std::string manifest;
ASSERT_TRUE(file_util::ReadFileToString(
- path.Append(Extension::kManifestFilename), &manifest));
+ path.Append(extensions::kManifestFilename), &manifest));
service_->component_loader()->Add(manifest, path);
service_->Init();
diff --git a/chrome/browser/extensions/extension_ui_unittest.cc b/chrome/browser/extensions/extension_ui_unittest.cc
index 64f5d65..5623429 100644
--- a/chrome/browser/extensions/extension_ui_unittest.cc
+++ b/chrome/browser/extensions/extension_ui_unittest.cc
@@ -15,6 +15,7 @@
#include "chrome/common/extensions/extension.h"
#include "chrome/test/base/testing_profile.h"
#include "content/public/test/test_browser_thread.h"
+#include "extensions/common/constants.h"
#include "testing/gtest/include/gtest/gtest.h"
using extensions::Extension;
@@ -66,7 +67,7 @@ class ExtensionUITest : public testing::Test {
std::string error;
base::FilePath manifest_path = extension_path.Append(
- Extension::kManifestFilename);
+ extensions::kManifestFilename);
scoped_ptr<DictionaryValue> extension_data(DeserializeJSONTestData(
manifest_path, &error));
EXPECT_EQ("", error);
diff --git a/chrome/browser/extensions/extension_uninstall_dialog.cc b/chrome/browser/extensions/extension_uninstall_dialog.cc
index 4f9f83a..8c89ded 100644
--- a/chrome/browser/extensions/extension_uninstall_dialog.cc
+++ b/chrome/browser/extensions/extension_uninstall_dialog.cc
@@ -14,9 +14,9 @@
#include "chrome/common/extensions/extension.h"
#include "chrome/common/extensions/extension_constants.h"
#include "chrome/common/extensions/extension_icon_set.h"
-#include "chrome/common/extensions/extension_resource.h"
#include "content/public/browser/notification_service.h"
#include "content/public/browser/notification_source.h"
+#include "extensions/common/extension_resource.h"
#include "grit/generated_resources.h"
#include "grit/theme_resources.h"
#include "ui/base/resource/resource_bundle.h"
@@ -86,7 +86,7 @@ void ExtensionUninstallDialog::ConfirmUninstall(
return;
#endif
- ExtensionResource image = extensions::IconsInfo::GetIconResource(
+ extensions::ExtensionResource image = extensions::IconsInfo::GetIconResource(
extension_,
extension_misc::EXTENSION_ICON_LARGE,
ExtensionIconSet::MATCH_BIGGER);
diff --git a/chrome/browser/extensions/extension_web_ui.cc b/chrome/browser/extensions/extension_web_ui.cc
index 9934391..2ebaab0 100644
--- a/chrome/browser/extensions/extension_web_ui.cc
+++ b/chrome/browser/extensions/extension_web_ui.cc
@@ -23,7 +23,6 @@
#include "chrome/common/extensions/extension.h"
#include "chrome/common/extensions/extension_constants.h"
#include "chrome/common/extensions/extension_icon_set.h"
-#include "chrome/common/extensions/extension_resource.h"
#include "chrome/common/url_constants.h"
#include "components/user_prefs/pref_registry_syncable.h"
#include "content/public/browser/navigation_controller.h"
@@ -31,6 +30,7 @@
#include "content/public/browser/web_ui.h"
#include "content/public/common/bindings_policy.h"
#include "content/public/common/page_transition_types.h"
+#include "extensions/common/extension_resource.h"
#include "net/base/file_stream.h"
#include "third_party/skia/include/core/SkBitmap.h"
#include "ui/gfx/codec/png_codec.h"
@@ -419,7 +419,7 @@ void ExtensionWebUI::GetFaviconForURL(
for (size_t i = 0; i < scale_factors.size(); ++i) {
float scale = ui::GetScaleFactorScale(scale_factors[i]);
int pixel_size = static_cast<int>(gfx::kFaviconSize * scale);
- ExtensionResource icon_resource =
+ extensions::ExtensionResource icon_resource =
extensions::IconsInfo::GetIconResource(extension,
pixel_size,
ExtensionIconSet::MATCH_BIGGER);
diff --git a/chrome/browser/extensions/image_loader.h b/chrome/browser/extensions/image_loader.h
index 4f62498..75a9113 100644
--- a/chrome/browser/extensions/image_loader.h
+++ b/chrome/browser/extensions/image_loader.h
@@ -12,7 +12,7 @@
#include "base/gtest_prod_util.h"
#include "base/memory/weak_ptr.h"
#include "chrome/browser/profiles/profile_keyed_service.h"
-#include "chrome/common/extensions/extension_resource.h"
+#include "extensions/common/extension_resource.h"
#include "third_party/skia/include/core/SkBitmap.h"
#include "ui/base/layout.h"
#include "ui/gfx/size.h"
diff --git a/chrome/browser/extensions/image_loader_unittest.cc b/chrome/browser/extensions/image_loader_unittest.cc
index fcb846a..a73ff46 100644
--- a/chrome/browser/extensions/image_loader_unittest.cc
+++ b/chrome/browser/extensions/image_loader_unittest.cc
@@ -13,11 +13,11 @@
#include "chrome/common/extensions/extension.h"
#include "chrome/common/extensions/extension_constants.h"
#include "chrome/common/extensions/extension_icon_set.h"
-#include "chrome/common/extensions/extension_resource.h"
#include "chrome/common/extensions/manifest.h"
#include "chrome/common/extensions/manifest_handler.h"
#include "content/public/browser/notification_service.h"
#include "content/public/test/test_browser_thread.h"
+#include "extensions/common/extension_resource.h"
#include "grit/component_extension_resources.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/skia/include/core/SkBitmap.h"
@@ -27,6 +27,7 @@
using content::BrowserThread;
using extensions::Extension;
+using extensions::ExtensionResource;
using extensions::ImageLoader;
using extensions::Manifest;
diff --git a/chrome/browser/extensions/installed_loader.cc b/chrome/browser/extensions/installed_loader.cc
index 0f06b98..ba78077 100644
--- a/chrome/browser/extensions/installed_loader.cc
+++ b/chrome/browser/extensions/installed_loader.cc
@@ -55,7 +55,8 @@ ManifestReloadReason ShouldReloadExtensionManifest(const ExtensionInfo& info) {
return UNPACKED_DIR;
// Reload the manifest if it needs to be relocalized.
- if (extension_l10n_util::ShouldRelocalizeManifest(info))
+ if (extension_l10n_util::ShouldRelocalizeManifest(
+ info.extension_manifest.get()))
return NEEDS_RELOCALIZATION;
return NOT_NEEDED;
diff --git a/chrome/browser/extensions/sandboxed_unpacker.cc b/chrome/browser/extensions/sandboxed_unpacker.cc
index ea0c03b..527cd34 100644
--- a/chrome/browser/extensions/sandboxed_unpacker.cc
+++ b/chrome/browser/extensions/sandboxed_unpacker.cc
@@ -18,7 +18,6 @@
#include "base/path_service.h"
#include "base/sequenced_task_runner.h"
#include "base/utf_string_conversions.h" // TODO(viettrungluu): delete me.
-#include "chrome/browser/extensions/crx_file.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/common/chrome_paths.h"
#include "chrome/common/chrome_switches.h"
@@ -32,6 +31,9 @@
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/utility_process_host.h"
#include "crypto/signature_verifier.h"
+#include "extensions/common/constants.h"
+#include "extensions/common/crx_file.h"
+#include "extensions/common/id_util.h"
#include "grit/generated_resources.h"
#include "third_party/skia/include/core/SkBitmap.h"
#include "ui/base/l10n/l10n_util.h"
@@ -557,8 +559,7 @@ bool SandboxedUnpacker::ValidateSignature() {
std::string(reinterpret_cast<char*>(&key.front()), key.size());
base::Base64Encode(public_key, &public_key_);
- if (!Extension::GenerateId(public_key, &extension_id_))
- return false;
+ extension_id_ = id_util::GenerateId(public_key);
return true;
}
@@ -610,7 +611,7 @@ DictionaryValue* SandboxedUnpacker::RewriteManifestFile(
}
base::FilePath manifest_path =
- extension_root_.Append(Extension::kManifestFilename);
+ extension_root_.Append(kManifestFilename);
if (!file_util::WriteFile(manifest_path,
manifest_json.data(), manifest_json.size())) {
// Error saving manifest.json.
@@ -749,7 +750,7 @@ bool SandboxedUnpacker::RewriteCatalogFiles() {
// hack and remove the corresponding #include.
base::FilePath relative_path =
base::FilePath::FromWStringHack(UTF8ToWide(it.key()));
- relative_path = relative_path.Append(Extension::kMessagesFilename);
+ relative_path = relative_path.Append(kMessagesFilename);
if (relative_path.IsAbsolute() || relative_path.ReferencesParent()) {
// Invalid path for catalog.
ReportFailure(
diff --git a/chrome/browser/extensions/sandboxed_unpacker_unittest.cc b/chrome/browser/extensions/sandboxed_unpacker_unittest.cc
index a0c73b5..0f87990 100644
--- a/chrome/browser/extensions/sandboxed_unpacker_unittest.cc
+++ b/chrome/browser/extensions/sandboxed_unpacker_unittest.cc
@@ -16,6 +16,7 @@
#include "chrome/common/extensions/manifest_handler.h"
#include "chrome/common/extensions/unpacker.h"
#include "content/public/test/test_browser_thread.h"
+#include "extensions/common/constants.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/skia/include/core/SkBitmap.h"
@@ -177,7 +178,7 @@ TEST_F(SandboxedUnpackerTest, NoCatalogsSuccess) {
// Check that there is no _locales folder.
base::FilePath install_path =
- GetInstallPath().Append(Extension::kLocaleFolder);
+ GetInstallPath().Append(kLocaleFolder);
EXPECT_FALSE(file_util::PathExists(install_path));
OnUnpackSucceeded();
@@ -199,9 +200,9 @@ TEST_F(SandboxedUnpackerTest, WithCatalogsSuccess) {
// Set timestamp on _locales/en_US/messages.json into the past.
base::FilePath messages_file;
- messages_file = GetInstallPath().Append(Extension::kLocaleFolder)
+ messages_file = GetInstallPath().Append(kLocaleFolder)
.AppendASCII("en_US")
- .Append(Extension::kMessagesFilename);
+ .Append(kMessagesFilename);
base::PlatformFileInfo old_info;
EXPECT_TRUE(file_util::GetFileInfo(messages_file, &old_info));
base::Time old_time =
diff --git a/chrome/browser/extensions/tab_helper.cc b/chrome/browser/extensions/tab_helper.cc
index 7f13125..cdcec02 100644
--- a/chrome/browser/extensions/tab_helper.cc
+++ b/chrome/browser/extensions/tab_helper.cc
@@ -31,7 +31,6 @@
#include "chrome/common/extensions/extension_constants.h"
#include "chrome/common/extensions/extension_icon_set.h"
#include "chrome/common/extensions/extension_messages.h"
-#include "chrome/common/extensions/extension_resource.h"
#include "chrome/common/extensions/feature_switch.h"
#include "content/public/browser/invalidate_type.h"
#include "content/public/browser/navigation_controller.h"
@@ -45,6 +44,7 @@
#include "content/public/browser/render_widget_host_view.h"
#include "content/public/browser/web_contents.h"
#include "content/public/browser/web_contents_view.h"
+#include "extensions/common/extension_resource.h"
#include "ui/gfx/image/image.h"
using content::NavigationController;
diff --git a/chrome/browser/extensions/unpacked_installer.cc b/chrome/browser/extensions/unpacked_installer.cc
index a880a24..aa6b0dc 100644
--- a/chrome/browser/extensions/unpacked_installer.cc
+++ b/chrome/browser/extensions/unpacked_installer.cc
@@ -20,6 +20,7 @@
#include "chrome/common/extensions/extension_file_util.h"
#include "chrome/common/extensions/manifest.h"
#include "content/public/browser/browser_thread.h"
+#include "extensions/common/id_util.h"
#include "sync/api/string_ordinal.h"
using content::BrowserThread;
@@ -173,7 +174,7 @@ void UnpackedInstaller::OnRequirementsChecked(
}
int UnpackedInstaller::GetFlags() {
- std::string id = Extension::GenerateIdForPath(extension_path_);
+ std::string id = id_util::GenerateIdForPath(extension_path_);
bool allow_file_access =
Manifest::ShouldAlwaysAllowFileAccess(Manifest::UNPACKED);
if (service_weak_->extension_prefs()->HasAllowFileAccessSetting(id))
diff --git a/chrome/browser/extensions/updater/extension_updater_unittest.cc b/chrome/browser/extensions/updater/extension_updater_unittest.cc
index aba6505..4921d9e 100644
--- a/chrome/browser/extensions/updater/extension_updater_unittest.cc
+++ b/chrome/browser/extensions/updater/extension_updater_unittest.cc
@@ -54,6 +54,7 @@
#include "content/public/browser/notification_service.h"
#include "content/public/browser/notification_source.h"
#include "content/public/test/test_browser_thread.h"
+#include "extensions/common/id_util.h"
#include "libxml/globals.h"
#include "net/base/backoff_entry.h"
#include "net/base/escape.h"
@@ -263,12 +264,6 @@ class MockService : public TestExtensionService {
};
-std::string GenerateId(std::string input) {
- std::string result;
- EXPECT_TRUE(Extension::GenerateId(input, &result));
- return result;
-}
-
bool ShouldInstallExtensionsOnly(const Extension& extension) {
return extension.GetType() == Manifest::TYPE_EXTENSION;
}
@@ -291,7 +286,7 @@ void SetupPendingExtensionManagerForTest(
(i % 2 == 0) ? &ShouldInstallThemesOnly : &ShouldInstallExtensionsOnly;
const bool kIsFromSync = true;
const bool kInstallSilently = true;
- std::string id = GenerateId(base::StringPrintf("extension%i", i));
+ std::string id = id_util::GenerateId(base::StringPrintf("extension%i", i));
pending_extension_manager->AddForTesting(
PendingExtensionInfo(id,
@@ -741,8 +736,8 @@ class ExtensionUpdaterTest : public testing::Test {
// Create two updates - expect that DetermineUpdates will return the first
// one (v1.0 installed, v1.1 available) but not the second one (both
// installed and available at v2.0).
- const std::string id1 = GenerateId("1");
- const std::string id2 = GenerateId("2");
+ const std::string id1 = id_util::GenerateId("1");
+ const std::string id2 = id_util::GenerateId("2");
fetch_data.AddExtension(id1, "1.0.0.0",
&kNeverPingedData, kEmptyUpdateUrlData, "");
AddParseResult(id1, "1.1",
@@ -1635,7 +1630,7 @@ TEST_F(ExtensionUpdaterTest, TestManifestFetchesBuilderAddExtension) {
// First, verify that adding valid extensions does invoke the callbacks on
// the delegate.
- std::string id = GenerateId("foo");
+ std::string id = id_util::GenerateId("foo");
EXPECT_CALL(delegate, GetPingDataForExtension(id, _)).WillOnce(Return(false));
EXPECT_TRUE(
downloader->AddPendingExtension(id, GURL("http://example.com/update"),
@@ -1645,7 +1640,7 @@ TEST_F(ExtensionUpdaterTest, TestManifestFetchesBuilderAddExtension) {
EXPECT_EQ(1u, ManifestFetchersCount(downloader.get()));
// Extensions with invalid update URLs should be rejected.
- id = GenerateId("foo2");
+ id = id_util::GenerateId("foo2");
EXPECT_FALSE(
downloader->AddPendingExtension(id, GURL("http:google.com:foo"), 0));
downloader->StartAllPending();
@@ -1666,7 +1661,7 @@ TEST_F(ExtensionUpdaterTest, TestManifestFetchesBuilderAddExtension) {
// Extensions with empty update URLs should have a default one
// filled in.
- id = GenerateId("foo3");
+ id = id_util::GenerateId("foo3");
EXPECT_CALL(delegate, GetPingDataForExtension(id, _)).WillOnce(Return(false));
EXPECT_TRUE(downloader->AddPendingExtension(id, GURL(), 0));
downloader->StartAllPending();
diff --git a/chrome/browser/extensions/user_script_master.cc b/chrome/browser/extensions/user_script_master.cc
index 7a99af0..dcd5804 100644
--- a/chrome/browser/extensions/user_script_master.cc
+++ b/chrome/browser/extensions/user_script_master.cc
@@ -23,11 +23,11 @@
#include "chrome/common/extensions/api/i18n/default_locale_handler.h"
#include "chrome/common/extensions/extension.h"
#include "chrome/common/extensions/extension_file_util.h"
-#include "chrome/common/extensions/extension_resource.h"
#include "chrome/common/extensions/extension_set.h"
#include "chrome/common/extensions/message_bundle.h"
#include "content/public/browser/notification_service.h"
#include "content/public/browser/render_process_host.h"
+#include "extensions/common/extension_resource.h"
using content::BrowserThread;
diff --git a/chrome/browser/managed_mode/managed_mode_site_list.cc b/chrome/browser/managed_mode/managed_mode_site_list.cc
index a81a8b0..d41074b 100644
--- a/chrome/browser/managed_mode/managed_mode_site_list.cc
+++ b/chrome/browser/managed_mode/managed_mode_site_list.cc
@@ -133,8 +133,9 @@ ManagedModeSiteList::Site::Site(const string16& name,
ManagedModeSiteList::Site::~Site() {}
-ManagedModeSiteList::ManagedModeSiteList(const std::string& extension_id,
- const ExtensionResource& path)
+ManagedModeSiteList::ManagedModeSiteList(
+ const std::string& extension_id,
+ const extensions::ExtensionResource& path)
: extension_id_(extension_id),
path_(path) {
}
diff --git a/chrome/browser/managed_mode/managed_mode_site_list.h b/chrome/browser/managed_mode/managed_mode_site_list.h
index 2b04189..558dd46 100644
--- a/chrome/browser/managed_mode/managed_mode_site_list.h
+++ b/chrome/browser/managed_mode/managed_mode_site_list.h
@@ -12,7 +12,7 @@
#include "base/memory/ref_counted.h"
#include "base/memory/scoped_ptr.h"
#include "base/memory/scoped_vector.h"
-#include "chrome/common/extensions/extension_resource.h"
+#include "extensions/common/extension_resource.h"
class ExtensionServiceInterface;
class Profile;
@@ -59,7 +59,7 @@ class ManagedModeSiteList {
};
ManagedModeSiteList(const std::string& extension_id,
- const ExtensionResource& path);
+ const extensions::ExtensionResource& path);
~ManagedModeSiteList();
// Creates a copy of the site list.
@@ -80,7 +80,7 @@ class ManagedModeSiteList {
base::DictionaryValue* dest);
std::string extension_id_;
- ExtensionResource path_;
+ extensions::ExtensionResource path_;
scoped_ptr<base::DictionaryValue> categories_;
scoped_ptr<base::ListValue> sites_;
diff --git a/chrome/browser/managed_mode/managed_user_service.cc b/chrome/browser/managed_mode/managed_user_service.cc
index ac5edea..c6f986d 100644
--- a/chrome/browser/managed_mode/managed_user_service.cc
+++ b/chrome/browser/managed_mode/managed_user_service.cc
@@ -291,7 +291,8 @@ ScopedVector<ManagedModeSiteList> ManagedUserService::GetActiveSiteLists() {
if (!extension_service->IsExtensionEnabled(extension->id()))
continue;
- ExtensionResource site_list = extension->GetContentPackSiteList();
+ extensions::ExtensionResource site_list =
+ extension->GetContentPackSiteList();
if (!site_list.empty())
site_lists.push_back(new ManagedModeSiteList(extension->id(), site_list));
}
diff --git a/chrome/browser/sync/test/integration/sync_app_helper.cc b/chrome/browser/sync/test/integration/sync_app_helper.cc
index 678ef8a..6123645 100644
--- a/chrome/browser/sync/test/integration/sync_app_helper.cc
+++ b/chrome/browser/sync/test/integration/sync_app_helper.cc
@@ -11,6 +11,7 @@
#include "chrome/browser/sync/test/integration/extensions_helper.h"
#include "chrome/browser/sync/test/integration/sync_datatype_helper.h"
#include "chrome/browser/sync/test/integration/sync_extension_helper.h"
+#include "extensions/common/id_util.h"
namespace {
@@ -145,7 +146,8 @@ syncer::StringOrdinal SyncAppHelper::GetPageOrdinalForApp(
Profile* profile,
const std::string& name) {
return profile->GetExtensionService()->extension_prefs()->
- extension_sorting()->GetPageOrdinal(SyncExtensionHelper::NameToId(name));
+ extension_sorting()->GetPageOrdinal(
+ extensions::id_util::GenerateId(name));
}
void SyncAppHelper::SetPageOrdinalForApp(
@@ -153,7 +155,7 @@ void SyncAppHelper::SetPageOrdinalForApp(
const std::string& name,
const syncer::StringOrdinal& page_ordinal) {
profile->GetExtensionService()->extension_prefs()->extension_sorting()->
- SetPageOrdinal(SyncExtensionHelper::NameToId(name), page_ordinal);
+ SetPageOrdinal(extensions::id_util::GenerateId(name), page_ordinal);
}
syncer::StringOrdinal SyncAppHelper::GetAppLaunchOrdinalForApp(
@@ -161,7 +163,7 @@ syncer::StringOrdinal SyncAppHelper::GetAppLaunchOrdinalForApp(
const std::string& name) {
return profile->GetExtensionService()->extension_prefs()->
extension_sorting()->GetAppLaunchOrdinal(
- SyncExtensionHelper::NameToId(name));
+ extensions::id_util::GenerateId(name));
}
void SyncAppHelper::SetAppLaunchOrdinalForApp(
@@ -169,7 +171,7 @@ void SyncAppHelper::SetAppLaunchOrdinalForApp(
const std::string& name,
const syncer::StringOrdinal& app_launch_ordinal) {
profile->GetExtensionService()->extension_prefs()->extension_sorting()->
- SetAppLaunchOrdinal(SyncExtensionHelper::NameToId(name),
+ SetAppLaunchOrdinal(extensions::id_util::GenerateId(name),
app_launch_ordinal);
}
diff --git a/chrome/browser/sync/test/integration/sync_extension_helper.cc b/chrome/browser/sync/test/integration/sync_extension_helper.cc
index 0175a9c..84cf7547 100644
--- a/chrome/browser/sync/test/integration/sync_extension_helper.cc
+++ b/chrome/browser/sync/test/integration/sync_extension_helper.cc
@@ -17,6 +17,7 @@
#include "chrome/browser/sync/test/integration/sync_test.h"
#include "chrome/common/extensions/extension.h"
#include "chrome/common/extensions/extension_manifest_constants.h"
+#include "extensions/common/id_util.h"
#include "sync/api/string_ordinal.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -45,13 +46,6 @@ SyncExtensionHelper::SyncExtensionHelper() : setup_completed_(false) {}
SyncExtensionHelper::~SyncExtensionHelper() {}
-// static
-std::string SyncExtensionHelper::NameToId(const std::string& name) {
- std::string id;
- EXPECT_TRUE(Extension::GenerateId(name, &id));
- return id;
-}
-
void SyncExtensionHelper::SetupIfNecessary(SyncTest* test) {
if (setup_completed_)
return;
@@ -79,8 +73,9 @@ std::string SyncExtensionHelper::InstallExtension(
void SyncExtensionHelper::UninstallExtension(
Profile* profile, const std::string& name) {
- ExtensionService::UninstallExtensionHelper(profile->GetExtensionService(),
- NameToId(name));
+ ExtensionService::UninstallExtensionHelper(
+ profile->GetExtensionService(),
+ extensions::id_util::GenerateId(name));
}
std::vector<std::string> SyncExtensionHelper::GetInstalledExtensionNames(
@@ -100,33 +95,38 @@ std::vector<std::string> SyncExtensionHelper::GetInstalledExtensionNames(
void SyncExtensionHelper::EnableExtension(Profile* profile,
const std::string& name) {
- profile->GetExtensionService()->EnableExtension(NameToId(name));
+ profile->GetExtensionService()->EnableExtension(
+ extensions::id_util::GenerateId(name));
}
void SyncExtensionHelper::DisableExtension(Profile* profile,
const std::string& name) {
profile->GetExtensionService()->DisableExtension(
- NameToId(name), Extension::DISABLE_USER_ACTION);
+ extensions::id_util::GenerateId(name), Extension::DISABLE_USER_ACTION);
}
bool SyncExtensionHelper::IsExtensionEnabled(
Profile* profile, const std::string& name) const {
- return profile->GetExtensionService()->IsExtensionEnabled(NameToId(name));
+ return profile->GetExtensionService()->IsExtensionEnabled(
+ extensions::id_util::GenerateId(name));
}
void SyncExtensionHelper::IncognitoEnableExtension(
Profile* profile, const std::string& name) {
- profile->GetExtensionService()->SetIsIncognitoEnabled(NameToId(name), true);
+ profile->GetExtensionService()->SetIsIncognitoEnabled(
+ extensions::id_util::GenerateId(name), true);
}
void SyncExtensionHelper::IncognitoDisableExtension(
Profile* profile, const std::string& name) {
- profile->GetExtensionService()->SetIsIncognitoEnabled(NameToId(name), false);
+ profile->GetExtensionService()->SetIsIncognitoEnabled(
+ extensions::id_util::GenerateId(name), false);
}
bool SyncExtensionHelper::IsIncognitoEnabled(
Profile* profile, const std::string& name) const {
- return profile->GetExtensionService()->IsIncognitoEnabled(NameToId(name));
+ return profile->GetExtensionService()->IsIncognitoEnabled(
+ extensions::id_util::GenerateId(name));
}
@@ -361,7 +361,7 @@ scoped_refptr<Extension> SyncExtensionHelper::GetExtension(
ADD_FAILURE();
return NULL;
}
- const std::string& expected_id = NameToId(name);
+ const std::string& expected_id = extensions::id_util::GenerateId(name);
if (extension->id() != expected_id) {
EXPECT_EQ(expected_id, extension->id());
return NULL;
diff --git a/chrome/browser/sync/test/integration/sync_extension_helper.h b/chrome/browser/sync/test/integration/sync_extension_helper.h
index a7f97e8..2efd610 100644
--- a/chrome/browser/sync/test/integration/sync_extension_helper.h
+++ b/chrome/browser/sync/test/integration/sync_extension_helper.h
@@ -27,9 +27,6 @@ class SyncExtensionHelper {
// Singleton implementation.
static SyncExtensionHelper* GetInstance();
- // Returns a generated extension ID for the given name.
- static std::string NameToId(const std::string& name);
-
// Initializes the profiles in |test| and registers them with
// internal data structures.
void SetupIfNecessary(SyncTest* test);
diff --git a/chrome/browser/sync/test/integration/themes_helper.cc b/chrome/browser/sync/test/integration/themes_helper.cc
index 67b41ff..dbfc0b1 100644
--- a/chrome/browser/sync/test/integration/themes_helper.cc
+++ b/chrome/browser/sync/test/integration/themes_helper.cc
@@ -7,13 +7,12 @@
#include "base/logging.h"
#include "base/strings/string_number_conversions.h"
#include "chrome/browser/sync/test/integration/sync_datatype_helper.h"
-#include "chrome/browser/sync/test/integration/sync_datatype_helper.h"
-#include "chrome/browser/sync/test/integration/sync_extension_helper.h"
#include "chrome/browser/sync/test/integration/sync_extension_helper.h"
#include "chrome/browser/themes/theme_service.h"
#include "chrome/browser/themes/theme_service_factory.h"
#include "chrome/common/extensions/extension.h"
#include "chrome/common/extensions/manifest.h"
+#include "extensions/common/id_util.h"
using sync_datatype_helper::test;
@@ -33,7 +32,7 @@ ThemeService* GetThemeService(Profile* profile) {
namespace themes_helper {
std::string GetCustomTheme(int index) {
- return SyncExtensionHelper::GetInstance()->NameToId(MakeName(index));
+ return extensions::id_util::GenerateId(MakeName(index));
}
std::string GetThemeID(Profile* profile) {
diff --git a/chrome/browser/sync_file_system/drive_file_sync_service_mock_unittest.cc b/chrome/browser/sync_file_system/drive_file_sync_service_mock_unittest.cc
index f2c0df7..fe6882c 100644
--- a/chrome/browser/sync_file_system/drive_file_sync_service_mock_unittest.cc
+++ b/chrome/browser/sync_file_system/drive_file_sync_service_mock_unittest.cc
@@ -26,6 +26,7 @@
#include "chrome/common/extensions/extension_builder.h"
#include "chrome/test/base/testing_profile.h"
#include "content/public/test/test_browser_thread.h"
+#include "extensions/common/id_util.h"
#include "net/base/escape.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -87,7 +88,8 @@ void ExpectEqStatus(bool* done,
scoped_refptr<const extensions::Extension> AddTestExtension(
ExtensionService* extension_service,
const base::FilePath::StringType& extension_name) {
- std::string id = Extension::GenerateIdForPath(base::FilePath(extension_name));
+ std::string id = extensions::id_util::GenerateIdForPath(
+ base::FilePath(extension_name));
scoped_refptr<const Extension> extension =
extensions::ExtensionBuilder().SetManifest(
@@ -102,7 +104,8 @@ scoped_refptr<const extensions::Extension> AddTestExtension(
// Converts extension_name to GURL version.
GURL ExtensionNameToGURL(const base::FilePath::StringType& extension_name) {
- std::string id = Extension::GenerateIdForPath(base::FilePath(extension_name));
+ std::string id = extensions::id_util::GenerateIdForPath(
+ base::FilePath(extension_name));
return extensions::Extension::GetBaseURLFromExtensionId(id);
}
diff --git a/chrome/browser/themes/browser_theme_pack.cc b/chrome/browser/themes/browser_theme_pack.cc
index 7fc8159..29c306fc 100644
--- a/chrome/browser/themes/browser_theme_pack.cc
+++ b/chrome/browser/themes/browser_theme_pack.cc
@@ -17,6 +17,7 @@
#include "chrome/browser/themes/theme_properties.h"
#include "chrome/common/extensions/api/themes/theme_handler.h"
#include "content/public/browser/browser_thread.h"
+#include "extensions/common/id_util.h"
#include "grit/theme_resources.h"
#include "grit/ui_resources.h"
#include "net/base/file_stream.h"
@@ -569,8 +570,9 @@ scoped_refptr<BrowserThemePack> BrowserThemePack::BuildFromDataPack(
}
// TODO(erg): Check endianess once DataPack works on the other endian.
std::string theme_id(reinterpret_cast<char*>(pack->header_->theme_id),
- Extension::kIdSize);
- std::string truncated_id = expected_id.substr(0, Extension::kIdSize);
+ extensions::id_util::kIdSize);
+ std::string truncated_id =
+ expected_id.substr(0, extensions::id_util::kIdSize);
if (theme_id != truncated_id) {
DLOG(ERROR) << "Wrong id: " << theme_id << " vs " << expected_id;
return NULL;
@@ -802,7 +804,7 @@ void BrowserThemePack::BuildHeader(const Extension* extension) {
header_->little_endian = 1;
const std::string& id = extension->id();
- memcpy(header_->theme_id, id.c_str(), Extension::kIdSize);
+ memcpy(header_->theme_id, id.c_str(), extensions::id_util::kIdSize);
}
void BrowserThemePack::BuildTintsFromJSON(DictionaryValue* tints_value) {
diff --git a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_per_app.cc b/chrome/browser/ui/ash/launcher/chrome_launcher_controller_per_app.cc
index d48b8b6..872d591 100644
--- a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_per_app.cc
+++ b/chrome/browser/ui/ash/launcher/chrome_launcher_controller_per_app.cc
@@ -53,12 +53,12 @@
#include "chrome/common/chrome_switches.h"
#include "chrome/common/extensions/api/icons/icons_handler.h"
#include "chrome/common/extensions/extension.h"
-#include "chrome/common/extensions/extension_resource.h"
#include "chrome/common/pref_names.h"
#include "chrome/common/url_constants.h"
#include "content/public/browser/navigation_entry.h"
#include "content/public/browser/notification_service.h"
#include "content/public/browser/web_contents.h"
+#include "extensions/common/extension_resource.h"
#include "extensions/common/url_pattern.h"
#include "grit/ash_resources.h"
#include "grit/chromium_strings.h"
diff --git a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_per_browser.cc b/chrome/browser/ui/ash/launcher/chrome_launcher_controller_per_browser.cc
index 959bebe..61095ff 100644
--- a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_per_browser.cc
+++ b/chrome/browser/ui/ash/launcher/chrome_launcher_controller_per_browser.cc
@@ -43,7 +43,6 @@
#include "chrome/common/chrome_switches.h"
#include "chrome/common/extensions/api/icons/icons_handler.h"
#include "chrome/common/extensions/extension.h"
-#include "chrome/common/extensions/extension_resource.h"
#include "chrome/common/pref_names.h"
#include "chrome/common/url_constants.h"
#include "content/public/browser/navigation_entry.h"
diff --git a/chrome/browser/ui/cocoa/extensions/browser_action_button.mm b/chrome/browser/ui/cocoa/extensions/browser_action_button.mm
index 9ac7764..a877064 100644
--- a/chrome/browser/ui/cocoa/extensions/browser_action_button.mm
+++ b/chrome/browser/ui/cocoa/extensions/browser_action_button.mm
@@ -16,7 +16,6 @@
#include "chrome/browser/ui/cocoa/extensions/extension_action_context_menu.h"
#include "chrome/common/chrome_notification_types.h"
#include "chrome/common/extensions/extension.h"
-#include "chrome/common/extensions/extension_resource.h"
#include "content/public/browser/notification_observer.h"
#include "content/public/browser/notification_registrar.h"
#include "content/public/browser/notification_source.h"
diff --git a/chrome/browser/ui/cocoa/infobars/extension_infobar_controller.mm b/chrome/browser/ui/cocoa/infobars/extension_infobar_controller.mm
index f6204b3..9a5b1a3 100644
--- a/chrome/browser/ui/cocoa/infobars/extension_infobar_controller.mm
+++ b/chrome/browser/ui/cocoa/infobars/extension_infobar_controller.mm
@@ -19,9 +19,9 @@
#include "chrome/common/extensions/extension.h"
#include "chrome/common/extensions/extension_constants.h"
#include "chrome/common/extensions/extension_icon_set.h"
-#include "chrome/common/extensions/extension_resource.h"
#include "content/public/browser/web_contents.h"
#include "content/public/browser/web_contents_view.h"
+#include "extensions/common/extension_resource.h"
#include "grit/theme_resources.h"
#include "skia/ext/skia_utils_mac.h"
#include "ui/base/resource/resource_bundle.h"
@@ -73,7 +73,7 @@ class InfobarBridge : public ExtensionInfoBarDelegate::DelegateObserver {
void LoadIcon() {
const extensions::Extension* extension = delegate_->extension_host()->
extension();
- ExtensionResource icon_resource =
+ extensions::ExtensionResource icon_resource =
extensions::IconsInfo::GetIconResource(
extension,
extension_misc::EXTENSION_ICON_BITTY,
diff --git a/chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.mm b/chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.mm
index 2cb9590..11a65d2 100644
--- a/chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.mm
+++ b/chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.mm
@@ -56,7 +56,6 @@
#include "chrome/common/chrome_notification_types.h"
#include "chrome/common/chrome_switches.h"
#include "chrome/common/extensions/extension.h"
-#include "chrome/common/extensions/extension_resource.h"
#include "chrome/common/extensions/feature_switch.h"
#include "chrome/common/pref_names.h"
#include "content/public/browser/notification_service.h"
diff --git a/chrome/browser/ui/cocoa/location_bar/page_action_decoration.mm b/chrome/browser/ui/cocoa/location_bar/page_action_decoration.mm
index 3a6f38a..001622d 100644
--- a/chrome/browser/ui/cocoa/location_bar/page_action_decoration.mm
+++ b/chrome/browser/ui/cocoa/location_bar/page_action_decoration.mm
@@ -24,7 +24,6 @@
#include "chrome/browser/ui/webui/extensions/extension_info_ui.h"
#include "chrome/common/chrome_notification_types.h"
#include "chrome/common/extensions/api/icons/icons_handler.h"
-#include "chrome/common/extensions/extension_resource.h"
#include "content/public/browser/notification_service.h"
#include "content/public/browser/web_contents.h"
#include "skia/ext/skia_utils_mac.h"
diff --git a/chrome/browser/ui/gtk/browser_actions_toolbar_gtk.cc b/chrome/browser/ui/gtk/browser_actions_toolbar_gtk.cc
index fab4355..f63d943 100644
--- a/chrome/browser/ui/gtk/browser_actions_toolbar_gtk.cc
+++ b/chrome/browser/ui/gtk/browser_actions_toolbar_gtk.cc
@@ -37,7 +37,6 @@
#include "chrome/common/chrome_notification_types.h"
#include "chrome/common/extensions/extension.h"
#include "chrome/common/extensions/extension_manifest_constants.h"
-#include "chrome/common/extensions/extension_resource.h"
#include "content/public/browser/notification_details.h"
#include "content/public/browser/notification_source.h"
#include "grit/theme_resources.h"
diff --git a/chrome/browser/ui/gtk/create_application_shortcuts_dialog_gtk.cc b/chrome/browser/ui/gtk/create_application_shortcuts_dialog_gtk.cc
index 3fd2dbd..344b872 100644
--- a/chrome/browser/ui/gtk/create_application_shortcuts_dialog_gtk.cc
+++ b/chrome/browser/ui/gtk/create_application_shortcuts_dialog_gtk.cc
@@ -22,7 +22,6 @@
#include "chrome/browser/web_applications/web_app.h"
#include "chrome/common/extensions/api/icons/icons_handler.h"
#include "chrome/common/extensions/extension.h"
-#include "chrome/common/extensions/extension_resource.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/web_contents.h"
#include "content/public/browser/web_contents_delegate.h"
diff --git a/chrome/browser/ui/gtk/infobars/extension_infobar_gtk.cc b/chrome/browser/ui/gtk/infobars/extension_infobar_gtk.cc
index b99c7ce..1811576 100644
--- a/chrome/browser/ui/gtk/infobars/extension_infobar_gtk.cc
+++ b/chrome/browser/ui/gtk/infobars/extension_infobar_gtk.cc
@@ -18,9 +18,9 @@
#include "chrome/common/extensions/extension.h"
#include "chrome/common/extensions/extension_constants.h"
#include "chrome/common/extensions/extension_icon_set.h"
-#include "chrome/common/extensions/extension_resource.h"
#include "content/public/browser/render_view_host.h"
#include "content/public/browser/render_widget_host_view.h"
+#include "extensions/common/extension_resource.h"
#include "grit/theme_resources.h"
#include "ui/base/gtk/gtk_signal_registrar.h"
#include "ui/base/resource/resource_bundle.h"
@@ -130,10 +130,11 @@ void ExtensionInfoBarGtk::BuildWidgets() {
}
// Start loading the image for the menu button.
- ExtensionResource icon_resource = extensions::IconsInfo::GetIconResource(
- extension,
- extension_misc::EXTENSION_ICON_BITTY,
- ExtensionIconSet::MATCH_EXACTLY);
+ extensions::ExtensionResource icon_resource =
+ extensions::IconsInfo::GetIconResource(
+ extension,
+ extension_misc::EXTENSION_ICON_BITTY,
+ ExtensionIconSet::MATCH_EXACTLY);
// Load image asynchronously, calling back OnImageLoaded.
extensions::ImageLoader* loader =
extensions::ImageLoader::Get(delegate_->extension_host()->profile());
diff --git a/chrome/browser/ui/gtk/infobars/extension_infobar_gtk.h b/chrome/browser/ui/gtk/infobars/extension_infobar_gtk.h
index cb90bcb..50ff090 100644
--- a/chrome/browser/ui/gtk/infobars/extension_infobar_gtk.h
+++ b/chrome/browser/ui/gtk/infobars/extension_infobar_gtk.h
@@ -13,7 +13,6 @@
#include "ui/gfx/gtk_util.h"
class ExtensionContextMenuModel;
-class ExtensionResource;
class ExtensionViewGtk;
class MenuGtk;
diff --git a/chrome/browser/ui/gtk/location_bar_view_gtk.cc b/chrome/browser/ui/gtk/location_bar_view_gtk.cc
index 78b57a517..8738e6a5 100644
--- a/chrome/browser/ui/gtk/location_bar_view_gtk.cc
+++ b/chrome/browser/ui/gtk/location_bar_view_gtk.cc
@@ -75,7 +75,6 @@
#include "chrome/common/extensions/api/icons/icons_handler.h"
#include "chrome/common/extensions/extension.h"
#include "chrome/common/extensions/extension_manifest_constants.h"
-#include "chrome/common/extensions/extension_resource.h"
#include "chrome/common/extensions/feature_switch.h"
#include "chrome/common/pref_names.h"
#include "content/public/browser/navigation_entry.h"
diff --git a/chrome/browser/ui/views/create_application_shortcut_view.cc b/chrome/browser/ui/views/create_application_shortcut_view.cc
index bd06c58..20fed13 100644
--- a/chrome/browser/ui/views/create_application_shortcut_view.cc
+++ b/chrome/browser/ui/views/create_application_shortcut_view.cc
@@ -22,7 +22,6 @@
#include "chrome/browser/ui/webui/extensions/extension_icon_source.h"
#include "chrome/common/chrome_constants.h"
#include "chrome/common/extensions/extension.h"
-#include "chrome/common/extensions/extension_resource.h"
#include "chrome/common/pref_names.h"
#include "content/public/browser/render_view_host.h"
#include "content/public/browser/render_widget_host_view.h"
diff --git a/chrome/browser/ui/views/frame/browser_view.cc b/chrome/browser/ui/views/frame/browser_view.cc
index e5c95a1..3a03799 100644
--- a/chrome/browser/ui/views/frame/browser_view.cc
+++ b/chrome/browser/ui/views/frame/browser_view.cc
@@ -81,7 +81,6 @@
#include "chrome/browser/ui/window_sizer/window_sizer.h"
#include "chrome/common/chrome_notification_types.h"
#include "chrome/common/chrome_switches.h"
-#include "chrome/common/extensions/extension_resource.h"
#include "chrome/common/pref_names.h"
#include "chrome/common/url_constants.h"
#include "content/public/browser/download_manager.h"
diff --git a/chrome/browser/ui/views/infobars/extension_infobar.cc b/chrome/browser/ui/views/infobars/extension_infobar.cc
index bf19198..0a32194 100644
--- a/chrome/browser/ui/views/infobars/extension_infobar.cc
+++ b/chrome/browser/ui/views/infobars/extension_infobar.cc
@@ -14,7 +14,7 @@
#include "chrome/common/extensions/extension.h"
#include "chrome/common/extensions/extension_constants.h"
#include "chrome/common/extensions/extension_icon_set.h"
-#include "chrome/common/extensions/extension_resource.h"
+#include "extensions/common/extension_resource.h"
#include "grit/theme_resources.h"
#include "ui/base/animation/slide_animation.h"
#include "ui/base/resource/resource_bundle.h"
@@ -146,8 +146,9 @@ void ExtensionInfoBar::ViewHierarchyChanged(bool is_add,
const extensions::Extension* extension = extension_host->extension();
extension_misc::ExtensionIcons image_size =
extension_misc::EXTENSION_ICON_BITTY;
- ExtensionResource icon_resource = extensions::IconsInfo::GetIconResource(
- extension, image_size, ExtensionIconSet::MATCH_EXACTLY);
+ extensions::ExtensionResource icon_resource =
+ extensions::IconsInfo::GetIconResource(
+ extension, image_size, ExtensionIconSet::MATCH_EXACTLY);
extensions::ImageLoader* loader =
extensions::ImageLoader::Get(extension_host->profile());
loader->LoadImageAsync(
diff --git a/chrome/browser/ui/views/location_bar/page_action_image_view.cc b/chrome/browser/ui/views/location_bar/page_action_image_view.cc
index 5311cc3..9a09894 100644
--- a/chrome/browser/ui/views/location_bar/page_action_image_view.cc
+++ b/chrome/browser/ui/views/location_bar/page_action_image_view.cc
@@ -23,7 +23,6 @@
#include "chrome/browser/ui/webui/extensions/extension_info_ui.h"
#include "chrome/common/extensions/extension.h"
#include "chrome/common/extensions/extension_manifest_constants.h"
-#include "chrome/common/extensions/extension_resource.h"
#include "ui/base/accessibility/accessible_view_state.h"
#include "ui/base/events/event.h"
#include "ui/gfx/canvas.h"
diff --git a/chrome/browser/ui/views/script_bubble_view.cc b/chrome/browser/ui/views/script_bubble_view.cc
index 9e98ab0..343ae81 100644
--- a/chrome/browser/ui/views/script_bubble_view.cc
+++ b/chrome/browser/ui/views/script_bubble_view.cc
@@ -16,6 +16,7 @@
#include "chrome/common/url_constants.h"
#include "content/public/browser/page_navigator.h"
#include "content/public/browser/web_contents.h"
+#include "extensions/common/extension_resource.h"
#include "grit/generated_resources.h"
#include "grit/locale_settings.h"
#include "ui/base/l10n/l10n_util.h"
@@ -81,7 +82,7 @@ ScriptBubbleView::ScriptBubbleView(views::View* anchor_view,
entries_.push_back(entry);
int size = extension_misc::EXTENSION_ICON_BITTY;
- ExtensionResource image =
+ extensions::ExtensionResource image =
extensions::IconsInfo::GetIconResource(extension,
size,
ExtensionIconSet::MATCH_BIGGER);
diff --git a/chrome/browser/ui/web_applications/web_app_ui.cc b/chrome/browser/ui/web_applications/web_app_ui.cc
index cfe3c09..e505065 100644
--- a/chrome/browser/ui/web_applications/web_app_ui.cc
+++ b/chrome/browser/ui/web_applications/web_app_ui.cc
@@ -405,8 +405,9 @@ void UpdateShortcutInfoAndIconForApp(
std::vector<extensions::ImageLoader::ImageRepresentation> info_list;
for (size_t i = 0; i < arraysize(kDesiredSizes); ++i) {
int size = kDesiredSizes[i];
- ExtensionResource resource = extensions::IconsInfo::GetIconResource(
- &extension, size, ExtensionIconSet::MATCH_EXACTLY);
+ extensions::ExtensionResource resource =
+ extensions::IconsInfo::GetIconResource(
+ &extension, size, ExtensionIconSet::MATCH_EXACTLY);
if (!resource.empty()) {
info_list.push_back(extensions::ImageLoader::ImageRepresentation(
resource,
@@ -423,8 +424,9 @@ void UpdateShortcutInfoAndIconForApp(
// If there is no icon at the desired sizes, we will resize what we can get.
// Making a large icon smaller is preferred to making a small icon larger,
// so look for a larger icon first:
- ExtensionResource resource = extensions::IconsInfo::GetIconResource(
- &extension, size, ExtensionIconSet::MATCH_BIGGER);
+ extensions::ExtensionResource resource =
+ extensions::IconsInfo::GetIconResource(
+ &extension, size, ExtensionIconSet::MATCH_BIGGER);
if (resource.empty()) {
resource = extensions::IconsInfo::GetIconResource(
&extension, size, ExtensionIconSet::MATCH_SMALLER);
diff --git a/chrome/browser/ui/webui/extensions/extension_icon_source.cc b/chrome/browser/ui/webui/extensions/extension_icon_source.cc
index 4e5c146..62ccf1a 100644
--- a/chrome/browser/ui/webui/extensions/extension_icon_source.cc
+++ b/chrome/browser/ui/webui/extensions/extension_icon_source.cc
@@ -22,8 +22,8 @@
#include "chrome/common/extensions/api/icons/icons_handler.h"
#include "chrome/common/extensions/extension.h"
#include "chrome/common/extensions/extension_constants.h"
-#include "chrome/common/extensions/extension_resource.h"
#include "chrome/common/url_constants.h"
+#include "extensions/common/extension_resource.h"
#include "googleurl/src/gurl.h"
#include "grit/component_extension_resources_map.h"
#include "grit/theme_resources.h"
@@ -132,7 +132,7 @@ void ExtensionIconSource::StartDataRequest(
}
ExtensionIconRequest* request = GetData(next_id);
- ExtensionResource icon = extensions::IconsInfo::GetIconResource(
+ extensions::ExtensionResource icon = extensions::IconsInfo::GetIconResource(
request->extension, request->size, request->match);
if (icon.relative_path().empty()) {
@@ -198,8 +198,9 @@ void ExtensionIconSource::LoadDefaultImage(int request_id) {
FinalizeImage(&resized_image, request_id);
}
-void ExtensionIconSource::LoadExtensionImage(const ExtensionResource& icon,
- int request_id) {
+void ExtensionIconSource::LoadExtensionImage(
+ const extensions::ExtensionResource& icon,
+ int request_id) {
ExtensionIconRequest* request = GetData(request_id);
extensions::ImageLoader::Get(profile_)->LoadImageAsync(
request->extension, icon,
@@ -258,7 +259,7 @@ void ExtensionIconSource::OnImageLoaded(int request_id,
void ExtensionIconSource::LoadIconFailed(int request_id) {
ExtensionIconRequest* request = GetData(request_id);
- ExtensionResource icon = extensions::IconsInfo::GetIconResource(
+ extensions::ExtensionResource icon = extensions::IconsInfo::GetIconResource(
request->extension, request->size, request->match);
if (request->size == extension_misc::EXTENSION_ICON_BITTY)
diff --git a/chrome/browser/ui/webui/extensions/extension_icon_source.h b/chrome/browser/ui/webui/extensions/extension_icon_source.h
index 0241160..6485a24 100644
--- a/chrome/browser/ui/webui/extensions/extension_icon_source.h
+++ b/chrome/browser/ui/webui/extensions/extension_icon_source.h
@@ -13,8 +13,8 @@
#include "chrome/browser/favicon/favicon_service.h"
#include "chrome/common/cancelable_task_tracker.h"
#include "chrome/common/extensions/extension_icon_set.h"
-#include "chrome/common/extensions/extension_resource.h"
#include "content/public/browser/url_data_source.h"
+#include "extensions/common/extension_resource.h"
#include "third_party/skia/include/core/SkBitmap.h"
class ExtensionIconSet;
@@ -100,7 +100,8 @@ class ExtensionIconSource : public content::URLDataSource,
// Loads the extension's |icon| for the given |request_id| and returns the
// image to the client.
- void LoadExtensionImage(const ExtensionResource& icon, int request_id);
+ void LoadExtensionImage(const extensions::ExtensionResource& icon,
+ int request_id);
// Loads the favicon image for the app associated with the |request_id|. If
// the image does not exist, we fall back to the default image.
diff --git a/chrome/browser/ui/webui/extensions/extension_settings_handler.h b/chrome/browser/ui/webui/extensions/extension_settings_handler.h
index f14341f..ab0882f 100644
--- a/chrome/browser/ui/webui/extensions/extension_settings_handler.h
+++ b/chrome/browser/ui/webui/extensions/extension_settings_handler.h
@@ -17,7 +17,6 @@
#include "chrome/browser/extensions/extension_uninstall_dialog.h"
#include "chrome/browser/extensions/extension_warning_service.h"
#include "chrome/browser/extensions/requirements_checker.h"
-#include "chrome/common/extensions/extension_resource.h"
#include "content/public/browser/navigation_controller.h"
#include "content/public/browser/notification_observer.h"
#include "content/public/browser/notification_registrar.h"
diff --git a/chrome/browser/ui/webui/ntp/app_launcher_handler.cc b/chrome/browser/ui/webui/ntp/app_launcher_handler.cc
index 83e24d1..f9c7b33 100644
--- a/chrome/browser/ui/webui/ntp/app_launcher_handler.cc
+++ b/chrome/browser/ui/webui/ntp/app_launcher_handler.cc
@@ -36,7 +36,6 @@
#include "chrome/common/extensions/extension.h"
#include "chrome/common/extensions/extension_constants.h"
#include "chrome/common/extensions/extension_icon_set.h"
-#include "chrome/common/extensions/extension_resource.h"
#include "chrome/common/pref_names.h"
#include "chrome/common/url_constants.h"
#include "chrome/common/web_apps.h"
diff --git a/chrome/browser/ui/webui/ntp/favicon_webui_handler.cc b/chrome/browser/ui/webui/ntp/favicon_webui_handler.cc
index a614cb9..78501e1 100644
--- a/chrome/browser/ui/webui/ntp/favicon_webui_handler.cc
+++ b/chrome/browser/ui/webui/ntp/favicon_webui_handler.cc
@@ -15,7 +15,6 @@
#include "chrome/browser/favicon/favicon_service_factory.h"
#include "chrome/browser/history/top_sites.h"
#include "chrome/browser/profiles/profile.h"
-#include "chrome/common/extensions/extension_resource.h"
#include "chrome/common/url_constants.h"
#include "content/public/browser/web_ui.h"
#include "grit/ui_resources.h"
diff --git a/chrome/chrome_browser_extensions.gypi b/chrome/chrome_browser_extensions.gypi
index 0a9688d..7a6af0e 100644
--- a/chrome/chrome_browser_extensions.gypi
+++ b/chrome/chrome_browser_extensions.gypi
@@ -55,6 +55,8 @@
'sources': [
# All .cc, .h, .m, and .mm files under browser/extensions except for
# tests and mocks.
+ '../extensions/browser/file_reader.cc',
+ '../extensions/browser/file_reader.h',
'browser/extensions/active_tab_permission_granter.cc',
'browser/extensions/active_tab_permission_granter.h',
'browser/extensions/activity_actions.h',
@@ -491,8 +493,6 @@
'browser/extensions/convert_user_script.h',
'browser/extensions/convert_web_app.cc',
'browser/extensions/convert_web_app.h',
- 'browser/extensions/crx_file.cc',
- 'browser/extensions/crx_file.h',
'browser/extensions/crx_installer.cc',
'browser/extensions/crx_installer.h',
'browser/extensions/crx_installer_error.h',
@@ -623,8 +623,6 @@
'browser/extensions/external_provider_interface.h',
'browser/extensions/external_registry_loader_win.cc',
'browser/extensions/external_registry_loader_win.h',
- 'browser/extensions/file_reader.cc',
- 'browser/extensions/file_reader.h',
'browser/extensions/image_loader.cc',
'browser/extensions/image_loader.h',
'browser/extensions/image_loader_factory.cc',
diff --git a/chrome/chrome_common.gypi b/chrome/chrome_common.gypi
index b69293d..9e56307 100644
--- a/chrome/chrome_common.gypi
+++ b/chrome/chrome_common.gypi
@@ -56,6 +56,8 @@
'../apps/app_shim/app_shim_messages.h',
'../extensions/common/constants.cc',
'../extensions/common/constants.h',
+ '../extensions/common/crx_file.cc',
+ '../extensions/common/crx_file.h',
'../extensions/common/draggable_region.cc',
'../extensions/common/draggable_region.h',
'../extensions/common/error_utils.cc',
@@ -66,6 +68,10 @@
'../extensions/common/event_filtering_info.h',
'../extensions/common/event_matcher.cc',
'../extensions/common/event_matcher.h',
+ '../extensions/common/extension_resource.cc',
+ '../extensions/common/extension_resource.h',
+ '../extensions/common/id_util.cc',
+ '../extensions/common/id_util.h',
'../extensions/common/install_warning.h',
'../extensions/common/install_warning.cc',
'../extensions/common/matcher/regex_set_matcher.cc',
@@ -211,8 +217,6 @@
'common/extensions/extension_messages.h',
'common/extensions/extension_process_policy.cc',
'common/extensions/extension_process_policy.h',
- 'common/extensions/extension_resource.cc',
- 'common/extensions/extension_resource.h',
'common/extensions/extension_set.cc',
'common/extensions/extension_set.h',
'common/extensions/feature_switch.cc',
diff --git a/chrome/chrome_tests_unit.gypi b/chrome/chrome_tests_unit.gypi
index 81026cc..5394b2e 100644
--- a/chrome/chrome_tests_unit.gypi
+++ b/chrome/chrome_tests_unit.gypi
@@ -455,7 +455,10 @@
},
'sources': [
'../apps/app_shim/app_shim_host_mac_unittest.cc',
+ '../extensions/browser/file_reader_unittest.cc',
'../extensions/common/event_filter_unittest.cc',
+ '../extensions/common/extension_resource_unittest.cc',
+ '../extensions/common/id_util_unittest.cc',
'../extensions/common/matcher/regex_set_matcher_unittest.cc',
'../extensions/common/matcher/string_pattern_unittest.cc',
'../extensions/common/matcher/substring_set_matcher_unittest.cc',
@@ -768,7 +771,6 @@
'browser/extensions/menu_manager_unittest.cc',
'browser/extensions/page_action_controller_unittest.cc',
'browser/extensions/permissions_updater_unittest.cc',
- 'browser/extensions/file_reader_unittest.cc',
'browser/extensions/image_loader_unittest.cc',
'browser/extensions/key_identifier_conversion_views_unittest.cc',
'browser/extensions/management_policy_unittest.cc',
@@ -1512,7 +1514,6 @@
'common/extensions/extension_icon_set_unittest.cc',
'common/extensions/extension_l10n_util_unittest.cc',
'common/extensions/extension_localization_peer_unittest.cc',
- 'common/extensions/extension_resource_unittest.cc',
'common/extensions/extension_set_unittest.cc',
'common/extensions/extension_unittest.cc',
'common/extensions/feature_switch_unittest.cc',
diff --git a/chrome/common/extensions/api/i18n/default_locale_handler.cc b/chrome/common/extensions/api/i18n/default_locale_handler.cc
index 9a1c26a..a8cd544 100644
--- a/chrome/common/extensions/api/i18n/default_locale_handler.cc
+++ b/chrome/common/extensions/api/i18n/default_locale_handler.cc
@@ -13,6 +13,7 @@
#include "chrome/common/extensions/extension_l10n_util.h"
#include "chrome/common/extensions/extension_manifest_constants.h"
#include "chrome/common/extensions/manifest.h"
+#include "extensions/common/constants.h"
#include "grit/generated_resources.h"
#include "ui/base/l10n/l10n_util.h"
@@ -51,8 +52,7 @@ bool DefaultLocaleHandler::Validate(
std::string* error,
std::vector<InstallWarning>* warnings) const {
// default_locale and _locales have to be both present or both missing.
- const base::FilePath path = extension->path().Append(
- Extension::kLocaleFolder);
+ const base::FilePath path = extension->path().Append(kLocaleFolder);
bool path_exists = file_util::PathExists(path);
std::string default_locale =
extensions::LocaleInfo::GetDefaultLocale(extension);
@@ -86,8 +86,7 @@ bool DefaultLocaleHandler::Validate(
all_locales))
continue;
- base::FilePath messages_path =
- locale_path.Append(Extension::kMessagesFilename);
+ base::FilePath messages_path = locale_path.Append(kMessagesFilename);
if (!file_util::PathExists(messages_path)) {
*error = base::StringPrintf(
diff --git a/chrome/common/extensions/api/icons/icons_handler.h b/chrome/common/extensions/api/icons/icons_handler.h
index 5bc3c81..76d4cff 100644
--- a/chrome/common/extensions/api/icons/icons_handler.h
+++ b/chrome/common/extensions/api/icons/icons_handler.h
@@ -9,8 +9,8 @@
#include "chrome/common/extensions/extension.h"
#include "chrome/common/extensions/extension_icon_set.h"
-#include "chrome/common/extensions/extension_resource.h"
#include "chrome/common/extensions/manifest_handler.h"
+#include "extensions/common/extension_resource.h"
namespace extensions {
diff --git a/chrome/common/extensions/extension.cc b/chrome/common/extensions/extension.cc
index 4673555..fe25d22 100644
--- a/chrome/common/extensions/extension.cc
+++ b/chrome/common/extensions/extension.cc
@@ -47,9 +47,9 @@
#include "chrome/common/extensions/permissions/permissions_info.h"
#include "chrome/common/extensions/user_script.h"
#include "chrome/common/url_constants.h"
-#include "crypto/sha2.h"
#include "extensions/common/constants.h"
#include "extensions/common/error_utils.h"
+#include "extensions/common/id_util.h"
#include "extensions/common/url_pattern_set.h"
#include "googleurl/src/url_util.h"
#include "grit/chromium_strings.h"
@@ -92,23 +92,6 @@ const int kRSAKeySize = 1024;
const char kDefaultSandboxedPageContentSecurityPolicy[] =
"sandbox allow-scripts allow-forms allow-popups";
-// Converts a normal hexadecimal string into the alphabet used by extensions.
-// We use the characters 'a'-'p' instead of '0'-'f' to avoid ever having a
-// completely numeric host, since some software interprets that as an IP
-// address.
-static void ConvertHexadecimalToIDAlphabet(std::string* id) {
- for (size_t i = 0; i < id->size(); ++i) {
- int val;
- if (base::HexStringToInt(base::StringPiece(id->begin() + i,
- id->begin() + i + 1),
- &val)) {
- (*id)[i] = val + 'a';
- } else {
- (*id)[i] = 'a';
- }
- }
-}
-
// A singleton object containing global data needed by the extension objects.
class ExtensionConfig {
public:
@@ -197,23 +180,11 @@ scoped_ptr<ActionInfo> LoadExtensionActionInfoHelper(
} // namespace
-const base::FilePath::CharType Extension::kManifestFilename[] =
- FILE_PATH_LITERAL("manifest.json");
-const base::FilePath::CharType Extension::kLocaleFolder[] =
- FILE_PATH_LITERAL("_locales");
-const base::FilePath::CharType Extension::kMessagesFilename[] =
- FILE_PATH_LITERAL("messages.json");
-const base::FilePath::CharType Extension::kPlatformSpecificFolder[] =
- FILE_PATH_LITERAL("_platform_specific");
-
#if defined(OS_WIN)
const char Extension::kExtensionRegistryPath[] =
"Software\\Google\\Chrome\\Extensions";
#endif
-// first 16 bytes of SHA256 hashed public key.
-const size_t Extension::kIdSize = 16;
-
const char Extension::kMimeType[] = "application/x-chrome-extension";
const int Extension::kValidWebExtentSchemes =
@@ -295,7 +266,7 @@ scoped_refptr<Extension> Extension::Create(const base::FilePath& path,
// static
bool Extension::IdIsValid(const std::string& id) {
// Verify that the id is legal.
- if (id.size() != (kIdSize * 2))
+ if (id.size() != (id_util::kIdSize * 2))
return false;
// We only support lowercase IDs, because IDs can be used as URL components
@@ -309,16 +280,6 @@ bool Extension::IdIsValid(const std::string& id) {
}
// static
-std::string Extension::GenerateIdForPath(const base::FilePath& path) {
- base::FilePath new_path = Extension::MaybeNormalizePath(path);
- std::string path_bytes =
- std::string(reinterpret_cast<const char*>(new_path.value().data()),
- new_path.value().size() * sizeof(base::FilePath::CharType));
- std::string id;
- return GenerateId(path_bytes, &id) ? id : "";
-}
-
-// static
bool Extension::IsExtension(const base::FilePath& file_name) {
return file_name.MatchesExtension(chrome::kExtensionFileExtension);
}
@@ -451,17 +412,6 @@ bool Extension::ProducePEM(const std::string& input, std::string* output) {
}
// static
-bool Extension::GenerateId(const std::string& input, std::string* output) {
- DCHECK(output);
- uint8 hash[Extension::kIdSize];
- crypto::SHA256HashString(input, hash, sizeof(hash));
- *output = StringToLowerASCII(base::HexEncode(hash, sizeof(hash)));
- ConvertHexadecimalToIDAlphabet(output);
-
- return true;
-}
-
-// static
bool Extension::FormatPEMForFileOutput(const std::string& input,
std::string* output,
bool is_public) {
@@ -1190,13 +1140,12 @@ bool Extension::InitExtensionID(extensions::Manifest* manifest,
if (manifest->HasKey(keys::kPublicKey)) {
std::string public_key;
std::string public_key_bytes;
- std::string extension_id;
if (!manifest->GetString(keys::kPublicKey, &public_key) ||
- !ParsePEMKeyBytes(public_key, &public_key_bytes) ||
- !GenerateId(public_key_bytes, &extension_id)) {
+ !ParsePEMKeyBytes(public_key, &public_key_bytes)) {
*error = ASCIIToUTF16(errors::kInvalidKey);
return false;
}
+ std::string extension_id = id_util::GenerateId(public_key_bytes);
manifest->set_extension_id(extension_id);
return true;
}
@@ -1208,7 +1157,7 @@ bool Extension::InitExtensionID(extensions::Manifest* manifest,
// If there is a path, we generate the ID from it. This is useful for
// development mode, because it keeps the ID stable across restarts and
// reloading the extension.
- std::string extension_id = GenerateIdForPath(path);
+ std::string extension_id = id_util::GenerateIdForPath(path);
if (extension_id.empty()) {
NOTREACHED() << "Could not create ID from path.";
return false;
@@ -1218,23 +1167,6 @@ bool Extension::InitExtensionID(extensions::Manifest* manifest,
}
}
-// static
-base::FilePath Extension::MaybeNormalizePath(const base::FilePath& path) {
-#if defined(OS_WIN)
- // Normalize any drive letter to upper-case. We do this for consistency with
- // net_utils::FilePathToFileURL(), which does the same thing, to make string
- // comparisons simpler.
- std::wstring path_str = path.value();
- if (path_str.size() >= 2 && path_str[0] >= L'a' && path_str[0] <= L'z' &&
- path_str[1] == ':')
- path_str[0] += ('A' - 'a');
-
- return base::FilePath(path_str);
-#else
- return path;
-#endif
-}
-
bool Extension::LoadManagedModeFeatures(string16* error) {
if (!manifest_->HasKey(keys::kContentPack))
return true;
@@ -1300,7 +1232,7 @@ Extension::Extension(const base::FilePath& path,
wants_file_access_(false),
creation_flags_(0) {
DCHECK(path.empty() || path.IsAbsolute());
- path_ = MaybeNormalizePath(path);
+ path_ = id_util::MaybeNormalizePath(path);
}
Extension::~Extension() {
diff --git a/chrome/common/extensions/extension.h b/chrome/common/extensions/extension.h
index 29b503c..53e3a8f 100644
--- a/chrome/common/extensions/extension.h
+++ b/chrome/common/extensions/extension.h
@@ -22,11 +22,11 @@
#include "base/threading/thread_checker.h"
#include "chrome/common/extensions/extension_constants.h"
#include "chrome/common/extensions/extension_icon_set.h"
-#include "chrome/common/extensions/extension_resource.h"
#include "chrome/common/extensions/manifest.h"
#include "chrome/common/extensions/permissions/api_permission.h"
#include "chrome/common/extensions/permissions/permission_message.h"
#include "chrome/common/extensions/user_script.h"
+#include "extensions/common/extension_resource.h"
#include "extensions/common/install_warning.h"
#include "extensions/common/url_pattern.h"
#include "extensions/common/url_pattern_set.h"
@@ -191,35 +191,16 @@ class Extension : public base::RefCountedThreadSafe<Extension> {
// Valid schemes for host permission URLPatterns.
static const int kValidHostPermissionSchemes;
- // The name of the manifest inside an extension.
- static const base::FilePath::CharType kManifestFilename[];
-
- // The name of locale folder inside an extension.
- static const base::FilePath::CharType kLocaleFolder[];
-
- // The name of the messages file inside an extension.
- static const base::FilePath::CharType kMessagesFilename[];
-
- // The base directory for subdirectories with platform-specific code.
- static const base::FilePath::CharType kPlatformSpecificFolder[];
-
#if defined(OS_WIN)
static const char kExtensionRegistryPath[];
#endif
- // The number of bytes in a legal id.
- static const size_t kIdSize;
-
// The mimetype used for extensions.
static const char kMimeType[];
// Checks to see if the extension has a valid ID.
static bool IdIsValid(const std::string& id);
- // Generate an ID for an extension in the given path.
- // Used while developing extensions, before they have a key.
- static std::string GenerateIdForPath(const base::FilePath& file_name);
-
// Returns true if the specified file is an extension.
static bool IsExtension(const base::FilePath& file_name);
@@ -270,11 +251,6 @@ class Extension : public base::RefCountedThreadSafe<Extension> {
// Does a simple base64 encoding of |input| into |output|.
static bool ProducePEM(const std::string& input, std::string* output);
- // Generates an extension ID from arbitrary input. The same input string will
- // always generate the same output ID.
- static bool GenerateId(const std::string& input,
- std::string* output) WARN_UNUSED_RESULT;
-
// Expects base64 encoded |input| and formats into |output| including
// the appropriate header & footer.
static bool FormatPEMForFileOutput(const std::string& input,
@@ -559,10 +535,6 @@ class Extension : public base::RefCountedThreadSafe<Extension> {
int creation_flags,
string16* error);
- // Normalize the path for use by the extension. On Windows, this will make
- // sure the drive letter is uppercase.
- static base::FilePath MaybeNormalizePath(const base::FilePath& path);
-
// Returns true if this extension id is from a trusted provider.
static bool IsTrustedId(const std::string& id);
diff --git a/chrome/common/extensions/extension_file_util.cc b/chrome/common/extensions/extension_file_util.cc
index 8f71e15..1ed7356 100644
--- a/chrome/common/extensions/extension_file_util.cc
+++ b/chrome/common/extensions/extension_file_util.cc
@@ -24,10 +24,11 @@
#include "chrome/common/extensions/extension_l10n_util.h"
#include "chrome/common/extensions/extension_manifest_constants.h"
#include "chrome/common/extensions/extension_messages.h"
-#include "chrome/common/extensions/extension_resource.h"
#include "chrome/common/extensions/manifest.h"
#include "chrome/common/extensions/manifest_handler.h"
#include "chrome/common/extensions/message_bundle.h"
+#include "extensions/common/constants.h"
+#include "extensions/common/extension_resource.h"
#include "extensions/common/install_warning.h"
#include "grit/generated_resources.h"
#include "net/base/escape.h"
@@ -35,6 +36,7 @@
#include "ui/base/l10n/l10n_util.h"
using extensions::Extension;
+using extensions::ExtensionResource;
using extensions::Manifest;
namespace errors = extension_manifest_errors;
@@ -157,7 +159,7 @@ scoped_refptr<Extension> LoadExtension(const base::FilePath& extension_path,
DictionaryValue* LoadManifest(const base::FilePath& extension_path,
std::string* error) {
base::FilePath manifest_path =
- extension_path.Append(Extension::kManifestFilename);
+ extension_path.Append(extensions::kManifestFilename);
if (!file_util::PathExists(manifest_path)) {
*error = l10n_util::GetStringUTF8(IDS_EXTENSION_MANIFEST_UNREADABLE);
return NULL;
@@ -401,8 +403,7 @@ extensions::MessageBundle* LoadMessageBundle(
std::string* error) {
error->clear();
// Load locale information if available.
- base::FilePath locale_path = extension_path.Append(
- Extension::kLocaleFolder);
+ base::FilePath locale_path = extension_path.Append(extensions::kLocaleFolder);
if (!file_util::PathExists(locale_path))
return NULL;
@@ -478,8 +479,8 @@ bool CheckForIllegalFilenames(const base::FilePath& extension_path,
std::string* error) {
// Reserved underscore names.
static const base::FilePath::CharType* reserved_names[] = {
- Extension::kLocaleFolder,
- Extension::kPlatformSpecificFolder,
+ extensions::kLocaleFolder,
+ extensions::kPlatformSpecificFolder,
FILE_PATH_LITERAL("__MACOSX"),
};
CR_DEFINE_STATIC_LOCAL(
diff --git a/chrome/common/extensions/extension_file_util_unittest.cc b/chrome/common/extensions/extension_file_util_unittest.cc
index 7ece85b..db0e38b 100644
--- a/chrome/common/extensions/extension_file_util_unittest.cc
+++ b/chrome/common/extensions/extension_file_util_unittest.cc
@@ -20,6 +20,7 @@
#include "chrome/common/extensions/extension_manifest_constants.h"
#include "chrome/common/extensions/manifest.h"
#include "chrome/common/extensions/manifest_handler.h"
+#include "extensions/common/constants.h"
#include "grit/generated_resources.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -172,7 +173,7 @@ TEST_F(ExtensionFileUtilTest, CheckIllegalFilenamesOnlyReserved) {
ASSERT_TRUE(temp.CreateUniqueTempDir());
const base::FilePath::CharType* folders[] =
- { Extension::kLocaleFolder, Extension::kPlatformSpecificFolder };
+ { extensions::kLocaleFolder, extensions::kPlatformSpecificFolder };
for (size_t i = 0; i < arraysize(folders); i++) {
base::FilePath src_path = temp.path().Append(folders[i]);
@@ -188,7 +189,7 @@ TEST_F(ExtensionFileUtilTest, CheckIllegalFilenamesReservedAndIllegal) {
base::ScopedTempDir temp;
ASSERT_TRUE(temp.CreateUniqueTempDir());
- base::FilePath src_path = temp.path().Append(Extension::kLocaleFolder);
+ base::FilePath src_path = temp.path().Append(extensions::kLocaleFolder);
ASSERT_TRUE(file_util::CreateDirectory(src_path));
src_path = temp.path().AppendASCII("_some_dir");
diff --git a/chrome/common/extensions/extension_l10n_util.cc b/chrome/common/extensions/extension_l10n_util.cc
index 99bcb61..9df5764 100644
--- a/chrome/common/extensions/extension_l10n_util.cc
+++ b/chrome/common/extensions/extension_l10n_util.cc
@@ -15,11 +15,11 @@
#include "base/memory/linked_ptr.h"
#include "base/stringprintf.h"
#include "base/values.h"
-#include "chrome/common/extensions/extension.h"
#include "chrome/common/extensions/extension_manifest_constants.h"
#include "chrome/common/extensions/extension_file_util.h"
#include "chrome/common/extensions/message_bundle.h"
#include "chrome/common/url_constants.h"
+#include "extensions/common/constants.h"
#include "third_party/icu/public/common/unicode/uloc.h"
#include "ui/base/l10n/l10n_util.h"
@@ -48,8 +48,7 @@ std::string GetDefaultLocaleFromManifest(const DictionaryValue& manifest,
}
-bool ShouldRelocalizeManifest(const extensions::ExtensionInfo& info) {
- DictionaryValue* manifest = info.extension_manifest.get();
+bool ShouldRelocalizeManifest(const DictionaryValue* manifest) {
if (!manifest)
return false;
@@ -208,7 +207,7 @@ bool AddLocale(const std::set<std::string>& chrome_locales,
}
// Check if messages file is actually present (but don't check content).
if (file_util::PathExists(
- locale_folder.Append(extensions::Extension::kMessagesFilename))) {
+ locale_folder.Append(extensions::kMessagesFilename))) {
valid_locales->insert(locale_name);
} else {
*error = base::StringPrintf("Catalog file is missing for locale %s.",
@@ -290,7 +289,7 @@ static DictionaryValue* LoadMessageFile(const base::FilePath& locale_path,
std::string* error) {
std::string extension_locale = locale;
base::FilePath file = locale_path.AppendASCII(extension_locale)
- .Append(extensions::Extension::kMessagesFilename);
+ .Append(extensions::kMessagesFilename);
JSONFileValueSerializer messages_serializer(file);
Value *dictionary = messages_serializer.Deserialize(NULL, error);
if (!dictionary && error->empty()) {
diff --git a/chrome/common/extensions/extension_l10n_util.h b/chrome/common/extensions/extension_l10n_util.h
index ad90892..684a198 100644
--- a/chrome/common/extensions/extension_l10n_util.h
+++ b/chrome/common/extensions/extension_l10n_util.h
@@ -35,7 +35,7 @@ std::string GetDefaultLocaleFromManifest(const base::DictionaryValue& manifest,
// Returns true iff the extension was localized, and the current locale
// doesn't match the locale written into info.extension_manifest.
-bool ShouldRelocalizeManifest(const extensions::ExtensionInfo& info);
+bool ShouldRelocalizeManifest(const base::DictionaryValue* manifest);
// Localize extension name, description, browser_action and other fields
// in the manifest.
diff --git a/chrome/common/extensions/extension_l10n_util_unittest.cc b/chrome/common/extensions/extension_l10n_util_unittest.cc
index 20d94da..4bb0798 100644
--- a/chrome/common/extensions/extension_l10n_util_unittest.cc
+++ b/chrome/common/extensions/extension_l10n_util_unittest.cc
@@ -10,16 +10,15 @@
#include "base/path_service.h"
#include "base/values.h"
#include "chrome/common/chrome_paths.h"
-#include "chrome/common/extensions/extension.h"
#include "chrome/common/extensions/extension_l10n_util.h"
#include "chrome/common/extensions/extension_manifest_constants.h"
#include "chrome/common/extensions/message_bundle.h"
+#include "extensions/common/constants.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/base/l10n/l10n_util.h"
-using extensions::Extension;
-using extensions::ExtensionInfo;
-using extensions::Manifest;
+using extensions::kLocaleFolder;
+using extensions::kMessagesFilename;
using extensions::MessageBundle;
namespace errors = extension_manifest_errors;
@@ -31,7 +30,7 @@ TEST(ExtensionL10nUtil, GetValidLocalesEmptyLocaleFolder) {
base::ScopedTempDir temp;
ASSERT_TRUE(temp.CreateUniqueTempDir());
- base::FilePath src_path = temp.path().Append(Extension::kLocaleFolder);
+ base::FilePath src_path = temp.path().Append(kLocaleFolder);
ASSERT_TRUE(file_util::CreateDirectory(src_path));
std::string error;
@@ -47,7 +46,7 @@ TEST(ExtensionL10nUtil, GetValidLocalesWithValidLocaleNoMessagesFile) {
base::ScopedTempDir temp;
ASSERT_TRUE(temp.CreateUniqueTempDir());
- base::FilePath src_path = temp.path().Append(Extension::kLocaleFolder);
+ base::FilePath src_path = temp.path().Append(kLocaleFolder);
ASSERT_TRUE(file_util::CreateDirectory(src_path));
ASSERT_TRUE(file_util::CreateDirectory(src_path.AppendASCII("sr")));
@@ -64,14 +63,14 @@ TEST(ExtensionL10nUtil, GetValidLocalesWithUnsupportedLocale) {
base::ScopedTempDir temp;
ASSERT_TRUE(temp.CreateUniqueTempDir());
- base::FilePath src_path = temp.path().Append(Extension::kLocaleFolder);
+ base::FilePath src_path = temp.path().Append(kLocaleFolder);
ASSERT_TRUE(file_util::CreateDirectory(src_path));
// Supported locale.
base::FilePath locale_1 = src_path.AppendASCII("sr");
ASSERT_TRUE(file_util::CreateDirectory(locale_1));
std::string data("whatever");
ASSERT_TRUE(file_util::WriteFile(
- locale_1.Append(Extension::kMessagesFilename),
+ locale_1.Append(kMessagesFilename),
data.c_str(), data.length()));
// Unsupported locale.
ASSERT_TRUE(file_util::CreateDirectory(src_path.AppendASCII("xxx_yyy")));
@@ -95,7 +94,7 @@ TEST(ExtensionL10nUtil, GetValidLocalesWithValidLocalesAndMessagesFile) {
.AppendASCII("Extensions")
.AppendASCII("behllobkkfkfnphdnhnkndlbkcpglgmj")
.AppendASCII("1.0.0.0")
- .Append(Extension::kLocaleFolder);
+ .Append(kLocaleFolder);
std::string error;
std::set<std::string> locales;
@@ -116,7 +115,7 @@ TEST(ExtensionL10nUtil, LoadMessageCatalogsValidFallback) {
.AppendASCII("Extensions")
.AppendASCII("behllobkkfkfnphdnhnkndlbkcpglgmj")
.AppendASCII("1.0.0.0")
- .Append(Extension::kLocaleFolder);
+ .Append(kLocaleFolder);
std::string error;
std::set<std::string> locales;
@@ -136,7 +135,7 @@ TEST(ExtensionL10nUtil, LoadMessageCatalogsMissingFiles) {
base::ScopedTempDir temp;
ASSERT_TRUE(temp.CreateUniqueTempDir());
- base::FilePath src_path = temp.path().Append(Extension::kLocaleFolder);
+ base::FilePath src_path = temp.path().Append(kLocaleFolder);
ASSERT_TRUE(file_util::CreateDirectory(src_path));
std::set<std::string> valid_locales;
@@ -155,7 +154,7 @@ TEST(ExtensionL10nUtil, LoadMessageCatalogsBadJSONFormat) {
base::ScopedTempDir temp;
ASSERT_TRUE(temp.CreateUniqueTempDir());
- base::FilePath src_path = temp.path().Append(Extension::kLocaleFolder);
+ base::FilePath src_path = temp.path().Append(kLocaleFolder);
ASSERT_TRUE(file_util::CreateDirectory(src_path));
base::FilePath locale = src_path.AppendASCII("sr");
@@ -163,7 +162,7 @@ TEST(ExtensionL10nUtil, LoadMessageCatalogsBadJSONFormat) {
std::string data = "{ \"name\":";
ASSERT_TRUE(
- file_util::WriteFile(locale.Append(Extension::kMessagesFilename),
+ file_util::WriteFile(locale.Append(kMessagesFilename),
data.c_str(), data.length()));
std::set<std::string> valid_locales;
@@ -182,7 +181,7 @@ TEST(ExtensionL10nUtil, LoadMessageCatalogsDuplicateKeys) {
base::ScopedTempDir temp;
ASSERT_TRUE(temp.CreateUniqueTempDir());
- base::FilePath src_path = temp.path().Append(Extension::kLocaleFolder);
+ base::FilePath src_path = temp.path().Append(kLocaleFolder);
ASSERT_TRUE(file_util::CreateDirectory(src_path));
base::FilePath locale_1 = src_path.AppendASCII("en");
@@ -192,14 +191,14 @@ TEST(ExtensionL10nUtil, LoadMessageCatalogsDuplicateKeys) {
"{ \"name\": { \"message\": \"something\" }, "
"\"name\": { \"message\": \"something else\" } }";
ASSERT_TRUE(
- file_util::WriteFile(locale_1.Append(Extension::kMessagesFilename),
+ file_util::WriteFile(locale_1.Append(kMessagesFilename),
data.c_str(), data.length()));
base::FilePath locale_2 = src_path.AppendASCII("sr");
ASSERT_TRUE(file_util::CreateDirectory(locale_2));
ASSERT_TRUE(
- file_util::WriteFile(locale_2.Append(Extension::kMessagesFilename),
+ file_util::WriteFile(locale_2.Append(kMessagesFilename),
data.c_str(), data.length()));
std::set<std::string> valid_locales;
@@ -518,27 +517,20 @@ TEST(ExtensionL10nUtil, LocalizeManifestWithNameDescriptionFileHandlerTitle) {
// Try with NULL manifest.
TEST(ExtensionL10nUtil, ShouldRelocalizeManifestWithNullManifest) {
- ExtensionInfo info(NULL, "", base::FilePath(), Manifest::UNPACKED);
-
- EXPECT_FALSE(extension_l10n_util::ShouldRelocalizeManifest(info));
+ EXPECT_FALSE(extension_l10n_util::ShouldRelocalizeManifest(NULL));
}
// Try with default and current locales missing.
TEST(ExtensionL10nUtil, ShouldRelocalizeManifestEmptyManifest) {
DictionaryValue manifest;
- ExtensionInfo info(&manifest, "", base::FilePath(), Manifest::UNPACKED);
-
- EXPECT_FALSE(extension_l10n_util::ShouldRelocalizeManifest(info));
+ EXPECT_FALSE(extension_l10n_util::ShouldRelocalizeManifest(&manifest));
}
// Try with missing current_locale.
TEST(ExtensionL10nUtil, ShouldRelocalizeManifestWithDefaultLocale) {
DictionaryValue manifest;
manifest.SetString(keys::kDefaultLocale, "en_US");
-
- ExtensionInfo info(&manifest, "", base::FilePath(), Manifest::UNPACKED);
-
- EXPECT_TRUE(extension_l10n_util::ShouldRelocalizeManifest(info));
+ EXPECT_TRUE(extension_l10n_util::ShouldRelocalizeManifest(&manifest));
}
// Try with missing default_locale.
@@ -546,10 +538,7 @@ TEST(ExtensionL10nUtil, ShouldRelocalizeManifestWithCurrentLocale) {
DictionaryValue manifest;
manifest.SetString(keys::kCurrentLocale,
extension_l10n_util::CurrentLocaleOrDefault());
-
- ExtensionInfo info(&manifest, "", base::FilePath(), Manifest::UNPACKED);
-
- EXPECT_FALSE(extension_l10n_util::ShouldRelocalizeManifest(info));
+ EXPECT_FALSE(extension_l10n_util::ShouldRelocalizeManifest(&manifest));
}
// Try with all data present, but with same current_locale as system locale.
@@ -558,10 +547,7 @@ TEST(ExtensionL10nUtil, ShouldRelocalizeManifestSameCurrentLocale) {
manifest.SetString(keys::kDefaultLocale, "en_US");
manifest.SetString(keys::kCurrentLocale,
extension_l10n_util::CurrentLocaleOrDefault());
-
- ExtensionInfo info(&manifest, "", base::FilePath(), Manifest::UNPACKED);
-
- EXPECT_FALSE(extension_l10n_util::ShouldRelocalizeManifest(info));
+ EXPECT_FALSE(extension_l10n_util::ShouldRelocalizeManifest(&manifest));
}
// Try with all data present, but with different current_locale.
@@ -569,10 +555,7 @@ TEST(ExtensionL10nUtil, ShouldRelocalizeManifestDifferentCurrentLocale) {
DictionaryValue manifest;
manifest.SetString(keys::kDefaultLocale, "en_US");
manifest.SetString(keys::kCurrentLocale, "sr");
-
- ExtensionInfo info(&manifest, "", base::FilePath(), Manifest::UNPACKED);
-
- EXPECT_TRUE(extension_l10n_util::ShouldRelocalizeManifest(info));
+ EXPECT_TRUE(extension_l10n_util::ShouldRelocalizeManifest(&manifest));
}
TEST(ExtensionL10nUtil, GetAllFallbackLocales) {
diff --git a/chrome/common/extensions/extension_test_util.cc b/chrome/common/extensions/extension_test_util.cc
index 257b2e7..621db1e 100644
--- a/chrome/common/extensions/extension_test_util.cc
+++ b/chrome/common/extensions/extension_test_util.cc
@@ -12,15 +12,6 @@ using extensions::Extension;
namespace extension_test_util {
-std::string MakeId(std::string seed) {
- std::string result;
- bool success = Extension::GenerateId(seed, &result);
- EXPECT_TRUE(success);
- EXPECT_FALSE(result.empty());
- EXPECT_TRUE(Extension::IdIsValid(result));
- return result;
-}
-
scoped_refptr<Extension> CreateExtensionWithID(std::string id) {
DictionaryValue values;
values.SetString(extension_manifest_keys::kName, "test");
diff --git a/chrome/common/extensions/extension_unittest.cc b/chrome/common/extensions/extension_unittest.cc
index 2c99c12..8f01536 100644
--- a/chrome/common/extensions/extension_unittest.cc
+++ b/chrome/common/extensions/extension_unittest.cc
@@ -21,7 +21,6 @@
#include "chrome/common/extensions/command.h"
#include "chrome/common/extensions/extension_file_util.h"
#include "chrome/common/extensions/extension_manifest_constants.h"
-#include "chrome/common/extensions/extension_resource.h"
#include "chrome/common/extensions/features/feature.h"
#include "chrome/common/extensions/manifest.h"
#include "chrome/common/extensions/manifest_handler.h"
@@ -31,6 +30,8 @@
#include "chrome/common/extensions/permissions/usb_device_permission.h"
#include "chrome/common/url_constants.h"
#include "extensions/common/error_utils.h"
+#include "extensions/common/extension_resource.h"
+#include "extensions/common/id_util.h"
#include "googleurl/src/gurl.h"
#include "net/base/mime_sniffer.h"
#include "net/dns/mock_host_resolver.h"
@@ -214,32 +215,6 @@ TEST_F(ExtensionTest, IdIsValid) {
EXPECT_FALSE(Extension::IdIsValid("abcdefghijklmnopabcdefghijklmno0"));
}
-TEST_F(ExtensionTest, GenerateID) {
- const uint8 public_key_info[] = {
- 0x30, 0x81, 0x9f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7,
- 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x81, 0x8d, 0x00, 0x30, 0x81,
- 0x89, 0x02, 0x81, 0x81, 0x00, 0xb8, 0x7f, 0x2b, 0x20, 0xdc, 0x7c, 0x9b,
- 0x0c, 0xdc, 0x51, 0x61, 0x99, 0x0d, 0x36, 0x0f, 0xd4, 0x66, 0x88, 0x08,
- 0x55, 0x84, 0xd5, 0x3a, 0xbf, 0x2b, 0xa4, 0x64, 0x85, 0x7b, 0x0c, 0x04,
- 0x13, 0x3f, 0x8d, 0xf4, 0xbc, 0x38, 0x0d, 0x49, 0xfe, 0x6b, 0xc4, 0x5a,
- 0xb0, 0x40, 0x53, 0x3a, 0xd7, 0x66, 0x09, 0x0f, 0x9e, 0x36, 0x74, 0x30,
- 0xda, 0x8a, 0x31, 0x4f, 0x1f, 0x14, 0x50, 0xd7, 0xc7, 0x20, 0x94, 0x17,
- 0xde, 0x4e, 0xb9, 0x57, 0x5e, 0x7e, 0x0a, 0xe5, 0xb2, 0x65, 0x7a, 0x89,
- 0x4e, 0xb6, 0x47, 0xff, 0x1c, 0xbd, 0xb7, 0x38, 0x13, 0xaf, 0x47, 0x85,
- 0x84, 0x32, 0x33, 0xf3, 0x17, 0x49, 0xbf, 0xe9, 0x96, 0xd0, 0xd6, 0x14,
- 0x6f, 0x13, 0x8d, 0xc5, 0xfc, 0x2c, 0x72, 0xba, 0xac, 0xea, 0x7e, 0x18,
- 0x53, 0x56, 0xa6, 0x83, 0xa2, 0xce, 0x93, 0x93, 0xe7, 0x1f, 0x0f, 0xe6,
- 0x0f, 0x02, 0x03, 0x01, 0x00, 0x01
- };
-
- std::string extension_id;
- EXPECT_TRUE(
- Extension::GenerateId(
- std::string(reinterpret_cast<const char*>(&public_key_info[0]),
- arraysize(public_key_info)),
- &extension_id));
- EXPECT_EQ("melddjfinppjdikinhbgehiennejpfhp", extension_id);
-}
// This test ensures that the mimetype sniffing code stays in sync with the
// actual crx files that we test other parts of the system with.
@@ -571,7 +546,7 @@ class ExtensionScriptAndCaptureVisibleTest : public testing::Test {
file_url("file:///foo/bar"),
favicon_url("chrome://favicon/http://www.google.com"),
extension_url("chrome-extension://" +
- Extension::GenerateIdForPath(
+ id_util::GenerateIdForPath(
base::FilePath(FILE_PATH_LITERAL("foo")))),
settings_url("chrome://settings"),
about_url("about:flags") {
@@ -926,21 +901,6 @@ TEST_F(ExtensionScriptAndCaptureVisibleTest, TabSpecific) {
EXPECT_TRUE(AllowedExclusivelyOnTab(extension, no_urls, 2));
}
-TEST_F(ExtensionTest, GenerateId) {
- std::string result;
- EXPECT_TRUE(Extension::GenerateId("", &result));
-
- EXPECT_TRUE(Extension::GenerateId("test", &result));
- EXPECT_EQ(result, "jpignaibiiemhngfjkcpokkamffknabf");
-
- EXPECT_TRUE(Extension::GenerateId("_", &result));
- EXPECT_EQ(result, "ncocknphbhhlhkikpnnlmbcnbgdempcd");
-
- EXPECT_TRUE(Extension::GenerateId(
- "this_string_is_longer_than_a_single_sha256_hash_digest", &result));
- EXPECT_EQ(result, "jimneklojkjdibfkgiiophfhjhbdgcfi");
-}
-
namespace {
enum SyncTestExtensionType {
EXTENSION,
diff --git a/chrome/common/extensions/unpacker.cc b/chrome/common/extensions/unpacker.cc
index 234ec30..c5e1182 100644
--- a/chrome/common/extensions/unpacker.cc
+++ b/chrome/common/extensions/unpacker.cc
@@ -24,6 +24,7 @@
#include "chrome/common/url_constants.h"
#include "chrome/common/zip.h"
#include "content/public/common/common_param_traits.h"
+#include "extensions/common/constants.h"
#include "grit/generated_resources.h"
#include "ipc/ipc_message_utils.h"
#include "net/base/file_stream.h"
@@ -99,7 +100,7 @@ Unpacker::~Unpacker() {
DictionaryValue* Unpacker::ReadManifest() {
base::FilePath manifest_path =
- temp_install_dir_.Append(Extension::kManifestFilename);
+ temp_install_dir_.Append(kManifestFilename);
if (!file_util::PathExists(manifest_path)) {
SetError(errors::kInvalidManifest);
return NULL;
@@ -123,7 +124,7 @@ DictionaryValue* Unpacker::ReadManifest() {
bool Unpacker::ReadAllMessageCatalogs(const std::string& default_locale) {
base::FilePath locales_path =
- temp_install_dir_.Append(Extension::kLocaleFolder);
+ temp_install_dir_.Append(kLocaleFolder);
// Not all folders under _locales have to be valid locales.
file_util::FileEnumerator locales(locales_path,
@@ -138,8 +139,7 @@ bool Unpacker::ReadAllMessageCatalogs(const std::string& default_locale) {
all_locales))
continue;
- base::FilePath messages_path =
- locale_path.Append(Extension::kMessagesFilename);
+ base::FilePath messages_path = locale_path.Append(kMessagesFilename);
if (!ReadMessageCatalog(messages_path))
return false;
diff --git a/extensions/DEPS b/extensions/DEPS
index 3a88773..68da161 100644
--- a/extensions/DEPS
+++ b/extensions/DEPS
@@ -1,5 +1,17 @@
include_rules = [
"+base",
+ "+content/public/common",
+ "+crypto",
"+googleurl",
- "+testing"
+ "+testing",
+ "+ui"
]
+
+# More specific rules for what we are allowed to include.
+specific_include_rules = {
+ ".*test\.cc": [
+ # For chrome::TEST_DATA_DIR; test data should be migrated to src/extensions.
+ "+chrome/common/chrome_paths.h",
+ "+content/public/test",
+ ]
+}
diff --git a/extensions/browser/DEPS b/extensions/browser/DEPS
new file mode 100644
index 0000000..1c35d9c
--- /dev/null
+++ b/extensions/browser/DEPS
@@ -0,0 +1,3 @@
+include_rules = [
+ "+content/public/browser",
+]
diff --git a/chrome/browser/extensions/file_reader.cc b/extensions/browser/file_reader.cc
index a71643d..0ae8ccd 100644
--- a/chrome/browser/extensions/file_reader.cc
+++ b/extensions/browser/file_reader.cc
@@ -2,17 +2,16 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "chrome/browser/extensions/file_reader.h"
+#include "extensions/browser/file_reader.h"
#include "base/bind.h"
#include "base/file_util.h"
#include "base/message_loop.h"
-#include "chrome/common/extensions/extension_resource.h"
#include "content/public/browser/browser_thread.h"
using content::BrowserThread;
-FileReader::FileReader(const ExtensionResource& resource,
+FileReader::FileReader(const extensions::ExtensionResource& resource,
const Callback& callback)
: resource_(resource),
callback_(callback),
diff --git a/chrome/browser/extensions/file_reader.h b/extensions/browser/file_reader.h
index fd2fad8..f103cd3 100644
--- a/chrome/browser/extensions/file_reader.h
+++ b/extensions/browser/file_reader.h
@@ -2,14 +2,14 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef CHROME_BROWSER_EXTENSIONS_FILE_READER_H_
-#define CHROME_BROWSER_EXTENSIONS_FILE_READER_H_
+#ifndef EXTENSIONS_BROWSER_FILE_READER_H_
+#define EXTENSIONS_BROWSER_FILE_READER_H_
#include <string>
#include "base/callback.h"
#include "base/memory/ref_counted.h"
-#include "chrome/common/extensions/extension_resource.h"
+#include "extensions/common/extension_resource.h"
class MessageLoop;
@@ -22,7 +22,8 @@ class FileReader : public base::RefCountedThreadSafe<FileReader> {
// Reports success or failure and the data of the file upon success.
typedef base::Callback<void(bool, const std::string&)> Callback;
- FileReader(const ExtensionResource& resource, const Callback& callback);
+ FileReader(const extensions::ExtensionResource& resource,
+ const Callback& callback);
// Called to start reading the file on a background thread. Upon completion,
// the callback will be notified of the results.
@@ -35,9 +36,9 @@ class FileReader : public base::RefCountedThreadSafe<FileReader> {
void ReadFileOnBackgroundThread();
- ExtensionResource resource_;
+ extensions::ExtensionResource resource_;
Callback callback_;
MessageLoop* origin_loop_;
};
-#endif // CHROME_BROWSER_EXTENSIONS_FILE_READER_H_
+#endif // EXTENSIONS_BROWSER_FILE_READER_H_
diff --git a/chrome/browser/extensions/file_reader_unittest.cc b/extensions/browser/file_reader_unittest.cc
index 71ef3c8..3c3a4d2 100644
--- a/chrome/browser/extensions/file_reader_unittest.cc
+++ b/extensions/browser/file_reader_unittest.cc
@@ -8,12 +8,11 @@
#include "base/files/file_path.h"
#include "base/message_loop.h"
#include "base/path_service.h"
-#include "chrome/browser/extensions/file_reader.h"
#include "chrome/common/chrome_paths.h"
-#include "chrome/common/extensions/extension.h"
-#include "chrome/common/extensions/extension_resource.h"
-#include "chrome/common/extensions/extension_test_util.h"
#include "content/public/test/test_browser_thread.h"
+#include "extensions/browser/file_reader.h"
+#include "extensions/common/extension_resource.h"
+#include "extensions/common/id_util.h"
#include "testing/gtest/include/gtest/gtest.h"
using content::BrowserThread;
@@ -56,9 +55,9 @@ class Receiver {
void RunBasicTest(const char* filename) {
base::FilePath path;
PathService::Get(chrome::DIR_TEST_DATA, &path);
- std::string extension_id = extension_test_util::MakeId("test");
- ExtensionResource resource(extension_id, path,
- base::FilePath().AppendASCII(filename));
+ std::string extension_id = extensions::id_util::GenerateId("test");
+ extensions::ExtensionResource resource(
+ extension_id, path, base::FilePath().AppendASCII(filename));
path = path.AppendASCII(filename);
std::string file_contents;
@@ -87,8 +86,8 @@ TEST_F(FileReaderTest, BiggerFile) {
TEST_F(FileReaderTest, NonExistantFile) {
base::FilePath path;
PathService::Get(chrome::DIR_TEST_DATA, &path);
- std::string extension_id = extension_test_util::MakeId("test");
- ExtensionResource resource(extension_id, path, base::FilePath(
+ std::string extension_id = extensions::id_util::GenerateId("test");
+ extensions::ExtensionResource resource(extension_id, path, base::FilePath(
FILE_PATH_LITERAL("file_that_does_not_exist")));
path = path.AppendASCII("file_that_does_not_exist");
diff --git a/extensions/common/DEPS b/extensions/common/DEPS
deleted file mode 100644
index 7be5af8..0000000
--- a/extensions/common/DEPS
+++ /dev/null
@@ -1,4 +0,0 @@
-include_rules = [
- "+content/public/common",
- "+ui/gfx"
-]
diff --git a/extensions/common/constants.cc b/extensions/common/constants.cc
index ecafa43..d931137 100644
--- a/extensions/common/constants.cc
+++ b/extensions/common/constants.cc
@@ -8,4 +8,13 @@ namespace extensions {
const char kExtensionScheme[] = "chrome-extension";
+const base::FilePath::CharType kManifestFilename[] =
+ FILE_PATH_LITERAL("manifest.json");
+const base::FilePath::CharType kLocaleFolder[] =
+ FILE_PATH_LITERAL("_locales");
+const base::FilePath::CharType kMessagesFilename[] =
+ FILE_PATH_LITERAL("messages.json");
+const base::FilePath::CharType kPlatformSpecificFolder[] =
+ FILE_PATH_LITERAL("_platform_specific");
+
} // namespace extensions
diff --git a/extensions/common/constants.h b/extensions/common/constants.h
index f601b38..31a4985 100644
--- a/extensions/common/constants.h
+++ b/extensions/common/constants.h
@@ -5,11 +5,25 @@
#ifndef EXTENSIONS_COMMON_CONSTANTS_H_
#define EXTENSIONS_COMMON_CONSTANTS_H_
+#include "base/files/file_path.h"
+
namespace extensions {
// Scheme we serve extension content from.
extern const char kExtensionScheme[];
+ // The name of the manifest inside an extension.
+extern const base::FilePath::CharType kManifestFilename[];
+
+ // The name of locale folder inside an extension.
+extern const base::FilePath::CharType kLocaleFolder[];
+
+ // The name of the messages file inside an extension.
+extern const base::FilePath::CharType kMessagesFilename[];
+
+// The base directory for subdirectories with platform-specific code.
+extern const base::FilePath::CharType kPlatformSpecificFolder[];
+
} // namespace extensions
#endif // EXTENSIONS_COMMON_CONSTANTS_H_
diff --git a/chrome/browser/extensions/crx_file.cc b/extensions/common/crx_file.cc
index e70e27b..4f50962 100644
--- a/chrome/browser/extensions/crx_file.cc
+++ b/extensions/common/crx_file.cc
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "chrome/browser/extensions/crx_file.h"
+#include "extensions/common/crx_file.h"
namespace extensions {
diff --git a/chrome/browser/extensions/crx_file.h b/extensions/common/crx_file.h
index 2faa8ee..cb450af 100644
--- a/chrome/browser/extensions/crx_file.h
+++ b/extensions/common/crx_file.h
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef CHROME_BROWSER_EXTENSIONS_CRX_FILE_H_
-#define CHROME_BROWSER_EXTENSIONS_CRX_FILE_H_
+#ifndef EXTENSIONS_COMMON_CRX_FILE_H_
+#define EXTENSIONS_COMMON_CRX_FILE_H_
#include <sys/types.h>
#include "base/basictypes.h"
@@ -73,4 +73,4 @@ class CrxFile {
} // namespace extensions
-#endif // CHROME_BROWSER_EXTENSIONS_CRX_FILE_H_
+#endif // EXTENSIONS_COMMON_CRX_FILE_H_
diff --git a/chrome/common/extensions/extension_resource.cc b/extensions/common/extension_resource.cc
index eded1ac..5a70539 100644
--- a/chrome/common/extensions/extension_resource.cc
+++ b/extensions/common/extension_resource.cc
@@ -2,12 +2,14 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "chrome/common/extensions/extension_resource.h"
+#include "extensions/common/extension_resource.h"
#include "base/file_util.h"
#include "base/logging.h"
#include "base/threading/thread_restrictions.h"
+namespace extensions {
+
ExtensionResource::ExtensionResource() : follow_symlinks_anywhere_(false) {
}
@@ -120,3 +122,5 @@ bool ExtensionResource::ComparePathWithDefault(
return false;
}
}
+
+} // namespace extensions
diff --git a/chrome/common/extensions/extension_resource.h b/extensions/common/extension_resource.h
index a8d632c..806889e 100644
--- a/chrome/common/extensions/extension_resource.h
+++ b/extensions/common/extension_resource.h
@@ -2,13 +2,15 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef CHROME_COMMON_EXTENSIONS_EXTENSION_RESOURCE_H_
-#define CHROME_COMMON_EXTENSIONS_EXTENSION_RESOURCE_H_
+#ifndef EXTENSIONS_COMMON_EXTENSION_RESOURCE_H_
+#define EXTENSIONS_COMMON_EXTENSION_RESOURCE_H_
#include <string>
#include "base/files/file_path.h"
+namespace extensions {
+
// Represents a resource inside an extension. For example, an image, or a
// JavaScript file. This is more complicated than just a simple FilePath
// because extension resources can come from multiple physical file locations
@@ -82,4 +84,6 @@ class ExtensionResource {
mutable base::FilePath full_resource_path_;
};
-#endif // CHROME_COMMON_EXTENSIONS_EXTENSION_RESOURCE_H_
+} // namespace extensions
+
+#endif // EXTENSIONS_COMMON_EXTENSION_RESOURCE_H_
diff --git a/chrome/common/extensions/extension_resource_unittest.cc b/extensions/common/extension_resource_unittest.cc
index f81cde2..b2983ea 100644
--- a/chrome/common/extensions/extension_resource_unittest.cc
+++ b/extensions/common/extension_resource_unittest.cc
@@ -8,13 +8,14 @@
#include "base/files/scoped_temp_dir.h"
#include "base/path_service.h"
#include "chrome/common/chrome_paths.h"
-#include "chrome/common/extensions/extension.h"
-#include "chrome/common/extensions/extension_l10n_util.h"
-#include "chrome/common/extensions/extension_resource.h"
-#include "chrome/common/extensions/extension_test_util.h"
+#include "extensions/common/constants.h"
+#include "extensions/common/extension_resource.h"
+#include "extensions/common/id_util.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/base/l10n/l10n_util.h"
+namespace extensions {
+
TEST(ExtensionResourceTest, CreateEmptyResource) {
ExtensionResource resource;
@@ -35,7 +36,7 @@ TEST(ExtensionResourceTest, CreateWithMissingResourceOnDisk) {
ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &root_path));
base::FilePath relative_path;
relative_path = relative_path.AppendASCII("cira.js");
- std::string extension_id = extension_test_util::MakeId("test");
+ std::string extension_id = id_util::GenerateId("test");
ExtensionResource resource(extension_id, root_path, relative_path);
// The path doesn't exist on disk, we will be returned an empty path.
@@ -56,7 +57,7 @@ TEST(ExtensionResourceTest, ResourcesOutsideOfPath) {
base::FilePath outer_file = temp.path().AppendASCII("outer");
ASSERT_TRUE(file_util::WriteFile(outer_file, "X", 1));
ASSERT_TRUE(file_util::WriteFile(inner_file, "X", 1));
- std::string extension_id = extension_test_util::MakeId("test");
+ std::string extension_id = id_util::GenerateId("test");
#if defined(OS_POSIX)
base::FilePath symlink_file = inner_dir.AppendASCII("symlink");
@@ -126,7 +127,7 @@ TEST(ExtensionResourceTest, CreateWithAllResourcesOnDisk) {
// Create l10n resources (for current locale and its parents).
base::FilePath l10n_path =
- temp.path().Append(extensions::Extension::kLocaleFolder);
+ temp.path().Append(kLocaleFolder);
ASSERT_TRUE(file_util::CreateDirectory(l10n_path));
std::vector<std::string> locales;
@@ -141,7 +142,7 @@ TEST(ExtensionResourceTest, CreateWithAllResourcesOnDisk) {
}
base::FilePath path;
- std::string extension_id = extension_test_util::MakeId("test");
+ std::string extension_id = id_util::GenerateId("test");
ExtensionResource resource(extension_id, temp.path(),
base::FilePath().AppendASCII(filename));
base::FilePath resolved_path = resource.GetFilePath();
@@ -158,3 +159,5 @@ TEST(ExtensionResourceTest, CreateWithAllResourcesOnDisk) {
EXPECT_EQ(ToLower(base::FilePath().AppendASCII(filename).value()),
ToLower(resource.relative_path().value()));
}
+
+} // namespace extensions
diff --git a/extensions/common/id_util.cc b/extensions/common/id_util.cc
new file mode 100644
index 0000000..5bdeba4
--- /dev/null
+++ b/extensions/common/id_util.cc
@@ -0,0 +1,73 @@
+// Copyright (c) 2013 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.
+
+#include "extensions/common/id_util.h"
+
+#include "base/files/file_path.h"
+#include "base/string_number_conversions.h"
+#include "base/string_util.h"
+#include "crypto/sha2.h"
+
+namespace {
+
+// Converts a normal hexadecimal string into the alphabet used by extensions.
+// We use the characters 'a'-'p' instead of '0'-'f' to avoid ever having a
+// completely numeric host, since some software interprets that as an IP
+// address.
+static void ConvertHexadecimalToIDAlphabet(std::string* id) {
+ for (size_t i = 0; i < id->size(); ++i) {
+ int val;
+ if (base::HexStringToInt(base::StringPiece(id->begin() + i,
+ id->begin() + i + 1),
+ &val)) {
+ (*id)[i] = val + 'a';
+ } else {
+ (*id)[i] = 'a';
+ }
+ }
+}
+
+} // namespace
+
+namespace extensions {
+namespace id_util {
+
+// First 16 bytes of SHA256 hashed public key.
+const size_t kIdSize = 16;
+
+std::string GenerateId(const std::string& input) {
+ uint8 hash[kIdSize];
+ crypto::SHA256HashString(input, hash, sizeof(hash));
+ std::string output = StringToLowerASCII(base::HexEncode(hash, sizeof(hash)));
+ ConvertHexadecimalToIDAlphabet(&output);
+
+ return output;
+}
+
+std::string GenerateIdForPath(const base::FilePath& path) {
+ base::FilePath new_path = MaybeNormalizePath(path);
+ std::string path_bytes =
+ std::string(reinterpret_cast<const char*>(new_path.value().data()),
+ new_path.value().size() * sizeof(base::FilePath::CharType));
+ return GenerateId(path_bytes);
+}
+
+base::FilePath MaybeNormalizePath(const base::FilePath& path) {
+#if defined(OS_WIN)
+ // Normalize any drive letter to upper-case. We do this for consistency with
+ // net_utils::FilePathToFileURL(), which does the same thing, to make string
+ // comparisons simpler.
+ base::FilePath::StringType path_str = path.value();
+ if (path_str.size() >= 2 && path_str[0] >= L'a' && path_str[0] <= L'z' &&
+ path_str[1] == ':')
+ path_str[0] += ('A' - 'a');
+
+ return base::FilePath(path_str);
+#else
+ return path;
+#endif
+}
+
+} // namespace id_util
+} // namespace extensions
diff --git a/extensions/common/id_util.h b/extensions/common/id_util.h
new file mode 100644
index 0000000..74e690d
--- /dev/null
+++ b/extensions/common/id_util.h
@@ -0,0 +1,35 @@
+// Copyright (c) 2013 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.
+
+#ifndef EXTENSIONS_COMMON_ID_UTIL_H_
+#define EXTENSIONS_COMMON_ID_UTIL_H_
+
+#include <string>
+
+namespace base {
+class FilePath;
+}
+
+namespace extensions {
+namespace id_util {
+
+// The number of bytes in a legal id.
+extern const size_t kIdSize;
+
+// Generates an extension ID from arbitrary input. The same input string will
+// always generate the same output ID.
+std::string GenerateId(const std::string& input);
+
+// Generate an ID for an extension in the given path.
+// Used while developing extensions, before they have a key.
+std::string GenerateIdForPath(const base::FilePath& path);
+
+// Normalize the path for use by the extension. On Windows, this will make
+// sure the drive letter is uppercase.
+base::FilePath MaybeNormalizePath(const base::FilePath& path);
+
+} // namespace id_util
+} // namespace extensions
+
+#endif // EXTENSIONS_COMMON_ID_UTIL_H_
diff --git a/extensions/common/id_util_unittest.cc b/extensions/common/id_util_unittest.cc
new file mode 100644
index 0000000..f43d206
--- /dev/null
+++ b/extensions/common/id_util_unittest.cc
@@ -0,0 +1,44 @@
+// Copyright (c) 2013 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.
+
+#include "base/basictypes.h"
+#include "extensions/common/id_util.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace extensions {
+namespace id_util {
+
+TEST(IDUtilTest, GenerateID) {
+ const uint8 public_key_info[] = {
+ 0x30, 0x81, 0x9f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7,
+ 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x81, 0x8d, 0x00, 0x30, 0x81,
+ 0x89, 0x02, 0x81, 0x81, 0x00, 0xb8, 0x7f, 0x2b, 0x20, 0xdc, 0x7c, 0x9b,
+ 0x0c, 0xdc, 0x51, 0x61, 0x99, 0x0d, 0x36, 0x0f, 0xd4, 0x66, 0x88, 0x08,
+ 0x55, 0x84, 0xd5, 0x3a, 0xbf, 0x2b, 0xa4, 0x64, 0x85, 0x7b, 0x0c, 0x04,
+ 0x13, 0x3f, 0x8d, 0xf4, 0xbc, 0x38, 0x0d, 0x49, 0xfe, 0x6b, 0xc4, 0x5a,
+ 0xb0, 0x40, 0x53, 0x3a, 0xd7, 0x66, 0x09, 0x0f, 0x9e, 0x36, 0x74, 0x30,
+ 0xda, 0x8a, 0x31, 0x4f, 0x1f, 0x14, 0x50, 0xd7, 0xc7, 0x20, 0x94, 0x17,
+ 0xde, 0x4e, 0xb9, 0x57, 0x5e, 0x7e, 0x0a, 0xe5, 0xb2, 0x65, 0x7a, 0x89,
+ 0x4e, 0xb6, 0x47, 0xff, 0x1c, 0xbd, 0xb7, 0x38, 0x13, 0xaf, 0x47, 0x85,
+ 0x84, 0x32, 0x33, 0xf3, 0x17, 0x49, 0xbf, 0xe9, 0x96, 0xd0, 0xd6, 0x14,
+ 0x6f, 0x13, 0x8d, 0xc5, 0xfc, 0x2c, 0x72, 0xba, 0xac, 0xea, 0x7e, 0x18,
+ 0x53, 0x56, 0xa6, 0x83, 0xa2, 0xce, 0x93, 0x93, 0xe7, 0x1f, 0x0f, 0xe6,
+ 0x0f, 0x02, 0x03, 0x01, 0x00, 0x01
+ };
+ std::string extension_id = GenerateId(
+ std::string(reinterpret_cast<const char*>(&public_key_info[0]),
+ arraysize(public_key_info)));
+ EXPECT_EQ("melddjfinppjdikinhbgehiennejpfhp", extension_id);
+
+ EXPECT_EQ("jpignaibiiemhngfjkcpokkamffknabf", GenerateId("test"));
+
+ EXPECT_EQ("ncocknphbhhlhkikpnnlmbcnbgdempcd", GenerateId("_"));
+
+ EXPECT_EQ("jimneklojkjdibfkgiiophfhjhbdgcfi",
+ GenerateId(
+ "this_string_is_longer_than_a_single_sha256_hash_digest"));
+}
+
+} // namespace id_util
+} // namespace extensions