Move layerTreeAsText to window.internals
https://bugs.webkit.org/show_bug.cgi?id=98690

Reviewed by James Robinson.

Add window.internals.layerTreeAsText(document), and change the tests to use it.
I'll remove testRunner.layerTreeAsText() in a later patch.

Source/WebCore:

* testing/Internals.cpp:
(WebCore::Internals::layerTreeAsText):
* testing/Internals.h:
(Internals):
* testing/Internals.idl:

LayoutTests:

* compositing/animation/animation-compositing.html:
* compositing/backing/no-backing-for-clip-overlap.html:
* compositing/backing/no-backing-for-clip.html:
* compositing/backing/no-backing-for-perspective.html:
* compositing/bounds-in-flipped-writing-mode.html:
* compositing/clip-child-by-non-stacking-ancestor.html:
* compositing/columns/composited-in-paginated.html:
* compositing/geometry/ancestor-overflow-change.html:
* compositing/geometry/bounds-clipped-composited-child.html:
* compositing/geometry/bounds-ignores-hidden-composited-descendant.html:
* compositing/geometry/bounds-ignores-hidden-dynamic-negzindex.html:
* compositing/geometry/bounds-ignores-hidden-dynamic.html:
* compositing/geometry/bounds-ignores-hidden.html:
* compositing/geometry/clip.html:
* compositing/geometry/composited-in-columns.html:
* compositing/geometry/fixed-position-composited-switch.html:
* compositing/geometry/flipped-writing-mode.html:
* compositing/geometry/foreground-layer.html:
* compositing/geometry/layer-due-to-layer-children-deep-switch.html:
* compositing/geometry/layer-due-to-layer-children-switch.html:
* compositing/geometry/limit-layer-bounds-clipping-ancestor.html:
* compositing/geometry/limit-layer-bounds-fixed-positioned.html:
* compositing/geometry/limit-layer-bounds-opacity-transition.html:
* compositing/geometry/limit-layer-bounds-overflow-root.html:
* compositing/geometry/limit-layer-bounds-positioned-transition.html:
* compositing/geometry/limit-layer-bounds-positioned.html:
* compositing/geometry/limit-layer-bounds-transformed-overflow.html:
* compositing/geometry/limit-layer-bounds-transformed.html:
* compositing/geometry/preserve-3d-switching.html:
* compositing/iframes/become-composited-nested-iframes.html:
* compositing/iframes/become-overlapped-iframe.html:
* compositing/iframes/composited-parent-iframe.html:
* compositing/iframes/connect-compositing-iframe-delayed.html:
* compositing/iframes/connect-compositing-iframe.html:
* compositing/iframes/connect-compositing-iframe2.html:
* compositing/iframes/connect-compositing-iframe3.html:
* compositing/iframes/enter-compositing-iframe.html:
* compositing/iframes/iframe-resize.html:
* compositing/iframes/iframe-size-from-zero.html:
* compositing/iframes/iframe-size-to-zero.html:
* compositing/iframes/iframe-src-change.html:
* compositing/iframes/invisible-nested-iframe-hide.html:
* compositing/iframes/invisible-nested-iframe-show.html:
* compositing/iframes/leave-compositing-iframe.html:
* compositing/iframes/overlapped-iframe-iframe.html:
* compositing/iframes/overlapped-iframe.html:
* compositing/iframes/overlapped-nested-iframes.html:
* compositing/iframes/page-cache-layer-tree.html:
* compositing/iframes/resizer.html:
* compositing/iframes/scrolling-iframe.html:
* compositing/images/clip-on-directly-composited-image.html:
* compositing/layer-creation/animation-overlap-with-children.html:
* compositing/layer-creation/fixed-position-and-transform.html:
* compositing/layer-creation/fixed-position-out-of-view.html:
* compositing/layer-creation/fixed-position-under-transform.html:
* compositing/layer-creation/no-compositing-for-preserve-3d.html:
* compositing/layer-creation/overflow-scroll-overlap.html:
* compositing/layer-creation/overlap-animation.html:
* compositing/layer-creation/overlap-child-layer.html:
* compositing/layer-creation/overlap-clipping.html:
* compositing/layer-creation/overlap-transformed-and-clipped.html:
* compositing/layer-creation/overlap-transformed-layer.html:
* compositing/layer-creation/overlap-transforms.html:
* compositing/layer-creation/rotate3d-overlap.html:
* compositing/layer-creation/scroll-partial-update.html:
* compositing/layer-creation/spanOverlapsCanvas.html:
* compositing/layer-creation/stacking-context-overlap-nested.html:
* compositing/layer-creation/stacking-context-overlap.html:
* compositing/layer-creation/translatez-overlap.html:
* compositing/overflow-trumps-transform-style.html:
* compositing/overflow/clip-descendents.html:
* compositing/overflow/content-gains-scrollbars.html:
* compositing/overflow/content-loses-scrollbars.html:
* compositing/overflow/overflow-auto-with-touch-no-overflow.html:
* compositing/overflow/overflow-auto-with-touch-toggle.html:
* compositing/overflow/overflow-auto-with-touch.html:
* compositing/overflow/overflow-hidden-with-touch.html:
* compositing/overflow/overflow-overlay-with-touch-no-overflow.html:
* compositing/overflow/overflow-overlay-with-touch.html:
* compositing/overflow/overflow-scroll-with-touch-no-overflow.html:
* compositing/overflow/overflow-scrollbar-layers.html:
* compositing/overflow/overflow-visible-with-touch.html:
* compositing/overflow/resize-painting.html:
* compositing/overflow/scrolling-content-clip-to-viewport.html:
* compositing/overflow/textarea-scroll-touch.html:
* compositing/plugins/1x1-composited-plugin.html:
* compositing/plugins/large-to-small-composited-plugin.html:
* compositing/plugins/no-backing-store.html:
* compositing/plugins/small-to-large-composited-plugin.html:
* compositing/rtl/rtl-absolute-overflow-scrolled.html:
* compositing/rtl/rtl-absolute-overflow.html:
* compositing/rtl/rtl-absolute.html:
* compositing/rtl/rtl-fixed-overflow-scrolled.html:
* compositing/rtl/rtl-fixed-overflow.html:
* compositing/rtl/rtl-fixed.html:
* compositing/rtl/rtl-iframe-absolute-overflow-scrolled.html:
* compositing/rtl/rtl-iframe-absolute-overflow.html:
* compositing/rtl/rtl-iframe-absolute.html:
* compositing/rtl/rtl-iframe-fixed-overflow-scrolled.html:
* compositing/rtl/rtl-iframe-fixed-overflow.html:
* compositing/rtl/rtl-iframe-fixed.html:
* compositing/rtl/rtl-iframe-relative.html:
* compositing/rtl/rtl-relative.html:
* compositing/tiled-layers-hidpi.html:
* compositing/tiling/crash-reparent-tiled-layer.html:
* compositing/tiling/huge-layer-add-remove-child.html-disabled:
* compositing/tiling/huge-layer-img.html-disabled:
* compositing/tiling/huge-layer-resize.html-disabled:
* compositing/tiling/huge-layer-with-layer-children-resize.html-disabled:
* compositing/tiling/huge-layer-with-layer-children.html-disabled:
* compositing/tiling/huge-layer.html-disabled:
* compositing/video/video-poster.html:
* compositing/visibility/layer-visible-content.html:
* compositing/visibility/visibility-image-layers-dynamic.html:
* css3/compositing/should-have-compositing-layer.html:
* css3/filters/composited-during-animation-layertree.html:
* css3/filters/composited-during-transition-layertree.html:
* css3/filters/filtered-compositing-descendant.html:
* css3/filters/should-not-have-compositing-layer.html:
* platform/chromium-android/compositing/layer-creation/overflow-scrolling-touch.html:
* platform/chromium/compositing/force-compositing-mode/force-composite-empty.html:
* platform/chromium/compositing/force-compositing-mode/no-overflow-iframe-layer.html:
* platform/chromium/compositing/force-compositing-mode/overflow-hidden-iframe-layer.html:
* platform/chromium/compositing/force-compositing-mode/overflow-iframe-enter-compositing.html:
* platform/chromium/compositing/force-compositing-mode/overflow-iframe-layer.html:
* platform/chromium/compositing/force-compositing-mode/overflow-iframe-leave-compositing.html:
* platform/mac/compositing/canvas/accelerated-canvas-compositing.html:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@130689 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index ed5af4b..d455ee8 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,141 @@
+2012-10-08  Simon Fraser  <simon.fraser@apple.com>
+
+        Move layerTreeAsText to window.internals
+        https://bugs.webkit.org/show_bug.cgi?id=98690
+
+        Reviewed by James Robinson.
+
+        Add window.internals.layerTreeAsText(document), and change the tests to use it.
+        I'll remove testRunner.layerTreeAsText() in a later patch.
+
+        * compositing/animation/animation-compositing.html:
+        * compositing/backing/no-backing-for-clip-overlap.html:
+        * compositing/backing/no-backing-for-clip.html:
+        * compositing/backing/no-backing-for-perspective.html:
+        * compositing/bounds-in-flipped-writing-mode.html:
+        * compositing/clip-child-by-non-stacking-ancestor.html:
+        * compositing/columns/composited-in-paginated.html:
+        * compositing/geometry/ancestor-overflow-change.html:
+        * compositing/geometry/bounds-clipped-composited-child.html:
+        * compositing/geometry/bounds-ignores-hidden-composited-descendant.html:
+        * compositing/geometry/bounds-ignores-hidden-dynamic-negzindex.html:
+        * compositing/geometry/bounds-ignores-hidden-dynamic.html:
+        * compositing/geometry/bounds-ignores-hidden.html:
+        * compositing/geometry/clip.html:
+        * compositing/geometry/composited-in-columns.html:
+        * compositing/geometry/fixed-position-composited-switch.html:
+        * compositing/geometry/flipped-writing-mode.html:
+        * compositing/geometry/foreground-layer.html:
+        * compositing/geometry/layer-due-to-layer-children-deep-switch.html:
+        * compositing/geometry/layer-due-to-layer-children-switch.html:
+        * compositing/geometry/limit-layer-bounds-clipping-ancestor.html:
+        * compositing/geometry/limit-layer-bounds-fixed-positioned.html:
+        * compositing/geometry/limit-layer-bounds-opacity-transition.html:
+        * compositing/geometry/limit-layer-bounds-overflow-root.html:
+        * compositing/geometry/limit-layer-bounds-positioned-transition.html:
+        * compositing/geometry/limit-layer-bounds-positioned.html:
+        * compositing/geometry/limit-layer-bounds-transformed-overflow.html:
+        * compositing/geometry/limit-layer-bounds-transformed.html:
+        * compositing/geometry/preserve-3d-switching.html:
+        * compositing/iframes/become-composited-nested-iframes.html:
+        * compositing/iframes/become-overlapped-iframe.html:
+        * compositing/iframes/composited-parent-iframe.html:
+        * compositing/iframes/connect-compositing-iframe-delayed.html:
+        * compositing/iframes/connect-compositing-iframe.html:
+        * compositing/iframes/connect-compositing-iframe2.html:
+        * compositing/iframes/connect-compositing-iframe3.html:
+        * compositing/iframes/enter-compositing-iframe.html:
+        * compositing/iframes/iframe-resize.html:
+        * compositing/iframes/iframe-size-from-zero.html:
+        * compositing/iframes/iframe-size-to-zero.html:
+        * compositing/iframes/iframe-src-change.html:
+        * compositing/iframes/invisible-nested-iframe-hide.html:
+        * compositing/iframes/invisible-nested-iframe-show.html:
+        * compositing/iframes/leave-compositing-iframe.html:
+        * compositing/iframes/overlapped-iframe-iframe.html:
+        * compositing/iframes/overlapped-iframe.html:
+        * compositing/iframes/overlapped-nested-iframes.html:
+        * compositing/iframes/page-cache-layer-tree.html:
+        * compositing/iframes/resizer.html:
+        * compositing/iframes/scrolling-iframe.html:
+        * compositing/images/clip-on-directly-composited-image.html:
+        * compositing/layer-creation/animation-overlap-with-children.html:
+        * compositing/layer-creation/fixed-position-and-transform.html:
+        * compositing/layer-creation/fixed-position-out-of-view.html:
+        * compositing/layer-creation/fixed-position-under-transform.html:
+        * compositing/layer-creation/no-compositing-for-preserve-3d.html:
+        * compositing/layer-creation/overflow-scroll-overlap.html:
+        * compositing/layer-creation/overlap-animation.html:
+        * compositing/layer-creation/overlap-child-layer.html:
+        * compositing/layer-creation/overlap-clipping.html:
+        * compositing/layer-creation/overlap-transformed-and-clipped.html:
+        * compositing/layer-creation/overlap-transformed-layer.html:
+        * compositing/layer-creation/overlap-transforms.html:
+        * compositing/layer-creation/rotate3d-overlap.html:
+        * compositing/layer-creation/scroll-partial-update.html:
+        * compositing/layer-creation/spanOverlapsCanvas.html:
+        * compositing/layer-creation/stacking-context-overlap-nested.html:
+        * compositing/layer-creation/stacking-context-overlap.html:
+        * compositing/layer-creation/translatez-overlap.html:
+        * compositing/overflow-trumps-transform-style.html:
+        * compositing/overflow/clip-descendents.html:
+        * compositing/overflow/content-gains-scrollbars.html:
+        * compositing/overflow/content-loses-scrollbars.html:
+        * compositing/overflow/overflow-auto-with-touch-no-overflow.html:
+        * compositing/overflow/overflow-auto-with-touch-toggle.html:
+        * compositing/overflow/overflow-auto-with-touch.html:
+        * compositing/overflow/overflow-hidden-with-touch.html:
+        * compositing/overflow/overflow-overlay-with-touch-no-overflow.html:
+        * compositing/overflow/overflow-overlay-with-touch.html:
+        * compositing/overflow/overflow-scroll-with-touch-no-overflow.html:
+        * compositing/overflow/overflow-scrollbar-layers.html:
+        * compositing/overflow/overflow-visible-with-touch.html:
+        * compositing/overflow/resize-painting.html:
+        * compositing/overflow/scrolling-content-clip-to-viewport.html:
+        * compositing/overflow/textarea-scroll-touch.html:
+        * compositing/plugins/1x1-composited-plugin.html:
+        * compositing/plugins/large-to-small-composited-plugin.html:
+        * compositing/plugins/no-backing-store.html:
+        * compositing/plugins/small-to-large-composited-plugin.html:
+        * compositing/rtl/rtl-absolute-overflow-scrolled.html:
+        * compositing/rtl/rtl-absolute-overflow.html:
+        * compositing/rtl/rtl-absolute.html:
+        * compositing/rtl/rtl-fixed-overflow-scrolled.html:
+        * compositing/rtl/rtl-fixed-overflow.html:
+        * compositing/rtl/rtl-fixed.html:
+        * compositing/rtl/rtl-iframe-absolute-overflow-scrolled.html:
+        * compositing/rtl/rtl-iframe-absolute-overflow.html:
+        * compositing/rtl/rtl-iframe-absolute.html:
+        * compositing/rtl/rtl-iframe-fixed-overflow-scrolled.html:
+        * compositing/rtl/rtl-iframe-fixed-overflow.html:
+        * compositing/rtl/rtl-iframe-fixed.html:
+        * compositing/rtl/rtl-iframe-relative.html:
+        * compositing/rtl/rtl-relative.html:
+        * compositing/tiled-layers-hidpi.html:
+        * compositing/tiling/crash-reparent-tiled-layer.html:
+        * compositing/tiling/huge-layer-add-remove-child.html-disabled:
+        * compositing/tiling/huge-layer-img.html-disabled:
+        * compositing/tiling/huge-layer-resize.html-disabled:
+        * compositing/tiling/huge-layer-with-layer-children-resize.html-disabled:
+        * compositing/tiling/huge-layer-with-layer-children.html-disabled:
+        * compositing/tiling/huge-layer.html-disabled:
+        * compositing/video/video-poster.html:
+        * compositing/visibility/layer-visible-content.html:
+        * compositing/visibility/visibility-image-layers-dynamic.html:
+        * css3/compositing/should-have-compositing-layer.html:
+        * css3/filters/composited-during-animation-layertree.html:
+        * css3/filters/composited-during-transition-layertree.html:
+        * css3/filters/filtered-compositing-descendant.html:
+        * css3/filters/should-not-have-compositing-layer.html:
+        * platform/chromium-android/compositing/layer-creation/overflow-scrolling-touch.html:
+        * platform/chromium/compositing/force-compositing-mode/force-composite-empty.html:
+        * platform/chromium/compositing/force-compositing-mode/no-overflow-iframe-layer.html:
+        * platform/chromium/compositing/force-compositing-mode/overflow-hidden-iframe-layer.html:
+        * platform/chromium/compositing/force-compositing-mode/overflow-iframe-enter-compositing.html:
+        * platform/chromium/compositing/force-compositing-mode/overflow-iframe-layer.html:
+        * platform/chromium/compositing/force-compositing-mode/overflow-iframe-leave-compositing.html:
+        * platform/mac/compositing/canvas/accelerated-canvas-compositing.html:
+
 2012-10-08  Hans Muller  <hmuller@adobe.com>
 
         [CSS Exclusions] Add support for polygonal shapes
