Torne (Richard Coles) | 5c87bf8 | 2012-11-14 11:46:17 +0000 | [diff] [blame] | 1 | <html> |
| 2 | <!-- |
| 3 | This test case is used to prove HTMLParserScheduler should be suspended when page loading is deferred. See https://bugs.webkit.org/show_bug.cgi?id=48077. |
| 4 | However, this test case can work only when customHTMLTokenizerChunkSize() is equal to or smaller than 256. To reproduce the problem with other settings, try |
| 5 | adding more tags into body. |
| 6 | |
| 7 | To use the test case, open it in browser, when the alert shows up, wait for a few seconds, and close the alert. If it shows "Error detected", that means the problem exists. |
| 8 | --> |
| 9 | <script> |
| 10 | var showingAlert = false; |
| 11 | |
| 12 | function log(message, replace) |
| 13 | { |
| 14 | if (replace) |
| 15 | document.getElementById("result").innerHTML = message; |
| 16 | else |
| 17 | document.getElementById("result").innerHTML += "<br>" + message; |
| 18 | } |
| 19 | |
| 20 | function showAlert() |
| 21 | { |
| 22 | showingAlert = true; |
| 23 | alert("Test"); |
| 24 | showingAlert = false; |
| 25 | } |
| 26 | |
| 27 | // Insert a script element so the script will be executed when the resource is loaded. |
| 28 | function insertScript() |
| 29 | { |
| 30 | var head = document.getElementsByTagName("head")[0]; |
| 31 | var myScript = document.createElement('script'); |
| 32 | myScript.type = 'text/javascript'; |
| 33 | myScript.src = 'resources/bugzilla-48077.js'; |
| 34 | head.appendChild(myScript); |
| 35 | } |
| 36 | function check() |
| 37 | { |
| 38 | // Check JS re-entrancy. If showingAlert is true, we are still in showAlert(). |
| 39 | if (showingAlert) |
| 40 | log("Error detected!", false); |
| 41 | else |
| 42 | log("No error detected.", false); |
| 43 | } |
| 44 | |
| 45 | // Do a time consuming job so we can make HTML parser run over time limit. |
| 46 | function logTime() |
| 47 | { |
| 48 | // time consuming job; |
| 49 | var startTime = new Date(); |
| 50 | do { |
| 51 | var currentTime = new Date(); |
| 52 | log(currentTime, true); |
| 53 | } while (currentTime - startTime < 1000); |
| 54 | } |
| 55 | </script> |
| 56 | <body> |
| 57 | <p id="result"></p> |
| 58 | |
| 59 | <script> |
| 60 | insertScript(); |
| 61 | </script> |
| 62 | |
| 63 | <!-- Time consuming job to make HTML parser run over chunk time limit --> |
| 64 | <script> |
| 65 | logTime(); |
| 66 | </script> |
| 67 | |
| 68 | <!-- Lots of tags to make HTML parser run over chunk size limit --> |
| 69 | <a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a> |
| 70 | |
| 71 | <!-- Time consuming job to make HTML parser run over chunk time limit --> |
| 72 | <script> |
| 73 | logTime(); |
| 74 | </script> |
| 75 | |
| 76 | <!-- Lots of tags to make HTML parser run over chunk size limit --> |
| 77 | <a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a> |
| 78 | |
| 79 | |
| 80 | <script> |
| 81 | check(); |
| 82 | </script> |
| 83 | |
| 84 | |
| 85 | |
| 86 | </body> |
| 87 | </html> |