123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <style type="text/css">
- #telugu {
- font-size: 2cm;
- line-height: 1.5em;
- font-family: "Lohit Telugu";
- }
- </style>
- <script>
- var ITERATIONS = 10000;
- if (window.testRunner)
- testRunner.waitUntilDone();
- function mouseSelection() {
- var body = document.body;
- body.focus();
- xStart = 0;
- yStart = 0;
- if (window.eventSender) {
- eventSender.mouseMoveTo(xStart, yStart);
- eventSender.mouseDown();
- for(var i=0;i<ITERATIONS;i++) {
- randomCoord = randomCoordinate();
- eventSender.mouseMoveTo(randomCoord.x, randomCoord.y);
- }
- }
- if (window.testRunnder)
- testRunner.notifyDone();
- }
- function randomCoordinate(axis) {
- return { x: Math.floor(Math.random()*window.innerWidth),
- y: Math.floor(Math.random()* window.innerHeight) }
- }
- </script>
- </head>
- <body onload="mouseSelection()"><p>
- This test fuzzes HarfBuzzShaper::offsetForPosition to trigger an assertion in the downstream function characterIndexForXPosition().
- See https://bugs.webkit.org/show_bug.cgi?id=92376 - reason of the assertion being hit is a minuscule floating point inaccuracy
- between an if condition that gates the call to characterIndexForXPosition and the actual argument that's then given to the function.
- This test works on WebKit EFL, with the Ubuntu Telugu Lohit font installed to the EFL jhbuild font directory, like:</p>
- <pre>$ cp /usr/share/fonts/truetype/ttf-telugu-fonts/lohit_te.ttf WebKitBuild/Dependencies/Source/webkitgtk-test-fonts-0.0.3</pre>
- <p>Run with:</p>
- <pre>$ WebKitBuild/Debug/bin/DumpRenderTree ManualTests/harfbuzz-mouse-selection-crash.html</pre>
- <p>Before the change, this would crash 10/10 times. Test passes if it does not crash.</p>
- <p id="telugu">చేనేత కార్మికుల సమస్యలను ప్రభుత్వం దృష్టికి తీసుకువెళ్లేందుకు సిరిసిల్లలో వైఎస్ఆర్ సిపి గౌరవాధ్యక్షురాలు విజయమ్మ చేపట్టినదీక్ష విజయవంతమైంది.</p>
- </body>
- </html>
|