diff --git a/LayoutTests/compositing/animation/animation-compositing.html b/LayoutTests/compositing/animation/animation-compositing.html
index d0270b9..29c8ab8 100644
--- a/LayoutTests/compositing/animation/animation-compositing.html
+++ b/LayoutTests/compositing/animation/animation-compositing.html
@@ -29,7 +29,7 @@
       var box = document.getElementById('box');
       box.addEventListener('webkitAnimationStart', function() {
         if (window.testRunner) {
-            var layers = testRunner.layerTreeAsText();
+            var layers = window.internals.layerTreeAsText(document);
             var result;
             if (layers != "")
               result = "PASS: created compositing layers when animating transform.";
diff --git a/LayoutTests/compositing/backing/no-backing-for-clip-overlap.html b/LayoutTests/compositing/backing/no-backing-for-clip-overlap.html
index 38a277c..711b783 100644
--- a/LayoutTests/compositing/backing/no-backing-for-clip-overlap.html
+++ b/LayoutTests/compositing/backing/no-backing-for-clip-overlap.html
@@ -35,7 +35,7 @@
   {
     var layersResult = document.getElementById('layers');
     if (window.testRunner)
-      layersResult.innerText = testRunner.layerTreeAsText();
+      layersResult.innerText = window.internals.layerTreeAsText(document);
     
   }
   window.addEventListener('load', dumpLayers, false)
diff --git a/LayoutTests/compositing/backing/no-backing-for-clip.html b/LayoutTests/compositing/backing/no-backing-for-clip.html
index b214d5c..ad2ed75 100644
--- a/LayoutTests/compositing/backing/no-backing-for-clip.html
+++ b/LayoutTests/compositing/backing/no-backing-for-clip.html
@@ -35,7 +35,7 @@
   {
     var layersResult = document.getElementById('layers');
     if (window.testRunner)
-      layersResult.innerText = testRunner.layerTreeAsText();
+      layersResult.innerText = window.internals.layerTreeAsText(document);
     
   }
   window.addEventListener('load', dumpLayers, false)
diff --git a/LayoutTests/compositing/backing/no-backing-for-perspective.html b/LayoutTests/compositing/backing/no-backing-for-perspective.html
index a5825ea..e75d71d 100644
--- a/LayoutTests/compositing/backing/no-backing-for-perspective.html
+++ b/LayoutTests/compositing/backing/no-backing-for-perspective.html
@@ -33,7 +33,7 @@
   {
     var layersResult = document.getElementById('layers');
     if (window.testRunner)
-      layersResult.innerText = testRunner.layerTreeAsText();
+      layersResult.innerText = window.internals.layerTreeAsText(document);
     
   }
   window.addEventListener('load', dumpLayers, false)
diff --git a/LayoutTests/compositing/bounds-in-flipped-writing-mode.html b/LayoutTests/compositing/bounds-in-flipped-writing-mode.html
index 170e018..4bae48f 100644
--- a/LayoutTests/compositing/bounds-in-flipped-writing-mode.html
+++ b/LayoutTests/compositing/bounds-in-flipped-writing-mode.html
@@ -7,7 +7,7 @@
     <script>
         if (window.testRunner) {
             testRunner.dumpAsText();
-            document.getElementById("console").appendChild(document.createTextNode(testRunner.layerTreeAsText()));
+            document.getElementById("console").appendChild(document.createTextNode(window.internals.layerTreeAsText(document)));
         }
     </script>
 </body>
diff --git a/LayoutTests/compositing/clip-child-by-non-stacking-ancestor.html b/LayoutTests/compositing/clip-child-by-non-stacking-ancestor.html
index 5bacc5e..edbfd5d 100644
--- a/LayoutTests/compositing/clip-child-by-non-stacking-ancestor.html
+++ b/LayoutTests/compositing/clip-child-by-non-stacking-ancestor.html
@@ -40,7 +40,7 @@
     function doTest()
     {
         if (window.testRunner) {
-            document.getElementById('layertree').innerText = testRunner.layerTreeAsText();
+            document.getElementById('layertree').innerText = window.internals.layerTreeAsText(document);
             testRunner.notifyDone();
         }
     }
diff --git a/LayoutTests/compositing/columns/composited-in-paginated.html b/LayoutTests/compositing/columns/composited-in-paginated.html
index f7ba8f5..dd208aa 100644
--- a/LayoutTests/compositing/columns/composited-in-paginated.html
+++ b/LayoutTests/compositing/columns/composited-in-paginated.html
@@ -10,7 +10,7 @@
         function dumpLayers()
         {
             if (window.testRunner)
-                document.getElementById('layers').innerText = testRunner.layerTreeAsText();
+                document.getElementById('layers').innerText = window.internals.layerTreeAsText(document);
         }
         window.addEventListener('load', dumpLayers, false);
     </script>
diff --git a/LayoutTests/compositing/geometry/ancestor-overflow-change.html b/LayoutTests/compositing/geometry/ancestor-overflow-change.html
index aa86609..e3a50e0 100644
--- a/LayoutTests/compositing/geometry/ancestor-overflow-change.html
+++ b/LayoutTests/compositing/geometry/ancestor-overflow-change.html
@@ -45,7 +45,7 @@
       document.getElementById('container').className = 'changed';
 
       if (window.testRunner)
-        document.getElementById('layers').innerText = testRunner.layerTreeAsText();
+        document.getElementById('layers').innerText = window.internals.layerTreeAsText(document);
       
       if (window.testRunner)
         testRunner.notifyDone();
diff --git a/LayoutTests/compositing/geometry/bounds-clipped-composited-child.html b/LayoutTests/compositing/geometry/bounds-clipped-composited-child.html
index 665abb9..becbba9 100644
--- a/LayoutTests/compositing/geometry/bounds-clipped-composited-child.html
+++ b/LayoutTests/compositing/geometry/bounds-clipped-composited-child.html
@@ -42,7 +42,7 @@
     function dumpLayers()
     {
       if (window.testRunner)
-        document.getElementById('layers').innerText = testRunner.layerTreeAsText();
+        document.getElementById('layers').innerText = window.internals.layerTreeAsText(document);
     }
 
     window.addEventListener('load', dumpLayers, false);
diff --git a/LayoutTests/compositing/geometry/bounds-ignores-hidden-composited-descendant.html b/LayoutTests/compositing/geometry/bounds-ignores-hidden-composited-descendant.html
index a95c9ab..20c6596 100644
--- a/LayoutTests/compositing/geometry/bounds-ignores-hidden-composited-descendant.html
+++ b/LayoutTests/compositing/geometry/bounds-ignores-hidden-composited-descendant.html
@@ -31,7 +31,7 @@
     function dumpLayers()
     {
         if (window.testRunner) {
-            document.getElementById('layers').innerText = window.testRunner.layerTreeAsText();
+            document.getElementById('layers').innerText = window.internals.layerTreeAsText(document);
         }
     }
     window.addEventListener('load', dumpLayers, false);
diff --git a/LayoutTests/compositing/geometry/bounds-ignores-hidden-dynamic-negzindex.html b/LayoutTests/compositing/geometry/bounds-ignores-hidden-dynamic-negzindex.html
index 9acee7d..3b0bfba 100644
--- a/LayoutTests/compositing/geometry/bounds-ignores-hidden-dynamic-negzindex.html
+++ b/LayoutTests/compositing/geometry/bounds-ignores-hidden-dynamic-negzindex.html
@@ -65,7 +65,7 @@
         window.setTimeout(function() {
             document.body.classList.add('changed');
             if (window.testRunner) {
-                document.getElementById('layers').innerText = testRunner.layerTreeAsText();
+                document.getElementById('layers').innerText = window.internals.layerTreeAsText(document);
                 testRunner.notifyDone();
             }
         }, 0);
diff --git a/LayoutTests/compositing/geometry/bounds-ignores-hidden-dynamic.html b/LayoutTests/compositing/geometry/bounds-ignores-hidden-dynamic.html
index 2a2ceb4..76fd2c4 100644
--- a/LayoutTests/compositing/geometry/bounds-ignores-hidden-dynamic.html
+++ b/LayoutTests/compositing/geometry/bounds-ignores-hidden-dynamic.html
@@ -44,7 +44,7 @@
         window.setTimeout(function() {
             document.body.classList.add('changed');
             if (window.testRunner) {
-                document.getElementById('layers').innerText = testRunner.layerTreeAsText();
+                document.getElementById('layers').innerText = window.internals.layerTreeAsText(document);
                 testRunner.notifyDone();
             }
         }, 0);
diff --git a/LayoutTests/compositing/geometry/bounds-ignores-hidden.html b/LayoutTests/compositing/geometry/bounds-ignores-hidden.html
index 52f11ad..605c610 100644
--- a/LayoutTests/compositing/geometry/bounds-ignores-hidden.html
+++ b/LayoutTests/compositing/geometry/bounds-ignores-hidden.html
@@ -16,7 +16,7 @@
     function dumpLayers()
     {
         if (window.testRunner) {
-            document.getElementById('layers').innerText = window.testRunner.layerTreeAsText();
+            document.getElementById('layers').innerText = window.internals.layerTreeAsText(document);
         }
     }
     window.addEventListener('load', dumpLayers, false);
diff --git a/LayoutTests/compositing/geometry/clip.html b/LayoutTests/compositing/geometry/clip.html
index 32fd41f..4732e1b 100644
--- a/LayoutTests/compositing/geometry/clip.html
+++ b/LayoutTests/compositing/geometry/clip.html
@@ -39,7 +39,7 @@
       
     function doTest() {
       if (window.testRunner) {
-        document.getElementById('layers').innerText = testRunner.layerTreeAsText();
+        document.getElementById('layers').innerText = window.internals.layerTreeAsText(document);
         testRunner.notifyDone();
       }
     }
diff --git a/LayoutTests/compositing/geometry/composited-in-columns.html b/LayoutTests/compositing/geometry/composited-in-columns.html
index f6721de..0fee93f 100644
--- a/LayoutTests/compositing/geometry/composited-in-columns.html
+++ b/LayoutTests/compositing/geometry/composited-in-columns.html
@@ -43,7 +43,7 @@
     function dumpLayers()
     {
       if (window.testRunner)
-        document.getElementById('layers').innerText = testRunner.layerTreeAsText();
+        document.getElementById('layers').innerText = window.internals.layerTreeAsText(document);
     }
     
     window.addEventListener('load', dumpLayers, false);
diff --git a/LayoutTests/compositing/geometry/fixed-position-composited-switch.html b/LayoutTests/compositing/geometry/fixed-position-composited-switch.html
index 35fcf85..ec26abb 100644
--- a/LayoutTests/compositing/geometry/fixed-position-composited-switch.html
+++ b/LayoutTests/compositing/geometry/fixed-position-composited-switch.html
@@ -28,14 +28,14 @@
       // If the fixed position element doesn't have its own stacking context then
       // it cannot get a composited layer.
       if (window.testRunner)
-        layerTreeOutput += 'Before (should be empty): \n' + testRunner.layerTreeAsText() + '\n';
+        layerTreeOutput += 'Before (should be empty): \n' + window.internals.layerTreeAsText(document) + '\n';
 
       // Adding a z-index to the fixed position element will give it a stacking context
       // and allow it to be composited.
       document.getElementById('fixed').style.zIndex = '1';
 
       if (window.testRunner) {
-        layerTreeOutput += 'After (should not be empty): \n' + testRunner.layerTreeAsText();
+        layerTreeOutput += 'After (should not be empty): \n' + window.internals.layerTreeAsText(document);
         document.getElementById('layertree').innerText = layerTreeOutput;
         testRunner.dumpAsText();
       }
@@ -43,7 +43,7 @@
       // Adding a transform to the container will turn off compositing.
       document.getElementById('container').style.webkitTransform = 'translateX(0)';
       if (window.testRunner) {
-        layerTreeOutput += 'After (should be empty): \n' + testRunner.layerTreeAsText();
+        layerTreeOutput += 'After (should be empty): \n' + window.internals.layerTreeAsText(document);
         document.getElementById('layertree').innerText = layerTreeOutput;
         testRunner.dumpAsText();
       }
diff --git a/LayoutTests/compositing/geometry/flipped-writing-mode.html b/LayoutTests/compositing/geometry/flipped-writing-mode.html
index 22e9458..18cc7a6 100644
--- a/LayoutTests/compositing/geometry/flipped-writing-mode.html
+++ b/LayoutTests/compositing/geometry/flipped-writing-mode.html
@@ -43,7 +43,7 @@
     function dumpLayers()
     {
       if (window.testRunner)
-        document.getElementById('layers').innerText = testRunner.layerTreeAsText();
+        document.getElementById('layers').innerText = window.internals.layerTreeAsText(document);
     }
     
     window.addEventListener('load', dumpLayers, false);
diff --git a/LayoutTests/compositing/geometry/foreground-layer.html b/LayoutTests/compositing/geometry/foreground-layer.html
index 8f6923f..38768a0 100644
--- a/LayoutTests/compositing/geometry/foreground-layer.html
+++ b/LayoutTests/compositing/geometry/foreground-layer.html
@@ -62,7 +62,7 @@
     function dumpLayerTree()
     {
       if (window.testRunner)
-        document.getElementById('layer-tree').innerText = testRunner.layerTreeAsText();
+        document.getElementById('layer-tree').innerText = window.internals.layerTreeAsText(document);
     }
     
     window.addEventListener('load', dumpLayerTree, false);
diff --git a/LayoutTests/compositing/geometry/layer-due-to-layer-children-deep-switch.html b/LayoutTests/compositing/geometry/layer-due-to-layer-children-deep-switch.html
index e92f444..cd52501 100644
--- a/LayoutTests/compositing/geometry/layer-due-to-layer-children-deep-switch.html
+++ b/LayoutTests/compositing/geometry/layer-due-to-layer-children-deep-switch.html
@@ -55,7 +55,7 @@
         setTimeout(function() {
             if (window.testRunner) {
                 text += "\n" + which + " dump layer tree:\n";
-                text += testRunner.layerTreeAsText();
+                text += window.internals.layerTreeAsText(document);
                 document.getElementById('layers').innerText = text;
             }
         }, 0);
diff --git a/LayoutTests/compositing/geometry/layer-due-to-layer-children-switch.html b/LayoutTests/compositing/geometry/layer-due-to-layer-children-switch.html
index 8d6a439..8a6552c 100644
--- a/LayoutTests/compositing/geometry/layer-due-to-layer-children-switch.html
+++ b/LayoutTests/compositing/geometry/layer-due-to-layer-children-switch.html
@@ -36,7 +36,7 @@
         setTimeout(function() {
             if (window.testRunner) {
                 text += "\n" + which + " dump layer tree:\n";
-                text += testRunner.layerTreeAsText();
+                text += window.internals.layerTreeAsText(document);
                 document.getElementById('layers').innerText = text;
             }
         }, 0);
diff --git a/LayoutTests/compositing/geometry/limit-layer-bounds-clipping-ancestor.html b/LayoutTests/compositing/geometry/limit-layer-bounds-clipping-ancestor.html
index c7afafe..915b3ca 100644
--- a/LayoutTests/compositing/geometry/limit-layer-bounds-clipping-ancestor.html
+++ b/LayoutTests/compositing/geometry/limit-layer-bounds-clipping-ancestor.html
@@ -58,7 +58,7 @@
         scrollables[i].scrollTop = 100;
 
       if (window.testRunner) {
-        document.getElementById('layers').innerText = testRunner.layerTreeAsText();
+        document.getElementById('layers').innerText = window.internals.layerTreeAsText(document);
         testRunner.notifyDone();
       }
     }
diff --git a/LayoutTests/compositing/geometry/limit-layer-bounds-fixed-positioned.html b/LayoutTests/compositing/geometry/limit-layer-bounds-fixed-positioned.html
index 18a9f2c..dec15b1 100644
--- a/LayoutTests/compositing/geometry/limit-layer-bounds-fixed-positioned.html
+++ b/LayoutTests/compositing/geometry/limit-layer-bounds-fixed-positioned.html
@@ -52,7 +52,7 @@
       window.scrollBy(0, 100);
 
       if (window.testRunner) {
-        document.getElementById('layers').innerText = testRunner.layerTreeAsText();
+        document.getElementById('layers').innerText = window.internals.layerTreeAsText(document);
         testRunner.notifyDone();
       }
     }
diff --git a/LayoutTests/compositing/geometry/limit-layer-bounds-opacity-transition.html b/LayoutTests/compositing/geometry/limit-layer-bounds-opacity-transition.html
index e0c09ae..672bcd7 100644
--- a/LayoutTests/compositing/geometry/limit-layer-bounds-opacity-transition.html
+++ b/LayoutTests/compositing/geometry/limit-layer-bounds-opacity-transition.html
@@ -34,7 +34,7 @@
     function fadeDone()
     {
       if (window.testRunner) {
-        document.getElementById('layers').innerText = testRunner.layerTreeAsText();
+        document.getElementById('layers').innerText = window.internals.layerTreeAsText(document);
         testRunner.notifyDone();
       }
     }
diff --git a/LayoutTests/compositing/geometry/limit-layer-bounds-overflow-root.html b/LayoutTests/compositing/geometry/limit-layer-bounds-overflow-root.html
index 4e3edf8..02e55c4 100644
--- a/LayoutTests/compositing/geometry/limit-layer-bounds-overflow-root.html
+++ b/LayoutTests/compositing/geometry/limit-layer-bounds-overflow-root.html
@@ -54,7 +54,7 @@
     function doTest()
     {
       if (window.testRunner) {
-        document.getElementById('layers').innerText = testRunner.layerTreeAsText();
+        document.getElementById('layers').innerText = window.internals.layerTreeAsText(document);
         testRunner.notifyDone();
       }
     }
diff --git a/LayoutTests/compositing/geometry/limit-layer-bounds-positioned-transition.html b/LayoutTests/compositing/geometry/limit-layer-bounds-positioned-transition.html
index a5b9a8e..9d642b1 100644
--- a/LayoutTests/compositing/geometry/limit-layer-bounds-positioned-transition.html
+++ b/LayoutTests/compositing/geometry/limit-layer-bounds-positioned-transition.html
@@ -54,7 +54,7 @@
     {
       document.getElementById('far-left').className = 'moved';
       if (window.testRunner) {
-        document.getElementById('layers').innerText = testRunner.layerTreeAsText();
+        document.getElementById('layers').innerText = window.internals.layerTreeAsText(document);
         testRunner.notifyDone();
       }
     }
diff --git a/LayoutTests/compositing/geometry/limit-layer-bounds-positioned.html b/LayoutTests/compositing/geometry/limit-layer-bounds-positioned.html
index e725196..539b267 100644
--- a/LayoutTests/compositing/geometry/limit-layer-bounds-positioned.html
+++ b/LayoutTests/compositing/geometry/limit-layer-bounds-positioned.html
@@ -49,7 +49,7 @@
     function doTest()
     {
       if (window.testRunner) {
-        document.getElementById('layers').innerText = testRunner.layerTreeAsText();
+        document.getElementById('layers').innerText = window.internals.layerTreeAsText(document);
         testRunner.notifyDone();
       }
     }
diff --git a/LayoutTests/compositing/geometry/limit-layer-bounds-transformed-overflow.html b/LayoutTests/compositing/geometry/limit-layer-bounds-transformed-overflow.html
index cf43aab..7b52dac 100644
--- a/LayoutTests/compositing/geometry/limit-layer-bounds-transformed-overflow.html
+++ b/LayoutTests/compositing/geometry/limit-layer-bounds-transformed-overflow.html
@@ -57,7 +57,7 @@
       if (window.testRunner) {
         // We need to call display() here to sync the compositor state and avoid a race condition.
         testRunner.display();
-        document.getElementById('layers').innerText = testRunner.layerTreeAsText();
+        document.getElementById('layers').innerText = window.internals.layerTreeAsText(document);
         testRunner.notifyDone();
       }
     }
