Update libwebp and resume testing scaled webp

libwebp has a fix for [1]. Update to the commit that contains the fix.

Update libwebp.gypi, corresponding to libwebp's latest makefile.

Turn back on DM testing for scaled webp, now that it should no longer
use uninitialized memory.

Fix a warning in config.h

[1] https://code.google.com/p/webp/issues/detail?id=254

BUG=skia:4038

Review URL: https://codereview.chromium.org/1280073002
diff --git a/DEPS b/DEPS
index 4439cb0..e316d7d 100644
--- a/DEPS
+++ b/DEPS
@@ -14,7 +14,8 @@
   "third_party/externals/harfbuzz": "https://skia.googlesource.com/third_party/harfbuzz.git@0.9.35",
   "third_party/externals/jsoncpp" : "https://chromium.googlesource.com/external/jsoncpp/jsoncpp.git@1afff032c83e26ddf7f2776e8b43de5ad666c1fa",
   "third_party/externals/libjpeg" : "https://chromium.googlesource.com/chromium/deps/libjpeg_turbo.git@034e9a9747e0983bc19808ea70e469bc8342081f",
-  "third_party/externals/libwebp" : "https://chromium.googlesource.com/webm/libwebp.git@v0.4.3",
+  # Slightly ahead of v 0.4.3, to include the fix for skbug.com/4038
+  "third_party/externals/libwebp" : "https://chromium.googlesource.com/webm/libwebp.git@7df93893dcb73dc45733ab4518ce5ca322c25680",
   "third_party/externals/nanomsg" : "https://skia.googlesource.com/third_party/nanomsg.git@0.4-beta",
   "third_party/externals/zlib"    : "https://chromium.googlesource.com/chromium/src/third_party/zlib@4ba7cdd0e7bf49d671645264f839838fc56e1492",
   # NOTE: If we update libpng, we may need to update the generated file at third_party/libpng/pnglibconf.h
