| <html> |
| <head> |
| <script src="/js-test-resources/js-test.js"></script> |
| <script src="resources/resetCookies.js"></script> |
| <script> |
| description("Tests the first-party-only cookie policy."); |
| jsTestIsAsync = true; |
| |
| const iframeUrls = { |
| echoCookies : "http://localhost:8000/cookies/resources/echo-cookies.php", |
| resetCookies : "http://localhost:8000/cookies/resources/reset-cookies.html" |
| }; |
| |
| function injectThirdPartyIframe(url) { |
| let iframeElement = document.createElement("iframe"); |
| iframeElement.src = url; |
| iframeElement.onload = runNextTestOrFinish; |
| document.body.appendChild(iframeElement); |
| } |
| |
| function setCookieInRedirect(hashValue) { |
| document.location.href = "http://localhost:8000/cookies/resources/set-cookie-and-redirect-back.php?redirectBackTo=http://127.0.0.1:8000/cookies/only-accept-first-party-cookies.html#" + hashValue; |
| } |
| |
| function runNextTestOrFinish() { |
| if (!window.testRunner) { |
| testFailed("No testRunner."); |
| finishJSTest(); |
| } |
| |
| switch (document.location.hash) { |
| case "": |
| testRunner.dumpChildFramesAsText(); |
| document.location.hash = "1"; |
| injectThirdPartyIframe(iframeUrls.resetCookies); |
| break; |
| case "#1": |
| setCookieInRedirect(2); |
| break; |
| case "#2": |
| document.location.hash = "3"; |
| // Should see one cookie. |
| injectThirdPartyIframe(iframeUrls.echoCookies); |
| break; |
| case "#3": |
| document.location.hash = "4"; |
| testRunner.setOnlyAcceptFirstPartyCookies(true); |
| // Should not see any cookies. |
| injectThirdPartyIframe(iframeUrls.echoCookies); |
| break; |
| case "#4": |
| document.location.hash = "5"; |
| // Should see one cookie. |
| testRunner.setOnlyAcceptFirstPartyCookies(false); |
| injectThirdPartyIframe(iframeUrls.echoCookies); |
| break; |
| case "#5": |
| document.location.hash = "6"; |
| injectThirdPartyIframe(iframeUrls.resetCookies); |
| break; |
| case "#6": |
| finishJSTest(); |
| break; |
| default: |
| testFailed("Unknown location hash value."); |
| finishJSTest(); |
| } |
| } |
| </script> |
| </head> |
| <body onload="runNextTestOrFinish()"> |
| </body> |
| </html> |