diff --git a/LayoutTests/compositing/geometry/limit-layer-bounds-transformed.html b/LayoutTests/compositing/geometry/limit-layer-bounds-transformed.html
index 75cd2d2..765a9f4 100644
--- a/LayoutTests/compositing/geometry/limit-layer-bounds-transformed.html
+++ b/LayoutTests/compositing/geometry/limit-layer-bounds-transformed.html
@@ -50,7 +50,7 @@
     function doTest()
     {
       if (window.testRunner) {
-        document.getElementById('layers').innerText = testRunner.layerTreeAsText();
+        document.getElementById('layers').innerText = window.internals.layerTreeAsText(document);
         testRunner.notifyDone();
       }
     }
diff --git a/LayoutTests/compositing/geometry/preserve-3d-switching.html b/LayoutTests/compositing/geometry/preserve-3d-switching.html
index 1474829..9051d8f 100644
--- a/LayoutTests/compositing/geometry/preserve-3d-switching.html
+++ b/LayoutTests/compositing/geometry/preserve-3d-switching.html
@@ -61,7 +61,7 @@
                 document.getElementById("parent").style.webkitTransformStyle = "preserve-3d";
                 if (window.testRunner) {
                     if (testRunner.layerTreeAsText) {
-                        var layerTree = testRunner.layerTreeAsText();
+                        var layerTree = window.internals.layerTreeAsText(document);
                         document.getElementById("layerTree").innerHTML = "<pre>" + layerTree + "</pre>";
                     }
                     testRunner.notifyDone();
diff --git a/LayoutTests/compositing/iframes/become-composited-nested-iframes.html b/LayoutTests/compositing/iframes/become-composited-nested-iframes.html
index 2768368..955be8c 100644
--- a/LayoutTests/compositing/iframes/become-composited-nested-iframes.html
+++ b/LayoutTests/compositing/iframes/become-composited-nested-iframes.html
@@ -38,7 +38,7 @@
           document.getElementById('box').className = 'composited';
           if (window.testRunner) {
               testRunner.display();
-              document.getElementById('layers').innerHTML = testRunner.layerTreeAsText();
+              document.getElementById('layers').innerHTML = window.internals.layerTreeAsText(document);
               testRunner.notifyDone();
           }
         }, 20);
diff --git a/LayoutTests/compositing/iframes/become-overlapped-iframe.html b/LayoutTests/compositing/iframes/become-overlapped-iframe.html
index f487607..4c00fdc 100644
--- a/LayoutTests/compositing/iframes/become-overlapped-iframe.html
+++ b/LayoutTests/compositing/iframes/become-overlapped-iframe.html
@@ -38,7 +38,7 @@
           document.getElementById('overlay').style.height = '150px';
             if (window.testRunner) {
                 testRunner.display(); // Painting has to happen to detect overlap.
-                document.getElementById('layers').innerHTML = testRunner.layerTreeAsText();
+                document.getElementById('layers').innerHTML = window.internals.layerTreeAsText(document);
                 testRunner.notifyDone();
             }
         }, 0);
diff --git a/LayoutTests/compositing/iframes/composited-parent-iframe.html b/LayoutTests/compositing/iframes/composited-parent-iframe.html
index da6196c..5c634e2 100644
--- a/LayoutTests/compositing/iframes/composited-parent-iframe.html
+++ b/LayoutTests/compositing/iframes/composited-parent-iframe.html
@@ -21,7 +21,7 @@
     function doTest()
     {
         if (window.testRunner) {
-            document.getElementById('layers').innerHTML = testRunner.layerTreeAsText();
+            document.getElementById('layers').innerHTML = window.internals.layerTreeAsText(document);
             testRunner.notifyDone();
         }
     }
diff --git a/LayoutTests/compositing/iframes/connect-compositing-iframe-delayed.html b/LayoutTests/compositing/iframes/connect-compositing-iframe-delayed.html
index e57db00..8b7af7a 100644
--- a/LayoutTests/compositing/iframes/connect-compositing-iframe-delayed.html
+++ b/LayoutTests/compositing/iframes/connect-compositing-iframe-delayed.html
@@ -37,7 +37,7 @@
         document.getElementById('box').className = 'composited';
         if (window.testRunner) {
           document.getElementById('iframe').contentDocument.body.offsetWidth; // update iframe layout
-          document.getElementById('layers').innerText = testRunner.layerTreeAsText();
+          document.getElementById('layers').innerText = window.internals.layerTreeAsText(document);
           testRunner.notifyDone();
         }
     }
diff --git a/LayoutTests/compositing/iframes/connect-compositing-iframe.html b/LayoutTests/compositing/iframes/connect-compositing-iframe.html
index 283f128..a2ec8cf 100644
--- a/LayoutTests/compositing/iframes/connect-compositing-iframe.html
+++ b/LayoutTests/compositing/iframes/connect-compositing-iframe.html
@@ -38,7 +38,7 @@
         testRunner.display();
 
       if (window.testRunner) {
-        document.getElementById('layers').innerText = testRunner.layerTreeAsText();
+        document.getElementById('layers').innerText = window.internals.layerTreeAsText(document);
         testRunner.notifyDone();
       }
     }
