OLD | NEW |
1 // include resources/js-test.js before this file. | 1 // include resources/js-test.js before this file. |
2 | 2 |
| 3 function getCounterValues() { |
| 4 testRunner.resetTestHelperControllers(); |
| 5 gc(); |
| 6 |
| 7 var ret = {'numberOfLiveDocuments': window.internals.numberOfLiveDocuments()
}; |
| 8 |
| 9 var refCountedInstances = JSON.parse(window.internals.dumpRefCountedInstance
Counts()); |
| 10 for (typename in refCountedInstances) |
| 11 ret['numberOfInstances-'+typename] = refCountedInstances[typename]; |
| 12 |
| 13 return ret; |
| 14 } |
| 15 |
| 16 function compareValues(countersBefore, countersAfter, tolerance) { |
| 17 for (type in tolerance) { |
| 18 var before = countersBefore[type]; |
| 19 var after = countersAfter[type]; |
| 20 |
| 21 if (after - before <= tolerance[type]) |
| 22 testPassed('The difference of counter "'+type+'" before and after th
e cycle is under the threshold of '+tolerance[type]+'.'); |
| 23 else |
| 24 testFailed('counter "'+type+'" was '+before+' before and now '+after
+' after the cycle. This exceeds the threshold of '+tolerance[type]+'.'); |
| 25 } |
| 26 } |
| 27 |
3 function doLeakTest(src, tolerance) { | 28 function doLeakTest(src, tolerance) { |
4 function getCounterValues() { | |
5 testRunner.resetTestHelperControllers(); | |
6 gc(); | |
7 | |
8 var ret = {'numberOfLiveDocuments': window.internals.numberOfLiveDocumen
ts()}; | |
9 | |
10 var refCountedInstances = JSON.parse(window.internals.dumpRefCountedInst
anceCounts()); | |
11 for (typename in refCountedInstances) | |
12 ret['numberOfInstances-'+typename] = refCountedInstances[typename]; | |
13 | |
14 return ret; | |
15 } | |
16 | |
17 var frame = document.createElement('iframe'); | 29 var frame = document.createElement('iframe'); |
18 document.body.appendChild(frame); | 30 document.body.appendChild(frame); |
19 function loadSourceIntoIframe(src, callback) { | 31 function loadSourceIntoIframe(src, callback) { |
20 var originalSrc = frame.src; | 32 var originalSrc = frame.src; |
21 | 33 |
22 frame.onload = function() { | 34 frame.onload = function() { |
23 if (frame.src === originalSrc) | 35 if (frame.src === originalSrc) |
24 return true; | 36 return true; |
25 | 37 |
26 callback(); | 38 callback(); |
27 return true; | 39 return true; |
28 }; | 40 }; |
29 frame.src = src; | 41 frame.src = src; |
30 } | 42 } |
31 | 43 |
32 function compareValues(countersBefore, countersAfter, tolerance) { | |
33 for (type in tolerance) { | |
34 var before = countersBefore[type]; | |
35 var after = countersAfter[type]; | |
36 | |
37 if (after - before <= tolerance[type]) | |
38 testPassed('The difference of counter "'+type+'" before and afte
r the cycle is under the threshold of '+tolerance[type]+'.'); | |
39 else | |
40 testFailed('counter "'+type+'" was '+before+' before and now '+a
fter+' after the cycle. This exceeds the threshold of '+tolerance[type]+'.'); | |
41 } | |
42 } | |
43 | |
44 jsTestIsAsync = true; | 44 jsTestIsAsync = true; |
45 if (!window.internals) { | 45 if (!window.internals) { |
46 debug("This test only runs on DumpRenderTree, as it requires existence o
f window.internals and cross-domain resource access check disabled."); | 46 debug("This test only runs on DumpRenderTree, as it requires existence o
f window.internals and cross-domain resource access check disabled."); |
47 finishJSTest(); | 47 finishJSTest(); |
48 } | 48 } |
49 | 49 |
50 loadSourceIntoIframe('about:blank', function() { | 50 loadSourceIntoIframe('about:blank', function() { |
51 // blank document loaded... | 51 // blank document loaded... |
52 var countersBefore = getCounterValues(); | 52 var countersBefore = getCounterValues(); |
53 | 53 |
(...skipping 18 matching lines...) Expand all Loading... |
72 | 72 |
73 function htmlToUrl(html) { | 73 function htmlToUrl(html) { |
74 return 'data:text/html;charset=utf-8,' + html; | 74 return 'data:text/html;charset=utf-8,' + html; |
75 } | 75 } |
76 | 76 |
77 function grabScriptText(id) { | 77 function grabScriptText(id) { |
78 return document.getElementById(id).innerText; | 78 return document.getElementById(id).innerText; |
79 } | 79 } |
80 | 80 |
81 // include fast/js/resources/js-test-post.js after this file. | 81 // include fast/js/resources/js-test-post.js after this file. |
OLD | NEW |