Alter SkCanvas::drawPicture (devirtualize, take const SkPicture, take pointer)

R=reed@google.com, bsalomon@google.com, mtklein@google.com

Author: robertphillips@google.com

Review URL: https://codereview.chromium.org/313613004
diff --git a/src/utils/debugger/SkDrawCommand.cpp b/src/utils/debugger/SkDrawCommand.cpp
index 079961a..7c73cec 100644
--- a/src/utils/debugger/SkDrawCommand.cpp
+++ b/src/utils/debugger/SkDrawCommand.cpp
@@ -502,11 +502,11 @@
     return true;
 }
 
-SkDrawPictureCommand::SkDrawPictureCommand(SkPicture& picture)
+SkDrawPictureCommand::SkDrawPictureCommand(const SkPicture* picture)
     : INHERITED(DRAW_PICTURE)
-    , fPicture(picture) {
+    , fPicture(SkRef(picture)) {
     SkString* temp = new SkString;
-    temp->appendf("SkPicture: W: %d H: %d", picture.width(), picture.height());
+    temp->appendf("SkPicture: W: %d H: %d", picture->width(), picture->height());
     fInfo.push(temp);
 }
 
@@ -518,11 +518,11 @@
     canvas->clear(0xFFFFFFFF);
     canvas->save();
 
-    SkRect bounds = SkRect::MakeWH(SkIntToScalar(fPicture.width()),
-                                   SkIntToScalar(fPicture.height()));
+    SkRect bounds = SkRect::MakeWH(SkIntToScalar(fPicture->width()),
+                                   SkIntToScalar(fPicture->height()));
     xlate_and_scale_to_bounds(canvas, bounds);
 
-    canvas->drawPicture(const_cast<SkPicture&>(fPicture));
+    canvas->drawPicture(fPicture.get());
 
     canvas->restore();