diff --git a/LayoutTests/compositing/iframes/connect-compositing-iframe2.html b/LayoutTests/compositing/iframes/connect-compositing-iframe2.html
index 02352e5..40f841f 100644
--- a/LayoutTests/compositing/iframes/connect-compositing-iframe2.html
+++ b/LayoutTests/compositing/iframes/connect-compositing-iframe2.html
@@ -37,7 +37,7 @@
       document.getElementById('iframe').className = 'composited';
 
       if (window.testRunner) {
-        document.getElementById('layers').innerText = testRunner.layerTreeAsText();
+        document.getElementById('layers').innerText = window.internals.layerTreeAsText(document);
         testRunner.notifyDone();
       }
     }
diff --git a/LayoutTests/compositing/iframes/connect-compositing-iframe3.html b/LayoutTests/compositing/iframes/connect-compositing-iframe3.html
index 8445556..59f8ae1 100644
--- a/LayoutTests/compositing/iframes/connect-compositing-iframe3.html
+++ b/LayoutTests/compositing/iframes/connect-compositing-iframe3.html
@@ -31,7 +31,7 @@
       document.getElementById('iframe').className = 'composited';
 
       if (window.testRunner) {
-        document.getElementById('layers').innerText = testRunner.layerTreeAsText();
+        document.getElementById('layers').innerText = window.internals.layerTreeAsText(document);
         testRunner.notifyDone();
       }
     }
diff --git a/LayoutTests/compositing/iframes/enter-compositing-iframe.html b/LayoutTests/compositing/iframes/enter-compositing-iframe.html
index d898f55..db4432f 100644
--- a/LayoutTests/compositing/iframes/enter-compositing-iframe.html
+++ b/LayoutTests/compositing/iframes/enter-compositing-iframe.html
@@ -34,7 +34,7 @@
       document.getElementById('parent-iframe').contentDocument.body.offsetWidth; // work around bug 41999.
       if (window.testRunner) {
         testRunner.display();
-        document.getElementById('layers').innerText = testRunner.layerTreeAsText();
+        document.getElementById('layers').innerText = window.internals.layerTreeAsText(document);
         testRunner.notifyDone();
       }
     }
diff --git a/LayoutTests/compositing/iframes/iframe-resize.html b/LayoutTests/compositing/iframes/iframe-resize.html
index c00fb63..084ab5c 100644
--- a/LayoutTests/compositing/iframes/iframe-resize.html
+++ b/LayoutTests/compositing/iframes/iframe-resize.html
@@ -43,7 +43,7 @@
             document.getElementById('parent-iframe').className = 'bigger';
             if (window.testRunner) {
                 testRunner.display();
-                document.getElementById('layers').innerHTML = testRunner.layerTreeAsText();
+                document.getElementById('layers').innerHTML = window.internals.layerTreeAsText(document);
                 testRunner.notifyDone();
             }
         }, 0);
diff --git a/LayoutTests/compositing/iframes/iframe-size-from-zero.html b/LayoutTests/compositing/iframes/iframe-size-from-zero.html
index 15f15ea..1bb111d 100644
--- a/LayoutTests/compositing/iframes/iframe-size-from-zero.html
+++ b/LayoutTests/compositing/iframes/iframe-size-from-zero.html
@@ -38,7 +38,7 @@
             // Need to wait for compositing layers to be updated.
             window.setTimeout(function() {
                 if (window.testRunner) {
-                    document.getElementById('layers').innerHTML = testRunner.layerTreeAsText();
+                    document.getElementById('layers').innerHTML = window.internals.layerTreeAsText(document);
                     testRunner.notifyDone();
                 }
             }, 0);
diff --git a/LayoutTests/compositing/iframes/iframe-size-to-zero.html b/LayoutTests/compositing/iframes/iframe-size-to-zero.html
index dcfd2d8..41a0b42 100644
--- a/LayoutTests/compositing/iframes/iframe-size-to-zero.html
+++ b/LayoutTests/compositing/iframes/iframe-size-to-zero.html
@@ -40,7 +40,7 @@
 
             var hadLayers = false;
             if (window.testRunner) {
-                var layers = testRunner.layerTreeAsText();
+                var layers = window.internals.layerTreeAsText(document);
                 hadLayers = layers != "";
             }
 
@@ -49,7 +49,7 @@
             if (window.testRunner) {
 
                 testRunner.display();
-                var haveLayers = testRunner.layerTreeAsText() != "";
+                var haveLayers = window.internals.layerTreeAsText(document) != "";
                 var result;
                 if (hadLayers && !haveLayers)
                   result = "PASS: had layers, and now do not";
diff --git a/LayoutTests/compositing/iframes/iframe-src-change.html b/LayoutTests/compositing/iframes/iframe-src-change.html
index e019285..23caad3 100644
--- a/LayoutTests/compositing/iframes/iframe-src-change.html
+++ b/LayoutTests/compositing/iframes/iframe-src-change.html
@@ -36,14 +36,14 @@
             var hadLayersAfter = false;
             if (window.testRunner) {
                 testRunner.display(); // Need to paint for overlap testing.
-                hadLayersBefore = testRunner.layerTreeAsText() != "";
+                hadLayersBefore = window.internals.layerTreeAsText(document) != "";
             }
 
             document.getElementById('parent-iframe').src = "about:blank";
             
             window.setTimeout(function() {
                 if (window.testRunner) {
-                    hadLayersAfter = testRunner.layerTreeAsText() != "";
+                    hadLayersAfter = window.internals.layerTreeAsText(document) != "";
 
                     var results = document.getElementById('results');
                     if (hadLayersBefore && !hadLayersAfter)
diff --git a/LayoutTests/compositing/iframes/invisible-nested-iframe-hide.html b/LayoutTests/compositing/iframes/invisible-nested-iframe-hide.html
index c048769..bef0477 100644
--- a/LayoutTests/compositing/iframes/invisible-nested-iframe-hide.html
+++ b/LayoutTests/compositing/iframes/invisible-nested-iframe-hide.html
@@ -37,7 +37,7 @@
         div.style.cssText = "display:none;";
         if (window.testRunner) {
           testRunner.display();
-          document.getElementById('layers').innerHTML = testRunner.layerTreeAsText();
+          document.getElementById('layers').innerHTML = window.internals.layerTreeAsText(document);
           testRunner.notifyDone();
         }
       }, 0)
diff --git a/LayoutTests/compositing/iframes/invisible-nested-iframe-show.html b/LayoutTests/compositing/iframes/invisible-nested-iframe-show.html
index adb9b1b..6137fce 100644
--- a/LayoutTests/compositing/iframes/invisible-nested-iframe-show.html
+++ b/LayoutTests/compositing/iframes/invisible-nested-iframe-show.html
@@ -37,7 +37,7 @@
         div.style.cssText = "";
         if (window.testRunner) {
           testRunner.display();
-          document.getElementById('layers').innerHTML = testRunner.layerTreeAsText();
+          document.getElementById('layers').innerHTML = window.internals.layerTreeAsText(document);
           testRunner.notifyDone();
         }
       }, 0)
diff --git a/LayoutTests/compositing/iframes/leave-compositing-iframe.html b/LayoutTests/compositing/iframes/leave-compositing-iframe.html
index 0347fe0..04baafc 100644
--- a/LayoutTests/compositing/iframes/leave-compositing-iframe.html
+++ b/LayoutTests/compositing/iframes/leave-compositing-iframe.html
@@ -36,7 +36,7 @@
         testRunner.display();
 
       if (window.testRunner) {
-        document.getElementById('layers').innerText = testRunner.layerTreeAsText();
+        document.getElementById('layers').innerText = window.internals.layerTreeAsText(document);
         testRunner.notifyDone();
       }
     }
diff --git a/LayoutTests/compositing/iframes/overlapped-iframe-iframe.html b/LayoutTests/compositing/iframes/overlapped-iframe-iframe.html
index e184980..810a3dc 100644
--- a/LayoutTests/compositing/iframes/overlapped-iframe-iframe.html
+++ b/LayoutTests/compositing/iframes/overlapped-iframe-iframe.html
@@ -36,7 +36,7 @@
         window.setTimeout(function() {
             if (window.testRunner) {
                 testRunner.display();
-                document.getElementById('layers').innerHTML = testRunner.layerTreeAsText();
+                document.getElementById('layers').innerHTML = window.internals.layerTreeAsText(document);
                 testRunner.notifyDone();
             }
         }, 0);
diff --git a/LayoutTests/compositing/iframes/overlapped-iframe.html b/LayoutTests/compositing/iframes/overlapped-iframe.html
index dd07617..870e3ed 100644
--- a/LayoutTests/compositing/iframes/overlapped-iframe.html
+++ b/LayoutTests/compositing/iframes/overlapped-iframe.html
@@ -34,7 +34,7 @@
         window.setTimeout(function() {
           if (window.testRunner) {
               testRunner.display();
-              document.getElementById('layers').innerHTML = testRunner.layerTreeAsText();
+              document.getElementById('layers').innerHTML = window.internals.layerTreeAsText(document);
               testRunner.notifyDone();
           }
         }, 0);
diff --git a/LayoutTests/compositing/iframes/overlapped-nested-iframes.html b/LayoutTests/compositing/iframes/overlapped-nested-iframes.html
index de03342..0d84b27 100644
--- a/LayoutTests/compositing/iframes/overlapped-nested-iframes.html
+++ b/LayoutTests/compositing/iframes/overlapped-nested-iframes.html
@@ -37,7 +37,7 @@
             testRunner.display();
           window.setTimeout(function() {
             if (window.testRunner) {
-                document.getElementById('layers').innerHTML = testRunner.layerTreeAsText();
+                document.getElementById('layers').innerHTML = window.internals.layerTreeAsText(document);
                 testRunner.notifyDone();
             }
           }, 0);
diff --git a/LayoutTests/compositing/iframes/page-cache-layer-tree.html b/LayoutTests/compositing/iframes/page-cache-layer-tree.html
index 5cfe091..826cc06 100644
--- a/LayoutTests/compositing/iframes/page-cache-layer-tree.html
+++ b/LayoutTests/compositing/iframes/page-cache-layer-tree.html
@@ -54,7 +54,7 @@
 
     function finishTest() {
         var output = document.getElementById("output");
-        output.innerText = testRunner.layerTreeAsText();
+        output.innerText = window.internals.layerTreeAsText(document);
 
         if (window.testRunner)
             window.testRunner.notifyDone();        
diff --git a/LayoutTests/compositing/iframes/resizer.html b/LayoutTests/compositing/iframes/resizer.html
index e97466e..ebf7b4d 100644
--- a/LayoutTests/compositing/iframes/resizer.html
+++ b/LayoutTests/compositing/iframes/resizer.html
@@ -9,7 +9,7 @@
 function test() {
     if (window.testRunner) {
         testRunner.dumpAsText();
-        document.getElementById('layers').innerHTML = testRunner.layerTreeAsText();
+        document.getElementById('layers').innerHTML = window.internals.layerTreeAsText(document);
     }
 }
 </script>
diff --git a/LayoutTests/compositing/iframes/scrolling-iframe.html b/LayoutTests/compositing/iframes/scrolling-iframe.html
index 11c87da..8a33c14 100644
--- a/LayoutTests/compositing/iframes/scrolling-iframe.html
+++ b/LayoutTests/compositing/iframes/scrolling-iframe.html
@@ -37,7 +37,7 @@
 
             document.getElementById('parent-iframe').contentWindow.scrollTo(80, 80);
             if (window.testRunner) {
-                document.getElementById('layers').innerHTML = testRunner.layerTreeAsText();
+                document.getElementById('layers').innerHTML = window.internals.layerTreeAsText(document);
                 testRunner.notifyDone();
             }
         }, 0);
diff --git a/LayoutTests/compositing/images/clip-on-directly-composited-image.html b/LayoutTests/compositing/images/clip-on-directly-composited-image.html
index d73e8c7..58658de 100644
--- a/LayoutTests/compositing/images/clip-on-directly-composited-image.html
+++ b/LayoutTests/compositing/images/clip-on-directly-composited-image.html
@@ -29,7 +29,7 @@
       
     function doTest() {
       if (window.testRunner) {
-        document.getElementById('layers').innerText = testRunner.layerTreeAsText();
+        document.getElementById('layers').innerText = window.internals.layerTreeAsText(document);
         testRunner.notifyDone();
       }
     }
diff --git a/LayoutTests/compositing/layer-creation/animation-overlap-with-children.html b/LayoutTests/compositing/layer-creation/animation-overlap-with-children.html
index 473b7c1..f583b92 100644
--- a/LayoutTests/compositing/layer-creation/animation-overlap-with-children.html
+++ b/LayoutTests/compositing/layer-creation/animation-overlap-with-children.html
@@ -68,7 +68,7 @@
     function animationStarted()
     {
       if (window.testRunner) {
-        document.getElementById('layers').innerText = testRunner.layerTreeAsText();
+        document.getElementById('layers').innerText = window.internals.layerTreeAsText(document);
         testRunner.notifyDone();
       }
     }
diff --git a/LayoutTests/compositing/layer-creation/fixed-position-and-transform.html b/LayoutTests/compositing/layer-creation/fixed-position-and-transform.html
index 5e77303..06f1ba7 100644
--- a/LayoutTests/compositing/layer-creation/fixed-position-and-transform.html
+++ b/LayoutTests/compositing/layer-creation/fixed-position-and-transform.html
@@ -29,7 +29,7 @@
     function doTest() {
         window.scrollTo(0, 1000);
         if (window.testRunner) {
-            document.getElementById('layertree').innerText = testRunner.layerTreeAsText();
+            document.getElementById('layertree').innerText = window.internals.layerTreeAsText(document);
             testRunner.dumpAsText(true);
         }
     }
