support direct writing to top layer, and hide getTopLayer()

this should remove many of the chrome callers that today call
accessBitmap on the toplayer, so they can read/write those pixels.

The ultimate fix will be to support custom allocation of raster layers
(via GDI/cairo/mac) so we can remove PlatformDevice subclassing in
skia/ext

BUG=skia:
R=bsalomon@google.com, scroggo@google.com

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

git-svn-id: http://skia.googlecode.com/svn/trunk@13774 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/gm/beziereffects.cpp b/gm/beziereffects.cpp
index aebf6fb..e80853c 100644
--- a/gm/beziereffects.cpp
+++ b/gm/beziereffects.cpp
@@ -60,8 +60,7 @@
 
 
     virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
-        SkBaseDevice* device = canvas->getTopDevice();
-        GrRenderTarget* rt = device->accessRenderTarget();
+        GrRenderTarget* rt = canvas->internal_private_accessTopLayerRenderTarget();
         if (NULL == rt) {
             return;
         }
@@ -219,8 +218,7 @@
 
 
     virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
-        SkBaseDevice* device = canvas->getTopDevice();
-        GrRenderTarget* rt = device->accessRenderTarget();
+        GrRenderTarget* rt = canvas->internal_private_accessTopLayerRenderTarget();
         if (NULL == rt) {
             return;
         }
@@ -411,8 +409,7 @@
 
 
     virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
-        SkBaseDevice* device = canvas->getTopDevice();
-        GrRenderTarget* rt = device->accessRenderTarget();
+        GrRenderTarget* rt = canvas->internal_private_accessTopLayerRenderTarget();
         if (NULL == rt) {
             return;
         }
diff --git a/gm/convexpolyeffect.cpp b/gm/convexpolyeffect.cpp
index ac8ec72..4e79500 100644
--- a/gm/convexpolyeffect.cpp
+++ b/gm/convexpolyeffect.cpp
@@ -103,8 +103,7 @@
     }
 
     virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
-        SkBaseDevice* device = canvas->getTopDevice();
-        GrRenderTarget* rt = device->accessRenderTarget();
+        GrRenderTarget* rt = canvas->internal_private_accessTopLayerRenderTarget();
         if (NULL == rt) {
             return;
         }
diff --git a/gm/rrects.cpp b/gm/rrects.cpp
index a79ff54..6c63af9 100644
--- a/gm/rrects.cpp
+++ b/gm/rrects.cpp
@@ -66,12 +66,8 @@
 
     virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
 #if SK_SUPPORT_GPU
-        SkBaseDevice* device = canvas->getTopDevice();
-        GrContext* context = NULL;
-        GrRenderTarget* rt = device->accessRenderTarget();
-        if (NULL != rt) {
-            context = rt->getContext();
-        }
+        GrRenderTarget* rt = canvas->internal_private_accessTopLayerRenderTarget();
+        GrContext* context = rt ? rt->getContext() : NULL;
         if (kEffect_Type == fType && NULL == context) {
             return;
         }
diff --git a/gm/texdata.cpp b/gm/texdata.cpp
index a87684e..72735a1 100644
--- a/gm/texdata.cpp
+++ b/gm/texdata.cpp
@@ -14,7 +14,6 @@
 #include "GrContext.h"
 #include "effects/GrSimpleTextureEffect.h"
 #include "SkColorPriv.h"
-#include "SkDevice.h"
 
 namespace skiagm {
 
@@ -38,8 +37,7 @@
     virtual uint32_t onGetFlags() const SK_OVERRIDE { return kGPUOnly_Flag; }
 
     virtual void onDraw(SkCanvas* canvas) {
-        SkBaseDevice* device = canvas->getTopDevice();
-        GrRenderTarget* target = device->accessRenderTarget();
+        GrRenderTarget* target = canvas->internal_private_accessTopLayerRenderTarget();
         GrContext* ctx = canvas->getGrContext();
         if (ctx && target) {
             SkAutoTArray<SkPMColor> gTextureData((2 * S) * (2 * S));