| Index: third_party/WebKit/LayoutTests/external/wpt/fetch/api/cors/cors-filtering.js
 | 
| diff --git a/third_party/WebKit/LayoutTests/external/wpt/fetch/api/cors/cors-filtering.js b/third_party/WebKit/LayoutTests/external/wpt/fetch/api/cors/cors-filtering.js
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..d2c53e79fd63dc168867f76ea0aa6fcb25cf47bb
 | 
| --- /dev/null
 | 
| +++ b/third_party/WebKit/LayoutTests/external/wpt/fetch/api/cors/cors-filtering.js
 | 
| @@ -0,0 +1,66 @@
 | 
| +if (this.document === undefined) {
 | 
| +  importScripts("/resources/testharness.js");
 | 
| +  importScripts("../resources/utils.js");
 | 
| +}
 | 
| +
 | 
| +function corsFilter(corsUrl, headerName, headerValue, isFiltered) {
 | 
| +  var url = corsUrl + "?pipe=header(" + headerName + "," + encodeURIComponent(headerValue) +")|header(Access-Control-Allow-Origin,*)";
 | 
| +  promise_test(function(test) {
 | 
| +    return fetch(url).then(function(resp) {
 | 
| +      assert_equals(resp.status, 200, "Fetch success with code 200");
 | 
| +      assert_equals(resp.type , "cors", "CORS fetch's response has cors type");
 | 
| +      if (!isFiltered) {
 | 
| +        assert_equals(resp.headers.get(headerName), headerValue,
 | 
| +          headerName + " header should be included in response with value: " + headerValue);
 | 
| +      } else {
 | 
| +        assert_false(resp.headers.has(headerName), "UA should exclude " + headerName + " header from response");
 | 
| +      }
 | 
| +      test.done();
 | 
| +    });
 | 
| +  }, "CORS filter on " + headerName + " header");
 | 
| +}
 | 
| +
 | 
| +function corsExposeFilter(corsUrl, headerName, headerValue, isForbidden) {
 | 
| +  var url = corsUrl + "?pipe=header(" + headerName + "," + encodeURIComponent(headerValue) +")|" +
 | 
| +                            "header(Access-Control-Allow-Origin,*)" +
 | 
| +                            "header(Access-Control-Expose-Headers," + headerName + ")";
 | 
| +
 | 
| +  promise_test(function(test) {
 | 
| +    return fetch(url).then(function(resp) {
 | 
| +      assert_equals(resp.status, 200, "Fetch success with code 200");
 | 
| +      assert_equals(resp.type , "cors", "CORS fetch's response has cors type");
 | 
| +      if (!isForbidden) {
 | 
| +        assert_equals(resp.headers.get(headerName), headerValue,
 | 
| +          headerName + " header should be included in response with value: " + headerValue);
 | 
| +      } else {
 | 
| +        assert_false(resp.headers.has(headerName), "UA should exclude " + headerName + " header from response");
 | 
| +      }
 | 
| +      test.done();
 | 
| +    });
 | 
| +  }, "CORS filter on " + headerName + " header, header is exposed");
 | 
| +}
 | 
| +
 | 
| +var url = "http://{{host}}:{{ports[http][1]}}" + dirname(location.pathname) + RESOURCES_DIR + "top.txt";
 | 
| +
 | 
| +corsFilter(url, "Cache-Control", "no-cache", false);
 | 
| +corsFilter(url, "Content-Language", "fr", false);
 | 
| +corsFilter(url, "Content-Type", "text/html", false);
 | 
| +corsFilter(url, "Expires","04 May 1988 22:22:22 GMT" , false);
 | 
| +corsFilter(url, "Last-Modified", "04 May 1988 22:22:22 GMT", false);
 | 
| +corsFilter(url, "Pragma", "no-cache", false);
 | 
| +
 | 
| +corsFilter(url, "Age", "27", true);
 | 
| +corsFilter(url, "Server", "wptServe" , true);
 | 
| +corsFilter(url, "Warning", "Mind the gap" , true);
 | 
| +corsFilter(url, "Content-Length", "0" , true);
 | 
| +corsFilter(url, "Set-Cookie", "name=value" , true);
 | 
| +corsFilter(url, "Set-Cookie2", "name=value" , true);
 | 
| +
 | 
| +corsExposeFilter(url, "Age", "27", false);
 | 
| +corsExposeFilter(url, "Server", "wptServe" , false);
 | 
| +corsExposeFilter(url, "Warning", "Mind the gap" , false);
 | 
| +corsExposeFilter(url, "Content-Length", "0" , false);
 | 
| +corsExposeFilter(url, "Set-Cookie", "name=value" , true);
 | 
| +corsExposeFilter(url, "Set-Cookie2", "name=value" , true);
 | 
| +
 | 
| +done();
 | 
| 
 |