diff --git a/dm/DM.cpp b/dm/DM.cpp
index 9dcdff1..0faa3e4 100644
--- a/dm/DM.cpp
+++ b/dm/DM.cpp
@@ -215,11 +215,6 @@
     const float scales[] = { 0.125f, 0.25f, 0.375f, 0.5f, 0.625f, 0.750f, 0.875f, 1.0f };
 
     for (float scale : scales) {
-        if (scale != 1.0f && (path.endsWith(".webp") || path.endsWith(".WEBP"))) {
-            // FIXME: skbug.com/4038 Scaling webp seems to leave some pixels uninitialized/
-            // compute their colors based on uninitialized values.
-            continue;
-        }
         // Build additional test cases for images that decode natively to non-canvas types
         switch(codec->getInfo().colorType()) {
             case kGray_8_SkColorType:
diff --git a/gyp/libwebp.gyp b/gyp/libwebp.gyp
index fc6f46c..0122be6 100644
--- a/gyp/libwebp.gyp
+++ b/gyp/libwebp.gyp
@@ -66,18 +66,33 @@
           ],
           'sources': [
             '../third_party/externals/libwebp/src/dsp/alpha_processing.c',
+            '../third_party/externals/libwebp/src/dsp/alpha_processing_mips_dsp_r2.c',
             '../third_party/externals/libwebp/src/dsp/alpha_processing_sse2.c',
+            '../third_party/externals/libwebp/src/dsp/alpha_processing_sse41.c',
             '../third_party/externals/libwebp/src/dsp/cpu.c',
             '../third_party/externals/libwebp/src/dsp/dec.c',
             '../third_party/externals/libwebp/src/dsp/dec_clip_tables.c',
+            '../third_party/externals/libwebp/src/dsp/dec_mips32.c',
+            '../third_party/externals/libwebp/src/dsp/dec_mips_dsp_r2.c',
             '../third_party/externals/libwebp/src/dsp/dec_sse2.c',
+            '../third_party/externals/libwebp/src/dsp/dec_sse41.c',
             '../third_party/externals/libwebp/src/dsp/enc.c',
             '../third_party/externals/libwebp/src/dsp/enc_sse2.c',
+            '../third_party/externals/libwebp/src/dsp/filters.c',
+            '../third_party/externals/libwebp/src/dsp/filters_mips_dsp_r2.c',
+            '../third_party/externals/libwebp/src/dsp/filters_sse2.c',
             '../third_party/externals/libwebp/src/dsp/lossless.c',
+            '../third_party/externals/libwebp/src/dsp/lossless_mips_dsp_r2.c',
             '../third_party/externals/libwebp/src/dsp/lossless_sse2.c',
+            '../third_party/externals/libwebp/src/dsp/rescaler.c',
+            '../third_party/externals/libwebp/src/dsp/rescaler_mips32.c',
+            '../third_party/externals/libwebp/src/dsp/rescaler_mips_dsp_r2.c',
             '../third_party/externals/libwebp/src/dsp/upsampling.c',
+            '../third_party/externals/libwebp/src/dsp/upsampling_mips_dsp_r2.c',
             '../third_party/externals/libwebp/src/dsp/upsampling_sse2.c',
             '../third_party/externals/libwebp/src/dsp/yuv.c',
+            '../third_party/externals/libwebp/src/dsp/yuv_mips32.c',
+            '../third_party/externals/libwebp/src/dsp/yuv_mips_dsp_r2.c',
             '../third_party/externals/libwebp/src/dsp/yuv_sse2.c',
           ],
           'cflags': [ '-w' ],
@@ -121,6 +136,35 @@
           ],
         },
         {
+          'target_name': 'libwebp_dsp_enc',
+          'type': 'static_library',
+          'includes': [
+            'libwebp_skia.gypi',
+          ],
+          'include_dirs': [
+              '../third_party/externals/libwebp',
+          ],
+          'sources': [
+            '../third_party/externals/libwebp/src/dsp/argb.c',
+            '../third_party/externals/libwebp/src/dsp/argb_mips_dsp_r2.c',
+            '../third_party/externals/libwebp/src/dsp/argb_sse2.c',
+            '../third_party/externals/libwebp/src/dsp/cost.c',
+            '../third_party/externals/libwebp/src/dsp/cost_mips32.c',
+            '../third_party/externals/libwebp/src/dsp/cost_mips_dsp_r2.c',
+            '../third_party/externals/libwebp/src/dsp/cost_sse2.c',
+            '../third_party/externals/libwebp/src/dsp/enc_avx2.c',
+            '../third_party/externals/libwebp/src/dsp/enc_mips32.c',
+            '../third_party/externals/libwebp/src/dsp/enc_mips_dsp_r2.c',
+            '../third_party/externals/libwebp/src/dsp/enc_sse41.c',
+            '../third_party/externals/libwebp/src/dsp/lossless_enc.c',
+            '../third_party/externals/libwebp/src/dsp/lossless_enc_mips32.c',
+            '../third_party/externals/libwebp/src/dsp/lossless_enc_mips_dsp_r2.c',
+            '../third_party/externals/libwebp/src/dsp/lossless_enc_neon.c',
+            '../third_party/externals/libwebp/src/dsp/lossless_enc_sse2.c',
+            '../third_party/externals/libwebp/src/dsp/lossless_enc_sse41.c',
+          ],
+        },
+        {
           'target_name': 'libwebp_enc',
           'type': 'static_library',
           'includes': [
@@ -129,6 +173,9 @@
           'include_dirs': [
               '../third_party/externals/libwebp',
           ],
+          'dependencies' : [
+            'libwebp_dsp_enc',
+          ],
           'sources': [
             '../third_party/externals/libwebp/src/enc/alpha.c',
             '../third_party/externals/libwebp/src/enc/analysis.c',
@@ -139,8 +186,12 @@
             '../third_party/externals/libwebp/src/enc/frame.c',
             '../third_party/externals/libwebp/src/enc/histogram.c',
             '../third_party/externals/libwebp/src/enc/iterator.c',
+            '../third_party/externals/libwebp/src/enc/near_lossless.c',
             '../third_party/externals/libwebp/src/enc/picture.c',
             '../third_party/externals/libwebp/src/enc/picture_csp.c',
+            '../third_party/externals/libwebp/src/enc/picture_psnr.c',
+            '../third_party/externals/libwebp/src/enc/picture_rescale.c',
+            '../third_party/externals/libwebp/src/enc/picture_tools.c',
             '../third_party/externals/libwebp/src/enc/quant.c',
             '../third_party/externals/libwebp/src/enc/syntax.c',
             '../third_party/externals/libwebp/src/enc/token.c',
diff --git a/third_party/libwebp/webp/config.h b/third_party/libwebp/webp/config.h
index 62ade94..b01473c 100644
--- a/third_party/libwebp/webp/config.h
+++ b/third_party/libwebp/webp/config.h
@@ -14,14 +14,14 @@
 // file, which replaces the checks in endian_inl.h to decide whether we have
 // particular builtins.
 
-#ifdef __builtin_bswap64(x)
+#ifdef __builtin_bswap64
     #define HAVE_BUILTIN_BSWAP64
 #endif
 
-#ifdef __builtin_bswap32(x)
+#ifdef __builtin_bswap32
     #define HAVE_BUILTIN_BSWAP32
 #endif
 
-#ifdef __builtin_bswap16(x)
+#ifdef __builtin_bswap16
     #define HAVE_BUILTIN_BSWAP16
 #endif