diff --git a/LayoutTests/compositing/layer-creation/fixed-position-out-of-view.html b/LayoutTests/compositing/layer-creation/fixed-position-out-of-view.html
index 7a1c916..c2f6e49 100644
--- a/LayoutTests/compositing/layer-creation/fixed-position-out-of-view.html
+++ b/LayoutTests/compositing/layer-creation/fixed-position-out-of-view.html
@@ -18,7 +18,7 @@
       testRunner.dumpAsText();
 
       window.addEventListener("load", function() {
-        document.getElementById("layertree").innerText = testRunner.layerTreeAsText();
+        document.getElementById("layertree").innerText = window.internals.layerTreeAsText(document);
       }, false);
     }
   </script>
diff --git a/LayoutTests/compositing/layer-creation/fixed-position-under-transform.html b/LayoutTests/compositing/layer-creation/fixed-position-under-transform.html
index 9335e70..f11aae6 100644
--- a/LayoutTests/compositing/layer-creation/fixed-position-under-transform.html
+++ b/LayoutTests/compositing/layer-creation/fixed-position-under-transform.html
@@ -35,7 +35,7 @@
     function doTest() {
         window.scrollTo(0, 1000);
         if (window.testRunner) {
-            document.getElementById('layertree').innerText = testRunner.layerTreeAsText();
+            document.getElementById('layertree').innerText = window.internals.layerTreeAsText(document);
             testRunner.dumpAsText(true);
         }
     }
diff --git a/LayoutTests/compositing/layer-creation/no-compositing-for-preserve-3d.html b/LayoutTests/compositing/layer-creation/no-compositing-for-preserve-3d.html
index ae0648a..7e95837 100644
--- a/LayoutTests/compositing/layer-creation/no-compositing-for-preserve-3d.html
+++ b/LayoutTests/compositing/layer-creation/no-compositing-for-preserve-3d.html
@@ -30,7 +30,7 @@
   {
     var layersResult = document.getElementById('layers');
     if (window.testRunner)
-      layersResult.innerText = testRunner.layerTreeAsText();
+      layersResult.innerText = window.internals.layerTreeAsText(document);
     
   }
   window.addEventListener('load', dumpLayers, false)
diff --git a/LayoutTests/compositing/layer-creation/overflow-scroll-overlap.html b/LayoutTests/compositing/layer-creation/overflow-scroll-overlap.html
index c482f03..752cc58 100644
--- a/LayoutTests/compositing/layer-creation/overflow-scroll-overlap.html
+++ b/LayoutTests/compositing/layer-creation/overflow-scroll-overlap.html
@@ -49,7 +49,7 @@
 
         
         if (window.testRunner) {
-          document.getElementById('results').innerText = window.testRunner.layerTreeAsText();
+          document.getElementById('results').innerText = window.internals.layerTreeAsText(document);
           testRunner.notifyDone();
         }
       }, 150);
diff --git a/LayoutTests/compositing/layer-creation/overlap-animation.html b/LayoutTests/compositing/layer-creation/overlap-animation.html
index 671e002..70972d86 100644
--- a/LayoutTests/compositing/layer-creation/overlap-animation.html
+++ b/LayoutTests/compositing/layer-creation/overlap-animation.html
@@ -45,7 +45,7 @@
     function animationStarted()
     {
       if (window.testRunner) {
-        document.getElementById('layers').innerText = testRunner.layerTreeAsText();
+        document.getElementById('layers').innerText = window.internals.layerTreeAsText(document);
         testRunner.notifyDone();
       }
     }
diff --git a/LayoutTests/compositing/layer-creation/overlap-child-layer.html b/LayoutTests/compositing/layer-creation/overlap-child-layer.html
index c87dda19..68aa75b 100644
--- a/LayoutTests/compositing/layer-creation/overlap-child-layer.html
+++ b/LayoutTests/compositing/layer-creation/overlap-child-layer.html
@@ -46,7 +46,7 @@
 
     window.addEventListener('load', function() {
         if (window.testRunner) {
-            document.getElementById("layertree").innerText = testRunner.layerTreeAsText();
+            document.getElementById("layertree").innerText = window.internals.layerTreeAsText(document);
             testRunner.notifyDone();
         }
     }, false);
diff --git a/LayoutTests/compositing/layer-creation/overlap-clipping.html b/LayoutTests/compositing/layer-creation/overlap-clipping.html
index 7888d7d..9ab1170 100644
--- a/LayoutTests/compositing/layer-creation/overlap-clipping.html
+++ b/LayoutTests/compositing/layer-creation/overlap-clipping.html
@@ -43,7 +43,7 @@
     if (window.testRunner) {
         testRunner.dumpAsText(false);
         window.addEventListener('load', function() {
-            document.getElementById("layertree").innerText = testRunner.layerTreeAsText();
+            document.getElementById("layertree").innerText = window.internals.layerTreeAsText(document);
         }, false);
     }
 </script>
diff --git a/LayoutTests/compositing/layer-creation/overlap-transformed-and-clipped.html b/LayoutTests/compositing/layer-creation/overlap-transformed-and-clipped.html
index 792f411..7b8f794 100644
--- a/LayoutTests/compositing/layer-creation/overlap-transformed-and-clipped.html
+++ b/LayoutTests/compositing/layer-creation/overlap-transformed-and-clipped.html
@@ -52,7 +52,7 @@
     if (window.testRunner) {
         testRunner.dumpAsText(true);
         window.addEventListener('load', function() {
-            document.getElementById("layertree").innerText = testRunner.layerTreeAsText();
+            document.getElementById("layertree").innerText = window.internals.layerTreeAsText(document);
         }, false);
     }
 </script>
diff --git a/LayoutTests/compositing/layer-creation/overlap-transformed-layer.html b/LayoutTests/compositing/layer-creation/overlap-transformed-layer.html
index 042576b..4e9d1de 100644
--- a/LayoutTests/compositing/layer-creation/overlap-transformed-layer.html
+++ b/LayoutTests/compositing/layer-creation/overlap-transformed-layer.html
@@ -45,7 +45,7 @@
     if (window.testRunner) {
         testRunner.dumpAsText(true);
         window.addEventListener('load', function() {
-            document.getElementById("layertree").innerText = testRunner.layerTreeAsText();
+            document.getElementById("layertree").innerText = window.internals.layerTreeAsText(document);
         }, false);
     }
 </script>
diff --git a/LayoutTests/compositing/layer-creation/overlap-transforms.html b/LayoutTests/compositing/layer-creation/overlap-transforms.html
index d41f838..32448fb 100644
--- a/LayoutTests/compositing/layer-creation/overlap-transforms.html
+++ b/LayoutTests/compositing/layer-creation/overlap-transforms.html
@@ -31,7 +31,7 @@
     function testDone()
     {
       if (window.testRunner)
-        document.getElementById('layers').innerText = testRunner.layerTreeAsText();
+        document.getElementById('layers').innerText = window.internals.layerTreeAsText(document);
     }
     window.addEventListener('load', testDone, false);
   </script>
diff --git a/LayoutTests/compositing/layer-creation/rotate3d-overlap.html b/LayoutTests/compositing/layer-creation/rotate3d-overlap.html
index 41e102e..11009ac 100644
--- a/LayoutTests/compositing/layer-creation/rotate3d-overlap.html
+++ b/LayoutTests/compositing/layer-creation/rotate3d-overlap.html
@@ -22,7 +22,7 @@
    function doTest()
    {
        if (window.testRunner) {
-         document.getElementById('results').innerText = window.testRunner.layerTreeAsText();
+         document.getElementById('results').innerText = window.internals.layerTreeAsText(document);
          testRunner.notifyDone();
        }
    }
diff --git a/LayoutTests/compositing/layer-creation/scroll-partial-update.html b/LayoutTests/compositing/layer-creation/scroll-partial-update.html
index 76439fb..a386d5d 100644
--- a/LayoutTests/compositing/layer-creation/scroll-partial-update.html
+++ b/LayoutTests/compositing/layer-creation/scroll-partial-update.html
@@ -46,7 +46,7 @@
         window.setTimeout(function() {
           document.getElementById('scroller').scrollTop = 50;
           if (window.testRunner) {
-            document.getElementById('results').innerText = testRunner.layerTreeAsText();
+            document.getElementById('results').innerText = window.internals.layerTreeAsText(document);
             testRunner.notifyDone();
           }
         }, 20);
diff --git a/LayoutTests/compositing/layer-creation/spanOverlapsCanvas.html b/LayoutTests/compositing/layer-creation/spanOverlapsCanvas.html
index cb33d0a..1091d45 100644
--- a/LayoutTests/compositing/layer-creation/spanOverlapsCanvas.html
+++ b/LayoutTests/compositing/layer-creation/spanOverlapsCanvas.html
@@ -14,7 +14,7 @@
             if (window.testRunner) {
                 window.testRunner.dumpAsText(true);
                 var console = document.getElementById("layeroutput");
-                console.innerHTML = window.testRunner.layerTreeAsText();
+                console.innerHTML = window.internals.layerTreeAsText(document);
             }
 	    }
 	</script>
diff --git a/LayoutTests/compositing/layer-creation/stacking-context-overlap-nested.html b/LayoutTests/compositing/layer-creation/stacking-context-overlap-nested.html
index c1959dc..46a9420 100644
--- a/LayoutTests/compositing/layer-creation/stacking-context-overlap-nested.html
+++ b/LayoutTests/compositing/layer-creation/stacking-context-overlap-nested.html
@@ -43,7 +43,7 @@
       function doTest()
       {
           if (window.testRunner) {
-              document.getElementById('layertree').innerText = testRunner.layerTreeAsText();
+              document.getElementById('layertree').innerText = window.internals.layerTreeAsText(document);
               testRunner.notifyDone();
           }
       }
diff --git a/LayoutTests/compositing/layer-creation/stacking-context-overlap.html b/LayoutTests/compositing/layer-creation/stacking-context-overlap.html
index 4ed5930..d51cf42 100644
--- a/LayoutTests/compositing/layer-creation/stacking-context-overlap.html
+++ b/LayoutTests/compositing/layer-creation/stacking-context-overlap.html
@@ -38,7 +38,7 @@
     function doTest()
     {
         if (window.testRunner) {
-            document.getElementById('layertree').innerText = testRunner.layerTreeAsText();
+            document.getElementById('layertree').innerText = window.internals.layerTreeAsText(document);
             testRunner.notifyDone();
         }
     }
diff --git a/LayoutTests/compositing/layer-creation/translatez-overlap.html b/LayoutTests/compositing/layer-creation/translatez-overlap.html
index d9166d7..dbbcd97 100644
--- a/LayoutTests/compositing/layer-creation/translatez-overlap.html
+++ b/LayoutTests/compositing/layer-creation/translatez-overlap.html
@@ -21,7 +21,7 @@
    function doTest()
    {
        if (window.testRunner) {
-         document.getElementById('results').innerText = window.testRunner.layerTreeAsText();
+         document.getElementById('results').innerText = window.internals.layerTreeAsText(document);
          testRunner.notifyDone();
        }
    }
diff --git a/LayoutTests/compositing/overflow-trumps-transform-style.html b/LayoutTests/compositing/overflow-trumps-transform-style.html
index d307e9f..f12f617 100644
--- a/LayoutTests/compositing/overflow-trumps-transform-style.html
+++ b/LayoutTests/compositing/overflow-trumps-transform-style.html
@@ -23,7 +23,7 @@
       results.innerText += window.getComputedStyle(document.getElementById('box2')).webkitTransformStyle + '\n';
       
       if (window.testRunner)
-        results.innerText += testRunner.layerTreeAsText();
+        results.innerText += window.internals.layerTreeAsText(document);
     }
     window.addEventListener('load', dumpResults, false);
   </script>
diff --git a/LayoutTests/compositing/overflow/clip-descendents.html b/LayoutTests/compositing/overflow/clip-descendents.html
index c7b9574..9fd5cb5 100644
--- a/LayoutTests/compositing/overflow/clip-descendents.html
+++ b/LayoutTests/compositing/overflow/clip-descendents.html
@@ -39,7 +39,7 @@
       
     function doTest() {
       if (window.testRunner) {
-        document.getElementById('layers').innerText = testRunner.layerTreeAsText();
+        document.getElementById('layers').innerText = window.internals.layerTreeAsText(document);
         testRunner.notifyDone();
       }
     }
diff --git a/LayoutTests/compositing/overflow/content-gains-scrollbars.html b/LayoutTests/compositing/overflow/content-gains-scrollbars.html
index 521c1f1..673ad0b 100644
--- a/LayoutTests/compositing/overflow/content-gains-scrollbars.html
+++ b/LayoutTests/compositing/overflow/content-gains-scrollbars.html
@@ -50,7 +50,7 @@
     document.getElementById("corner").classList.add("resizeWidget"); // bottom div gets a resize corner but no scrollbars
     if (window.testRunner) {
         testRunner.display(); // Ensure compositor tree is up to date.
-        document.getElementById("layerTree").innerText = testRunner.layerTreeAsText();
+        document.getElementById("layerTree").innerText = window.internals.layerTreeAsText(document);
     }
 }
 
diff --git a/LayoutTests/compositing/overflow/content-loses-scrollbars.html b/LayoutTests/compositing/overflow/content-loses-scrollbars.html
index f92cf47..e9062f3 100644
--- a/LayoutTests/compositing/overflow/content-loses-scrollbars.html
+++ b/LayoutTests/compositing/overflow/content-loses-scrollbars.html
@@ -50,7 +50,7 @@
     document.getElementById("corner").classList.remove("resizeWidget"); // bottom div loses a resize corner but no scrollbars
     if (window.testRunner) {
         testRunner.display(); // Ensure compositor tree is up to date.
-        document.getElementById("layerTree").innerText = testRunner.layerTreeAsText();
+        document.getElementById("layerTree").innerText = window.internals.layerTreeAsText(document);
     }
 }
 
