Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(478)

Side by Side Diff: ui/gfx/codec/jpeg_codec_unittest.cc

Issue 2895953003: Use SkJpegEncoder in gfx jpeg_codec (Closed)
Patch Set: Remove brackets Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 <math.h> 5 #include <math.h>
6 #include <stddef.h> 6 #include <stddef.h>
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "testing/gtest/include/gtest/gtest.h" 10 #include "testing/gtest/include/gtest/gtest.h"
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 TEST(JPEGCodec, EncodeDecodeRGBA) { 104 TEST(JPEGCodec, EncodeDecodeRGBA) {
105 int w = 20, h = 20; 105 int w = 20, h = 20;
106 106
107 // create an image with known values, a must be opaque because it will be 107 // create an image with known values, a must be opaque because it will be
108 // lost during compression 108 // lost during compression
109 std::vector<unsigned char> original; 109 std::vector<unsigned char> original;
110 MakeRGBAImage(w, h, &original); 110 MakeRGBAImage(w, h, &original);
111 111
112 // encode, making sure it was compressed some 112 // encode, making sure it was compressed some
113 std::vector<unsigned char> encoded; 113 std::vector<unsigned char> encoded;
114 EXPECT_TRUE(JPEGCodec::Encode(&original[0], JPEGCodec::FORMAT_RGBA, w, h, 114 SkImageInfo info =
115 w * 4, jpeg_quality, &encoded)); 115 SkImageInfo::Make(w, h, kRGBA_8888_SkColorType, kOpaque_SkAlphaType);
116 SkPixmap src(info, &original[0], w * 4);
117 EXPECT_TRUE(JPEGCodec::Encode(src, jpeg_quality, &encoded));
116 EXPECT_GT(original.size(), encoded.size()); 118 EXPECT_GT(original.size(), encoded.size());
117 119
118 // decode, it should have the same size as the original 120 // decode, it should have the same size as the original
119 std::vector<unsigned char> decoded; 121 std::vector<unsigned char> decoded;
120 int outw, outh; 122 int outw, outh;
121 EXPECT_TRUE(JPEGCodec::Decode(&encoded[0], encoded.size(), 123 EXPECT_TRUE(JPEGCodec::Decode(&encoded[0], encoded.size(),
122 JPEGCodec::FORMAT_RGBA, &decoded, 124 JPEGCodec::FORMAT_RGBA, &decoded,
123 &outw, &outh)); 125 &outw, &outh));
124 ASSERT_EQ(w, outw); 126 ASSERT_EQ(w, outw);
125 ASSERT_EQ(h, outh); 127 ASSERT_EQ(h, outh);
(...skipping 14 matching lines...) Expand all
140 142
141 // it should fail when given non-JPEG compressed data 143 // it should fail when given non-JPEG compressed data
142 std::vector<unsigned char> output; 144 std::vector<unsigned char> output;
143 int outw, outh; 145 int outw, outh;
144 ASSERT_FALSE(JPEGCodec::Decode(&original[0], original.size(), 146 ASSERT_FALSE(JPEGCodec::Decode(&original[0], original.size(),
145 JPEGCodec::FORMAT_RGBA, &output, &outw, 147 JPEGCodec::FORMAT_RGBA, &output, &outw,
146 &outh)); 148 &outh));
147 149
148 // make some compressed data 150 // make some compressed data
149 std::vector<unsigned char> compressed; 151 std::vector<unsigned char> compressed;
150 ASSERT_TRUE(JPEGCodec::Encode(&original[0], JPEGCodec::FORMAT_RGBA, w, h, 152 SkImageInfo info =
151 w * 3, jpeg_quality, &compressed)); 153 SkImageInfo::Make(w, h, kRGBA_8888_SkColorType, kOpaque_SkAlphaType);
154 SkPixmap src(info, &original[0], w * 4);
155 ASSERT_TRUE(JPEGCodec::Encode(src, jpeg_quality, &compressed));
152 156
153 // try decompressing a truncated version 157 // try decompressing a truncated version
154 ASSERT_FALSE(JPEGCodec::Decode(&compressed[0], compressed.size() / 2, 158 ASSERT_FALSE(JPEGCodec::Decode(&compressed[0], compressed.size() / 2,
155 JPEGCodec::FORMAT_RGBA, &output, &outw, 159 JPEGCodec::FORMAT_RGBA, &output, &outw,
156 &outh)); 160 &outh));
157 161
158 // corrupt it and try decompressing that 162 // corrupt it and try decompressing that
159 for (int i = 10; i < 30; i++) 163 for (int i = 10; i < 30; i++)
160 compressed[i] = i; 164 compressed[i] = i;
161 ASSERT_FALSE(JPEGCodec::Decode(&compressed[0], compressed.size(), 165 ASSERT_FALSE(JPEGCodec::Decode(&compressed[0], compressed.size(),
162 JPEGCodec::FORMAT_RGBA, &output, &outw, 166 JPEGCodec::FORMAT_RGBA, &output, &outw,
163 &outh)); 167 &outh));
164 } 168 }
165 169
166 // Test that we can decode JPEG images without invalid-read errors on valgrind. 170 // Test that we can decode JPEG images without invalid-read errors on valgrind.
167 // This test decodes a 1x1 JPEG image and writes the decoded RGB (or RGBA) pixel 171 // This test decodes a 1x1 JPEG image and writes the decoded RGB (or RGBA) pixel
168 // to the output buffer without OOB reads. 172 // to the output buffer without OOB reads.
169 TEST(JPEGCodec, InvalidRead) { 173 TEST(JPEGCodec, InvalidRead) {
170 std::vector<unsigned char> output; 174 std::vector<unsigned char> output;
171 int outw, outh; 175 int outw, outh;
172 JPEGCodec::Decode(kTopSitesMigrationTestImage, 176 JPEGCodec::Decode(kTopSitesMigrationTestImage,
173 arraysize(kTopSitesMigrationTestImage), 177 arraysize(kTopSitesMigrationTestImage),
174 JPEGCodec::FORMAT_RGBA, &output, 178 JPEGCodec::FORMAT_RGBA, &output,
175 &outw, &outh); 179 &outw, &outh);
176 } 180 }
177 181
178 } // namespace gfx 182 } // namespace gfx
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698