| OLD | NEW | 
|   1 <!DOCTYPE html> |   1 <!DOCTYPE html> | 
 |   2 <title>Text Selection when dragging mouse outside the SVG text element</title> | 
|   2 <style> |   3 <style> | 
|   3 text { |   4 text { | 
|   4   font: 10px Arial; |   5   font: 10px Arial; | 
|   5 } |   6 } | 
|   6 </style> |   7 </style> | 
|   7 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlin
    k" width="400" height="400" viewBox="0 0 500 500" style="border: 1px solid black
    ;"> |   8 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlin
    k" width="400" height="400" viewBox="0 0 500 500" style="border: 1px solid black
    ;"> | 
|   8   <g> |   9   <g> | 
|   9     <text id="line1" x="10" y="30">Hello World. Hello, SVG.</text> |  10     <text id="line1" x="10" y="30">Hello World. Hello, SVG.</text> | 
|  10   </g> |  11   </g> | 
|  11   <g transform="translate(120, 30)"> |  12   <g transform="translate(120, 30)"> | 
|  12     <text id="line2" x="50" y="50">Hello World. Hello, SVG.</text> |  13     <text id="line2" x="50" y="50">Hello World. Hello, SVG.</text> | 
|  13   </g> |  14   </g> | 
|  14   <g transform="translate(240, 30)"> |  15   <g transform="translate(240, 30)"> | 
|  15     <text id="line3" x="100" y="100">Hello World. Hello, SVG.</text> |  16     <text id="line3" x="100" y="100">Hello World. Hello, SVG.</text> | 
|  16   </g> |  17   </g> | 
|  17 </svg> |  18 </svg> | 
|  18 <script src="../../resources/js-test.js"></script> |  19 <script src="../../resources/testharness.js"></script> | 
 |  20 <script src="../../resources/testharnessreport.js"></script> | 
|  19 <script src="resources/SelectionTestCase.js"></script> |  21 <script src="resources/SelectionTestCase.js"></script> | 
|  20 <script type="text/javascript"> |  22 <script> | 
|  21 function getEndPosition(id, offset, gap) { |  23 test(function() { | 
|  22   var element = document.getElementById(id); |  24   var absEndPos = getEndPosition('line3', 10, { x : 0, y : 30}); | 
|  23   var endPos = element.getEndPositionOfChar(offset); |  25   selectTextFromCharToPoint({ id: 'line1', offset: 7 }, absEndPos, { startElemen
    tId: "line1", start: 7, endElementId: "line3", end: 11 }); | 
|  24   endPos.x += gap.x; |  | 
|  25   endPos.y += gap.y; |  | 
|  26   var absEndPos = toAbsoluteCoordinates(endPos, element); |  | 
|  27   return absEndPos; |  | 
|  28 } |  | 
|  29  |  26  | 
|  30 var absEndPos = getEndPosition('line3', 10, { x : 0, y : 30}); |  27   absEndPos = getEndPosition('line2', 10, { x : 0, y : 30}); | 
|  31 selectTextFromCharToPoint({ id: 'line1', offset: 7 }, absEndPos, { startElementI
    d: "line1", start: "7", endElementId: "line3", end: "11" }); |  28   selectTextFromCharToPoint({ id: 'line1', offset: 7 }, absEndPos, { startElemen
    tId: "line1", start: 7,  endElementId: "line2", end: 11 }); | 
|  32  |  29  | 
|  33 absEndPos = getEndPosition('line2', 10, { x : 0, y : 30}); |  30   absEndPos = getEndPosition('line3', 10, { x : 0, y : 30}); | 
|  34 selectTextFromCharToPoint({ id: 'line1', offset: 7 }, absEndPos, { startElementI
    d: "line1", start: "7",  endElementId: "line2", end: "11" }); |  31   selectTextFromCharToPoint({ id: 'line2', offset: 7 }, absEndPos, { startElemen
    tId: "line2", start: 7,  endElementId: "line3", end: 11 }); | 
|  35  |  32  | 
|  36 absEndPos = getEndPosition('line3', 10, { x : 0, y : 30}); |  33   absEndPos = getEndPosition('line1', 8, { x : 0, y : -30}); | 
|  37 selectTextFromCharToPoint({ id: 'line2', offset: 7 }, absEndPos, { startElementI
    d: "line2", start: "7",  endElementId: "line3", end: "11" }); |  34   selectTextFromCharToPoint({ id: 'line3', offset: 7 }, absEndPos, { startElemen
    tId: "line3", start: 7,  endElementId: "line1", end: 9 }); | 
|  38  |  35  | 
|  39 absEndPos = getEndPosition('line1', 8, { x : 0, y : -30}); |  36   absEndPos = getEndPosition('line1', 8, { x : 0, y : -30}); | 
|  40 selectTextFromCharToPoint({ id: 'line3', offset: 7 }, absEndPos, { startElementI
    d: "line3", start: "7",  endElementId: "line1", end: "9" }); |  37   selectTextFromCharToPoint({ id: 'line2', offset: 7 }, absEndPos, { startElemen
    tId: "line2", start: 7,  endElementId: "line1", end: 9 }); | 
|  41  |  38  | 
|  42 absEndPos = getEndPosition('line1', 8, { x : 0, y : -30}); |  39   absEndPos = getEndPosition('line2', 8, { x : 0, y : -30}); | 
|  43 selectTextFromCharToPoint({ id: 'line2', offset: 7 }, absEndPos, { startElementI
    d: "line2", start: "7",  endElementId: "line1", end: "9" }); |  40   selectTextFromCharToPoint({ id: 'line3', offset: 7 }, absEndPos, { startElemen
    tId: "line3", start: 7,  endElementId: "line2", end: 9 }); | 
|  44  |  41 }); | 
|  45 absEndPos = getEndPosition('line2', 8, { x : 0, y : -30}); |  | 
|  46 selectTextFromCharToPoint({ id: 'line3', offset: 7 }, absEndPos, { startElementI
    d: "line3", start: "7",  endElementId: "line2", end: "9" }); |  | 
|  47 </script> |  42 </script> | 
| OLD | NEW |