summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/OWNERS3
-rw-r--r--components/components.gyp5
-rw-r--r--components/components_tests.gyp7
-rw-r--r--components/test/data/webp_transcode/test.jpg (renamed from ios/web/test/data/test.jpg)bin84820 -> 84820 bytes
-rw-r--r--components/test/data/webp_transcode/test.webp (renamed from ios/web/test/data/test.webp)bin30320 -> 30320 bytes
-rw-r--r--components/test/data/webp_transcode/test_alpha.png (renamed from ios/web/test/data/test_alpha.png)bin175667 -> 175667 bytes
-rw-r--r--components/test/data/webp_transcode/test_alpha.webp (renamed from ios/web/test/data/test_alpha.webp)bin92312 -> 92312 bytes
-rw-r--r--components/test/data/webp_transcode/test_small.tiff (renamed from ios/web/test/data/test_small.tiff)bin4306 -> 4306 bytes
-rw-r--r--components/test/data/webp_transcode/test_small.webp (renamed from ios/web/test/data/test_small.webp)bin724 -> 724 bytes
-rw-r--r--components/webp_transcode.gypi24
-rw-r--r--components/webp_transcode/DEPS10
-rw-r--r--components/webp_transcode/OWNERS2
-rw-r--r--components/webp_transcode/README2
-rw-r--r--components/webp_transcode/webp_decoder.h (renamed from ios/web/public/webp_decoder.h)23
-rw-r--r--components/webp_transcode/webp_decoder.mm (renamed from ios/web/public/webp_decoder.mm)24
-rw-r--r--components/webp_transcode/webp_decoder_unittest.mm (renamed from ios/web/public/webp_decoder_unittest.mm)39
-rw-r--r--ios/chrome/DEPS1
-rw-r--r--ios/chrome/browser/net/image_fetcher.mm9
-rw-r--r--ios/chrome/ios_chrome.gyp1
-rw-r--r--ios/ios_tests_unit.gyp18
-rw-r--r--ios/web/ios_web.gyp16
21 files changed, 99 insertions, 85 deletions
diff --git a/components/OWNERS b/components/OWNERS
index 4de6407..8d00b69 100644
--- a/components/OWNERS
+++ b/components/OWNERS
@@ -249,6 +249,9 @@ per-file variations.gypi=stevet@chromium.org
per-file webdata.gypi=pkasting@chromium.org
per-file webdata_services.gypi=pkasting@chromium.org
+per-file webp_transcode.gypi=droger@chromium.org
+per-file webp_transcode.gypi=sdefresne@chromium.org
+
per-file web_resource.gypi=asvitkine@chromium.org
per-file web_resource.gypi=stevet@chromium.org
diff --git a/components/components.gyp b/components/components.gyp
index 91b5fc6..e011a89 100644
--- a/components/components.gyp
+++ b/components/components.gyp
@@ -81,6 +81,11 @@
'web_modal.gypi',
],
}],
+ ['OS == "ios"', {
+ 'includes': [
+ 'webp_transcode.gypi',
+ ],
+ }],
['OS != "android"', {
'includes': [
'feedback.gypi',
diff --git a/components/components_tests.gyp b/components/components_tests.gyp
index d7e1fea..922964e 100644
--- a/components/components_tests.gyp
+++ b/components/components_tests.gyp
@@ -598,6 +598,9 @@
],
}, { # 'OS == "ios"'
'includes': ['../chrome/chrome_ios_bundle_resources.gypi'],
+ 'sources': [
+ 'webp_transcode/webp_decoder_unittest.mm',
+ ],
'sources/': [
['exclude', '\\.cc$'],
['exclude', '\\.mm$'],
@@ -635,6 +638,7 @@
['include', '^translate/'],
['include', '^url_fixer/'],
['include', '^variations/'],
+ ['include', '^webp_transcode/'],
],
'dependencies': [
# Dependencies of sessions
@@ -646,6 +650,9 @@
# Dependencies of translate
'components.gyp:translate_ios_browser',
+ # Dependencies of webp_transcode
+ 'components.gyp:webp_transcode',
+
'../ios/ios_tests.gyp:test_support_ios',
'../ios/web/ios_web.gyp:test_support_ios_web',
'../third_party/ocmock/ocmock.gyp:ocmock',
diff --git a/ios/web/test/data/test.jpg b/components/test/data/webp_transcode/test.jpg
index 182a14a..182a14a 100644
--- a/ios/web/test/data/test.jpg
+++ b/components/test/data/webp_transcode/test.jpg
Binary files differ
diff --git a/ios/web/test/data/test.webp b/components/test/data/webp_transcode/test.webp
index 122741b..122741b 100644
--- a/ios/web/test/data/test.webp
+++ b/components/test/data/webp_transcode/test.webp
Binary files differ
diff --git a/ios/web/test/data/test_alpha.png b/components/test/data/webp_transcode/test_alpha.png
index 2de1a48..2de1a48 100644
--- a/ios/web/test/data/test_alpha.png
+++ b/components/test/data/webp_transcode/test_alpha.png
Binary files differ
diff --git a/ios/web/test/data/test_alpha.webp b/components/test/data/webp_transcode/test_alpha.webp
index ba39447..ba39447 100644
--- a/ios/web/test/data/test_alpha.webp
+++ b/components/test/data/webp_transcode/test_alpha.webp
Binary files differ
diff --git a/ios/web/test/data/test_small.tiff b/components/test/data/webp_transcode/test_small.tiff
index 8f1986d..8f1986d 100644
--- a/ios/web/test/data/test_small.tiff
+++ b/components/test/data/webp_transcode/test_small.tiff
Binary files differ
diff --git a/ios/web/test/data/test_small.webp b/components/test/data/webp_transcode/test_small.webp
index 5447184..5447184 100644
--- a/ios/web/test/data/test_small.webp
+++ b/components/test/data/webp_transcode/test_small.webp
Binary files differ
diff --git a/components/webp_transcode.gypi b/components/webp_transcode.gypi
new file mode 100644
index 0000000..b99003c
--- /dev/null
+++ b/components/webp_transcode.gypi
@@ -0,0 +1,24 @@
+# Copyright 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.
+
+{
+ 'targets': [
+ {
+ 'target_name': 'webp_transcode',
+ 'type': 'static_library',
+ 'dependencies': [
+ '../base/base.gyp:base',
+ '../net/net.gyp:net',
+ '../third_party/libwebp/libwebp.gyp:libwebp_dec',
+ ],
+ 'include_dirs': [
+ '..',
+ ],
+ 'sources': [
+ 'webp_transcode/webp_decoder.h',
+ 'webp_transcode/webp_decoder.mm',
+ ],
+ },
+ ],
+}
diff --git a/components/webp_transcode/DEPS b/components/webp_transcode/DEPS
new file mode 100644
index 0000000..0e26ac6
--- /dev/null
+++ b/components/webp_transcode/DEPS
@@ -0,0 +1,10 @@
+include_rules = [
+ "+net",
+ # Only WebP decoding is allowed (no encoding).
+ "+third_party/libwebp/webp/decode.h",
+
+ # webp_transcode should not depend on //ios for library size reasons.
+ "-ios",
+ # webp_transcode is only used by iOS.
+ "-content",
+]
diff --git a/components/webp_transcode/OWNERS b/components/webp_transcode/OWNERS
new file mode 100644
index 0000000..fa3d0c2
--- /dev/null
+++ b/components/webp_transcode/OWNERS
@@ -0,0 +1,2 @@
+droger@chromium.org
+sdefresne@chromium.org
diff --git a/components/webp_transcode/README b/components/webp_transcode/README
new file mode 100644
index 0000000..4484825
--- /dev/null
+++ b/components/webp_transcode/README
@@ -0,0 +1,2 @@
+webp_transcode is used to convert WebP images to other formats supported by the
+iOS web views.
diff --git a/ios/web/public/webp_decoder.h b/components/webp_transcode/webp_decoder.h
index 8700718..64126c2 100644
--- a/ios/web/public/webp_decoder.h
+++ b/components/webp_transcode/webp_decoder.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 IOS_WEB_PUBLIC_WEBP_DECODER_H_
-#define IOS_WEB_PUBLIC_WEBP_DECODER_H_
+#ifndef COMPONENTS_WEBP_TRANSCODE_WEBP_DECODER_H_
+#define COMPONENTS_WEBP_TRANSCODE_WEBP_DECODER_H_
#include "base/mac/scoped_nsobject.h"
#include "base/memory/ref_counted.h"
@@ -12,7 +12,7 @@
@class NSData;
-namespace web {
+namespace webp_transcode {
// Decodes a WebP image into either JPEG, PNG or uncompressed TIFF.
class WebpDecoder : public base::RefCountedThreadSafe<WebpDecoder> {
@@ -20,12 +20,7 @@ class WebpDecoder : public base::RefCountedThreadSafe<WebpDecoder> {
// Format of the decoded image.
// This enum is used for UMA reporting, keep it in sync with the histogram
// definition.
- enum DecodedImageFormat {
- JPEG = 1,
- PNG,
- TIFF,
- DECODED_FORMAT_COUNT
- };
+ enum DecodedImageFormat { JPEG = 1, PNG, TIFF, DECODED_FORMAT_COUNT };
class Delegate : public base::RefCountedThreadSafe<WebpDecoder::Delegate> {
public:
@@ -55,11 +50,7 @@ class WebpDecoder : public base::RefCountedThreadSafe<WebpDecoder> {
inline void operator()(WebPIDecoder* ptr) const { WebPIDelete(ptr); }
};
- enum State {
- READING_FEATURES,
- READING_DATA,
- DONE
- };
+ enum State { READING_FEATURES, READING_DATA, DONE };
friend class base::RefCountedThreadSafe<WebpDecoder>;
virtual ~WebpDecoder();
@@ -78,6 +69,6 @@ class WebpDecoder : public base::RefCountedThreadSafe<WebpDecoder> {
int has_alpha_;
};
-} // namespace web
+} // namespace webp_transcode
-#endif // IOS_WEB_PUBLIC_WEBP_DECODER_H_
+#endif // COMPONENTS_WEBP_TRANSCODE_WEBP_DECODER_H_
diff --git a/ios/web/public/webp_decoder.mm b/components/webp_transcode/webp_decoder.mm
index 3ac1cda..05c834b 100644
--- a/ios/web/public/webp_decoder.mm
+++ b/components/webp_transcode/webp_decoder.mm
@@ -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 "ios/web/public/webp_decoder.h"
+#include "components/webp_transcode/webp_decoder.h"
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@@ -37,8 +37,8 @@ void WriteTiffHeader(uint8_t* dst,
int bytes_per_px,
bool has_alpha) {
// For non-alpha case, we omit tag 0x152 (ExtraSamples).
- const uint8_t num_ifd_entries = has_alpha ? kNumIfdEntries
- : kNumIfdEntries - 1;
+ const uint8_t num_ifd_entries =
+ has_alpha ? kNumIfdEntries : kNumIfdEntries - 1;
uint8_t tiff_header[kHeaderSize] = {
0x49, 0x49, 0x2a, 0x00, // little endian signature
8, 0, 0, 0, // offset to the unique IFD that follows
@@ -83,7 +83,7 @@ void WriteTiffHeader(uint8_t* dst,
} // namespace
-namespace web {
+namespace webp_transcode {
// static
size_t WebpDecoder::GetHeaderSize() {
@@ -184,9 +184,9 @@ void WebpDecoder::DoReadData(NSData* data) {
DCHECK_EQ(READING_DATA, state_);
DCHECK(incremental_decoder_);
DCHECK(data);
- VP8StatusCode status = WebPIAppend(incremental_decoder_.get(),
- static_cast<const uint8_t*>([data bytes]),
- [data length]);
+ VP8StatusCode status =
+ WebPIAppend(incremental_decoder_.get(),
+ static_cast<const uint8_t*>([data bytes]), [data length]);
switch (status) {
case VP8_STATUS_SUSPENDED:
// Do nothing: re-compression to JPEG or PNG cannot be done incrementally.
@@ -210,8 +210,8 @@ void WebpDecoder::DoReadData(NSData* data) {
bool WebpDecoder::DoSendData() {
DCHECK_EQ(READING_DATA, state_);
int width, height;
- uint8_t* data_ptr =
- WebPIDecGetRGB(incremental_decoder_.get(), NULL, &width, &height, NULL);
+ uint8_t* data_ptr = WebPIDecGetRGB(incremental_decoder_.get(), nullptr,
+ &width, &height, nullptr);
if (!data_ptr)
return false;
DCHECK_EQ(static_cast<const uint8_t*>([output_buffer_ bytes]) + kHeaderSize,
@@ -240,12 +240,12 @@ bool WebpDecoder::DoSendData() {
} else {
result_data.reset([output_buffer_ retain]);
}
- UMA_HISTOGRAM_ENUMERATION(
- "WebP.DecodedImageFormat", format, DECODED_FORMAT_COUNT);
+ UMA_HISTOGRAM_ENUMERATION("WebP.DecodedImageFormat", format,
+ DECODED_FORMAT_COUNT);
delegate_->SetImageFeatures([result_data length], format);
delegate_->OnDataDecoded(result_data);
output_buffer_.reset();
return true;
}
-} // namespace web
+} // namespace webp_transcode
diff --git a/ios/web/public/webp_decoder_unittest.mm b/components/webp_transcode/webp_decoder_unittest.mm
index 40d20a1..5130ca7 100644
--- a/ios/web/public/webp_decoder_unittest.mm
+++ b/components/webp_transcode/webp_decoder_unittest.mm
@@ -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 "ios/web/public/webp_decoder.h"
+#include "components/webp_transcode/webp_decoder.h"
#import <CoreGraphics/CoreGraphics.h>
#import <Foundation/Foundation.h>
@@ -18,13 +18,12 @@
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
-namespace web {
+namespace webp_transcode {
namespace {
class WebpDecoderDelegate : public WebpDecoder::Delegate {
public:
- WebpDecoderDelegate() : image_([[NSMutableData alloc] init]) {
- }
+ WebpDecoderDelegate() : image_([[NSMutableData alloc] init]) {}
NSData* GetImage() const { return image_; }
@@ -32,7 +31,7 @@ class WebpDecoderDelegate : public WebpDecoder::Delegate {
MOCK_METHOD1(OnFinishedDecoding, void(bool success));
MOCK_METHOD2(SetImageFeatures,
void(size_t total_size, WebpDecoder::DecodedImageFormat format));
- virtual void OnDataDecoded(NSData* data) { [image_ appendData:data]; }
+ void OnDataDecoded(NSData* data) override { [image_ appendData:data]; }
private:
virtual ~WebpDecoderDelegate() {}
@@ -49,7 +48,8 @@ class WebpDecoderTest : public testing::Test {
NSData* LoadImage(const base::FilePath& filename) {
base::FilePath path;
PathService::Get(base::DIR_SOURCE_ROOT, &path);
- path = path.AppendASCII("ios/web/test/data").Append(filename);
+ path = path.AppendASCII("components/test/data/webp_transcode")
+ .Append(filename);
return
[NSData dataWithContentsOfFile:base::SysUTF8ToNSString(path.value())];
}
@@ -62,11 +62,11 @@ class WebpDecoderTest : public testing::Test {
switch (format) {
case WebpDecoder::JPEG:
image.reset(CGImageCreateWithJPEGDataProvider(
- provider, NULL, false, kCGRenderingIntentDefault));
+ provider, nullptr, false, kCGRenderingIntentDefault));
break;
case WebpDecoder::PNG:
image.reset(CGImageCreateWithPNGDataProvider(
- provider, NULL, false, kCGRenderingIntentDefault));
+ provider, nullptr, false, kCGRenderingIntentDefault));
break;
case WebpDecoder::TIFF:
ADD_FAILURE() << "Data already decompressed";
@@ -115,9 +115,9 @@ class WebpDecoderTest : public testing::Test {
bool CheckCompressedImagesEqual(NSData* data_1,
NSData* data_2,
WebpDecoder::DecodedImageFormat format) {
- scoped_ptr<std::vector<uint8_t> > uncompressed_1(
+ scoped_ptr<std::vector<uint8_t>> uncompressed_1(
DecompressData(data_1, format));
- scoped_ptr<std::vector<uint8_t> > uncompressed_2(
+ scoped_ptr<std::vector<uint8_t>> uncompressed_2(
DecompressData(data_2, format));
if (uncompressed_1->size() != uncompressed_2->size()) {
DLOG(ERROR) << "Image sizes don't match";
@@ -167,8 +167,8 @@ TEST_F(WebpDecoderTest, DecodeToJpeg) {
ASSERT_TRUE(jpg_image != nil);
// Convert to JPEG.
EXPECT_CALL(*delegate_, OnFinishedDecoding(true)).Times(1);
- EXPECT_CALL(*delegate_,
- SetImageFeatures(testing::_, WebpDecoder::JPEG)).Times(1);
+ EXPECT_CALL(*delegate_, SetImageFeatures(testing::_, WebpDecoder::JPEG))
+ .Times(1);
decoder_->OnDataReceived(webp_image);
// Compare to reference image.
EXPECT_TRUE(CheckCompressedImagesEqual(jpg_image, delegate_->GetImage(),
@@ -186,8 +186,8 @@ TEST_F(WebpDecoderTest, DecodeToPng) {
ASSERT_TRUE(png_image != nil);
// Convert to PNG.
EXPECT_CALL(*delegate_, OnFinishedDecoding(true)).Times(1);
- EXPECT_CALL(*delegate_,
- SetImageFeatures(testing::_, WebpDecoder::PNG)).Times(1);
+ EXPECT_CALL(*delegate_, SetImageFeatures(testing::_, WebpDecoder::PNG))
+ .Times(1);
decoder_->OnDataReceived(webp_image);
// Compare to reference image.
EXPECT_TRUE(CheckCompressedImagesEqual(png_image, delegate_->GetImage(),
@@ -223,16 +223,17 @@ TEST_F(WebpDecoderTest, StreamedDecode) {
ASSERT_TRUE(jpg_image != nil);
// Convert to JPEG in chunks.
EXPECT_CALL(*delegate_, OnFinishedDecoding(true)).Times(1);
- EXPECT_CALL(*delegate_,
- SetImageFeatures(testing::_, WebpDecoder::JPEG)).Times(1);
+ EXPECT_CALL(*delegate_, SetImageFeatures(testing::_, WebpDecoder::JPEG))
+ .Times(1);
const size_t kChunkSize = 10;
unsigned int num_chunks = 0;
while ([webp_image length] > kChunkSize) {
base::scoped_nsobject<NSData> chunk(
[[webp_image subdataWithRange:NSMakeRange(0, kChunkSize)] retain]);
decoder_->OnDataReceived(chunk);
- webp_image.reset([[webp_image subdataWithRange:NSMakeRange(
- kChunkSize, [webp_image length] - kChunkSize)] retain]);
+ webp_image.reset([[webp_image
+ subdataWithRange:NSMakeRange(kChunkSize, [webp_image length] -
+ kChunkSize)] retain]);
++num_chunks;
}
if ([webp_image length] > 0u) {
@@ -260,4 +261,4 @@ TEST_F(WebpDecoderTest, DecodeAborted) {
EXPECT_EQ(0u, [delegate_->GetImage() length]);
}
-} // namespace web
+} // namespace webp_transcode
diff --git a/ios/chrome/DEPS b/ios/chrome/DEPS
index fb23515..e6bb4b0 100644
--- a/ios/chrome/DEPS
+++ b/ios/chrome/DEPS
@@ -5,6 +5,7 @@ include_rules = [
"+components/leveldb_proto",
"+components/suggestions",
"+components/translate/core",
+ "+components/webp_transcode",
"+ios/public/provider/chrome",
"+ios/web/public",
"+net",
diff --git a/ios/chrome/browser/net/image_fetcher.mm b/ios/chrome/browser/net/image_fetcher.mm
index bff9639..2d45c01 100644
--- a/ios/chrome/browser/net/image_fetcher.mm
+++ b/ios/chrome/browser/net/image_fetcher.mm
@@ -10,8 +10,8 @@
#include "base/location.h"
#include "base/mac/scoped_nsobject.h"
#include "base/task_runner.h"
+#include "components/webp_transcode/webp_decoder.h"
#include "ios/web/public/web_thread.h"
-#include "ios/web/public/webp_decoder.h"
#include "net/base/load_flags.h"
#include "net/http/http_response_headers.h"
#include "net/url_request/url_fetcher.h"
@@ -19,7 +19,7 @@
namespace {
-class WebpDecoderDelegate : public web::WebpDecoder::Delegate {
+class WebpDecoderDelegate : public webp_transcode::WebpDecoder::Delegate {
public:
NSData* data() const { return decoded_image_; }
@@ -30,7 +30,7 @@ class WebpDecoderDelegate : public web::WebpDecoder::Delegate {
}
void SetImageFeatures(
size_t total_size,
- web::WebpDecoder::DecodedImageFormat format) override {
+ webp_transcode::WebpDecoder::DecodedImageFormat format) override {
decoded_image_.reset([[NSMutableData alloc] initWithCapacity:total_size]);
}
void OnDataDecoded(NSData* data) override {
@@ -50,7 +50,8 @@ static const char kWEBPMimeType[] = "image/webp";
base::scoped_nsobject<NSData> DecodeWebpImage(
const base::scoped_nsobject<NSData>& webp_image) {
scoped_refptr<WebpDecoderDelegate> delegate(new WebpDecoderDelegate);
- scoped_refptr<web::WebpDecoder> decoder(new web::WebpDecoder(delegate.get()));
+ scoped_refptr<webp_transcode::WebpDecoder> decoder(
+ new webp_transcode::WebpDecoder(delegate.get()));
decoder->OnDataReceived(webp_image);
DLOG_IF(ERROR, !delegate->data()) << "WebP image decoding failed.";
return base::scoped_nsobject<NSData>([delegate->data() retain]);
diff --git a/ios/chrome/ios_chrome.gyp b/ios/chrome/ios_chrome.gyp
index 0174556..fe3e2db 100644
--- a/ios/chrome/ios_chrome.gyp
+++ b/ios/chrome/ios_chrome.gyp
@@ -21,6 +21,7 @@
'../../components/components.gyp:leveldb_proto',
'../../components/components.gyp:suggestions',
'../../components/components.gyp:translate_core_browser',
+ '../../components/components.gyp:webp_transcode',
'../../net/net.gyp:net',
'../../skia/skia.gyp:skia',
'../../url/url.gyp:url_lib',
diff --git a/ios/ios_tests_unit.gyp b/ios/ios_tests_unit.gyp
index 64da0d6..3d33685 100644
--- a/ios/ios_tests_unit.gyp
+++ b/ios/ios_tests_unit.gyp
@@ -22,27 +22,9 @@
'sources': [
'web/browser_state_unittest.cc',
'web/navigation/navigation_item_impl_unittest.mm',
- 'web/public/webp_decoder_unittest.mm',
'web/string_util_unittest.cc',
'web/url_scheme_util_unittest.mm',
],
- 'actions': [
- {
- 'action_name': 'copy_test_data',
- 'variables': {
- 'test_data_files': [
- 'web/test/data/test.jpg',
- 'web/test/data/test.webp',
- 'web/test/data/test_alpha.webp',
- 'web/test/data/test_alpha.png',
- 'web/test/data/test_small.tiff',
- 'web/test/data/test_small.webp',
- ],
- 'test_data_prefix': 'ios',
- },
- 'includes': [ '../build/copy_test_data_ios.gypi' ],
- },
- ],
},
],
}
diff --git a/ios/web/ios_web.gyp b/ios/web/ios_web.gyp
index d256398..72833e8 100644
--- a/ios/web/ios_web.gyp
+++ b/ios/web/ios_web.gyp
@@ -14,7 +14,6 @@
'../..',
],
'dependencies': [
- 'webp_decoder',
'../../base/base.gyp:base',
'../../content/content.gyp:content_browser',
'../../net/net.gyp:net',
@@ -88,21 +87,6 @@
],
},
{
- 'target_name': 'webp_decoder',
- 'type': 'static_library',
- 'include_dirs': [
- '../..',
- ],
- 'dependencies': [
- '../../base/base.gyp:base',
- '../../third_party/libwebp/libwebp.gyp:libwebp_dec',
- ],
- 'sources': [
- 'public/webp_decoder.h',
- 'public/webp_decoder.mm',
- ],
- },
- {
'target_name': 'test_support_ios_web',
'type': 'static_library',
'dependencies': [