experimental

BUG=skia:

Review URL: https://codereview.chromium.org/716793004
diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp
index 2d9b559..ead844f 100644
--- a/src/core/SkCanvas.cpp
+++ b/src/core/SkCanvas.cpp
@@ -6,6 +6,7 @@
  */
 
 #include "SkCanvas.h"
+#include "SkCanvasDrawable.h"
 #include "SkCanvasPriv.h"
 #include "SkBitmapDevice.h"
 #include "SkDeviceImageFilterProxy.h"
@@ -2304,6 +2305,19 @@
     LOOPER_END
 }
 
+void SkCanvas::EXPERIMENTAL_drawDrawable(SkCanvasDrawable* dr) {
+    if (dr) {
+        SkRect bounds;
+        if (!dr->getBounds(&bounds) || !this->quickReject(bounds)) {
+            this->onDrawDrawable(dr);
+        }
+    }
+}
+
+void SkCanvas::onDrawDrawable(SkCanvasDrawable* dr) {
+    dr->draw(this);
+}
+
 //////////////////////////////////////////////////////////////////////////////
 // These methods are NOT virtual, and therefore must call back into virtual
 // methods, rather than actually drawing themselves.