diff --git a/LayoutTests/compositing/overflow/overflow-auto-with-touch-no-overflow.html b/LayoutTests/compositing/overflow/overflow-auto-with-touch-no-overflow.html
index 98e6a7f..ea9d938 100644
--- a/LayoutTests/compositing/overflow/overflow-auto-with-touch-no-overflow.html
+++ b/LayoutTests/compositing/overflow/overflow-auto-with-touch-no-overflow.html
@@ -21,7 +21,7 @@
 
     window.addEventListener('load', function() {
       if (window.testRunner)
-        document.getElementById('layers').innerHTML = testRunner.layerTreeAsText();
+        document.getElementById('layers').innerHTML = window.internals.layerTreeAsText(document);
     }, true);
   </script>
 </head>
diff --git a/LayoutTests/compositing/overflow/overflow-auto-with-touch-toggle.html b/LayoutTests/compositing/overflow/overflow-auto-with-touch-toggle.html
index 125f8d7..38219fe 100644
--- a/LayoutTests/compositing/overflow/overflow-auto-with-touch-toggle.html
+++ b/LayoutTests/compositing/overflow/overflow-auto-with-touch-toggle.html
@@ -26,7 +26,7 @@
       column.style.width = '1000px';
       column.style.height = '1000px';
       if (window.testRunner)
-        document.getElementById('layers').innerHTML = testRunner.layerTreeAsText();
+        document.getElementById('layers').innerHTML = window.internals.layerTreeAsText(document);
     }, true);
   </script>
 </head>
diff --git a/LayoutTests/compositing/overflow/overflow-auto-with-touch.html b/LayoutTests/compositing/overflow/overflow-auto-with-touch.html
index cdf2b16..bdf281f 100644
--- a/LayoutTests/compositing/overflow/overflow-auto-with-touch.html
+++ b/LayoutTests/compositing/overflow/overflow-auto-with-touch.html
@@ -21,7 +21,7 @@
 
     window.addEventListener('load', function() {
       if (window.testRunner)
-        document.getElementById('layers').innerHTML = testRunner.layerTreeAsText();
+        document.getElementById('layers').innerHTML = window.internals.layerTreeAsText(document);
     }, true);
   </script>
 </head>
diff --git a/LayoutTests/compositing/overflow/overflow-hidden-with-touch.html b/LayoutTests/compositing/overflow/overflow-hidden-with-touch.html
index bbf9e81..242748d 100644
--- a/LayoutTests/compositing/overflow/overflow-hidden-with-touch.html
+++ b/LayoutTests/compositing/overflow/overflow-hidden-with-touch.html
@@ -21,7 +21,7 @@
 
     window.addEventListener('load', function() {
       if (window.testRunner)
-        document.getElementById('layers').innerHTML = testRunner.layerTreeAsText();
+        document.getElementById('layers').innerHTML = window.internals.layerTreeAsText(document);
     }, true);
   </script>
 </head>
diff --git a/LayoutTests/compositing/overflow/overflow-overlay-with-touch-no-overflow.html b/LayoutTests/compositing/overflow/overflow-overlay-with-touch-no-overflow.html
index 03df076..456decb 100644
--- a/LayoutTests/compositing/overflow/overflow-overlay-with-touch-no-overflow.html
+++ b/LayoutTests/compositing/overflow/overflow-overlay-with-touch-no-overflow.html
@@ -21,7 +21,7 @@
 
     window.addEventListener('load', function() {
       if (window.testRunner)
-        document.getElementById('layers').innerHTML = testRunner.layerTreeAsText();
+        document.getElementById('layers').innerHTML = window.internals.layerTreeAsText(document);
     }, true);
   </script>
 </head>
diff --git a/LayoutTests/compositing/overflow/overflow-overlay-with-touch.html b/LayoutTests/compositing/overflow/overflow-overlay-with-touch.html
index 5b0dbd4..f4c0ee3 100644
--- a/LayoutTests/compositing/overflow/overflow-overlay-with-touch.html
+++ b/LayoutTests/compositing/overflow/overflow-overlay-with-touch.html
@@ -21,7 +21,7 @@
 
     window.addEventListener('load', function() {
       if (window.testRunner)
-        document.getElementById('layers').innerHTML = testRunner.layerTreeAsText();
+        document.getElementById('layers').innerHTML = window.internals.layerTreeAsText(document);
     }, true);
   </script>
 </head>
diff --git a/LayoutTests/compositing/overflow/overflow-scroll-with-touch-no-overflow.html b/LayoutTests/compositing/overflow/overflow-scroll-with-touch-no-overflow.html
index 6d8aab4..c69e226 100644
--- a/LayoutTests/compositing/overflow/overflow-scroll-with-touch-no-overflow.html
+++ b/LayoutTests/compositing/overflow/overflow-scroll-with-touch-no-overflow.html
@@ -21,7 +21,7 @@
 
     window.addEventListener('load', function() {
       if (window.testRunner)
-        document.getElementById('layers').innerHTML = testRunner.layerTreeAsText();
+        document.getElementById('layers').innerHTML = window.internals.layerTreeAsText(document);
     }, true);
   </script>
 </head>
diff --git a/LayoutTests/compositing/overflow/overflow-scrollbar-layers.html b/LayoutTests/compositing/overflow/overflow-scrollbar-layers.html
index e4cf6cd..4f27c49 100644
--- a/LayoutTests/compositing/overflow/overflow-scrollbar-layers.html
+++ b/LayoutTests/compositing/overflow/overflow-scrollbar-layers.html
@@ -45,6 +45,6 @@
 if (window.testRunner) {
     testRunner.dumpAsText();
     testRunner.display(); // Ensure compositor tree is up to date.
-    document.getElementById("layerTree").innerText = testRunner.layerTreeAsText();
+    document.getElementById("layerTree").innerText = window.internals.layerTreeAsText(document);
 }
 </script>
diff --git a/LayoutTests/compositing/overflow/overflow-visible-with-touch.html b/LayoutTests/compositing/overflow/overflow-visible-with-touch.html
index 3887dc3..500d253 100644
--- a/LayoutTests/compositing/overflow/overflow-visible-with-touch.html
+++ b/LayoutTests/compositing/overflow/overflow-visible-with-touch.html
@@ -21,7 +21,7 @@
 
     window.addEventListener('load', function() {
       if (window.testRunner)
-        document.getElementById('layers').innerHTML = testRunner.layerTreeAsText();
+        document.getElementById('layers').innerHTML = window.internals.layerTreeAsText(document);
     }, true);
   </script>
 </head>
diff --git a/LayoutTests/compositing/overflow/resize-painting.html b/LayoutTests/compositing/overflow/resize-painting.html
index 413f46f..055e1bb 100644
--- a/LayoutTests/compositing/overflow/resize-painting.html
+++ b/LayoutTests/compositing/overflow/resize-painting.html
@@ -25,7 +25,7 @@
     function doTest()
     {
         if (window.testRunner)
-          document.getElementById('layers').innerText = testRunner.layerTreeAsText();
+          document.getElementById('layers').innerText = window.internals.layerTreeAsText(document);
     }
     
     window.addEventListener('load', doTest, false);
diff --git a/LayoutTests/compositing/overflow/scrolling-content-clip-to-viewport.html b/LayoutTests/compositing/overflow/scrolling-content-clip-to-viewport.html
index e950e2b..014001e 100644
--- a/LayoutTests/compositing/overflow/scrolling-content-clip-to-viewport.html
+++ b/LayoutTests/compositing/overflow/scrolling-content-clip-to-viewport.html
@@ -31,7 +31,7 @@
 
     window.addEventListener('load', function() {
       if (window.testRunner)
-        document.getElementById('layers').innerHTML = testRunner.layerTreeAsText();
+        document.getElementById('layers').innerHTML = window.internals.layerTreeAsText(document);
     }, true);
   </script>
 </head>
diff --git a/LayoutTests/compositing/overflow/textarea-scroll-touch.html b/LayoutTests/compositing/overflow/textarea-scroll-touch.html
index dea477f..88c4bc1 100644
--- a/LayoutTests/compositing/overflow/textarea-scroll-touch.html
+++ b/LayoutTests/compositing/overflow/textarea-scroll-touch.html
@@ -32,7 +32,7 @@
         testScrollability(divs[i]);
 
       if (window.testRunner)
-        document.getElementById('results').innerText = testRunner.layerTreeAsText();
+        document.getElementById('results').innerText = window.internals.layerTreeAsText(document);
     }
     window.addEventListener('load', doTest, false);
   </script>
