Merge branch 'ResourceTiming' of github.com:pdeng6/web-performance into pdeng6-ResourceTiming
diff --git a/tests/submission/Intel/resource-timing/test_resource_timing_buffer_full_when_populate_entries.html b/tests/submission/Intel/resource-timing/test_resource_timing_buffer_full_when_populate_entries.html
index a21396e..2693896 100644
--- a/tests/submission/Intel/resource-timing/test_resource_timing_buffer_full_when_populate_entries.html
+++ b/tests/submission/Intel/resource-timing/test_resource_timing_buffer_full_when_populate_entries.html
@@ -13,7 +13,6 @@
             if (performance && performance.setResourceTimingBufferSize)

             {

                 supportBufferControlInterface = true;

-                performance.onresourcetimingbufferfull = buffer_full_call_back;

                 performance.setResourceTimingBufferSize(2);

             }

         </script>

@@ -24,9 +23,6 @@
         <script src="/webperf/tests/resources/webperftestharness.js"></script>

         <script>

             setup({ explicit_done: true });

-            test_namespace();

-            if (!supportBufferControlInterface)

-                test_true(false, "performance.setResourceTimingBufferSize() interface is supported!");

 

             function onload_test()

             {

@@ -38,6 +34,20 @@
     <body onload="onload_test();">

         <h1>Description</h1>

         <p>This test validates the functionality of onresourcetimingbufferfull in resource timing.</p>

+        <script>

+            test_namespace();

+            if (!supportBufferControlInterface)

+                test_true(false, "performance.setResourceTimingBufferSize() interface is supported!");

+

+            if (performance && performance.clearResourceTimings) {

+                performance.clearResourceTimings();

+                performance.addEventListener("resourcetimingbufferfull", buffer_full_call_back);

+                for (var i = 1; i <= 3; i++) {

+                    var image = document.createElement("img");

+                    image.src = "/webperf/tests/resources/generate_resource.php?type=image&id=" + i;

+                }

+            }

+        </script>

         <div id="log"></div>

     </body>

 </html>

diff --git a/tests/submission/Intel/resource-timing/test_resource_timing_buffer_full_when_shrink_buffer_size.html b/tests/submission/Intel/resource-timing/test_resource_timing_buffer_full_when_shrink_buffer_size.html
index 6efcd09..52cac84 100644
--- a/tests/submission/Intel/resource-timing/test_resource_timing_buffer_full_when_shrink_buffer_size.html
+++ b/tests/submission/Intel/resource-timing/test_resource_timing_buffer_full_when_shrink_buffer_size.html
@@ -13,8 +13,6 @@
             {

                 count++;

             }

-

-            performance.onresourcetimingbufferfull = buffer_full_call_back;

         </script>

         <link rel="author" title="Intel" href="http://www.intel.com/" />

         <link rel="help" href="http://www.w3.org/TR/resource-timing/#performanceresourcetiming"/>

@@ -30,7 +28,7 @@
                     test_true(false, "performance.setResourceTimingBufferSize() interface is supported!");

                     done();                

                     return;

-                }  

+                } 

  

                 performance.setResourceTimingBufferSize(3);

                 performance.setResourceTimingBufferSize(2);

@@ -42,6 +40,16 @@
     <body onload="onload_test();">

         <h1>Description</h1>

         <p>This test validates the functionality of onresourcetimingbufferfull in resource timing.</p>

+        <script>

+            if (performance && performance.clearResourceTimings) {

+                performance.clearResourceTimings();

+                performance.addEventListener("resourcetimingbufferfull", buffer_full_call_back);

+                for (var i = 1; i <= 3; i++) {

+                    var image = document.createElement("img");

+                    image.src = "/webperf/tests/resources/generate_resource.php?type=image&id=" + i;

+                }

+            }

+        </script>

         <div id="log"></div>

     </body>

 </html>

diff --git a/tests/submission/Intel/resource-timing/test_resource_timing_buffer_size_restriction.html b/tests/submission/Intel/resource-timing/test_resource_timing_buffer_size_restriction.html
index acef5be..397fbdd 100644
--- a/tests/submission/Intel/resource-timing/test_resource_timing_buffer_size_restriction.html
+++ b/tests/submission/Intel/resource-timing/test_resource_timing_buffer_size_restriction.html
@@ -21,6 +21,13 @@
         <script>

             setup({ explicit_done: true });            

             test_namespace();

