diff options
author | jamescook@chromium.org <jamescook@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-08-06 22:59:43 +0000 |
---|---|---|
committer | jamescook@chromium.org <jamescook@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-08-06 22:59:43 +0000 |
commit | 311edb2bc0bf2b947a144cafc4ea3eb61925e94b (patch) | |
tree | 3c8c22b8c1e14c1d8f52beda82bdb0ab47003809 | |
parent | 2bb5a856f69e91ddfc03642f760fc435d646e451 (diff) | |
download | chromium_src-311edb2bc0bf2b947a144cafc4ea3eb61925e94b.zip chromium_src-311edb2bc0bf2b947a144cafc4ea3eb61925e94b.tar.gz chromium_src-311edb2bc0bf2b947a144cafc4ea3eb61925e94b.tar.bz2 |
Move ImageLoaderTest to extensions_unittests
* Give it its own copy of its test data, instead of sharing with other
unrelated tests that live in src/chrome.
* Introduce ChromeComponentExtensionResourceManagerTest to address a TODO
and eliminate the src/chrome dependency.
BUG=397164
TEST=unit_tests, extensions_unittests
Review URL: https://codereview.chromium.org/439023002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@287885 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/extensions/chrome_component_extension_resource_manager_unittest.cc | 74 | ||||
-rw-r--r-- | chrome/chrome_tests_unit.gypi | 3 | ||||
-rw-r--r-- | extensions/browser/image_loader_unittest.cc | 116 | ||||
-rw-r--r-- | extensions/extensions.gyp | 1 |
4 files changed, 115 insertions, 79 deletions
diff --git a/chrome/browser/extensions/chrome_component_extension_resource_manager_unittest.cc b/chrome/browser/extensions/chrome_component_extension_resource_manager_unittest.cc new file mode 100644 index 0000000..cbf161b --- /dev/null +++ b/chrome/browser/extensions/chrome_component_extension_resource_manager_unittest.cc @@ -0,0 +1,74 @@ +// Copyright 2014 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/files/file_path.h" +#include "base/path_service.h" +#include "chrome/common/chrome_paths.h" +#include "extensions/browser/component_extension_resource_manager.h" +#include "extensions/browser/extensions_browser_client.h" +#include "extensions/common/constants.h" +#include "extensions/common/extension.h" +#include "extensions/common/extension_icon_set.h" +#include "extensions/common/extension_resource.h" +#include "extensions/common/file_util.h" +#include "extensions/common/manifest.h" +#include "extensions/common/manifest_handlers/icons_handler.h" +#include "testing/gtest/include/gtest/gtest.h" + +#if defined(OS_CHROMEOS) +#include "ui/file_manager/grit/file_manager_resources.h" +#endif + +namespace extensions { + +typedef testing::Test ChromeComponentExtensionResourceManagerTest; + +// Tests IsComponentExtensionResource function. +TEST_F(ChromeComponentExtensionResourceManagerTest, + IsComponentExtensionResource) { + ComponentExtensionResourceManager* resource_manager = + ExtensionsBrowserClient::Get()->GetComponentExtensionResourceManager(); + ASSERT_TRUE(resource_manager); + + // Get the extension test data path. + base::FilePath test_path; + ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &test_path)); + test_path = test_path.AppendASCII("extensions").AppendASCII("file_manager"); + + // Load the manifest data. + std::string error; + scoped_ptr<base::DictionaryValue> manifest(file_util::LoadManifest( + test_path, FILE_PATH_LITERAL("app.json"), &error)); + ASSERT_TRUE(manifest.get()) << error; + + // Build a path inside Chrome's resources directory where a component + // extension might be installed. + base::FilePath resources_path; + ASSERT_TRUE(PathService::Get(chrome::DIR_RESOURCES, &resources_path)); + resources_path = resources_path.AppendASCII("file_manager"); + + // Create a simulated component extension. + scoped_refptr<Extension> extension = Extension::Create(resources_path, + Manifest::COMPONENT, + *manifest, + Extension::NO_FLAGS, + &error); + ASSERT_TRUE(extension.get()); + + // Load one of the icons. + ExtensionResource resource = + IconsInfo::GetIconResource(extension.get(), + extension_misc::EXTENSION_ICON_BITTY, + ExtensionIconSet::MATCH_EXACTLY); + +#if defined(OS_CHROMEOS) + // The resource is a component resource. + int resource_id = 0; + ASSERT_TRUE(resource_manager->IsComponentExtensionResource( + extension->path(), resource.relative_path(), &resource_id)); + ASSERT_EQ(IDR_FILE_MANAGER_ICON_16, resource_id); +#endif +} + +} // namespace extensions diff --git a/chrome/chrome_tests_unit.gypi b/chrome/chrome_tests_unit.gypi index 7240d30..a0fec35 100644 --- a/chrome/chrome_tests_unit.gypi +++ b/chrome/chrome_tests_unit.gypi @@ -538,7 +538,6 @@ '../extensions/browser/extension_error_test_util.h', '../extensions/browser/extension_icon_image_unittest.cc', '../extensions/browser/extension_protocols_unittest.cc', - '../extensions/browser/image_loader_unittest.cc', '../extensions/browser/info_map_unittest.cc', '../extensions/common/extension_l10n_util_unittest.cc', '../extensions/common/extension_resource_unittest.cc', @@ -925,6 +924,7 @@ 'browser/extensions/bookmark_app_helper_unittest.cc', 'browser/extensions/browser_permissions_policy_delegate_unittest.cc', 'browser/extensions/chrome_app_sorting_unittest.cc', + 'browser/extensions/chrome_component_extension_resource_manager_unittest.cc', 'browser/extensions/component_loader_unittest.cc', 'browser/extensions/convert_user_script_unittest.cc', 'browser/extensions/convert_web_app_unittest.cc', @@ -2171,7 +2171,6 @@ }], ['chromeos==0', { 'sources!': [ - 'browser/extensions/image_loader_unittest.cc', # TODO(zturner): Enable this on Windows. See # BrowserWithTestWindowTest::SetUp() for a comment explaining why # this is broken. diff --git a/extensions/browser/image_loader_unittest.cc b/extensions/browser/image_loader_unittest.cc index 39ae9e2..74b9ccc 100644 --- a/extensions/browser/image_loader_unittest.cc +++ b/extensions/browser/image_loader_unittest.cc @@ -9,15 +9,14 @@ #include "base/message_loop/message_loop.h" #include "base/path_service.h" #include "base/strings/string_util.h" -#include "chrome/common/chrome_paths.h" #include "content/public/browser/notification_service.h" #include "content/public/test/test_browser_thread.h" -#include "extensions/browser/component_extension_resource_manager.h" #include "extensions/browser/extensions_browser_client.h" #include "extensions/browser/notification_types.h" #include "extensions/common/constants.h" #include "extensions/common/extension.h" #include "extensions/common/extension_icon_set.h" +#include "extensions/common/extension_paths.h" #include "extensions/common/extension_resource.h" #include "extensions/common/manifest.h" #include "extensions/common/manifest_handlers/icons_handler.h" @@ -28,16 +27,10 @@ #include "ui/gfx/image/image_skia.h" #include "ui/gfx/size.h" -#if defined(OS_CHROMEOS) -#include "ui/file_manager/grit/file_manager_resources.h" -#endif - using content::BrowserThread; -using extensions::Extension; -using extensions::ExtensionResource; -using extensions::ImageLoader; -using extensions::Manifest; -using extensions::UnloadedExtensionInfo; +using content::NotificationService; + +namespace extensions { class ImageLoaderTest : public testing::Test { public: @@ -46,8 +39,8 @@ class ImageLoaderTest : public testing::Test { quit_in_image_loaded_(false), ui_thread_(BrowserThread::UI, &ui_loop_), file_thread_(BrowserThread::FILE), - io_thread_(BrowserThread::IO) { - } + io_thread_(BrowserThread::IO), + notification_service_(NotificationService::Create()) {} void OnImageLoaded(const gfx::Image& image) { image_loaded_count_++; @@ -75,19 +68,19 @@ class ImageLoaderTest : public testing::Test { return result; } - scoped_refptr<Extension> CreateExtension(const char* name, + scoped_refptr<Extension> CreateExtension(const char* dir_name, Manifest::Location location) { // Create and load an extension. - base::FilePath test_file; - if (!PathService::Get(chrome::DIR_TEST_DATA, &test_file)) { + base::FilePath extension_dir; + if (!PathService::Get(DIR_TEST_DATA, &extension_dir)) { EXPECT_FALSE(true); return NULL; } - test_file = test_file.AppendASCII("extensions") - .AppendASCII(name); + extension_dir = extension_dir.AppendASCII(dir_name); int error_code = 0; std::string error; - JSONFileValueSerializer serializer(test_file.AppendASCII("app.json")); + JSONFileValueSerializer serializer( + extension_dir.AppendASCII("manifest.json")); scoped_ptr<base::DictionaryValue> valid_value( static_cast<base::DictionaryValue*>(serializer.Deserialize(&error_code, &error))); @@ -99,15 +92,8 @@ class ImageLoaderTest : public testing::Test { if (!valid_value) return NULL; - if (location == Manifest::COMPONENT) { - if (!PathService::Get(chrome::DIR_RESOURCES, &test_file)) { - EXPECT_FALSE(true); - return NULL; - } - test_file = test_file.AppendASCII(name); - } - return Extension::Create(test_file, location, *valid_value, - Extension::NO_FLAGS, &error); + return Extension::Create( + extension_dir, location, *valid_value, Extension::NO_FLAGS, &error); } gfx::Image image_; @@ -126,18 +112,19 @@ class ImageLoaderTest : public testing::Test { content::TestBrowserThread ui_thread_; content::TestBrowserThread file_thread_; content::TestBrowserThread io_thread_; + scoped_ptr<NotificationService> notification_service_; }; // Tests loading an image works correctly. TEST_F(ImageLoaderTest, LoadImage) { - scoped_refptr<Extension> extension(CreateExtension( - "image_loading_tracker", Manifest::INVALID_LOCATION)); + scoped_refptr<Extension> extension( + CreateExtension("image_loader", Manifest::INVALID_LOCATION)); ASSERT_TRUE(extension.get() != NULL); - ExtensionResource image_resource = extensions::IconsInfo::GetIconResource( - extension.get(), - extension_misc::EXTENSION_ICON_SMALLISH, - ExtensionIconSet::MATCH_EXACTLY); + ExtensionResource image_resource = + IconsInfo::GetIconResource(extension.get(), + extension_misc::EXTENSION_ICON_SMALLISH, + ExtensionIconSet::MATCH_EXACTLY); gfx::Size max_size(extension_misc::EXTENSION_ICON_SMALLISH, extension_misc::EXTENSION_ICON_SMALLISH); ImageLoader loader; @@ -153,6 +140,7 @@ TEST_F(ImageLoaderTest, LoadImage) { WaitForImageLoad(); // We should have gotten the image. + EXPECT_FALSE(image_.IsEmpty()); EXPECT_EQ(1, image_loaded_count()); // Check that the image was loaded. @@ -163,14 +151,14 @@ TEST_F(ImageLoaderTest, LoadImage) { // Tests deleting an extension while waiting for the image to load doesn't cause // problems. TEST_F(ImageLoaderTest, DeleteExtensionWhileWaitingForCache) { - scoped_refptr<Extension> extension(CreateExtension( - "image_loading_tracker", Manifest::INVALID_LOCATION)); + scoped_refptr<Extension> extension( + CreateExtension("image_loader", Manifest::INVALID_LOCATION)); ASSERT_TRUE(extension.get() != NULL); - ExtensionResource image_resource = extensions::IconsInfo::GetIconResource( - extension.get(), - extension_misc::EXTENSION_ICON_SMALLISH, - ExtensionIconSet::MATCH_EXACTLY); + ExtensionResource image_resource = + IconsInfo::GetIconResource(extension.get(), + extension_misc::EXTENSION_ICON_SMALLISH, + ExtensionIconSet::MATCH_EXACTLY); gfx::Size max_size(extension_misc::EXTENSION_ICON_SMALLISH, extension_misc::EXTENSION_ICON_SMALLISH); ImageLoader loader; @@ -189,7 +177,7 @@ TEST_F(ImageLoaderTest, DeleteExtensionWhileWaitingForCache) { UnloadedExtensionInfo details(extension.get(), UnloadedExtensionInfo::REASON_UNINSTALL); content::NotificationService::current()->Notify( - extensions::NOTIFICATION_EXTENSION_UNLOADED_DEPRECATED, + NOTIFICATION_EXTENSION_UNLOADED_DEPRECATED, content::NotificationService::AllSources(), content::Details<UnloadedExtensionInfo>(&details)); @@ -210,15 +198,15 @@ TEST_F(ImageLoaderTest, DeleteExtensionWhileWaitingForCache) { // Tests loading multiple dimensions of the same image. TEST_F(ImageLoaderTest, MultipleImages) { - scoped_refptr<Extension> extension(CreateExtension( - "image_loading_tracker", Manifest::INVALID_LOCATION)); + scoped_refptr<Extension> extension( + CreateExtension("image_loader", Manifest::INVALID_LOCATION)); ASSERT_TRUE(extension.get() != NULL); std::vector<ImageLoader::ImageRepresentation> info_list; int sizes[] = {extension_misc::EXTENSION_ICON_BITTY, extension_misc::EXTENSION_ICON_SMALLISH, }; for (size_t i = 0; i < arraysize(sizes); ++i) { - ExtensionResource resource = extensions::IconsInfo::GetIconResource( + ExtensionResource resource = IconsInfo::GetIconResource( extension.get(), sizes[i], ExtensionIconSet::MATCH_EXACTLY); info_list.push_back(ImageLoader::ImageRepresentation( resource, @@ -256,14 +244,14 @@ TEST_F(ImageLoaderTest, MultipleImages) { // Tests loading multiple dimensions of the same image into an image family. TEST_F(ImageLoaderTest, LoadImageFamily) { scoped_refptr<Extension> extension( - CreateExtension("image_loading_tracker", Manifest::INVALID_LOCATION)); + CreateExtension("image_loader", Manifest::INVALID_LOCATION)); ASSERT_TRUE(extension.get() != NULL); std::vector<ImageLoader::ImageRepresentation> info_list; int sizes[] = {extension_misc::EXTENSION_ICON_BITTY, extension_misc::EXTENSION_ICON_SMALLISH, }; for (size_t i = 0; i < arraysize(sizes); ++i) { - ExtensionResource resource = extensions::IconsInfo::GetIconResource( + ExtensionResource resource = IconsInfo::GetIconResource( extension.get(), sizes[i], ExtensionIconSet::MATCH_EXACTLY); info_list.push_back(ImageLoader::ImageRepresentation( resource, @@ -274,10 +262,10 @@ TEST_F(ImageLoaderTest, LoadImageFamily) { // Add a second icon of 200P which should get grouped with the smaller icon's // ImageSkia. - ExtensionResource resource = extensions::IconsInfo::GetIconResource( - extension.get(), - extension_misc::EXTENSION_ICON_SMALLISH, - ExtensionIconSet::MATCH_EXACTLY); + ExtensionResource resource = + IconsInfo::GetIconResource(extension.get(), + extension_misc::EXTENSION_ICON_SMALLISH, + ExtensionIconSet::MATCH_EXACTLY); info_list.push_back(ImageLoader::ImageRepresentation( resource, ImageLoader::ImageRepresentation::NEVER_RESIZE, @@ -322,30 +310,4 @@ TEST_F(ImageLoaderTest, LoadImageFamily) { EXPECT_EQ(2.0f, img_rep2->scale()); } -// Tests IsComponentExtensionResource function. -// TODO(mukai): move this to ChromeComponentExtensionResourceManager's test. -TEST_F(ImageLoaderTest, IsComponentExtensionResource) { - extensions::ComponentExtensionResourceManager* resource_manager = - extensions::ExtensionsBrowserClient::Get()-> - GetComponentExtensionResourceManager(); - if (!resource_manager) - return; - - scoped_refptr<Extension> extension(CreateExtension( - "file_manager", Manifest::COMPONENT)); - ASSERT_TRUE(extension.get() != NULL); - - ExtensionResource resource = extensions::IconsInfo::GetIconResource( - extension.get(), - extension_misc::EXTENSION_ICON_BITTY, - ExtensionIconSet::MATCH_EXACTLY); - -#if defined(OS_CHROMEOS) - int resource_id; - ASSERT_TRUE(resource_manager->IsComponentExtensionResource( - extension->path(), - resource.relative_path(), - &resource_id)); - ASSERT_EQ(IDR_FILE_MANAGER_ICON_16, resource_id); -#endif -} +} // namespace extensions diff --git a/extensions/extensions.gyp b/extensions/extensions.gyp index 027ef48..f6a7246 100644 --- a/extensions/extensions.gyp +++ b/extensions/extensions.gyp @@ -830,6 +830,7 @@ 'browser/extension_registry_unittest.cc', 'browser/file_highlighter_unittest.cc', 'browser/file_reader_unittest.cc', + 'browser/image_loader_unittest.cc', 'browser/image_util_unittest.cc', 'browser/lazy_background_task_queue_unittest.cc', 'browser/management_policy_unittest.cc', |