diff --git a/LayoutTests/compositing/plugins/1x1-composited-plugin.html b/LayoutTests/compositing/plugins/1x1-composited-plugin.html
index b91bd4e7..6e88df5 100644
--- a/LayoutTests/compositing/plugins/1x1-composited-plugin.html
+++ b/LayoutTests/compositing/plugins/1x1-composited-plugin.html
@@ -18,7 +18,7 @@
     {
         window.setTimeout(function() {
             if (window.testRunner) {
-                var layers = testRunner.layerTreeAsText();
+                var layers = window.internals.layerTreeAsText(document);
                 var result;
                 if (layers == "")
                   result = "PASS: no layers found";
diff --git a/LayoutTests/compositing/plugins/large-to-small-composited-plugin.html b/LayoutTests/compositing/plugins/large-to-small-composited-plugin.html
index aed493a..13b7007 100644
--- a/LayoutTests/compositing/plugins/large-to-small-composited-plugin.html
+++ b/LayoutTests/compositing/plugins/large-to-small-composited-plugin.html
@@ -32,7 +32,7 @@
           // Need to wait for compositing layers to be updated.
           window.setTimeout(function() {
               if (window.testRunner) {
-                  var layers = testRunner.layerTreeAsText();
+                  var layers = window.internals.layerTreeAsText(document);
                   var result;
                   if (layers == "")
                     result = "PASS: no layers found";
diff --git a/LayoutTests/compositing/plugins/no-backing-store.html b/LayoutTests/compositing/plugins/no-backing-store.html
index da4e0de..8280fcc 100644
--- a/LayoutTests/compositing/plugins/no-backing-store.html
+++ b/LayoutTests/compositing/plugins/no-backing-store.html
@@ -17,7 +17,7 @@
         // Need to wait for compositing layers to be updated. FIXME remove.
         window.setTimeout(function() {
             if (window.testRunner) {
-                document.getElementById('layers').innerHTML = testRunner.layerTreeAsText();
+                document.getElementById('layers').innerHTML = window.internals.layerTreeAsText(document);
                 testRunner.notifyDone();
             }
         }, 0)
diff --git a/LayoutTests/compositing/plugins/small-to-large-composited-plugin.html b/LayoutTests/compositing/plugins/small-to-large-composited-plugin.html
index bdfb27f..d8ec148 100644
--- a/LayoutTests/compositing/plugins/small-to-large-composited-plugin.html
+++ b/LayoutTests/compositing/plugins/small-to-large-composited-plugin.html
@@ -32,7 +32,7 @@
           // Need to wait for compositing layers to be updated. FIXME remove.
           window.setTimeout(function() {
             if (window.testRunner) {
-                document.getElementById('layers').innerHTML = testRunner.layerTreeAsText();
+                document.getElementById('layers').innerHTML = window.internals.layerTreeAsText(document);
                 testRunner.notifyDone();
             }
           }, 0)
diff --git a/LayoutTests/compositing/rtl/rtl-absolute-overflow-scrolled.html b/LayoutTests/compositing/rtl/rtl-absolute-overflow-scrolled.html
index 34ecf43..0a70c0a 100644
--- a/LayoutTests/compositing/rtl/rtl-absolute-overflow-scrolled.html
+++ b/LayoutTests/compositing/rtl/rtl-absolute-overflow-scrolled.html
@@ -52,7 +52,7 @@
             window.scrollTo(offset, 0);
             if (window.testRunner) {
                 if (top == self)
-                    document.getElementById('layertree').innerText = testRunner.layerTreeAsText();
+                    document.getElementById('layertree').innerText = window.internals.layerTreeAsText(document);
                 testRunner.notifyDone();
             }
         }, 0);
diff --git a/LayoutTests/compositing/rtl/rtl-absolute-overflow.html b/LayoutTests/compositing/rtl/rtl-absolute-overflow.html
index ddbe371..28b8632 100644
--- a/LayoutTests/compositing/rtl/rtl-absolute-overflow.html
+++ b/LayoutTests/compositing/rtl/rtl-absolute-overflow.html
@@ -40,7 +40,7 @@
     function doTest() {
         if (window.testRunner) {
             if (top == self)
-                document.getElementById('layertree').innerText = testRunner.layerTreeAsText();
+                document.getElementById('layertree').innerText = window.internals.layerTreeAsText(document);
             testRunner.dumpAsText(true);
         }
     }
diff --git a/LayoutTests/compositing/rtl/rtl-absolute.html b/LayoutTests/compositing/rtl/rtl-absolute.html
index 0ffad8b..ba5a799 100644
--- a/LayoutTests/compositing/rtl/rtl-absolute.html
+++ b/LayoutTests/compositing/rtl/rtl-absolute.html
@@ -41,7 +41,7 @@
     function doTest() {
         if (window.testRunner) {
             if (top == self)
-                document.getElementById('layertree').innerText = testRunner.layerTreeAsText();
+                document.getElementById('layertree').innerText = window.internals.layerTreeAsText(document);
             testRunner.dumpAsText(true);
         }
     }
diff --git a/LayoutTests/compositing/rtl/rtl-fixed-overflow-scrolled.html b/LayoutTests/compositing/rtl/rtl-fixed-overflow-scrolled.html
index 5785f6b23..84d2d00 100644
--- a/LayoutTests/compositing/rtl/rtl-fixed-overflow-scrolled.html
+++ b/LayoutTests/compositing/rtl/rtl-fixed-overflow-scrolled.html
@@ -50,7 +50,7 @@
             window.scrollTo(offset, 0);
             if (window.testRunner) {
                 if (top == self)
-                    document.getElementById('layertree').innerText = testRunner.layerTreeAsText();
+                    document.getElementById('layertree').innerText = window.internals.layerTreeAsText(document);
                 testRunner.notifyDone();
             }
         }, 0);
diff --git a/LayoutTests/compositing/rtl/rtl-fixed-overflow.html b/LayoutTests/compositing/rtl/rtl-fixed-overflow.html
index c0d21fd..6676d42 100644
--- a/LayoutTests/compositing/rtl/rtl-fixed-overflow.html
+++ b/LayoutTests/compositing/rtl/rtl-fixed-overflow.html
@@ -40,7 +40,7 @@
     function doTest() {
         if (window.testRunner) {
             if (top == self)
-                document.getElementById('layertree').innerText = testRunner.layerTreeAsText();
+                document.getElementById('layertree').innerText = window.internals.layerTreeAsText(document);
             testRunner.dumpAsText(true);
         }
     }
diff --git a/LayoutTests/compositing/rtl/rtl-fixed.html b/LayoutTests/compositing/rtl/rtl-fixed.html
index 3aa11dd..72e5603 100644
--- a/LayoutTests/compositing/rtl/rtl-fixed.html
+++ b/LayoutTests/compositing/rtl/rtl-fixed.html
@@ -40,7 +40,7 @@
     function doTest() {
         if (window.testRunner) {
             if (top == self)
-                document.getElementById('layertree').innerText = testRunner.layerTreeAsText();
+                document.getElementById('layertree').innerText = window.internals.layerTreeAsText(document);
             testRunner.dumpAsText(true);
         }
     }
diff --git a/LayoutTests/compositing/rtl/rtl-iframe-absolute-overflow-scrolled.html b/LayoutTests/compositing/rtl/rtl-iframe-absolute-overflow-scrolled.html
index 9d37203..d6b3e6d 100644
--- a/LayoutTests/compositing/rtl/rtl-iframe-absolute-overflow-scrolled.html
+++ b/LayoutTests/compositing/rtl/rtl-iframe-absolute-overflow-scrolled.html
@@ -23,7 +23,7 @@
 <script>
     function doTest() {
         if (window.testRunner) {
-            document.getElementById('layertree').innerText = testRunner.layerTreeAsText();
+            document.getElementById('layertree').innerText = window.internals.layerTreeAsText(document);
             testRunner.dumpAsText(true);
         }
     }
diff --git a/LayoutTests/compositing/rtl/rtl-iframe-absolute-overflow.html b/LayoutTests/compositing/rtl/rtl-iframe-absolute-overflow.html
index 9a5e6bc..162026f 100644
--- a/LayoutTests/compositing/rtl/rtl-iframe-absolute-overflow.html
+++ b/LayoutTests/compositing/rtl/rtl-iframe-absolute-overflow.html
@@ -23,7 +23,7 @@
 <script>
     function doTest() {
         if (window.testRunner) {
-            document.getElementById('layertree').innerText = testRunner.layerTreeAsText();
+            document.getElementById('layertree').innerText = window.internals.layerTreeAsText(document);
             testRunner.dumpAsText(true);
         }
     }
diff --git a/LayoutTests/compositing/rtl/rtl-iframe-absolute.html b/LayoutTests/compositing/rtl/rtl-iframe-absolute.html
index 0011de2..126bef9 100644
--- a/LayoutTests/compositing/rtl/rtl-iframe-absolute.html
+++ b/LayoutTests/compositing/rtl/rtl-iframe-absolute.html
@@ -23,7 +23,7 @@
 <script>
     function doTest() {
         if (window.testRunner) {
-            document.getElementById('layertree').innerText = testRunner.layerTreeAsText();
+            document.getElementById('layertree').innerText = window.internals.layerTreeAsText(document);
             testRunner.dumpAsText(true);
         }
     }
diff --git a/LayoutTests/compositing/rtl/rtl-iframe-fixed-overflow-scrolled.html b/LayoutTests/compositing/rtl/rtl-iframe-fixed-overflow-scrolled.html
index 690092c..a5b15c9 100644
--- a/LayoutTests/compositing/rtl/rtl-iframe-fixed-overflow-scrolled.html
+++ b/LayoutTests/compositing/rtl/rtl-iframe-fixed-overflow-scrolled.html
@@ -23,7 +23,7 @@
 <script>
     function doTest() {
         if (window.testRunner) {
-            document.getElementById('layertree').innerText = testRunner.layerTreeAsText();
+            document.getElementById('layertree').innerText = window.internals.layerTreeAsText(document);
             testRunner.dumpAsText(true);
         }
     }
diff --git a/LayoutTests/compositing/rtl/rtl-iframe-fixed-overflow.html b/LayoutTests/compositing/rtl/rtl-iframe-fixed-overflow.html
index ef4ea83..1e6855b 100644
--- a/LayoutTests/compositing/rtl/rtl-iframe-fixed-overflow.html
+++ b/LayoutTests/compositing/rtl/rtl-iframe-fixed-overflow.html
@@ -23,7 +23,7 @@
 <script>
     function doTest() {
         if (window.testRunner) {
-            document.getElementById('layertree').innerText = testRunner.layerTreeAsText();
+            document.getElementById('layertree').innerText = window.internals.layerTreeAsText(document);
             testRunner.dumpAsText(true);
         }
     }
diff --git a/LayoutTests/compositing/rtl/rtl-iframe-fixed.html b/LayoutTests/compositing/rtl/rtl-iframe-fixed.html
index 465f0663..c3df5fa 100644
--- a/LayoutTests/compositing/rtl/rtl-iframe-fixed.html
+++ b/LayoutTests/compositing/rtl/rtl-iframe-fixed.html
@@ -23,7 +23,7 @@
 <script>
     function doTest() {
         if (window.testRunner) {
-            document.getElementById('layertree').innerText = testRunner.layerTreeAsText();
+            document.getElementById('layertree').innerText = window.internals.layerTreeAsText(document);
             testRunner.dumpAsText(true);
         }
     }
diff --git a/LayoutTests/compositing/rtl/rtl-iframe-relative.html b/LayoutTests/compositing/rtl/rtl-iframe-relative.html
index ee4ae70..b411cb3 100644
--- a/LayoutTests/compositing/rtl/rtl-iframe-relative.html
+++ b/LayoutTests/compositing/rtl/rtl-iframe-relative.html
@@ -32,7 +32,7 @@
 <script>
     function doTest() {
         if (window.testRunner) {
-            document.getElementById('layertree').innerText = testRunner.layerTreeAsText();
+            document.getElementById('layertree').innerText = window.internals.layerTreeAsText(document);
             testRunner.dumpAsText(true);
         }
     }
diff --git a/LayoutTests/compositing/rtl/rtl-relative.html b/LayoutTests/compositing/rtl/rtl-relative.html
index 977cfbc..074cbe8 100644
--- a/LayoutTests/compositing/rtl/rtl-relative.html
+++ b/LayoutTests/compositing/rtl/rtl-relative.html
@@ -35,7 +35,7 @@
     function doTest() {
         if (window.testRunner) {
             if (top == self)
-                document.getElementById('layertree').innerText = testRunner.layerTreeAsText();
+                document.getElementById('layertree').innerText = window.internals.layerTreeAsText(document);
             testRunner.dumpAsText(true);
         }
     }
diff --git a/LayoutTests/compositing/tiled-layers-hidpi.html b/LayoutTests/compositing/tiled-layers-hidpi.html
index 1b3842c..2a8ab3f 100644
--- a/LayoutTests/compositing/tiled-layers-hidpi.html
+++ b/LayoutTests/compositing/tiled-layers-hidpi.html
@@ -18,7 +18,7 @@
         
         function finishTest() {
             setTimeout(function() {
-				document.getElementById('layer-tree').innerText = window.testRunner.layerTreeAsText();
+				document.getElementById('layer-tree').innerText = window.internals.layerTreeAsText(document);
 				testRunner.notifyDone();
 			}, 0);
         }
diff --git a/LayoutTests/compositing/tiling/crash-reparent-tiled-layer.html b/LayoutTests/compositing/tiling/crash-reparent-tiled-layer.html
index 54439b1..b424531 100644
--- a/LayoutTests/compositing/tiling/crash-reparent-tiled-layer.html
+++ b/LayoutTests/compositing/tiling/crash-reparent-tiled-layer.html
@@ -39,7 +39,7 @@
                 // Let it render
                 window.setTimeout(function() {
                     if (window.testRunner) {
-                        document.getElementById('layers').innerHTML = testRunner.layerTreeAsText();
+                        document.getElementById('layers').innerHTML = window.internals.layerTreeAsText(document);
                         testRunner.notifyDone();
                     }
                 }, 0);
diff --git a/LayoutTests/compositing/tiling/huge-layer-add-remove-child.html-disabled b/LayoutTests/compositing/tiling/huge-layer-add-remove-child.html-disabled
index af31b37..45ca80e 100644
--- a/LayoutTests/compositing/tiling/huge-layer-add-remove-child.html-disabled
+++ b/LayoutTests/compositing/tiling/huge-layer-add-remove-child.html-disabled
@@ -39,7 +39,7 @@
             // First with no kids
             window.setTimeout(function() {
                 if (window.testRunner)
-                    result = "First (no children):<br>" + testRunner.layerTreeAsText();
+                    result = "First (no children):<br>" + window.internals.layerTreeAsText(document);
             }, 0);
             
             // Second add kid
@@ -51,7 +51,7 @@
                 // Let it render
                 window.setTimeout(function() {
                     if (window.testRunner)
-                        result += "<br><br>Second (child added):<br>" + testRunner.layerTreeAsText();
+                        result += "<br><br>Second (child added):<br>" + window.internals.layerTreeAsText(document);
                 }, 0);
             }, 100);
             
@@ -63,7 +63,7 @@
                 // Let it render
                 window.setTimeout(function() {
                     if (window.testRunner) {
-                        result += "<br><br>Third (child removed):<br>" + testRunner.layerTreeAsText();
+                        result += "<br><br>Third (child removed):<br>" + window.internals.layerTreeAsText(document);
                         document.getElementById('layers').innerHTML = result;
                         testRunner.notifyDone();
                     }
diff --git a/LayoutTests/compositing/tiling/huge-layer-img.html-disabled b/LayoutTests/compositing/tiling/huge-layer-img.html-disabled
index 4b88c73..8022442 100644
--- a/LayoutTests/compositing/tiling/huge-layer-img.html-disabled
+++ b/LayoutTests/compositing/tiling/huge-layer-img.html-disabled
@@ -34,7 +34,7 @@
 
             window.setTimeout(function() {
                 if (window.testRunner) {
-                    document.getElementById('layers').innerHTML = testRunner.layerTreeAsText();
+                    document.getElementById('layers').innerHTML = window.internals.layerTreeAsText(document);
                     testRunner.notifyDone();
                 }
             }, 0);
diff --git a/LayoutTests/compositing/tiling/huge-layer-resize.html-disabled b/LayoutTests/compositing/tiling/huge-layer-resize.html-disabled
index ef91b80..b719318 100644
--- a/LayoutTests/compositing/tiling/huge-layer-resize.html-disabled
+++ b/LayoutTests/compositing/tiling/huge-layer-resize.html-disabled
@@ -55,7 +55,7 @@
             document.body.offsetLeft;
             testRunner.display();
 
-            return messagePrefix + testRunner.layerTreeAsText();
+            return messagePrefix + window.internals.layerTreeAsText(document);
         }
       
         window.addEventListener('load', testOnLoad, false);
diff --git a/LayoutTests/compositing/tiling/huge-layer-with-layer-children-resize.html-disabled b/LayoutTests/compositing/tiling/huge-layer-with-layer-children-resize.html-disabled
index b873d24..cc575a4 100644
--- a/LayoutTests/compositing/tiling/huge-layer-with-layer-children-resize.html-disabled
+++ b/LayoutTests/compositing/tiling/huge-layer-with-layer-children-resize.html-disabled
@@ -45,7 +45,7 @@
             // Small layer first
             window.setTimeout(function() {
                 if (window.testRunner)
-                    result = "First (small layer):<br>" + testRunner.layerTreeAsText();
+                    result = "First (small layer):<br>" + window.internals.layerTreeAsText(document);
             }, 0);
             
             // Huge layer second
diff --git a/LayoutTests/compositing/tiling/huge-layer-with-layer-children.html-disabled b/LayoutTests/compositing/tiling/huge-layer-with-layer-children.html-disabled
index eb4d142..d12656f 100644
--- a/LayoutTests/compositing/tiling/huge-layer-with-layer-children.html-disabled
+++ b/LayoutTests/compositing/tiling/huge-layer-with-layer-children.html-disabled
@@ -43,7 +43,7 @@
             window.setTimeout(function() {
                 window.setTimeout(function() {
                     if (window.testRunner) {
-                        document.getElementById('layers').innerHTML = testRunner.layerTreeAsText();
+                        document.getElementById('layers').innerHTML = window.internals.layerTreeAsText(document);
                         testRunner.notifyDone();
                     }
                 }, 0);
diff --git a/LayoutTests/compositing/tiling/huge-layer.html-disabled b/LayoutTests/compositing/tiling/huge-layer.html-disabled
index b9bb742..88f335d 100644
--- a/LayoutTests/compositing/tiling/huge-layer.html-disabled
+++ b/LayoutTests/compositing/tiling/huge-layer.html-disabled
@@ -42,7 +42,7 @@
             window.setTimeout(function() {
                 window.setTimeout(function() {
                     if (window.testRunner) {
-                        document.getElementById('layers').innerHTML = testRunner.layerTreeAsText();
+                        document.getElementById('layers').innerHTML = window.internals.layerTreeAsText(document);
                         testRunner.notifyDone();
                     }
                 }, 0);
diff --git a/LayoutTests/compositing/video/video-poster.html b/LayoutTests/compositing/video/video-poster.html
index 9652b6c..8ffee45 100644
--- a/LayoutTests/compositing/video/video-poster.html
+++ b/LayoutTests/compositing/video/video-poster.html
@@ -13,7 +13,7 @@
             function hasLayers()
             {
                 if (window.testRunner)
-                    return testRunner.layerTreeAsText() != "";
+                    return window.internals.layerTreeAsText(document) != "";
                 return false;
             }
 
diff --git a/LayoutTests/compositing/visibility/layer-visible-content.html b/LayoutTests/compositing/visibility/layer-visible-content.html
index 1064e04..3a9628a 100644
--- a/LayoutTests/compositing/visibility/layer-visible-content.html
+++ b/LayoutTests/compositing/visibility/layer-visible-content.html
@@ -47,7 +47,7 @@
     function dumpLayers()
     {
         if (window.testRunner)
-            document.getElementById('layer-tree').innerText = testRunner.layerTreeAsText();
+            document.getElementById('layer-tree').innerText = window.internals.layerTreeAsText(document);
     }
     window.addEventListener('load', dumpLayers, false);
   </script>
diff --git a/LayoutTests/compositing/visibility/visibility-image-layers-dynamic.html b/LayoutTests/compositing/visibility/visibility-image-layers-dynamic.html
index d6e0329..b36fd2d 100644
--- a/LayoutTests/compositing/visibility/visibility-image-layers-dynamic.html
+++ b/LayoutTests/compositing/visibility/visibility-image-layers-dynamic.html
@@ -54,7 +54,7 @@
     function doTest()
     {
       if (window.testRunner)
-        document.getElementById('layers1').innerText = testRunner.layerTreeAsText();
+        document.getElementById('layers1').innerText = window.internals.layerTreeAsText(document);
 
       window.setTimeout(function() {
         var firstImage = document.querySelectorAll('img')[0];
diff --git a/LayoutTests/css3/compositing/should-have-compositing-layer.html b/LayoutTests/css3/compositing/should-have-compositing-layer.html
index 20361c9..bbeac2b 100644
--- a/LayoutTests/css3/compositing/should-have-compositing-layer.html
+++ b/LayoutTests/css3/compositing/should-have-compositing-layer.html
@@ -13,7 +13,7 @@
     {
         description("Test to make sure a blend mode creates a compositing layer. Test is successful of render tree shows compositing");
         if (window.testRunner) {
-            var layers = testRunner.layerTreeAsText();
+            var layers = window.internals.layerTreeAsText(document);
             if (layers == "")
                 testFailed("no compositing layers");
             else
diff --git a/LayoutTests/css3/filters/composited-during-animation-layertree.html b/LayoutTests/css3/filters/composited-during-animation-layertree.html
index bb7efb1..a99e627 100644
--- a/LayoutTests/css3/filters/composited-during-animation-layertree.html
+++ b/LayoutTests/css3/filters/composited-during-animation-layertree.html
@@ -75,7 +75,7 @@
 
       function doTest() {
           if (window.testRunner) {
-              document.getElementById('layer-tree').innerText = testRunner.layerTreeAsText()
+              document.getElementById('layer-tree').innerText = window.internals.layerTreeAsText(document)
               testRunner.notifyDone();
           }
       }
diff --git a/LayoutTests/css3/filters/composited-during-transition-layertree.html b/LayoutTests/css3/filters/composited-during-transition-layertree.html
index 6a01a5b..81541ca 100644
--- a/LayoutTests/css3/filters/composited-during-transition-layertree.html
+++ b/LayoutTests/css3/filters/composited-during-transition-layertree.html
@@ -66,7 +66,7 @@
 
       function doTest() {
           if (window.testRunner) {
-              document.getElementById('layer-tree').innerText = testRunner.layerTreeAsText()
+              document.getElementById('layer-tree').innerText = window.internals.layerTreeAsText(document)
               testRunner.notifyDone();
           }
       }
diff --git a/LayoutTests/css3/filters/filtered-compositing-descendant.html b/LayoutTests/css3/filters/filtered-compositing-descendant.html
index 99ae3dd..b90f76d 100644
--- a/LayoutTests/css3/filters/filtered-compositing-descendant.html
+++ b/LayoutTests/css3/filters/filtered-compositing-descendant.html
@@ -30,7 +30,7 @@
 
     window.addEventListener('load', function () {
       if (window.testRunner)
-        document.getElementById('layer-tree').innerText = testRunner.layerTreeAsText();
+        document.getElementById('layer-tree').innerText = window.internals.layerTreeAsText(document);
     }, false);
   </script>
 </head>
diff --git a/LayoutTests/css3/filters/should-not-have-compositing-layer.html b/LayoutTests/css3/filters/should-not-have-compositing-layer.html
index cd77e35..2d62e8a 100644
--- a/LayoutTests/css3/filters/should-not-have-compositing-layer.html
+++ b/LayoutTests/css3/filters/should-not-have-compositing-layer.html
@@ -13,7 +13,7 @@
     {
         description("Test to make sure a simple CSS filter does not create a compositing layer. Test is successful of render tree does not show any compositing");
         if (window.testRunner) {
-            var layers = testRunner.layerTreeAsText();
+            var layers = window.internals.layerTreeAsText(document);
             if (layers == "")
                 testPassed("no compositing layers");
             else
diff --git a/LayoutTests/platform/chromium-android/compositing/layer-creation/overflow-scrolling-touch.html b/LayoutTests/platform/chromium-android/compositing/layer-creation/overflow-scrolling-touch.html
index a7b8754..22a59e3 100644
--- a/LayoutTests/platform/chromium-android/compositing/layer-creation/overflow-scrolling-touch.html
+++ b/LayoutTests/platform/chromium-android/compositing/layer-creation/overflow-scrolling-touch.html
@@ -39,7 +39,7 @@
     function doTest()
     {
       if (window.layoutTestController) {
-        document.getElementById('layers').innerText = layoutTestController.layerTreeAsText();
+        document.getElementById('layers').innerText = window.internals.layerTreeAsText(document);
         layoutTestController.notifyDone();
       }
     }
diff --git a/LayoutTests/platform/chromium/compositing/force-compositing-mode/force-composite-empty.html b/LayoutTests/platform/chromium/compositing/force-compositing-mode/force-composite-empty.html
index 828f11b..5f1a54e 100644
--- a/LayoutTests/platform/chromium/compositing/force-compositing-mode/force-composite-empty.html
+++ b/LayoutTests/platform/chromium/compositing/force-compositing-mode/force-composite-empty.html
@@ -7,7 +7,7 @@
       }
       function doTest() {
         if (window.testRunner) {
-          document.getElementById("layertree").innerText = testRunner.layerTreeAsText();
+          document.getElementById("layertree").innerText = window.internals.layerTreeAsText(document);
           testRunner.dumpAsText();
         }
       }
diff --git a/LayoutTests/platform/chromium/compositing/force-compositing-mode/no-overflow-iframe-layer.html b/LayoutTests/platform/chromium/compositing/force-compositing-mode/no-overflow-iframe-layer.html
index 6049b1c..56b8b8b 100644
--- a/LayoutTests/platform/chromium/compositing/force-compositing-mode/no-overflow-iframe-layer.html
+++ b/LayoutTests/platform/chromium/compositing/force-compositing-mode/no-overflow-iframe-layer.html
@@ -11,7 +11,7 @@
     {
       if (window.testRunner) {
         testRunner.dumpAsText(false);
-        document.getElementById('layertree').innerText = testRunner.layerTreeAsText();
+        document.getElementById('layertree').innerText = window.internals.layerTreeAsText(document);
       }
     }
     window.addEventListener("load", doTest, false);
diff --git a/LayoutTests/platform/chromium/compositing/force-compositing-mode/overflow-hidden-iframe-layer.html b/LayoutTests/platform/chromium/compositing/force-compositing-mode/overflow-hidden-iframe-layer.html
index add1c34..8a46bdb 100644
--- a/LayoutTests/platform/chromium/compositing/force-compositing-mode/overflow-hidden-iframe-layer.html
+++ b/LayoutTests/platform/chromium/compositing/force-compositing-mode/overflow-hidden-iframe-layer.html
@@ -20,7 +20,7 @@
       iframe.contentDocument.body.offsetWidth; // See bug 41999
       if (window.testRunner) {
         testRunner.dumpAsText(false);
-        document.getElementById('layertree').innerText = testRunner.layerTreeAsText();
+        document.getElementById('layertree').innerText = window.internals.layerTreeAsText(document);
       }
     }
     window.addEventListener("load", doTest, false);
diff --git a/LayoutTests/platform/chromium/compositing/force-compositing-mode/overflow-iframe-enter-compositing.html b/LayoutTests/platform/chromium/compositing/force-compositing-mode/overflow-iframe-enter-compositing.html
index d371ced..577bdac 100644
--- a/LayoutTests/platform/chromium/compositing/force-compositing-mode/overflow-iframe-enter-compositing.html
+++ b/LayoutTests/platform/chromium/compositing/force-compositing-mode/overflow-iframe-enter-compositing.html
@@ -21,7 +21,7 @@
       iframe.contentDocument.body.offsetWidth; // See bug 41999
       if (window.testRunner) {
         testRunner.dumpAsText(false);
-        document.getElementById('layertree').innerText = testRunner.layerTreeAsText();
+        document.getElementById('layertree').innerText = window.internals.layerTreeAsText(document);
       }
     }
     window.addEventListener("load", doTest, false);
diff --git a/LayoutTests/platform/chromium/compositing/force-compositing-mode/overflow-iframe-layer.html b/LayoutTests/platform/chromium/compositing/force-compositing-mode/overflow-iframe-layer.html
index 5b8e91b..d631d18 100644
--- a/LayoutTests/platform/chromium/compositing/force-compositing-mode/overflow-iframe-layer.html
+++ b/LayoutTests/platform/chromium/compositing/force-compositing-mode/overflow-iframe-layer.html
@@ -15,7 +15,7 @@
     {
       if (window.testRunner) {
         testRunner.dumpAsText(false);
-        document.getElementById('layertree').innerText = testRunner.layerTreeAsText();
+        document.getElementById('layertree').innerText = window.internals.layerTreeAsText(document);
       }
     }
     window.addEventListener("load", doTest, false);
diff --git a/LayoutTests/platform/chromium/compositing/force-compositing-mode/overflow-iframe-leave-compositing.html b/LayoutTests/platform/chromium/compositing/force-compositing-mode/overflow-iframe-leave-compositing.html
index abbac63..3f32b12 100644
--- a/LayoutTests/platform/chromium/compositing/force-compositing-mode/overflow-iframe-leave-compositing.html
+++ b/LayoutTests/platform/chromium/compositing/force-compositing-mode/overflow-iframe-leave-compositing.html
@@ -21,7 +21,7 @@
       iframe.contentDocument.body.offsetWidth; // See bug 41999
       if (window.testRunner) {
         testRunner.dumpAsText(false);
-        document.getElementById('layertree').innerText = testRunner.layerTreeAsText();
+        document.getElementById('layertree').innerText = window.internals.layerTreeAsText(document);
       }
     }
     window.addEventListener("load", doTest, false);
diff --git a/LayoutTests/platform/mac/compositing/canvas/accelerated-canvas-compositing.html b/LayoutTests/platform/mac/compositing/canvas/accelerated-canvas-compositing.html
index 8d7a7e0..79ac841 100644
--- a/LayoutTests/platform/mac/compositing/canvas/accelerated-canvas-compositing.html
+++ b/LayoutTests/platform/mac/compositing/canvas/accelerated-canvas-compositing.html
@@ -13,7 +13,7 @@
         ctx.fillRect(0,0,c.width, c.height);
 
         if (window.testRunner) {
-            document.getElementById('layers').innerText = testRunner.layerTreeAsText();
+            document.getElementById('layers').innerText = window.internals.layerTreeAsText(document);
             testRunner.notifyDone();
         }
     }
diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
index e021430..f67f2423 100644
--- a/Source/WebCore/ChangeLog
+++ b/Source/WebCore/ChangeLog
@@ -1,3 +1,19 @@
+2012-10-08  Simon Fraser  <simon.fraser@apple.com>
+
+        Move layerTreeAsText to window.internals
+        https://bugs.webkit.org/show_bug.cgi?id=98690
+
+        Reviewed by James Robinson.
+
+        Add window.internals.layerTreeAsText(document), and change the tests to use it.
+        I'll remove testRunner.layerTreeAsText() in a later patch.
+
+        * testing/Internals.cpp:
+        (WebCore::Internals::layerTreeAsText):
+        * testing/Internals.h:
+        (Internals):
+        * testing/Internals.idl:
+
 2012-10-08  Jon Lee  <jonlee@apple.com>
 
         Add render object that paints plugin snapshots
diff --git a/Source/WebCore/testing/Internals.cpp b/Source/WebCore/testing/Internals.cpp
index b3abf40..b5d7d67 100644
--- a/Source/WebCore/testing/Internals.cpp
+++ b/Source/WebCore/testing/Internals.cpp
@@ -1222,6 +1222,16 @@
     controller->resumeAnimations();
 }
 
+String Internals::layerTreeAsText(Document* document, ExceptionCode& ec) const
+{
+    if (!document || !document->frame()) {
+        ec = INVALID_ACCESS_ERR;
+        return String();
+    }
+    
+    return document->frame()->layerTreeAsText();
+}
+
 void Internals::garbageCollectDocumentResources(Document* document, ExceptionCode& ec) const
 {
     if (!document) {
diff --git a/Source/WebCore/testing/Internals.h b/Source/WebCore/testing/Internals.h
index 01dc679..3bd475e 100644
--- a/Source/WebCore/testing/Internals.h
+++ b/Source/WebCore/testing/Internals.h
@@ -187,6 +187,8 @@
     void suspendAnimations(Document*, ExceptionCode&) const;
     void resumeAnimations(Document*, ExceptionCode&) const;
 
+    String layerTreeAsText(Document*, ExceptionCode&) const;
+
     void garbageCollectDocumentResources(Document*, ExceptionCode&) const;
 
     void allowRoundingHacks() const;
diff --git a/Source/WebCore/testing/Internals.idl b/Source/WebCore/testing/Internals.idl
index 8064d07..43cea24 100644
--- a/Source/WebCore/testing/Internals.idl
+++ b/Source/WebCore/testing/Internals.idl
@@ -157,6 +157,8 @@
         void suspendAnimations(in Document document) raises (DOMException);
         void resumeAnimations(in Document document) raises (DOMException);
 
+        DOMString layerTreeAsText(in Document document) raises (DOMException);
+
         void garbageCollectDocumentResources(in Document document) raises (DOMException);
 
         void allowRoundingHacks();