{ "specification": [ { "name": "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": [ { "name": "opt-in-blocks", "expansion": "default", "source_scheme": "https", "opt_in_method": ["http-csp", "meta-csp"], "context_nesting": "top-level", "redirection": "*", "subresource": { "blockable": [], "optionally-blockable": "*" }, "origin": ["cross-origin-http", "same-host-http"], "expectation": "blocked" }, { "name": "no-opt-in-allows", "expansion": "default", "source_scheme": "https", "opt_in_method": "no-opt-in", "context_nesting": "top-level", "redirection": "*", "subresource": { "blockable": [], "optionally-blockable": "*" }, "origin": ["cross-origin-http", "same-host-http"], "expectation": "allowed" } ] }, { "name": "blockable", "title": "Blockable content", "description": "Test behavior of blockable content.", "specification_url": "http://www.w3.org/TR/mixed-content/#category-blockable", "test_expansion": [ { "name": "opt-in-blocks", "expansion": "default", "source_scheme": "https", "opt_in_method": ["http-csp", "meta-csp"], "context_nesting": "top-level", "redirection": "*", "subresource": { "blockable": "*", "optionally-blockable": [] }, "origin": ["cross-origin-http", "same-host-http"], "expectation": "blocked" }, { "name": "no-opt-in-blocks", "expansion": "default", "source_scheme": "https", "opt_in_method": "no-opt-in", "context_nesting": "top-level", "redirection": "*", "subresource": { "blockable": "*", "optionally-blockable": [] }, "origin": ["cross-origin-http", "same-host-http"], "expectation": "blocked" }, { "name": "ws-downgrade-blocks", "expansion": "default", "source_scheme": "https", "opt_in_method": ["no-opt-in", "http-csp", "meta-csp"], "context_nesting": "top-level", "redirection": "*", "subresource": { "blockable": "websocket-request", "optionally-blockable": [] }, "origin": ["cross-origin-ws", "same-host-ws"], "expectation": "blocked" } ] }, { "name": "allowed", "title": "Allowed content", "description": "Test behavior of allowed content.", "specification_url": "http://www.w3.org/TR/mixed-content/", "test_expansion": [ { "name": "allowed", "expansion": "default", "source_scheme": "https", "opt_in_method": "*", "context_nesting": "top-level", "redirection": ["no-redirect", "keep-scheme-redirect"], "subresource": { "blockable": "*", "optionally-blockable": "*" }, "origin": ["same-host-https"], "expectation": "allowed" }, { "name": "websocket-allowed", "expansion": "default", "source_scheme": "https", "opt_in_method": "*", "context_nesting": "top-level", "redirection": ["no-redirect", "keep-scheme-redirect"], "subresource": { "blockable": "websocket-request", "optionally-blockable": [] }, "origin": ["same-host-wss"], "expectation": "allowed" } ] } ], "excluded_tests": [ { "name": "Redundant-subresources", "expansion": "*", "source_scheme": "*", "opt_in_method": "*", "context_nesting": "*", "redirection": "*", "subresource": { "blockable": [ "a-tag" ], "optionally-blockable": [] }, "origin": "*", "expectation": "*" }, { "name": "Skip-origins-not-applicable-to-websockets", "expansion": "*", "source_scheme": "*", "opt_in_method": "*", "context_nesting": "*", "redirection": "*", "subresource": { "blockable": [ "websocket-request" ], "optionally-blockable": [] }, "origin": [ "same-host-https", "same-host-http", "cross-origin-https", "cross-origin-http" ], "expectation": "*" }, { "name": "TODO-opt-in-method-img-cross-origin", "expansion": "*", "source_scheme": "*", "opt_in_method": "img-crossorigin", "context_nesting": "*", "redirection": "*", "subresource": { "blockable": "*", "optionally-blockable": "*" }, "origin": "*", "expectation": "*" }, { "name": "Skip-redundant-for-opt-in-method", "expansion": "*", "source_scheme": "*", "opt_in_method": [ "meta-csp", "img-crossorigin" ], "context_nesting": "*", "redirection": ["keep-scheme-redirect", "swap-scheme-redirect"], "subresource": { "blockable": "*", "optionally-blockable": "*" }, "origin": "*", "expectation": "*" } ], "test_expansion_schema": { "expansion": [ "default", "override" ], "source_scheme": [ "http", "https" ], "opt_in_method": [ "no-opt-in", "http-csp", "meta-csp", "img-crossorigin" ], "redirection": [ "no-redirect", "keep-scheme-redirect", "swap-scheme-redirect" ], "context_nesting": [ "top-level", "sub-level" ], "origin": [ "same-host-https", "same-host-http", "cross-origin-https", "cross-origin-http", "same-host-wss", "same-host-ws", "cross-origin-wss", "cross-origin-ws" ], "subresource": { "blockable": [ "iframe-tag", "script-tag", "link-css-tag", "form-tag", "xhr-request", "worker-request", "fetch-request", "a-tag", "object-tag", "picture-tag", "websocket-request" ], "optionally-blockable": [ "img-tag", "audio-tag", "video-tag", "link-prefetch-tag" ] }, "expectation": [ "allowed", "blocked" ] } }