diff options
Diffstat (limited to 'testing/web-platform/tests/service-workers/service-worker/tentative')
2 files changed, 37 insertions, 2 deletions
diff --git a/testing/web-platform/tests/service-workers/service-worker/tentative/static-router/resources/router-rules.js b/testing/web-platform/tests/service-workers/service-worker/tentative/static-router/resources/router-rules.js index 4e6f8bb955..c3aef4272f 100644 --- a/testing/web-platform/tests/service-workers/service-worker/tentative/static-router/resources/router-rules.js +++ b/testing/web-platform/tests/service-workers/service-worker/tentative/static-router/resources/router-rules.js @@ -39,6 +39,25 @@ const routerRules = { condition: {requestMethod: String.fromCodePoint(0x3042)}, source: 'network' }], + 'condition-invalid-or-condition-depth': (() => { + const max = 10; + const addOrCondition = (obj, depth) => { + if (depth > max) { + return obj; + } + return { + urlPattern: `/foo-${depth}`, + or: [addOrCondition(obj, depth + 1)] + }; + }; + return {condition: addOrCondition({}, 0), source: 'network'}; + })(), + 'condition-invalid-router-size': [...Array(512)].map((val, i) => { + return { + condition: {urlPattern: `/foo-${i}`}, + source: 'network' + }; + }), 'condition-request-destination-script-network': [{condition: {requestDestination: 'script'}, source: 'network'}], 'condition-or-source-network': [{ diff --git a/testing/web-platform/tests/service-workers/service-worker/tentative/static-router/static-router-invalid-rules.https.html b/testing/web-platform/tests/service-workers/service-worker/tentative/static-router/static-router-invalid-rules.https.html index 4ed4ad4b3c..9ef7cfdc9f 100644 --- a/testing/web-platform/tests/service-workers/service-worker/tentative/static-router/static-router-invalid-rules.https.html +++ b/testing/web-platform/tests/service-workers/service-worker/tentative/static-router/static-router-invalid-rules.https.html @@ -15,8 +15,10 @@ const ROUTER_RULE_KEY_INVALID_REQUEST_METHOD = 'condition-invalid-request-method'; -const ROUTER_RULE_KEY_SOURCE_FETCH_EVENT = - 'condition-request-source-fetch-event'; +const ROUTER_RULE_KEY_INVALID_OR_CONDITION_DEPTH = + 'condition-invalid-or-condition-depth'; +const ROUTER_RULE_KEY_INVALID_ROUTER_SIZE = + 'condition-invalid-router-size'; promise_test(async t => { const worker = await registerAndActivate(t, ROUTER_RULE_KEY_INVALID_REQUEST_METHOD); @@ -25,5 +27,19 @@ promise_test(async t => { assert_equals(errors.length, 1); }, 'addRoutes should raise for invalid request method.'); +promise_test(async t => { + const worker = await registerAndActivate(t, ROUTER_RULE_KEY_INVALID_OR_CONDITION_DEPTH); + t.add_cleanup(() => {reset_info_in_worker(worker)}); + const {errors} = await get_info_from_worker(worker); + assert_equals(errors.length, 1); +}, 'addRoutes should raise if or condition exceeds the depth limit'); + +promise_test(async t => { + const worker = await registerAndActivate(t, ROUTER_RULE_KEY_INVALID_ROUTER_SIZE); + t.add_cleanup(() => {reset_info_in_worker(worker)}); + const {errors} = await get_info_from_worker(worker); + assert_equals(errors.length, 1); +}, 'addRoutes should raise if the number of router rules exceeds the length limit'); + </script> </body> |