| OLD | NEW |
| 1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
| 2 <script src="../../resources/testharness.js"></script> | 2 <script src="../../resources/testharness.js"></script> |
| 3 <script src="../../resources/testharnessreport.js"></script> | 3 <script src="../../resources/testharnessreport.js"></script> |
| 4 <script src="../../serviceworker/resources/test-helpers.js"></script> | 4 <script src="../../serviceworker/resources/test-helpers.js"></script> |
| 5 <body> | 5 <body> |
| 6 <script> | 6 <script> |
| 7 var ORIGIN = get_host_info()['HTTP_ORIGIN']; | 7 var ORIGIN = get_host_info()['HTTP_ORIGIN']; |
| 8 var IFRAME_BASE_URL = ORIGIN + '/local/serviceworker/resources/fetch-request-bod
y-file-iframe.html'; | 8 var IFRAME_BASE_URL = ORIGIN + '/local/serviceworker/resources/fetch-request-bod
y-file-iframe.html'; |
| 9 var SCOPE = ORIGIN + '/local/serviceworker/resources/fetch-request-body-file-tes
t'; | 9 var SCOPE = ORIGIN + '/local/serviceworker/resources/fetch-request-body-file-tes
t'; |
| 10 | 10 |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 52 } | 52 } |
| 53 var regResult = reg.exec(headers[i][1]); | 53 var regResult = reg.exec(headers[i][1]); |
| 54 if (!regResult) { | 54 if (!regResult) { |
| 55 continue; | 55 continue; |
| 56 } | 56 } |
| 57 return regResult[1]; | 57 return regResult[1]; |
| 58 } | 58 } |
| 59 return ''; | 59 return ''; |
| 60 } | 60 } |
| 61 | 61 |
| 62 function send_post_frame_promise(action) { |
| 63 return new Promise(function(resolve) { |
| 64 var frame_name = 'frame_name'; |
| 65 var frame = document.createElement('iframe'); |
| 66 frame.name = frame_name; |
| 67 document.body.appendChild(frame); |
| 68 var form = document.createElement('form'); |
| 69 form.target = frame_name; |
| 70 form.enctype = 'multipart/form-data'; |
| 71 form.action = SCOPE + '?' + action; |
| 72 form.method = 'post'; |
| 73 var input1 = document.createElement('input'); |
| 74 input1.type = 'text'; |
| 75 input1.value = 'testValue1'; |
| 76 input1.name = 'testName1' |
| 77 form.appendChild(input1); |
| 78 var input2 = document.createElement('input'); |
| 79 input2.type = 'text'; |
| 80 input2.value = 'testValue2'; |
| 81 input2.name = 'testName2' |
| 82 form.appendChild(input2); |
| 83 var input3 = document.createElement('input'); |
| 84 input3.type = 'file'; |
| 85 input3.name = 'testFile' |
| 86 form.appendChild(input3); |
| 87 document.body.appendChild(form); |
| 88 eventSender.beginDragWithFiles( |
| 89 ["../resources/file-for-drag-to-send.txt"]); |
| 90 eventSender.mouseMoveTo(input3.offsetLeft + input3.offsetWidth / 2, |
| 91 input3.offsetTop + input3.offsetHeight / 2); |
| 92 eventSender.mouseUp(); |
| 93 frame.onload = function() { |
| 94 document.body.removeChild(form); |
| 95 resolve(frame); |
| 96 }; |
| 97 form.submit(); |
| 98 }); |
| 99 } |
| 100 |
| 101 function create_expected_body(boundary) { |
| 102 return '--' + boundary + '\r\n' + |
| 103 'Content-Disposition: form-data; name="testName1"\r\n' + |
| 104 '\r\n' + |
| 105 'testValue1\r\n' + |
| 106 '--' + boundary + '\r\n' + |
| 107 'Content-Disposition: form-data; name="testName2"\r\n' + |
| 108 '\r\n' + |
| 109 'testValue2\r\n' + |
| 110 '--' + boundary + '\r\n' + |
| 111 'Content-Disposition: form-data; name="testFile"; filename="file-for-dr
ag-to-send.txt"\r\n' + |
| 112 'Content-Type: text/plain\r\n' + |
| 113 '\r\n' + |
| 114 '1234567890\r\n' + |
| 115 '--' + boundary + '--\r\n'; |
| 116 } |
| 117 |
| 118 function as_text_test_frame_check(frame) { |
| 119 var data = JSON.parse(frame.contentDocument.body.textContent); |
| 120 unload_iframe(frame); |
| 121 assert_equals(data.method, 'POST'); |
| 122 var boundary = get_boundary(data.headers); |
| 123 var expected_body = create_expected_body(boundary); |
| 124 assert_equals(data.body, expected_body); |
| 125 } |
| 126 |
| 127 function as_blob_test_frame_check(frame) { |
| 128 var data = JSON.parse(frame.contentDocument.body.textContent); |
| 129 unload_iframe(frame); |
| 130 assert_equals(data.method, 'POST'); |
| 131 var boundary = get_boundary(data.headers); |
| 132 var expected_body = create_expected_body(boundary); |
| 133 assert_equals(data.body_size, expected_body.length); |
| 134 } |
| 135 |
| 62 async_test(function(t) { | 136 async_test(function(t) { |
| 63 register() | 137 register() |
| 64 .then(function() { | 138 .then(function() { return send_post_frame_promise('asText'); }) |
| 65 return new Promise(function(resolve) { | 139 .then(as_text_test_frame_check) |
| 66 var frame_name = 'frame_name'; | 140 .then(function() { return send_post_frame_promise('asBlob'); }) |
| 67 var frame = document.createElement('iframe'); | 141 .then(as_blob_test_frame_check) |
| 68 frame.name = frame_name; | 142 .then(function() { return unregister_and_done(t); }) |
| 69 document.body.appendChild(frame); | |
| 70 var form = document.createElement('form'); | |
| 71 form.target = frame_name; | |
| 72 form.enctype = 'multipart/form-data'; | |
| 73 form.action = SCOPE + '?form-post'; | |
| 74 form.method = 'post'; | |
| 75 var input1 = document.createElement('input'); | |
| 76 input1.type = 'text'; | |
| 77 input1.value = 'testValue1'; | |
| 78 input1.name = 'testName1' | |
| 79 form.appendChild(input1); | |
| 80 var input2 = document.createElement('input'); | |
| 81 input2.type = 'text'; | |
| 82 input2.value = 'testValue2'; | |
| 83 input2.name = 'testName2' | |
| 84 form.appendChild(input2); | |
| 85 var input3 = document.createElement('input'); | |
| 86 input3.type = 'file'; | |
| 87 input3.name = 'testFile' | |
| 88 form.appendChild(input3); | |
| 89 document.body.appendChild(form); | |
| 90 eventSender.beginDragWithFiles( | |
| 91 ["../resources/file-for-drag-to-send.txt"]); | |
| 92 eventSender.mouseMoveTo(input3.offsetLeft + input3.offsetWidth / 2, | |
| 93 input3.offsetTop + input3.offsetHeight / 2); | |
| 94 eventSender.mouseUp(); | |
| 95 frame.onload = function() { | |
| 96 document.body.removeChild(form); | |
| 97 resolve(frame); | |
| 98 }; | |
| 99 form.submit(); | |
| 100 }); | |
| 101 }) | |
| 102 .then(function(frame) { | |
| 103 var data = JSON.parse(frame.contentDocument.body.textContent); | |
| 104 unload_iframe(frame); | |
| 105 assert_equals(data.method, 'POST'); | |
| 106 var boundary = get_boundary(data.headers); | |
| 107 var expected_body = | |
| 108 '--' + boundary + '\r\n' + | |
| 109 'Content-Disposition: form-data; name="testName1"\r\n' + | |
| 110 '\r\n' + | |
| 111 'testValue1\r\n' + | |
| 112 '--' + boundary + '\r\n' + | |
| 113 'Content-Disposition: form-data; name="testName2"\r\n' + | |
| 114 '\r\n' + | |
| 115 'testValue2\r\n' + | |
| 116 '--' + boundary + '\r\n' + | |
| 117 'Content-Disposition: form-data; name="testFile"; filename="file-for
-drag-to-send.txt"\r\n' + | |
| 118 'Content-Type: text/plain\r\n' + | |
| 119 '\r\n' + | |
| 120 '1234567890\r\n' + | |
| 121 '--' + boundary + '--\r\n'; | |
| 122 assert_equals(data.body, expected_body); | |
| 123 return unregister_and_done(t); | |
| 124 }) | |
| 125 .catch(unreached_rejection(t)); | 143 .catch(unreached_rejection(t)); |
| 126 }, 'Service Worker fetch request body with file.'); | 144 }, 'Service Worker fetch request body with file.'); |
| 127 </script> | 145 </script> |
| 128 </body> | 146 </body> |
| OLD | NEW |