Index: ui/gfx/image/image_mac_unittest.mm |
diff --git a/ui/gfx/image/image_mac_unittest.mm b/ui/gfx/image/image_mac_unittest.mm |
index 8a2119ad2c4612b99bea1263ef48f36305fea138..1fd5e2e46d9ca6651f30dde0b540707c4e3deb87 100644 |
--- a/ui/gfx/image/image_mac_unittest.mm |
+++ b/ui/gfx/image/image_mac_unittest.mm |
@@ -16,33 +16,62 @@ namespace { |
class ImageMacTest : public testing::Test { |
public: |
- void CreateBitmapImageRep(int width, int height, NSImageRep** image_rep) { |
- scoped_nsobject<NSImage> image( |
- [[NSImage alloc] initWithSize:NSMakeSize(width, height)]); |
- [image lockFocus]; |
- [[NSColor redColor] set]; |
- NSRectFill(NSMakeRect(0, 0, width, height)); |
- [image unlockFocus]; |
- EXPECT_TRUE([[[image representations] lastObject] |
- isKindOfClass:[NSImageRep class]]); |
- *image_rep = [[image representations] lastObject]; |
+ void CreateBitmapImageRep(int width, int height, |
+ NSBitmapImageRep** image_rep) { |
+ *image_rep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL |
Nico
2012/06/11 15:23:07
nit: break before initWith…, and align subsequent
|
+ pixelsWide:width |
+ pixelsHigh:height |
+ bitsPerSample:8 |
+ samplesPerPixel:3 |
+ hasAlpha:NO |
+ isPlanar:NO |
+ colorSpaceName:@"NSDeviceRGBColorSpace" |
Nico
2012/06/11 15:23:07
I think NSDeviceRGBColorSpace is a named constant
|
+ bitmapFormat:0 |
+ bytesPerRow:0 |
+ bitsPerPixel:0]; |
} |
}; |
namespace gt = gfx::test; |
+TEST_F(ImageMacTest, NSImageWithResizedNSImageRepToImageSkia) { |
+ const int kWidth1x = 10; |
+ const int kHeight1x = 12; |
+ const int kWidth2x = 20; |
+ const int kHeight2x = 24; |
+ |
+ NSBitmapImageRep* image_rep; |
+ CreateBitmapImageRep(kWidth2x, kHeight2x, &image_rep); |
+ |
+ scoped_nsobject<NSImage> ns_image( |
+ [[NSImage alloc] initWithSize:NSMakeSize(kWidth1x, kHeight1x)]); |
+ [ns_image addRepresentation:image_rep]; |
+ |
+ [image_rep setSize:NSMakeSize(kWidth1x, kHeight1x)]; |
+ |
+ gfx::Image image(ns_image.release()); |
+ const gfx::ImageSkia* image_skia = image.ToImageSkia(); |
+ |
+ float scale_factor; |
+ const SkBitmap& bitmap = image_skia->GetBitmapForScale(2.0f, 2.0f, |
+ &scale_factor); |
+ EXPECT_EQ(2.0f, scale_factor); |
+ EXPECT_EQ(kWidth2x, bitmap.width()); |
+ EXPECT_EQ(kHeight2x, bitmap.height()); |
+} |
+ |
TEST_F(ImageMacTest, MultiResolutionNSImageToImageSkia) { |
- const int width1x = 10; |
- const int height1x = 12; |
- const int width2x = 20; |
- const int height2x = 24; |
- |
- NSImageRep* image_rep_1; |
- CreateBitmapImageRep(width1x, height1x, &image_rep_1); |
- NSImageRep* image_rep_2; |
- CreateBitmapImageRep(width2x, height2x, &image_rep_2); |
+ const int kWidth1x = 10; |
+ const int kHeight1x = 12; |
+ const int kWidth2x = 20; |
+ const int kHeight2x = 24; |
+ |
+ NSBitmapImageRep* image_rep_1; |
+ CreateBitmapImageRep(kWidth1x, kHeight1x, &image_rep_1); |
+ NSBitmapImageRep* image_rep_2; |
+ CreateBitmapImageRep(kWidth2x, kHeight2x, &image_rep_2); |
scoped_nsobject<NSImage> ns_image( |
- [[NSImage alloc] initWithSize:NSMakeSize(width1x, height1x)]); |
+ [[NSImage alloc] initWithSize:NSMakeSize(kWidth1x, kHeight1x)]); |
[ns_image addRepresentation:image_rep_1]; |
[ns_image addRepresentation:image_rep_2]; |
@@ -58,29 +87,29 @@ TEST_F(ImageMacTest, MultiResolutionNSImageToImageSkia) { |
&scale_factor); |
EXPECT_TRUE(!bitmap1x.isNull()); |
EXPECT_EQ(1.0f, scale_factor); |
- EXPECT_EQ(width1x, bitmap1x.width()); |
- EXPECT_EQ(height1x, bitmap1x.height()); |
+ EXPECT_EQ(kWidth1x, bitmap1x.width()); |
+ EXPECT_EQ(kHeight1x, bitmap1x.height()); |
const SkBitmap& bitmap2x = image_skia->GetBitmapForScale(2.0f, 2.0f, |
&scale_factor); |
EXPECT_TRUE(!bitmap2x.isNull()); |
EXPECT_EQ(2.0f, scale_factor); |
- EXPECT_EQ(width2x, bitmap2x.width()); |
- EXPECT_EQ(height2x, bitmap2x.height()); |
+ EXPECT_EQ(kWidth2x, bitmap2x.width()); |
+ EXPECT_EQ(kHeight2x, bitmap2x.height()); |
// ToImageSkia should create a second representation. |
EXPECT_EQ(2u, image.RepresentationCount()); |
} |
TEST_F(ImageMacTest, MultiResolutionImageSkiaToNSImage) { |
- const int width1x = 10; |
- const int height1x= 12; |
- const int width2x = 20; |
- const int height2x = 24; |
+ const int kWidth1x = 10; |
+ const int kHeight1x= 12; |
+ const int kWidth2x = 20; |
+ const int kHeight2x = 24; |
gfx::ImageSkia image_skia; |
- image_skia.AddBitmapForScale(gt::CreateBitmap(width1x, height1x), 1.0f); |
- image_skia.AddBitmapForScale(gt::CreateBitmap(width2x, height2x), 2.0f); |
+ image_skia.AddBitmapForScale(gt::CreateBitmap(kWidth1x, kHeight1x), 1.0f); |
+ image_skia.AddBitmapForScale(gt::CreateBitmap(kWidth2x, kHeight2x), 2.0f); |
gfx::Image image(image_skia); |
@@ -91,23 +120,23 @@ TEST_F(ImageMacTest, MultiResolutionImageSkiaToNSImage) { |
EXPECT_TRUE(ns_image); |
// Image size should be the same as the 1x bitmap. |
- EXPECT_EQ([ns_image size].width, width1x); |
- EXPECT_EQ([ns_image size].height, height1x); |
+ EXPECT_EQ([ns_image size].width, kWidth1x); |
+ EXPECT_EQ([ns_image size].height, kHeight1x); |
EXPECT_EQ(2u, [[image representations] count]); |
NSImageRep* image_rep_1 = [[image representations] objectAtIndex:0]; |
NSImageRep* image_rep_2 = [[image representations] objectAtIndex:1]; |
- if ([image_rep_1 size].width == width1x) { |
- EXPECT_EQ([image_rep_1 size].width, width1x); |
- EXPECT_EQ([image_rep_1 size].height, height1x); |
- EXPECT_EQ([image_rep_2 size].width, width2x); |
- EXPECT_EQ([image_rep_2 size].height, height2x); |
+ if ([image_rep_1 size].width == kWidth1x) { |
+ EXPECT_EQ([image_rep_1 size].width, kWidth1x); |
+ EXPECT_EQ([image_rep_1 size].height, kHeight1x); |
+ EXPECT_EQ([image_rep_2 size].width, kWidth2x); |
+ EXPECT_EQ([image_rep_2 size].height, kHeight2x); |
} else { |
- EXPECT_EQ([image_rep_1 size].width, width2x); |
- EXPECT_EQ([image_rep_1 size].height, height2x); |
- EXPECT_EQ([image_rep_2 size].width, width1x); |
- EXPECT_EQ([image_rep_2 size].height, height1x); |
+ EXPECT_EQ([image_rep_1 size].width, kWidth2x); |
+ EXPECT_EQ([image_rep_1 size].height, kHeight2x); |
+ EXPECT_EQ([image_rep_2 size].width, kWidth1x); |
+ EXPECT_EQ([image_rep_2 size].height, kHeight1x); |
} |
// Cast to NSImage* should create a second representation. |