mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Test for Bug 796179 - Errors in files with large data URIs can cause the error console to consume gigabytes of memory and lock up the browser. r=rcampbell
This commit is contained in:
parent
5b194fdb85
commit
212640dfa6
@ -15,4 +15,6 @@ EXTRA_COMPONENTS = \
|
||||
jsconsole-clhandler.manifest \
|
||||
$(NULL)
|
||||
|
||||
TEST_DIRS = tests
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
|
18
toolkit/components/console/tests/Makefile.in
Normal file
18
toolkit/components/console/tests/Makefile.in
Normal file
@ -0,0 +1,18 @@
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
DEPTH = @DEPTH@
|
||||
topsrcdir = @top_srcdir@
|
||||
srcdir = @srcdir@
|
||||
VPATH = @srcdir@
|
||||
relativesrcdir = @relativesrcdir@
|
||||
|
||||
include $(DEPTH)/config/autoconf.mk
|
||||
|
||||
MOCHITEST_CHROME_FILES = \
|
||||
test_hugeURIs.xul \
|
||||
$(NULL)
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
64
toolkit/components/console/tests/test_hugeURIs.xul
Normal file
64
toolkit/components/console/tests/test_hugeURIs.xul
Normal file
@ -0,0 +1,64 @@
|
||||
<?xml version="1.0"?>
|
||||
<?xml-stylesheet type="text/css" href="chrome://global/skin"?>
|
||||
<?xml-stylesheet type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"?>
|
||||
<!--
|
||||
https://bugzilla.mozilla.org/show_bug.cgi?id=796179
|
||||
-->
|
||||
<window title="Mozilla Bug 796179"
|
||||
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
|
||||
onload="RunTest();">
|
||||
<script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
|
||||
|
||||
<!-- Detect severe performance and memory issues when large amounts of errors
|
||||
are reported from CSS embedded in a file with a long data URI. Addressed
|
||||
by 786108 for issues internal to the style system and by 796179 for issues
|
||||
related to the error console. This error console test should finish quickly
|
||||
with those patches and run for a very long time or OOM otherwise. -->
|
||||
|
||||
<!-- test results are displayed in the html:body -->
|
||||
<body xmlns="http://www.w3.org/1999/xhtml">
|
||||
<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=796179"
|
||||
target="_blank">Mozilla Bug 796179</a>
|
||||
<div id="badSVG" style="max-width: 1; max-height: 1; overflow: hidden"></div>
|
||||
</body>
|
||||
|
||||
<!-- display the error console so we can test its reaction to the test -->
|
||||
<iframe id="errorConsoleFrame" height="400" src="chrome://global/content/console.xul"></iframe>
|
||||
|
||||
<!-- test code -->
|
||||
<script type="application/javascript">
|
||||
<![CDATA[
|
||||
function RunTest()
|
||||
{
|
||||
// Create the bad SVG and add it to the document.
|
||||
var img = new Array;
|
||||
img.push('<img src="data:image/svg+xml,');
|
||||
img.push(encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" width="300px" height="300px">'));
|
||||
|
||||
for (var i = 0 ; i < 10000 ; i++)
|
||||
img.push(encodeURIComponent('<circle cx="0" cy="0" r="1" style="xxx-invalid-property: 0;"/>'));
|
||||
|
||||
img.push(encodeURIComponent('</svg>'));
|
||||
img.push('" />');
|
||||
|
||||
document.getElementById('badSVG').innerHTML = img.join('');
|
||||
|
||||
// We yield control of the thread, allowing the error console to render.
|
||||
// If we get control back without timing out or OOMing then the test passed.
|
||||
SimpleTest.waitForExplicitFinish();
|
||||
SimpleTest.executeSoon(function() {
|
||||
// Clean up.
|
||||
var elem = document.getElementById('errorConsoleFrame');
|
||||
elem.parentNode.removeChild(elem);
|
||||
elem = document.getElementById('badSVG');
|
||||
elem.parentNode.removeChild(elem);
|
||||
elem = null;
|
||||
|
||||
// Finish the test with a pass.
|
||||
ok(true, 'Error console rendered OK.');
|
||||
SimpleTest.finish();
|
||||
}, 0);
|
||||
}
|
||||
]]>
|
||||
</script>
|
||||
</window>
|
Loading…
Reference in New Issue
Block a user