tree: c8b8f301b4017258c2c9e501362dd50d4d1392f3 [path history] [tgz]
  1. META.yml
  2. OWNERS
  3. README.md
  4. experimental-features/
  5. feature-policy-for-sandbox/
  6. feature-policy-frame-policy-allowed-for-all.https.sub.html
  7. feature-policy-frame-policy-allowed-for-all.https.sub.html.sub.headers
  8. feature-policy-frame-policy-allowed-for-self.https.sub-expected.txt
  9. feature-policy-frame-policy-allowed-for-self.https.sub.html
  10. feature-policy-frame-policy-allowed-for-self.https.sub.html.sub.headers
  11. feature-policy-frame-policy-allowed-for-some.https.sub-expected.txt
  12. feature-policy-frame-policy-allowed-for-some.https.sub.html
  13. feature-policy-frame-policy-allowed-for-some.https.sub.html.sub.headers
  14. feature-policy-frame-policy-disallowed-for-all.https.sub.html
  15. feature-policy-frame-policy-disallowed-for-all.https.sub.html.sub.headers
  16. feature-policy-header-policy-allowed-for-all.https.sub.html
  17. feature-policy-header-policy-allowed-for-all.https.sub.html.sub.headers
  18. feature-policy-header-policy-allowed-for-self.https.sub.html
  19. feature-policy-header-policy-allowed-for-self.https.sub.html.sub.headers
  20. feature-policy-header-policy-allowed-for-some.https.sub.html
  21. feature-policy-header-policy-allowed-for-some.https.sub.html.sub.headers
  22. feature-policy-header-policy-declined.https.sub.html
  23. feature-policy-header-policy-declined.https.sub.html.sub.headers
  24. feature-policy-header-policy-disallowed-for-all.https.sub.html
  25. feature-policy-header-policy-disallowed-for-all.https.sub.html.sub.headers
  26. feature-policy-nested-header-policy-allowed-for-all.https.sub.html
  27. feature-policy-nested-header-policy-allowed-for-all.https.sub.html.sub.headers
  28. feature-policy-nested-header-policy-allowed-for-self.https.sub.html
  29. feature-policy-nested-header-policy-allowed-for-self.https.sub.html.sub.headers
  30. feature-policy-nested-header-policy-disallowed-for-all.https.sub.html
  31. feature-policy-nested-header-policy-disallowed-for-all.https.sub.html.sub.headers
  32. idlharness.window-expected.txt
  33. idlharness.window.js
  34. parameters/
  35. payment-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html
  36. payment-allowed-by-feature-policy-attribute.https.sub.html
  37. payment-allowed-by-feature-policy.https.sub.html
  38. payment-allowed-by-feature-policy.https.sub.html.headers
  39. payment-default-feature-policy.https.sub.html
  40. payment-disabled-by-feature-policy.https.sub.html
  41. payment-disabled-by-feature-policy.https.sub.html.headers
  42. payment-supported-by-feature-policy.tentative.html
  43. picture-in-picture-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html
  44. picture-in-picture-allowed-by-feature-policy-attribute.https.sub.html
  45. picture-in-picture-allowed-by-feature-policy.https.sub.html
  46. picture-in-picture-allowed-by-feature-policy.https.sub.html.headers
  47. picture-in-picture-default-feature-policy.https.sub.html
  48. picture-in-picture-disabled-by-feature-policy.https.sub.html
  49. picture-in-picture-disabled-by-feature-policy.https.sub.html.headers
  50. picture-in-picture-supported-by-feature-policy.html
  51. reporting/
  52. resources/
third_party/blink/web_tests/external/wpt/feature-policy/README.md

Feature Policy Guide

How to Test a New Feature with Feature Policy

This directory contains a framework to test features with feature policy.

When adding a new feature to feature policy, the following cases should be tested:

  • feature enabled by header policy [HTTP tests]
    • test when feature is enabled by feature policy HTTP headerr;
  • feature disabled by header policy [HTTP tests]
    • test when feature is disabled by feature policy HTTP header;
  • feature enabled on self origin by header policy [HTTP tests]
    • test when feature is enabled only on self origin by feature policy HTTP header.
  • feature allowed by container policy (iframe “allow” attribute);
    • test when feature is enabled by iframe “allow” attribute on self and cross origins.
  • feature allowed by container policy, redirect on load.
    • test when feature is enabled by iframe “allow” attribute when the iframe is being redirected to a new origin upon loading

How to Use the Test Framework

Use test_feature_availability() defined in /feature-policy/resources/featurepolicy.js. Please refer to the comments in /feature-policy/resources/featurepolicy.js for how this function works.

How to Write Header Policy Tests

HTTP tests are used to test features with header policy.

  • Define the header policy in <feature-name>-<enabled | disabled | enabled-on-self-origin>-by-feature-policy.https.sub.html.headers. Example:

    Feature-Policy: feature-name *

  • In <feature-name>-<enabled | disabled | enabled-on-self-origin>-by-feature-policy.https.sub.html:

  • test if feature is enabled / disabled in the main frame;

  • test if feature is enabled / disabled in a same-origin iframe;

  • test if feature is enabled / disabled in a cross-origin iframe.

Examples: /feature-policy/payment-disabled-by-feature-policy.https.sub.html /feature-policy/payment-disabled-by-feature-policy.https.sub.html.headers

How to Write Container Policy Tests

Simply use test_feature_availability() with the optional argument feature_name specified to test if:

  • feature is enabled / disabled in a same-origin iframe;
  • feature is enabled / disabled in a cross-origin iframe.

Example: /feature-policy/payment-allowed-by-feature-policy-attribute.https.sub.html

How to Write Container Policy Tests with Redirect

Similar to the section above, append /feature-policy/resources/redirect-on-load.html# to the argument src passed to test_feature_availability().

Example: /feature-policy/payment-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html