| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "ui/base/resource/resource_bundle.h" | 5 #include "ui/base/resource/resource_bundle.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 #include <string.h> | 9 #include <string.h> |
| 10 | 10 |
| 11 #include "base/base_paths.h" | 11 #include "base/base_paths.h" |
| 12 #include "base/big_endian.h" | 12 #include "base/big_endian.h" |
| 13 #include "base/files/file_path.h" | 13 #include "base/files/file_path.h" |
| 14 #include "base/files/file_util.h" | 14 #include "base/files/file_util.h" |
| 15 #include "base/files/scoped_temp_dir.h" | 15 #include "base/files/scoped_temp_dir.h" |
| 16 #include "base/logging.h" | 16 #include "base/logging.h" |
| 17 #include "base/macros.h" | 17 #include "base/macros.h" |
| 18 #include "base/memory/ref_counted_memory.h" | 18 #include "base/memory/ref_counted_memory.h" |
| 19 #include "base/strings/utf_string_conversions.h" | 19 #include "base/strings/utf_string_conversions.h" |
| 20 #include "build/build_config.h" | 20 #include "build/build_config.h" |
| 21 #include "testing/gmock/include/gmock/gmock.h" | 21 #include "testing/gmock/include/gmock/gmock.h" |
| 22 #include "testing/gtest/include/gtest/gtest.h" | 22 #include "testing/gtest/include/gtest/gtest.h" |
| 23 #include "third_party/skia/include/core/SkBitmap.h" | 23 #include "third_party/skia/include/core/SkBitmap.h" |
| 24 #include "ui/base/layout.h" | 24 #include "ui/base/layout.h" |
| 25 #include "ui/base/resource/data_pack.h" | 25 #include "ui/base/resource/data_pack.h" |
| 26 #include "ui/base/resource/data_pack_literal.h" |
| 26 #include "ui/gfx/codec/png_codec.h" | 27 #include "ui/gfx/codec/png_codec.h" |
| 27 #include "ui/gfx/font_list.h" | 28 #include "ui/gfx/font_list.h" |
| 28 #include "ui/gfx/image/image_skia.h" | 29 #include "ui/gfx/image/image_skia.h" |
| 29 | 30 |
| 30 #if defined(OS_WIN) | 31 #if defined(OS_WIN) |
| 31 #include "ui/display/win/dpi.h" | 32 #include "ui/display/win/dpi.h" |
| 32 #endif | 33 #endif |
| 33 | 34 |
| 34 using ::testing::_; | 35 using ::testing::_; |
| 35 using ::testing::Between; | 36 using ::testing::Between; |
| 36 using ::testing::Property; | 37 using ::testing::Property; |
| 37 using ::testing::Return; | 38 using ::testing::Return; |
| 38 using ::testing::ReturnArg; | 39 using ::testing::ReturnArg; |
| 39 | 40 |
| 40 namespace ui { | 41 namespace ui { |
| 41 | |
| 42 extern const char kSamplePakContents[]; | |
| 43 extern const size_t kSamplePakSize; | |
| 44 extern const char kSamplePakContents2x[]; | |
| 45 extern const size_t kSamplePakSize2x; | |
| 46 extern const char kEmptyPakContents[]; | |
| 47 extern const size_t kEmptyPakSize; | |
| 48 | |
| 49 namespace { | 42 namespace { |
| 50 | 43 |
| 51 const unsigned char kPngMagic[8] = { 0x89, 'P', 'N', 'G', 13, 10, 26, 10 }; | 44 const unsigned char kPngMagic[8] = { 0x89, 'P', 'N', 'G', 13, 10, 26, 10 }; |
| 52 const size_t kPngChunkMetadataSize = 12; | 45 const size_t kPngChunkMetadataSize = 12; |
| 53 const unsigned char kPngIHDRChunkType[4] = { 'I', 'H', 'D', 'R' }; | 46 const unsigned char kPngIHDRChunkType[4] = { 'I', 'H', 'D', 'R' }; |
| 54 | 47 |
| 55 // Custom chunk that GRIT adds to PNG to indicate that it could not find a | 48 // Custom chunk that GRIT adds to PNG to indicate that it could not find a |
| 56 // bitmap at the requested scale factor and fell back to 1x. | 49 // bitmap at the requested scale factor and fell back to 1x. |
| 57 const unsigned char kPngScaleChunk[12] = { 0x00, 0x00, 0x00, 0x00, | 50 const unsigned char kPngScaleChunk[12] = { 0x00, 0x00, 0x00, 0x00, |
| 58 'c', 's', 'C', 'l', | 51 'c', 's', 'C', 'l', |
| (...skipping 350 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 409 EXPECT_EQ(NULL, resource_bundle->LoadDataResourceBytes( | 402 EXPECT_EQ(NULL, resource_bundle->LoadDataResourceBytes( |
| 410 kUnfoundResourceId)); | 403 kUnfoundResourceId)); |
| 411 } | 404 } |
| 412 | 405 |
| 413 TEST_F(ResourceBundleImageTest, GetRawDataResource) { | 406 TEST_F(ResourceBundleImageTest, GetRawDataResource) { |
| 414 base::FilePath data_path = dir_path().Append(FILE_PATH_LITERAL("sample.pak")); | 407 base::FilePath data_path = dir_path().Append(FILE_PATH_LITERAL("sample.pak")); |
| 415 base::FilePath data_2x_path = | 408 base::FilePath data_2x_path = |
| 416 dir_path().Append(FILE_PATH_LITERAL("sample_2x.pak")); | 409 dir_path().Append(FILE_PATH_LITERAL("sample_2x.pak")); |
| 417 | 410 |
| 418 // Dump contents into the pak files. | 411 // Dump contents into the pak files. |
| 419 ASSERT_EQ(base::WriteFile(data_path, kSamplePakContents, | 412 ASSERT_EQ(base::WriteFile(data_path, kSamplePakContentsV4, kSamplePakSizeV4), |
| 420 kSamplePakSize), static_cast<int>(kSamplePakSize)); | 413 static_cast<int>(kSamplePakSizeV4)); |
| 421 ASSERT_EQ(base::WriteFile(data_2x_path, kSamplePakContents2x, | 414 ASSERT_EQ(base::WriteFile(data_2x_path, kSamplePakContents2x, |
| 422 kSamplePakSize2x), static_cast<int>(kSamplePakSize2x)); | 415 kSamplePakSize2x), static_cast<int>(kSamplePakSize2x)); |
| 423 | 416 |
| 424 // Load the regular and 2x pak files. | 417 // Load the regular and 2x pak files. |
| 425 ResourceBundle* resource_bundle = CreateResourceBundleWithEmptyLocalePak(); | 418 ResourceBundle* resource_bundle = CreateResourceBundleWithEmptyLocalePak(); |
| 426 resource_bundle->AddDataPackFromPath(data_path, SCALE_FACTOR_100P); | 419 resource_bundle->AddDataPackFromPath(data_path, SCALE_FACTOR_100P); |
| 427 resource_bundle->AddDataPackFromPath(data_2x_path, SCALE_FACTOR_200P); | 420 resource_bundle->AddDataPackFromPath(data_2x_path, SCALE_FACTOR_200P); |
| 428 | 421 |
| 429 // Resource ID 4 exists in both 1x and 2x paks, so we expect a different | 422 // Resource ID 4 exists in both 1x and 2x paks, so we expect a different |
| 430 // result when requesting the 2x scale. | 423 // result when requesting the 2x scale. |
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 593 resource_bundle->AddDataPackFromPath(data_default_path, SCALE_FACTOR_NONE); | 586 resource_bundle->AddDataPackFromPath(data_default_path, SCALE_FACTOR_NONE); |
| 594 | 587 |
| 595 gfx::ImageSkia* image_skia = resource_bundle->GetImageSkiaNamed(3); | 588 gfx::ImageSkia* image_skia = resource_bundle->GetImageSkiaNamed(3); |
| 596 EXPECT_EQ(1u, image_skia->image_reps().size()); | 589 EXPECT_EQ(1u, image_skia->image_reps().size()); |
| 597 EXPECT_TRUE(image_skia->image_reps()[0].unscaled()); | 590 EXPECT_TRUE(image_skia->image_reps()[0].unscaled()); |
| 598 EXPECT_EQ(ui::SCALE_FACTOR_100P, | 591 EXPECT_EQ(ui::SCALE_FACTOR_100P, |
| 599 GetSupportedScaleFactor(image_skia->image_reps()[0].scale())); | 592 GetSupportedScaleFactor(image_skia->image_reps()[0].scale())); |
| 600 } | 593 } |
| 601 | 594 |
| 602 } // namespace ui | 595 } // namespace ui |
| OLD | NEW |