Chromium Code Reviews| Index: third_party/WebKit/LayoutTests/http/tests/inspector-protocol/resources/data-xfer-resource.php |
| diff --git a/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/resources/data-xfer-resource.php b/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/resources/data-xfer-resource.php |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..e47bffbe130f26acc70facd7ad69169d0e891763 |
| --- /dev/null |
| +++ b/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/resources/data-xfer-resource.php |
| @@ -0,0 +1,73 @@ |
| +<?php |
| +header_remove("X-Powered-By"); |
| + |
| +$redirect = (bool) $_GET["redirect"]; |
| +$cached = (bool) $_GET["cached"]; |
| +$chunked = (bool) $_GET["chunked"]; |
| +$size = (int) $_GET["size"]; |
| +$gzip = (bool) $_GET["gzip"]; |
| +$flush_header_with_x_bytes = (int) $_GET["flush_header_with_x_bytes"]; |
| +$wait_after_headers_packet = (int) $_GET["wait_after_headers_packet"]; |
| +$flush_every_x_bytes = ((int) $_GET["flush_every"])?:1; |
| +$wait_every_x_bytes = ((int) $_GET["wait_every_x_bytes"])?:0xFFFFF; |
| +$wait_duration_every_x_bytes = ((int) $_GET["wait_duration_every_x_bytes"])?:50; |
| + |
| +$sent_data_size = 0; |
| + |
| +if ($redirect) { |
| + unset($_GET["redirect"]); |
| + header("Location: ?" . http_build_query($_GET)); |
| + exit; |
| +} |
| + |
| +// This is done because it should force netstack to handle data as it comes. |
| +header("Content-Type: application/json"); |
| + |
| +if ($cached) { |
| + header("HTTP/1.0 304 Not Modified"); |
| + exit; |
| +} |
| + |
| +if ($gzip) |
| + ob_start("ob_gzhandler"); |
| +else |
| + ob_start(); |
| + |
| +if (!$chunked) |
| + header("Content-Length: " . $size); |
| + |
| +if ($flush_header_with_x_bytes) { |
| + send_data($flush_header_with_x_bytes); |
| + full_flush(); |
| +} |
| + |
| +if ($wait_after_headers_packet) |
| + usleep($wait_after_headers_packet * 1000); |
| + |
| +while ($sent_data_size < $size) { |
| + $flush_size = $flush_every_x_bytes - ($sent_data_size % $flush_every_x_bytes); |
| + $wait_size = $wait_every_x_bytes - ($sent_data_size % $wait_every_x_bytes); |
| + |
| + $send_size = min($flish_size, $wait_size); |
|
Nico
2017/05/11 16:58:20
This is probably supposed to be flush_size, not fl
|
| + if (!$send_size) |
| + $send_size = max($flish_size, $wait_size); |
| + |
| + send_data($send_size); |
| + if ($sent_data_size % $flush_every_x_bytes === 0) |
| + full_flush(); |
| + if ($sent_data_size % $wait_every_x_bytes === 0) |
| + usleep($wait_duration_every_x_bytes * 1000); |
| +} |
| + |
| +function send_data($size) |
| +{ |
| + global $sent_data_size; |
| + echo str_repeat("a", $size); |
| + $sent_data_size += $size; |
| +} |
| + |
| +function full_flush() |
| +{ |
| + ob_flush(); |
| + flush(); |
| +} |