| { |
| "test_description_template": "Mixed-Content: Expects %(expectation)s for %(subresource)s to %(origin)s origin and %(redirection)s redirection from %(source_scheme)s context.", |
| "test_page_title_template": "Mixed-Content: %(title)s", |
| "specification": [ |
| { |
| // optionally-blockable |
| "title": "Optionally-blockable content", |
| "description": "Test behavior of optionally-blockable content", |
| "specification_url": "http://www.w3.org/TR/mixed-content/#category-optionally-blockable", |
| "test_expansion": [ |
| { |
| // opt-in-blocks |
| "expansion": "default", |
| "source_scheme": "https", |
| "source_context_list": "*", |
| "delivery_type": "*", |
| "delivery_value": "opt-in", |
| "redirection": "*", |
| "subresource": [ |
| "audio-tag", |
| "img-tag", |
| "video-tag" |
| ], |
| "origin": [ |
| "cross-http", |
| "same-http" |
| ], |
| "expectation": "blocked" |
| }, |
| { |
| // opt-in-blocks-redirects |
| "expansion": "default", |
| "source_scheme": "https", |
| "source_context_list": "*", |
| "delivery_type": "*", |
| "delivery_value": "opt-in", |
| "redirection": "swap-scheme", |
| "subresource": [ |
| "audio-tag", |
| "img-tag", |
| "video-tag" |
| ], |
| "origin": [ |
| "same-https", |
| "cross-https" |
| ], |
| "expectation": "blocked" |
| }, |
| { |
| // no-opt-in-allows |
| "expansion": "default", |
| "source_scheme": "https", |
| "source_context_list": "*", |
| "delivery_type": "*", |
| "delivery_value": null, |
| "redirection": "*", |
| "subresource": [ |
| "audio-tag", |
| "img-tag", |
| "video-tag" |
| ], |
| "origin": [ |
| "cross-http", |
| "same-http" |
| ], |
| "expectation": "allowed" |
| } |
| ] |
| }, |
| { |
| // blockable |
| "title": "Blockable content", |
| "description": "Test behavior of blockable content.", |
| "specification_url": "http://www.w3.org/TR/mixed-content/#category-blockable", |
| "test_expansion": [ |
| { |
| // opt-in-blocks |
| "expansion": "default", |
| "source_scheme": "https", |
| "source_context_list": "*", |
| "delivery_type": "*", |
| "delivery_value": "opt-in", |
| "redirection": "*", |
| "subresource": [ |
| "a-tag", |
| "beacon", |
| "fetch", |
| "link-css-tag", |
| "link-prefetch-tag", |
| "object-tag", |
| "picture-tag", |
| "script-tag", |
| "sharedworker-classic", |
| "sharedworker-import", |
| "sharedworker-import-data", |
| "sharedworker-module", |
| "speculationrules", |
| "websocket", |
| "worker-classic", |
| "worker-import", |
| "worker-import-data", |
| "worker-module", |
| "worklet-animation", |
| "worklet-animation-import-data", |
| "worklet-audio", |
| "worklet-audio-import-data", |
| "worklet-layout", |
| "worklet-layout-import-data", |
| "worklet-paint", |
| "worklet-paint-import-data", |
| "xhr" |
| ], |
| "origin": [ |
| "cross-http", |
| "same-http" |
| ], |
| "expectation": "blocked" |
| }, |
| { |
| // opt-in-blocks-redirects |
| "expansion": "default", |
| "source_scheme": "https", |
| "source_context_list": "*", |
| "delivery_type": "*", |
| "delivery_value": "opt-in", |
| "redirection": "swap-scheme", |
| "subresource": [ |
| "a-tag", |
| "beacon", |
| "fetch", |
| "link-css-tag", |
| "link-prefetch-tag", |
| "object-tag", |
| "picture-tag", |
| "script-tag", |
| "sharedworker-classic", |
| "sharedworker-import", |
| "sharedworker-import-data", |
| "sharedworker-module", |
| "speculationrules", |
| "websocket", |
| "worker-classic", |
| "worker-import", |
| "worker-import-data", |
| "worker-module", |
| "worklet-animation", |
| "worklet-animation-import-data", |
| "worklet-audio", |
| "worklet-audio-import-data", |
| "worklet-layout", |
| "worklet-layout-import-data", |
| "worklet-paint", |
| "worklet-paint-import-data", |
| "xhr" |
| ], |
| "origin": [ |
| "same-https", |
| "cross-https" |
| ], |
| "expectation": "blocked" |
| }, |
| { |
| // no-opt-in-blocks |
| "expansion": "default", |
| "source_scheme": "https", |
| "source_context_list": "*", |
| "delivery_type": "*", |
| "delivery_value": null, |
| "redirection": "*", |
| "subresource": [ |
| "a-tag", |
| "beacon", |
| "fetch", |
| "link-css-tag", |
| "link-prefetch-tag", |
| "object-tag", |
| "picture-tag", |
| "script-tag", |
| "sharedworker-classic", |
| "sharedworker-import", |
| "sharedworker-import-data", |
| "sharedworker-module", |
| "speculationrules", |
| "websocket", |
| "worker-classic", |
| "worker-import", |
| "worker-import-data", |
| "worker-module", |
| "worklet-animation", |
| "worklet-animation-import-data", |
| "worklet-audio", |
| "worklet-audio-import-data", |
| "worklet-layout", |
| "worklet-layout-import-data", |
| "worklet-paint", |
| "worklet-paint-import-data", |
| "xhr" |
| ], |
| "origin": [ |
| "cross-http", |
| "same-http" |
| ], |
| "expectation": "blocked" |
| }, |
| { |
| // ws-downgrade-blocks |
| "expansion": "default", |
| "source_scheme": "https", |
| "source_context_list": "*", |
| "delivery_type": "*", |
| "delivery_value": "*", |
| "redirection": "*", |
| "subresource": "websocket", |
| "origin": [ |
| "cross-ws", |
| "same-ws" |
| ], |
| "expectation": "blocked" |
| }, |
| ] |
| }, |
| { |
| // allowed |
| "title": "Allowed content", |
| "description": "Test behavior of allowed content.", |
| "specification_url": "http://www.w3.org/TR/mixed-content/", |
| "test_expansion": [ |
| { |
| // allowed |
| "expansion": "default", |
| "source_scheme": "https", |
| "source_context_list": "*", |
| "delivery_type": "*", |
| "delivery_value": "*", |
| "redirection": [ |
| "no-redirect", |
| "keep-scheme" |
| ], |
| "subresource": "*", |
| "origin": [ |
| "same-https" |
| ], |
| "expectation": "allowed" |
| }, |
| { |
| // websocket-allowed |
| "expansion": "default", |
| "source_scheme": "https", |
| "source_context_list": "*", |
| "delivery_type": "*", |
| "delivery_value": "*", |
| "redirection": [ |
| "no-redirect", |
| "keep-scheme" |
| ], |
| "subresource": "websocket", |
| "origin": [ |
| "same-wss" |
| ], |
| "expectation": "allowed" |
| } |
| ] |
| } |
| ], |
| "delivery_key": "mixedContent", |
| "excluded_tests": [ |
| { |
| // Skip-redundant-no-opt-in |
| "expansion": "*", |
| "source_scheme": "*", |
| "source_context_list": [ |
| // In certain source_context_lists (workers), |
| // this is not redundant because <meta> is not supported. |
| "top", |
| "srcdoc-inherit", |
| "iframe", |
| "iframe-blank-inherit", |
| "worker-classic-data", |
| "worker-module-data", |
| "sharedworker-classic-data", |
| "sharedworker-module-data" |
| ], |
| "delivery_type": "http-rp", |
| "delivery_value": null, |
| "redirection": "*", |
| "subresource": "*", |
| "origin": "*", |
| "expectation": "*" |
| }, |
| { |
| // Skip-redundant-for-opt-in-method |
| "expansion": "*", |
| "source_scheme": "*", |
| "source_context_list": "*", |
| "delivery_type": "meta", |
| "delivery_value": "opt-in", |
| "redirection": [ |
| "keep-scheme", |
| "swap-scheme" |
| ], |
| "subresource": "*", |
| "origin": "*", |
| "expectation": "*" |
| }, |
| { |
| // source_context_list values not yet tested |
| "expansion": "*", |
| "source_scheme": "*", |
| "source_context_list": [ |
| "req", |
| "srcdoc-inherit", |
| "srcdoc", |
| "iframe", |
| "iframe-blank-inherit" |
| ], |
| "delivery_type": "*", |
| "delivery_value": "*", |
| "redirection": "*", |
| "subresource": "*", |
| "origin": "*", |
| "expectation": "*" |
| }, |
| { |
| // subresource values not yet tested |
| "expansion": "*", |
| "source_scheme": "*", |
| "source_context_list": "*", |
| "delivery_type": "*", |
| "delivery_value": "*", |
| "redirection": "*", |
| "subresource": [ |
| "a-tag", |
| "area-tag", |
| "iframe-tag", |
| ], |
| "origin": "*", |
| "expectation": "*" |
| }, |
| { |
| // redirections that mixed-content tests don't care |
| "expansion": "*", |
| "source_scheme": "*", |
| "source_context_list": "*", |
| "delivery_type": "*", |
| "delivery_value": "*", |
| "redirection": [ |
| "keep-origin", |
| "swap-origin", |
| "downgrade" |
| ], |
| "origin": "*", |
| "subresource": "*", |
| "expectation": "*" |
| }, |
| { |
| // <meta http-equiv=Content-Security-Policy> is too late to be meaningful |
| // for the Speculation-Rules header. |
| "expansion": "*", |
| "source_scheme": "*", |
| "source_context_list": "*", |
| "delivery_type": "meta", |
| "delivery_value": "opt-in", |
| "redirection": "*", |
| "subresource": "speculationrules", |
| "origin": "*", |
| "expectation": "*" |
| } |
| ], |
| "source_context_schema": { |
| "supported_delivery_type": { |
| "top": [ |
| "http-rp", |
| "meta" |
| ], |
| "iframe": [ |
| "http-rp", |
| "meta" |
| ], |
| "iframe-blank": [ |
| "meta" |
| ], |
| "srcdoc": [ |
| "meta" |
| ], |
| "worker-classic": [ |
| "http-rp" |
| ], |
| "worker-module": [ |
| "http-rp" |
| ], |
| "worker-classic-data": [], |
| "worker-module-data": [], |
| "sharedworker-classic": [ |
| "http-rp" |
| ], |
| "sharedworker-module": [ |
| "http-rp" |
| ], |
| "sharedworker-classic-data": [], |
| "sharedworker-module-data": [] |
| } |
| }, |
| "subresource_schema": { |
| "supported_delivery_type": { |
| "a-tag": [], |
| "area-tag": [], |
| "audio-tag": [], |
| "beacon": [], |
| "fetch": [], |
| "iframe-tag": [], |
| "img-tag": [], |
| "link-css-tag": [], |
| "link-prefetch-tag": [], |
| "object-tag": [], |
| "picture-tag": [], |
| "script-tag": [], |
| "script-tag-dynamic-import": [], |
| "sharedworker-classic": [], |
| "sharedworker-import": [], |
| "sharedworker-import-data": [], |
| "sharedworker-module": [], |
| "speculationrules": [], |
| "video-tag": [], |
| "websocket": [], |
| "worker-classic": [], |
| "worker-import": [], |
| "worker-import-data": [], |
| "worker-module": [], |
| "worklet-animation": [], |
| "worklet-animation-import-data": [], |
| "worklet-audio": [], |
| "worklet-audio-import-data": [], |
| "worklet-layout": [], |
| "worklet-layout-import-data": [], |
| "worklet-paint": [], |
| "worklet-paint-import-data": [], |
| "xhr": [] |
| } |
| }, |
| "test_expansion_schema": { |
| "delivery_type": [ |
| "http-rp", |
| "meta" |
| ], |
| "delivery_value": [ |
| null, |
| "opt-in" |
| ], |
| "expectation": [ |
| "allowed", |
| "blocked" |
| ] |
| } |
| } |