Accept displacement with no displacement input

BUG=
R=senorblanco@google.com, senorblanco@chromium.org, sugoi@google.com, bsalomon@google.com, bsalomon@chromium.org

Author: sugoi@chromium.org

Review URL: https://codereview.chromium.org/104853005

git-svn-id: http://skia.googlecode.com/svn/trunk@12773 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/expectations/gm/ignored-tests.txt b/expectations/gm/ignored-tests.txt
index 2872e7e..b8a9019 100644
--- a/expectations/gm/ignored-tests.txt
+++ b/expectations/gm/ignored-tests.txt
@@ -66,3 +66,6 @@
 clipped-bitmap-shaders-clamp-hq_angle
 clipped-bitmap-shaders-mirror-hq_angle
 clipped-bitmap-shaders-tile-hq_angle
+
+# Added by sugoi for added test in https://codereview.chromium.org/104853005
+displacement
diff --git a/gm/displacement.cpp b/gm/displacement.cpp
index 5a20f81..cc66401 100644
--- a/gm/displacement.cpp
+++ b/gm/displacement.cpp
@@ -183,6 +183,7 @@
              40.0f, displ, NULL, &cropRect)))->unref();
         drawClippedBitmap(canvas, 400, 300, paint);
 
+        // Tests for images of different sizes
         displ.reset(SkNEW_ARGS(SkBitmapSource, (fSmall)));
         paint.setImageFilter(SkNEW_ARGS(SkDisplacementMapEffect,
             (SkDisplacementMapEffect::kR_ChannelSelectorType,
@@ -207,6 +208,15 @@
              SkDisplacementMapEffect::kA_ChannelSelectorType,
              40.0f, displ)))->unref();
         drawClippedBitmap(canvas, 300, 400, paint);
+
+        // Test for no given displacement input. In this case, both displacement
+        // and color should use the same bitmap, given to SkCanvas::drawBitmap()
+        // as an input argument.
+        paint.setImageFilter(SkNEW_ARGS(SkDisplacementMapEffect,
+            (SkDisplacementMapEffect::kG_ChannelSelectorType,
+             SkDisplacementMapEffect::kA_ChannelSelectorType,
+             40.0f, NULL)))->unref();
+        drawClippedBitmap(canvas, 400, 400, paint);
     }
 
 private:
diff --git a/src/effects/SkDisplacementMapEffect.cpp b/src/effects/SkDisplacementMapEffect.cpp
index 8fc4c86..3087b63 100644
--- a/src/effects/SkDisplacementMapEffect.cpp
+++ b/src/effects/SkDisplacementMapEffect.cpp
@@ -183,12 +183,11 @@
                                             const SkMatrix& ctm,
                                             SkBitmap* dst,
                                             SkIPoint* offset) {
-    SkBitmap displ, color = src;
+    SkBitmap displ = src, color = src;
     SkImageFilter* colorInput = getColorInput();
     SkImageFilter* displacementInput = getDisplacementInput();
-    SkASSERT(NULL != displacementInput);
     if ((colorInput && !colorInput->filterImage(proxy, src, ctm, &color, offset)) ||
-        !displacementInput || !displacementInput->filterImage(proxy, src, ctm, &displ, offset)) {
+        (displacementInput && !displacementInput->filterImage(proxy, src, ctm, &displ, offset))) {
         return false;
     }
     if ((displ.config() != SkBitmap::kARGB_8888_Config) ||