101-manual.html (4806B)
1 <!doctype html> 2 <html> 3 <head> 4 <title>.origin for all events</title> 5 <style type="text/css"> 6 blockquote { height: 100px; width: 100px; background: orange; margin: 0; padding: 0; float: left; } 7 blockquote + blockquote { background: blue; } 8 blockquote + blockquote + blockquote { background: fuchsia; } 9 blockquote + div { clear: left; } 10 </style> 11 <script type="text/javascript" src="../resources/crossorigin.sub.js"></script> 12 <script type="text/javascript" src="/resources/testharness.js"></script> 13 <script type="text/javascript" src="/resources/testharnessreport.js"></script> 14 <script type="text/javascript"> 15 setup(function () {},{explicit_done:true}); 16 window.onload = function () { 17 var origin = 'http://'+httpHostMain; 18 if( location.href.indexOf(origin+'/') ) { 19 done(); 20 document.body.innerHTML = 'This must be tested on '+origin+'/'; 21 return; 22 } 23 var orange = document.getElementsByTagName('blockquote')[0], 24 blue = document.getElementsByTagName('blockquote')[1], 25 fuchsia = document.getElementsByTagName('blockquote')[2], 26 evtdone = {}; 27 orange.ondragstart = function (e) { 28 e.dataTransfer.effectAllowed = 'copy'; 29 e.dataTransfer.setData('text','dummy text'); 30 if( evtdone[e.type] ) { return; } 31 evtdone[e.type] = true; 32 test(function() { 33 assert_equals( e.dataTransfer.origin, origin ); 34 }, '.origin should exist in '+e.type ); 35 test(function () { 36 //WebIDL and ECMAScript 5 - a readonly property has a getter but not a setter 37 //ES5 makes [[Put]] fail but not throw 38 var failed = false, oldorigin = e.dataTransfer.origin; 39 try { 40 e.dataTransfer.origin = 'http://example.com'; 41 } catch(e) { 42 failed = e; 43 } 44 assert_equals(e.dataTransfer.origin,oldorigin); 45 assert_false(failed,'an error was thrown'); 46 }, '.origin must be read-only in '+e.type); 47 }; 48 blue.ondragenter = blue.ondragover = function (e) { 49 e.preventDefault(); 50 }; 51 orange.ondrag = blue.ondragleave = function (e) { 52 if( evtdone[e.type] ) { return; } 53 evtdone[e.type] = true; 54 test(function() { 55 assert_equals( e.dataTransfer.origin, origin ); 56 }, '.origin should exist in '+e.type ); 57 test(function () { 58 var failed = false, oldorigin = e.dataTransfer.origin; 59 try { 60 e.dataTransfer.origin = 'http://example.com'; 61 } catch(e) { 62 failed = e; 63 } 64 assert_equals(e.dataTransfer.origin,oldorigin); 65 assert_false(failed,'an error was thrown'); 66 }, '.origin must be read-only in '+e.type); 67 }; 68 fuchsia.ondragenter = fuchsia.ondragover = fuchsia.ondrop = function (e) { 69 e.preventDefault(); 70 if( evtdone[e.type] ) { return; } 71 evtdone[e.type] = true; 72 test(function() { 73 assert_equals( e.dataTransfer.origin, origin ); 74 }, '.origin should exist in '+e.type ); 75 test(function () { 76 var failed = false, oldorigin = e.dataTransfer.origin; 77 try { 78 e.dataTransfer.origin = 'http://example.com'; 79 } catch(e) { 80 failed = e; 81 } 82 assert_equals(e.dataTransfer.origin,oldorigin); 83 assert_false(failed,'an error was thrown'); 84 }, '.origin must be read-only in '+e.type); 85 }; 86 orange.ondragend = function (e) { 87 if( evtdone[e.type] ) { return; } 88 evtdone[e.type] = true; 89 test(function() { 90 assert_equals( e.dataTransfer.origin, origin ); 91 }, '.origin should exist in '+e.type ); 92 test(function () { 93 var failed = false, oldorigin = e.dataTransfer.origin; 94 try { 95 e.dataTransfer.origin = 'http://example.com'; 96 } catch(e) { 97 failed = e; 98 } 99 assert_equals(e.dataTransfer.origin,oldorigin); 100 assert_false(failed,'an error was thrown'); 101 }, '.origin must be read-only in '+e.type); 102 test(function() { 103 var failtxt = '- Reload and try again'; 104 assert_true( evtdone.dragstart, 'dragstart event was not tested'+failtxt ); 105 assert_true( evtdone.drag, 'drag event was not tested'+failtxt ); 106 assert_true( evtdone.dragenter, 'dragenter event was not tested'+failtxt ); 107 assert_true( evtdone.dragleave, 'dragleave event was not tested'+failtxt ); 108 assert_true( evtdone.dragover, 'dragover event was not tested'+failtxt ); 109 assert_true( evtdone.drop, 'drop event was not tested'+failtxt ); 110 assert_true( evtdone.dragend, 'dragend event was not tested'+failtxt ); 111 }, 'all event types must now have been tested' ); 112 done(); 113 }; 114 }; 115 </script> 116 </head> 117 <body> 118 <blockquote draggable="true"></blockquote> 119 <blockquote></blockquote> 120 <blockquote></blockquote> 121 <div id="log">Drag the orange square over the blue square then the fuchsia square, then release it.</div> 122 <noscript><p>Enable JavaScript and reload</p></noscript> 123 </body> 124 </html>