+            if (performance && performance.clearResourceTimings) {

+                performance.clearResourceTimings();

+                for (var i = 1; i <= 3; i++) {

+                    var image = document.createElement("img");

+                    image.src = "/webperf/tests/resources/generate_resource.php?type=image&id=" + i;

+                }

+            }

 

             function onload_test()

             {

diff --git a/tests/submission/Intel/resource-timing/test_resource_timing_store_and_clear_during_callback.html b/tests/submission/Intel/resource-timing/test_resource_timing_store_and_clear_during_callback.html
index 2ae3b42..54b1485 100644
--- a/tests/submission/Intel/resource-timing/test_resource_timing_store_and_clear_during_callback.html
+++ b/tests/submission/Intel/resource-timing/test_resource_timing_store_and_clear_during_callback.html
@@ -5,21 +5,54 @@
         <title>read and clear resource timing entry in onresourcetimingbufferfull callback</title>

         <script>

             var resource_timing_buffer_size = 1;

+            var resource_number = 3;

             var global_buffer = [];

+            var iframe;

+            var d;

+            var w;

+            var supportBufferControlInterface = false;

+

             function store_and_clear()

             {

-                var entry_list = performance.getEntriesByType('resource');

+                var entry_list = w.performance.getEntriesByType('resource');

                 for (var i = 0; i < entry_list.length; ++i)

                     global_buffer.push(entry_list[i]);

-                performance.clearResourceTimings();

+                w.performance.clearResourceTimings();

             }

 

-            var supportBufferControlInterface = false;

-            if (performance && performance.setResourceTimingBufferSize)

+            function onload_test()

             {

-                var supportBufferControlInterface = true;

-                performance.onresourcetimingbufferfull = store_and_clear;

-                performance.setResourceTimingBufferSize(resource_timing_buffer_size);

+                if (!supportBufferControlInterface || !performance.getEntriesByType)

+                {

+                    test_true(false, "Resource Timing and Performance Timeline interface required by this test are supported!");

+                    done();

+                    return;    

+                }

+

+                test_equals(w.performance.getEntriesByType('resource').length, 0, "No entry should be stored in resource timing buffer since it's cleared once an item arrived!");

+                test_equals(global_buffer.length, resource_number, resource_number + " resource timing entries should be moved to global buffer!");

+                done();

+            }

+

+            function setup_iframe() {

+                iframe = document.getElementById('frameContext');

+                iframe.onload = onload_test;

+                w = iframe.contentWindow;

+                d = iframe.contentWindow.document;

+                body = d.createElement('body');

+                d.getElementsByTagName('html')[0].appendChild(body);

+

+                if (performance && performance.setResourceTimingBufferSize)

+                {

+                    supportBufferControlInterface = true;

+                    w.performance.setResourceTimingBufferSize(resource_timing_buffer_size);

+                    w.performance.addEventListener('resourcetimingbufferfull', store_and_clear);

+                }

+

+                for (var i = 1; i <= resource_number; i++) {

+                    var image = d.createElement("img");

+                    image.src = "/webperf/tests/resources/generate_resource.php?type=image&id=" + i;

+                }

             }

         </script>

         <link rel="author" title="Intel" href="http://www.intel.com/" />

@@ -30,24 +63,12 @@
         <script>

             setup({ explicit_done: true });                

             test_namespace();

-            function onload_test()

-            {

-                if (!supportBufferControlInterface || !performance.getEntriesByType)

-                {

-                    test_true(false, "Resource Timing and Performance Timeline interface required by this test are supported!");

-                    done();

-                    return;    

-                }

-

-                test_equals(performance.getEntriesByType('resource').length, 0, "No entry should be stored in resource timing buffer since it's cleared once an item arrived!");

-                test_equals(global_buffer.length, 3, "3 resource timing entries should be moved to global buffer!");

-                done();

-            }

         </script>

     </head>

-    <body onload="onload_test();">

+    <body>

         <h1>Description</h1>

         <p>This test validates the behavior of read and clear operation in onresourcetimingbufferfull callback of resource timing.</p>

         <div id="log"></div>

+    <iframe id="frameContext" src="/webperf/tests/resources/inject_resource_test.html"></iframe>

     </body>

 </html>