diff options
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 |