Merge autoland to mozilla-central. a=merge
authorNoemi Erli <nerli@mozilla.com>
Mon, 08 Jul 2019 12:50:33 +0300
changeset 544433 09d43bf72fa67c0ead7e60ace2b2f0bac5696c0f
parent 544432 7e6657f88b7694ecd841088963ff71d767e4ec22 (current diff)
parent 544431 8647c19320e1f88a69518e8c2917ea6a6694df8d (diff)
child 544434 a636725ad217d000f040846b91f5d2d2fea50449
child 545505 85b8fc92b83502aaf42c37a0714a1fe6388008b6
push id2131
push userffxbld-merge
push dateMon, 26 Aug 2019 18:30:20 +0000
treeherdermozilla-release@b19ffb3ca153 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmerge
milestone69.0a1
first release with
nightly linux32
09d43bf72fa6 / 69.0a1 / 20190708095055 / files
nightly linux64
09d43bf72fa6 / 69.0a1 / 20190708095055 / files
nightly mac
09d43bf72fa6 / 69.0a1 / 20190708095055 / files
nightly win32
09d43bf72fa6 / 69.0a1 / 20190708095055 / files
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
releases
nightly linux32
nightly linux64
nightly mac
nightly win32
Merge autoland to mozilla-central. a=merge
dom/security/featurepolicy/test/mochitest/test_featureList.html
--- a/dom/base/Document.cpp
+++ b/dom/base/Document.cpp
@@ -2206,17 +2206,17 @@ nsresult Document::Init() {
   NS_ENSURE_TRUE(global, NS_ERROR_FAILURE);
   mScopeObject = do_GetWeakReference(global);
   MOZ_ASSERT(mScopeObject);
 
   mScriptLoader = new dom::ScriptLoader(this);
 
   // we need to create a policy here so getting the policy within
   // ::Policy() can *always* return a non null policy
-  mFeaturePolicy = new mozilla::dom::FeaturePolicy(this);
+  mFeaturePolicy = new FeaturePolicy(this);
   mFeaturePolicy->SetDefaultOrigin(NodePrincipal());
 
   mStyleSet = MakeUnique<ServoStyleSet>(*this);
 
   mozilla::HoldJSObjects(this);
 
   return NS_OK;
 }
@@ -3270,24 +3270,24 @@ nsresult Document::InitFeaturePolicy(nsI
   mFeaturePolicy->ResetDeclaredPolicy();
 
   if (!StaticPrefs::dom_security_featurePolicy_enabled()) {
     return NS_OK;
   }
 
   mFeaturePolicy->SetDefaultOrigin(NodePrincipal());
 
-  RefPtr<mozilla::dom::FeaturePolicy> parentPolicy = nullptr;
+  RefPtr<FeaturePolicy> parentPolicy = nullptr;
   if (mDocumentContainer) {
     nsPIDOMWindowOuter* containerWindow = mDocumentContainer->GetWindow();
     if (containerWindow) {
       nsCOMPtr<nsINode> node = containerWindow->GetFrameElementInternal();
       HTMLIFrameElement* iframe = HTMLIFrameElement::FromNodeOrNull(node);
       if (iframe) {
-        parentPolicy = iframe->FeaturePolicy();
+        parentPolicy = iframe->Policy();
       }
     }
   }
 
   if (parentPolicy) {
     // Let's inherit the policy from the parent HTMLIFrameElement if it exists.
     mFeaturePolicy->InheritPolicy(parentPolicy);
   }
@@ -12568,20 +12568,20 @@ Promise* Document::GetDocumentReadyForId
 void Document::MaybeResolveReadyForIdle() {
   IgnoredErrorResult rv;
   Promise* readyPromise = GetDocumentReadyForIdle(rv);
   if (readyPromise) {
     readyPromise->MaybeResolve(this);
   }
 }
 
-mozilla::dom::FeaturePolicy* Document::FeaturePolicy() const {
+FeaturePolicy* Document::Policy() const {
   // The policy is created when the document is initialized. We _must_ have a
   // policy here even if the featurePolicy pref is off. If this assertion fails,
-  // it means that ::FeaturePolicy() is called before ::StartDocumentLoad().
+  // it means that ::Policy() is called before ::StartDocumentLoad().
   MOZ_ASSERT(mFeaturePolicy);
   return mFeaturePolicy;
 }
 
 nsIDOMXULCommandDispatcher* Document::GetCommandDispatcher() {
   // Only chrome documents are allowed to use command dispatcher.
   if (!nsContentUtils::IsChromeDoc(this)) {
     return nullptr;
--- a/dom/base/Document.h
+++ b/dom/base/Document.h
@@ -4047,17 +4047,17 @@ class Document : public nsINode,
   }
 
   bool AllowPaymentRequest() const { return mAllowPaymentRequest; }
 
   void SetAllowPaymentRequest(bool aAllowPaymentRequest) {
     mAllowPaymentRequest = aAllowPaymentRequest;
   }
 
-  mozilla::dom::FeaturePolicy* FeaturePolicy() const;
+  FeaturePolicy* Policy() const;
 
   bool ModuleScriptsEnabled();
 
   /**
    * Find the (non-anonymous) content in this document for aFrame. It will
    * be aFrame's content node if that content is in this document and not
    * anonymous. Otherwise, when aFrame is in a subdocument, we use the frame
    * element containing the subdocument containing aFrame, and/or find the
@@ -4469,17 +4469,17 @@ class Document : public nsINode,
   // Last time this document or a one of its sub-documents was focused.  If
   // focus has never occurred then mLastFocusTime.IsNull() will be true.
   TimeStamp mLastFocusTime;
 
   EventStates mDocumentState;
 
   RefPtr<Promise> mReadyForIdle;
 
-  RefPtr<mozilla::dom::FeaturePolicy> mFeaturePolicy;
+  RefPtr<FeaturePolicy> mFeaturePolicy;
 
   UniquePtr<ResizeObserverController> mResizeObserverController;
 
   // True if BIDI is enabled.
   bool mBidiEnabled : 1;
   // True if we may need to recompute the language prefs for this document.
   bool mMayNeedFontPrefsUpdate : 1;
   // True if a MathML element has ever been owned by this document.
--- a/dom/html/HTMLIFrameElement.cpp
+++ b/dom/html/HTMLIFrameElement.cpp
@@ -49,17 +49,17 @@ const DOMTokenListSupportedToken HTMLIFr
 #undef SANDBOX_KEYWORD
         nullptr};
 
 HTMLIFrameElement::HTMLIFrameElement(
     already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo,
     FromParser aFromParser)
     : nsGenericHTMLFrameElement(std::move(aNodeInfo), aFromParser) {
   // We always need a featurePolicy, even if not exposed.
-  mFeaturePolicy = new mozilla::dom::FeaturePolicy(this);
+  mFeaturePolicy = new FeaturePolicy(this);
 
   nsCOMPtr<nsIPrincipal> origin = GetFeaturePolicyDefaultOrigin();
   MOZ_ASSERT(origin);
   mFeaturePolicy->SetDefaultOrigin(origin);
 }
 
 HTMLIFrameElement::~HTMLIFrameElement() {}
 
@@ -219,19 +219,17 @@ uint32_t HTMLIFrameElement::GetSandboxFl
   return nsContentUtils::ParseSandboxAttributeToFlags(sandboxAttr);
 }
 
 JSObject* HTMLIFrameElement::WrapNode(JSContext* aCx,
                                       JS::Handle<JSObject*> aGivenProto) {
   return HTMLIFrameElement_Binding::Wrap(aCx, this, aGivenProto);
 }
 
-mozilla::dom::FeaturePolicy* HTMLIFrameElement::FeaturePolicy() const {
-  return mFeaturePolicy;
-}
+FeaturePolicy* HTMLIFrameElement::Policy() const { return mFeaturePolicy; }
 
 already_AddRefed<nsIPrincipal>
 HTMLIFrameElement::GetFeaturePolicyDefaultOrigin() const {
   nsCOMPtr<nsIPrincipal> principal;
 
   if (HasAttr(kNameSpaceID_None, nsGkAtoms::srcdoc)) {
     principal = NodePrincipal();
     return principal.forget();
@@ -265,17 +263,17 @@ void HTMLIFrameElement::RefreshFeaturePo
     GetAttr(nsGkAtoms::allow, allow);
 
     if (!allow.IsEmpty()) {
       // Set or reset the FeaturePolicy directives.
       mFeaturePolicy->SetDeclaredPolicy(OwnerDoc(), allow, NodePrincipal(),
                                         origin);
     }
 
-    mFeaturePolicy->InheritPolicy(OwnerDoc()->FeaturePolicy());
+    mFeaturePolicy->InheritPolicy(OwnerDoc()->Policy());
   }
 
   if (AllowPaymentRequest()) {
     mFeaturePolicy->MaybeSetAllowedPolicy(NS_LITERAL_STRING("payment"));
   }
 
   if (AllowFullscreen()) {
     mFeaturePolicy->MaybeSetAllowedPolicy(NS_LITERAL_STRING("fullscreen"));
--- a/dom/html/HTMLIFrameElement.h
+++ b/dom/html/HTMLIFrameElement.h
@@ -149,17 +149,17 @@ class HTMLIFrameElement final : public n
 
   // The fullscreen flag is set to true only when requestFullscreen is
   // explicitly called on this <iframe> element. In case this flag is
   // set, the fullscreen state of this element will not be reverted
   // automatically when its subdocument exits fullscreen.
   bool FullscreenFlag() const { return mFullscreenFlag; }
   void SetFullscreenFlag(bool aValue) { mFullscreenFlag = aValue; }
 
-  mozilla::dom::FeaturePolicy* FeaturePolicy() const;
+  FeaturePolicy* Policy() const;
 
  protected:
   virtual ~HTMLIFrameElement();
 
   virtual JSObject* WrapNode(JSContext* aCx,
                              JS::Handle<JSObject*> aGivenProto) override;
 
   virtual nsresult AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
--- a/dom/security/featurepolicy/FeaturePolicy.cpp
+++ b/dom/security/featurepolicy/FeaturePolicy.cpp
@@ -85,17 +85,17 @@ void FeaturePolicy::SetDeclaredPolicy(Do
   Unused << NS_WARN_IF(!FeaturePolicyParser::ParseString(
       aPolicyString, aDocument, aSelfOrigin, aSrcOrigin, mFeatures));
 }
 
 void FeaturePolicy::ResetDeclaredPolicy() { mFeatures.Clear(); }
 
 JSObject* FeaturePolicy::WrapObject(JSContext* aCx,
                                     JS::Handle<JSObject*> aGivenProto) {
-  return FeaturePolicy_Binding::Wrap(aCx, this, aGivenProto);
+  return Policy_Binding::Wrap(aCx, this, aGivenProto);
 }
 
 bool FeaturePolicy::AllowsFeature(const nsAString& aFeatureName,
                                   const Optional<nsAString>& aOrigin) const {
   nsCOMPtr<nsIPrincipal> origin;
   if (aOrigin.WasPassed()) {
     nsCOMPtr<nsIURI> uri;
     nsresult rv = NS_NewURI(getter_AddRefs(uri), aOrigin.Value());
@@ -143,26 +143,16 @@ bool FeaturePolicy::AllowsFeatureInterna
 
     default:
       MOZ_CRASH("Unknown default value");
   }
 
   return false;
 }
 
-void FeaturePolicy::Features(nsTArray<nsString>& aFeatures) {
-  RefPtr<FeaturePolicy> self = this;
-  FeaturePolicyUtils::ForEachFeature(
-      [self, &aFeatures](const char* aFeatureName) {
-        nsString featureName;
-        featureName.AppendASCII(aFeatureName);
-        aFeatures.AppendElement(featureName);
-      });
-}
-
 void FeaturePolicy::AllowedFeatures(nsTArray<nsString>& aAllowedFeatures) {
   RefPtr<FeaturePolicy> self = this;
   FeaturePolicyUtils::ForEachFeature(
       [self, &aAllowedFeatures](const char* aFeatureName) {
         nsString featureName;
         featureName.AppendASCII(aFeatureName);
 
         if (self->AllowsFeatureInternal(featureName, self->mDefaultOrigin)) {
--- a/dom/security/featurepolicy/FeaturePolicy.h
+++ b/dom/security/featurepolicy/FeaturePolicy.h
@@ -108,18 +108,16 @@ class FeaturePolicy final : public nsISu
 
   nsINode* GetParentObject() const { return mParentNode; }
 
   // WebIDL explosed methods.
 
   bool AllowsFeature(const nsAString& aFeatureName,
                      const Optional<nsAString>& aOrigin) const;
 
-  void Features(nsTArray<nsString>& aFeatures);
-
   void AllowedFeatures(nsTArray<nsString>& aAllowedFeatures);
 
   void GetAllowlistForFeature(const nsAString& aFeatureName,
                               nsTArray<nsString>& aList) const;
 
  private:
   ~FeaturePolicy() = default;
 
--- a/dom/security/featurepolicy/FeaturePolicyUtils.cpp
+++ b/dom/security/featurepolicy/FeaturePolicyUtils.cpp
@@ -87,17 +87,17 @@ bool FeaturePolicyUtils::IsFeatureAllowe
   if (!StaticPrefs::dom_security_featurePolicy_enabled()) {
     return true;
   }
 
   if (!aDocument->IsHTMLDocument()) {
     return true;
   }
 
-  FeaturePolicy* policy = aDocument->FeaturePolicy();
+  FeaturePolicy* policy = aDocument->Policy();
   MOZ_ASSERT(policy);
 
   if (policy->AllowsFeatureInternal(aFeatureName, policy->DefaultOrigin())) {
     return true;
   }
 
   ReportViolation(aDocument, aFeatureName);
   return false;
--- a/dom/security/featurepolicy/test/mochitest/mochitest.ini
+++ b/dom/security/featurepolicy/test/mochitest/mochitest.ini
@@ -3,9 +3,8 @@ prefs =
   dom.security.featurePolicy.enabled=true
   dom.security.featurePolicy.header.enabled=true
   dom.security.featurePolicy.webidl.enabled=true
 support-files =
   empty.html
   test_parser.html^headers^
 
 [test_parser.html]
-[test_featureList.html]
deleted file mode 100644
--- a/dom/security/featurepolicy/test/mochitest/test_featureList.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<head>
-  <title>Test feature policy - list</title>
-  <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
-  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
-</head>
-<body>
-<iframe src="empty.html" id="ifr"></iframe>
-<script type="text/javascript">
-
-let supportedFeatures = [
-  "autoplay",
-  "camera",
-  "encrypted-media",
-  "fullscreen",
-  "geolocation",
-  "microphone",
-  "midi",
-  "payment",
-  "display-capture",
-  "document-domain",
-  "speaker",
-  "vr",
-];
-
-function checkFeatures(features) {
-  features.forEach(feature => {
-    ok(supportedFeatures.includes(feature), "Feature: " + feature);
-  });
-}
-
-ok("featurePolicy" in document, "We have document.featurePolicy");
-checkFeatures(document.featurePolicy.features());
-
-let ifr = document.getElementById("ifr");
-ok("featurePolicy" in ifr, "We have HTMLIFrameElement.featurePolicy");
-checkFeatures(ifr.featurePolicy.features());
-
-</script>
-</body>
-</html>
--- a/dom/security/featurepolicy/test/mochitest/test_parser.html
+++ b/dom/security/featurepolicy/test/mochitest/test_parser.html
@@ -7,195 +7,195 @@
 </head>
 <body>
 <iframe src="empty.html" id="ifr"></iframe>
 <script type="text/javascript">
 
 SimpleTest.waitForExplicitFinish();
 
 function test_document() {
-  info("Checking document.featurePolicy");
-  ok("featurePolicy" in document, "We have document.featurePolicy");
+  info("Checking document.policy");
+  ok("policy" in document, "We have document.policy");
 
-  ok(!document.featurePolicy.allowsFeature("foobar"), "Random feature");
-  ok(!document.featurePolicy.allowsFeature("foobar", "http://www.something.net"), "Random feature");
+  ok(!document.policy.allowsFeature("foobar"), "Random feature");
+  ok(!document.policy.allowsFeature("foobar", "http://www.something.net"), "Random feature");
 
-  ok(document.featurePolicy.allowsFeature("camera"), "Camera is allowed for self");
-  ok(document.featurePolicy.allowsFeature("camera", "http://foo.bar"), "Camera is always allowed");
-  let allowed = document.featurePolicy.getAllowlistForFeature("camera");
+  ok(document.policy.allowsFeature("camera"), "Camera is allowed for self");
+  ok(document.policy.allowsFeature("camera", "http://foo.bar"), "Camera is always allowed");
+  let allowed = document.policy.getAllowlistForFeature("camera");
   is(allowed.length, 1, "Only 1 entry in allowlist for camera");
   is(allowed[0], "*", "allowlist is *");
 
-  ok(document.featurePolicy.allowsFeature("geolocation"), "Geolocation is allowed for self");
-  ok(document.featurePolicy.allowsFeature("geolocation", location.origin), "Geolocation is allowed for self");
-  ok(!document.featurePolicy.allowsFeature("geolocation", "http://foo.bar"), "Geolocation is not allowed for any random URL");
-  allowed = document.featurePolicy.getAllowlistForFeature("geolocation");
+  ok(document.policy.allowsFeature("geolocation"), "Geolocation is allowed for self");
+  ok(document.policy.allowsFeature("geolocation", location.origin), "Geolocation is allowed for self");
+  ok(!document.policy.allowsFeature("geolocation", "http://foo.bar"), "Geolocation is not allowed for any random URL");
+  allowed = document.policy.getAllowlistForFeature("geolocation");
   is(allowed.length, 1, "Only 1 entry in allowlist for geolocation");
   is(allowed[0], location.origin, "allowlist is self");
 
-  ok(!document.featurePolicy.allowsFeature("microphone"), "Microphone is disabled for self");
-  ok(!document.featurePolicy.allowsFeature("microphone", location.origin), "Microphone is disabled for self");
-  ok(!document.featurePolicy.allowsFeature("microphone", "http://foo.bar"), "Microphone is disabled for foo.bar");
-  ok(document.featurePolicy.allowsFeature("microphone", "http://example.com"), "Microphone is allowed for example.com");
-  ok(document.featurePolicy.allowsFeature("microphone", "http://example.org"), "Microphone is allowed for example.org");
-  allowed = document.featurePolicy.getAllowlistForFeature("microphone");
+  ok(!document.policy.allowsFeature("microphone"), "Microphone is disabled for self");
+  ok(!document.policy.allowsFeature("microphone", location.origin), "Microphone is disabled for self");
+  ok(!document.policy.allowsFeature("microphone", "http://foo.bar"), "Microphone is disabled for foo.bar");
+  ok(document.policy.allowsFeature("microphone", "http://example.com"), "Microphone is allowed for example.com");
+  ok(document.policy.allowsFeature("microphone", "http://example.org"), "Microphone is allowed for example.org");
+  allowed = document.policy.getAllowlistForFeature("microphone");
   is(allowed.length, 0, "No allowlist for microphone");
 
-  ok(!document.featurePolicy.allowsFeature("vr"), "Vibrate is disabled for self");
-  ok(!document.featurePolicy.allowsFeature("vr", location.origin), "Vibrate is disabled for self");
-  ok(!document.featurePolicy.allowsFeature("vr", "http://foo.bar"), "Vibrate is disabled for foo.bar");
-  allowed = document.featurePolicy.getAllowlistForFeature("vr");
+  ok(!document.policy.allowsFeature("vr"), "Vibrate is disabled for self");
+  ok(!document.policy.allowsFeature("vr", location.origin), "Vibrate is disabled for self");
+  ok(!document.policy.allowsFeature("vr", "http://foo.bar"), "Vibrate is disabled for foo.bar");
+  allowed = document.policy.getAllowlistForFeature("vr");
   is(allowed.length, 0, "No allowlist for vr");
 
-  allowed = document.featurePolicy.allowedFeatures();
+  allowed = document.policy.allowedFeatures();
   // microphone is disabled for this origin, vr is disabled everywhere.
   let camera = false;
   let geolocation = false;
   allowed.forEach(a => {
     if (a == "camera") camera = true;
     if (a == "geolocation") geolocation = true;
   });
 
   ok(camera, "Camera is always allowed");
   ok(geolocation, "Geolocation is allowed only for self");
 
   next();
 }
 
 function test_iframe_without_allow() {
-  info("Checking HTMLIFrameElement.featurePolicy");
+  info("Checking HTMLIFrameElement.policy");
   let ifr = document.getElementById("ifr");
-  ok("featurePolicy" in ifr, "HTMLIFrameElement.featurePolicy exists");
+  ok("policy" in ifr, "HTMLIFrameElement.policy exists");
 
-  ok(!ifr.featurePolicy.allowsFeature("foobar"), "Random feature");
-  ok(!ifr.featurePolicy.allowsFeature("foobar", "http://www.something.net"), "Random feature");
+  ok(!ifr.policy.allowsFeature("foobar"), "Random feature");
+  ok(!ifr.policy.allowsFeature("foobar", "http://www.something.net"), "Random feature");
 
-  ok(ifr.featurePolicy.allowsFeature("camera"), "Camera is allowed for self");
-  ok(ifr.featurePolicy.allowsFeature("camera", location.origin), "Camera is allowed for self");
-  ok(!ifr.featurePolicy.allowsFeature("camera", "http://foo.bar"), "Camera is not allowed for a random URL");
-  let allowed = ifr.featurePolicy.getAllowlistForFeature("camera");
+  ok(ifr.policy.allowsFeature("camera"), "Camera is allowed for self");
+  ok(ifr.policy.allowsFeature("camera", location.origin), "Camera is allowed for self");
+  ok(!ifr.policy.allowsFeature("camera", "http://foo.bar"), "Camera is not allowed for a random URL");
+  let allowed = ifr.policy.getAllowlistForFeature("camera");
   is(allowed.length, 1, "Only 1 entry in allowlist for camera");
   is(allowed[0], location.origin, "allowlist is 'self'");
 
-  ok(ifr.featurePolicy.allowsFeature("geolocation"), "Geolocation is allowed for all");
-  ok(ifr.featurePolicy.allowsFeature("geolocation", location.origin), "Geolocation is allowed for all");
-  ok(ifr.featurePolicy.allowsFeature("geolocation", "http://foo.bar"), "Geolocation is allowed for any random URL");
-  allowed = ifr.featurePolicy.getAllowlistForFeature("geolocation");
+  ok(ifr.policy.allowsFeature("geolocation"), "Geolocation is allowed for all");
+  ok(ifr.policy.allowsFeature("geolocation", location.origin), "Geolocation is allowed for all");
+  ok(ifr.policy.allowsFeature("geolocation", "http://foo.bar"), "Geolocation is allowed for any random URL");
+  allowed = ifr.policy.getAllowlistForFeature("geolocation");
   is(allowed.length, 1, "Only 1 entry in allowlist for geolocation");
   is(allowed[0], "*", "allowlist is '*'");
 
-  ok(!ifr.featurePolicy.allowsFeature("microphone"), "Microphone is disabled for self");
-  ok(!ifr.featurePolicy.allowsFeature("microphone", location.origin), "Microphone is disabled for self");
-  ok(!ifr.featurePolicy.allowsFeature("microphone", "http://foo.bar"), "Microphone is disabled for foo.bar");
-  ok(!ifr.featurePolicy.allowsFeature("microphone", "http://example.com"), "Microphone is disabled for example.com");
-  ok(!ifr.featurePolicy.allowsFeature("microphone", "http://example.org"), "Microphone is disabled for example.org");
-  allowed = ifr.featurePolicy.getAllowlistForFeature("microphone");
+  ok(!ifr.policy.allowsFeature("microphone"), "Microphone is disabled for self");
+  ok(!ifr.policy.allowsFeature("microphone", location.origin), "Microphone is disabled for self");
+  ok(!ifr.policy.allowsFeature("microphone", "http://foo.bar"), "Microphone is disabled for foo.bar");
+  ok(!ifr.policy.allowsFeature("microphone", "http://example.com"), "Microphone is disabled for example.com");
+  ok(!ifr.policy.allowsFeature("microphone", "http://example.org"), "Microphone is disabled for example.org");
+  allowed = ifr.policy.getAllowlistForFeature("microphone");
   is(allowed.length, 0, "No allowlist for microphone");
 
-  ok(!ifr.featurePolicy.allowsFeature("vr"), "Vibrate is disabled for self");
-  ok(!ifr.featurePolicy.allowsFeature("vr", location.origin), "Vibrate is disabled for self");
-  ok(!ifr.featurePolicy.allowsFeature("vr", "http://foo.bar"), "Vibrate is disabled for foo.bar");
-  allowed = ifr.featurePolicy.getAllowlistForFeature("vr");
+  ok(!ifr.policy.allowsFeature("vr"), "Vibrate is disabled for self");
+  ok(!ifr.policy.allowsFeature("vr", location.origin), "Vibrate is disabled for self");
+  ok(!ifr.policy.allowsFeature("vr", "http://foo.bar"), "Vibrate is disabled for foo.bar");
+  allowed = ifr.policy.getAllowlistForFeature("vr");
   is(allowed.length, 0, "No allowlist for vr");
 
-  ok(ifr.featurePolicy.allowedFeatures().includes("camera"), "Camera is allowed");
-  ok(ifr.featurePolicy.allowedFeatures().includes("geolocation"), "Geolocation is allowed");
+  ok(ifr.policy.allowedFeatures().includes("camera"), "Camera is allowed");
+  ok(ifr.policy.allowedFeatures().includes("geolocation"), "Geolocation is allowed");
   // microphone is disabled for this origin
-  ok(!ifr.featurePolicy.allowedFeatures().includes("microphone"), "microphone is not allowed");
+  ok(!ifr.policy.allowedFeatures().includes("microphone"), "microphone is not allowed");
   // vr is disabled everywhere.
-  ok(!ifr.featurePolicy.allowedFeatures().includes("vr"), "VR is not allowed");
+  ok(!ifr.policy.allowedFeatures().includes("vr"), "VR is not allowed");
 
   next();
 }
 
 function test_iframe_with_allow() {
-  info("Checking HTMLIFrameElement.featurePolicy");
+  info("Checking HTMLIFrameElement.policy");
   let ifr = document.getElementById("ifr");
-  ok("featurePolicy" in ifr, "HTMLIFrameElement.featurePolicy exists");
+  ok("policy" in ifr, "HTMLIFrameElement.policy exists");
 
   ifr.setAttribute("allow", "camera 'none'");
 
-  ok(!ifr.featurePolicy.allowsFeature("foobar"), "Random feature");
-  ok(!ifr.featurePolicy.allowsFeature("foobar", "http://www.something.net"), "Random feature");
+  ok(!ifr.policy.allowsFeature("foobar"), "Random feature");
+  ok(!ifr.policy.allowsFeature("foobar", "http://www.something.net"), "Random feature");
 
-  ok(!ifr.featurePolicy.allowsFeature("camera"), "Camera is not allowed");
-  let allowed = ifr.featurePolicy.getAllowlistForFeature("camera");
+  ok(!ifr.policy.allowsFeature("camera"), "Camera is not allowed");
+  let allowed = ifr.policy.getAllowlistForFeature("camera");
   is(allowed.length, 0, "Camera has an empty allowlist");
 
-  ok(ifr.featurePolicy.allowsFeature("geolocation"), "Geolocation is allowed for all");
-  ok(ifr.featurePolicy.allowsFeature("geolocation", location.origin), "Geolocation is allowed for all");
-  ok(ifr.featurePolicy.allowsFeature("geolocation", "http://foo.bar"), "Geolocation is allowed for all");
-  allowed = ifr.featurePolicy.getAllowlistForFeature("geolocation");
+  ok(ifr.policy.allowsFeature("geolocation"), "Geolocation is allowed for all");
+  ok(ifr.policy.allowsFeature("geolocation", location.origin), "Geolocation is allowed for all");
+  ok(ifr.policy.allowsFeature("geolocation", "http://foo.bar"), "Geolocation is allowed for all");
+  allowed = ifr.policy.getAllowlistForFeature("geolocation");
   is(allowed.length, 1, "Only 1 entry in allowlist for geolocation");
   is(allowed[0], "*", "allowlist is '*'");
 
-  ok(!ifr.featurePolicy.allowsFeature("microphone"), "Microphone is disabled for self");
-  ok(!ifr.featurePolicy.allowsFeature("microphone", location.origin), "Microphone is disabled for self");
-  ok(!ifr.featurePolicy.allowsFeature("microphone", "http://foo.bar"), "Microphone is disabled for foo.bar");
-  ok(!ifr.featurePolicy.allowsFeature("microphone", "http://example.com"), "Microphone is disabled for example.com");
-  ok(!ifr.featurePolicy.allowsFeature("microphone", "http://example.org"), "Microphone is disabled for example.org");
-  allowed = ifr.featurePolicy.getAllowlistForFeature("microphone");
+  ok(!ifr.policy.allowsFeature("microphone"), "Microphone is disabled for self");
+  ok(!ifr.policy.allowsFeature("microphone", location.origin), "Microphone is disabled for self");
+  ok(!ifr.policy.allowsFeature("microphone", "http://foo.bar"), "Microphone is disabled for foo.bar");
+  ok(!ifr.policy.allowsFeature("microphone", "http://example.com"), "Microphone is disabled for example.com");
+  ok(!ifr.policy.allowsFeature("microphone", "http://example.org"), "Microphone is disabled for example.org");
+  allowed = ifr.policy.getAllowlistForFeature("microphone");
   is(allowed.length, 0, "No allowlist for microphone");
 
-  ok(!ifr.featurePolicy.allowsFeature("vr"), "Vibrate is disabled for self");
-  ok(!ifr.featurePolicy.allowsFeature("vr", location.origin), "Vibrate is disabled for self");
-  ok(!ifr.featurePolicy.allowsFeature("vr", "http://foo.bar"), "Vibrate is disabled for foo.bar");
-  allowed = ifr.featurePolicy.getAllowlistForFeature("vr");
+  ok(!ifr.policy.allowsFeature("vr"), "Vibrate is disabled for self");
+  ok(!ifr.policy.allowsFeature("vr", location.origin), "Vibrate is disabled for self");
+  ok(!ifr.policy.allowsFeature("vr", "http://foo.bar"), "Vibrate is disabled for foo.bar");
+  allowed = ifr.policy.getAllowlistForFeature("vr");
   is(allowed.length, 0, "No allowlist for vr");
 
-  ok(ifr.featurePolicy.allowedFeatures().includes("geolocation"), "Geolocation is allowed only for self");
+  ok(ifr.policy.allowedFeatures().includes("geolocation"), "Geolocation is allowed only for self");
 
   next();
 }
 
 function test_iframe_contentDocument() {
-  info("Checking iframe document.featurePolicy");
+  info("Checking iframe document.policy");
 
   let ifr = document.createElement("iframe");
   ifr.setAttribute("src", "empty.html");
   ifr.onload = function() {
-    ok("featurePolicy" in ifr.contentDocument, "We have ifr.contentDocument.featurePolicy");
+    ok("policy" in ifr.contentDocument, "We have ifr.contentDocument.policy");
 
-    ok(!ifr.contentDocument.featurePolicy.allowsFeature("foobar"), "Random feature");
-    ok(!ifr.contentDocument.featurePolicy.allowsFeature("foobar", "http://www.something.net"), "Random feature");
+    ok(!ifr.contentDocument.policy.allowsFeature("foobar"), "Random feature");
+    ok(!ifr.contentDocument.policy.allowsFeature("foobar", "http://www.something.net"), "Random feature");
 
-    ok(ifr.contentDocument.featurePolicy.allowsFeature("camera"), "Camera is allowed for self");
-    ok(ifr.contentDocument.featurePolicy.allowsFeature("camera", location.origin), "Camera is allowed for self");
-    ok(!ifr.contentDocument.featurePolicy.allowsFeature("camera", "http://foo.bar"), "Camera is allowed for self");
-    let allowed = ifr.contentDocument.featurePolicy.getAllowlistForFeature("camera");
+    ok(ifr.contentDocument.policy.allowsFeature("camera"), "Camera is allowed for self");
+    ok(ifr.contentDocument.policy.allowsFeature("camera", location.origin), "Camera is allowed for self");
+    ok(!ifr.contentDocument.policy.allowsFeature("camera", "http://foo.bar"), "Camera is allowed for self");
+    let allowed = ifr.contentDocument.policy.getAllowlistForFeature("camera");
     is(allowed.length, 1, "Only 1 entry in allowlist for camera");
     is(allowed[0], location.origin, "allowlist is 'self'");
 
-    ok(ifr.contentDocument.featurePolicy.allowsFeature("geolocation"), "Geolocation is allowed for all");
-    ok(ifr.contentDocument.featurePolicy.allowsFeature("geolocation", location.origin), "Geolocation is allowed for all");
-    ok(ifr.contentDocument.featurePolicy.allowsFeature("geolocation", "http://foo.bar"), "Geolocation is allowed for any random URL");
-    allowed = ifr.contentDocument.featurePolicy.getAllowlistForFeature("geolocation");
+    ok(ifr.contentDocument.policy.allowsFeature("geolocation"), "Geolocation is allowed for all");
+    ok(ifr.contentDocument.policy.allowsFeature("geolocation", location.origin), "Geolocation is allowed for all");
+    ok(ifr.contentDocument.policy.allowsFeature("geolocation", "http://foo.bar"), "Geolocation is allowed for any random URL");
+    allowed = ifr.contentDocument.policy.getAllowlistForFeature("geolocation");
     is(allowed.length, 1, "Only 1 entry in allowlist for geolocation");
     is(allowed[0], "*", "allowlist is '*'");
 
-    ok(!ifr.contentDocument.featurePolicy.allowsFeature("microphone"), "Microphone is disabled for self");
-    ok(!ifr.contentDocument.featurePolicy.allowsFeature("microphone", location.origin), "Microphone is disabled for self");
-    ok(!ifr.contentDocument.featurePolicy.allowsFeature("microphone", "http://foo.bar"), "Microphone is disabled for foo.bar");
-    ok(!ifr.contentDocument.featurePolicy.allowsFeature("microphone", "http://example.com"), "Microphone is allowed for example.com");
-    ok(!ifr.contentDocument.featurePolicy.allowsFeature("microphone", "http://example.org"), "Microphone is allowed for example.org");
-    allowed = ifr.contentDocument.featurePolicy.getAllowlistForFeature("microphone");
+    ok(!ifr.contentDocument.policy.allowsFeature("microphone"), "Microphone is disabled for self");
+    ok(!ifr.contentDocument.policy.allowsFeature("microphone", location.origin), "Microphone is disabled for self");
+    ok(!ifr.contentDocument.policy.allowsFeature("microphone", "http://foo.bar"), "Microphone is disabled for foo.bar");
+    ok(!ifr.contentDocument.policy.allowsFeature("microphone", "http://example.com"), "Microphone is allowed for example.com");
+    ok(!ifr.contentDocument.policy.allowsFeature("microphone", "http://example.org"), "Microphone is allowed for example.org");
+    allowed = ifr.contentDocument.policy.getAllowlistForFeature("microphone");
     is(allowed.length, 0, "No allowlist for microphone");
 
-    ok(!ifr.contentDocument.featurePolicy.allowsFeature("vr"), "Vibrate is disabled for self");
-    ok(!ifr.contentDocument.featurePolicy.allowsFeature("vr", location.origin), "Vibrate is disabled for self");
-    ok(!ifr.contentDocument.featurePolicy.allowsFeature("vr", "http://foo.bar"), "Vibrate is disabled for foo.bar");
-    allowed = ifr.contentDocument.featurePolicy.getAllowlistForFeature("vr");
+    ok(!ifr.contentDocument.policy.allowsFeature("vr"), "Vibrate is disabled for self");
+    ok(!ifr.contentDocument.policy.allowsFeature("vr", location.origin), "Vibrate is disabled for self");
+    ok(!ifr.contentDocument.policy.allowsFeature("vr", "http://foo.bar"), "Vibrate is disabled for foo.bar");
+    allowed = ifr.contentDocument.policy.getAllowlistForFeature("vr");
     is(allowed.length, 0, "No allowlist for vr");
 
-    ok(ifr.contentDocument.featurePolicy.allowedFeatures().includes("camera"), "Camera is allowed");
-    ok(ifr.contentDocument.featurePolicy.allowedFeatures().includes("geolocation"), "Geolocation is allowed");
+    ok(ifr.contentDocument.policy.allowedFeatures().includes("camera"), "Camera is allowed");
+    ok(ifr.contentDocument.policy.allowedFeatures().includes("geolocation"), "Geolocation is allowed");
     // microphone is disabled for this origin
-    ok(!ifr.contentDocument.featurePolicy.allowedFeatures().includes("microphone"), "Microphone is not allowed");
+    ok(!ifr.contentDocument.policy.allowedFeatures().includes("microphone"), "Microphone is not allowed");
     // vr is disabled everywhere.
-    ok(!ifr.contentDocument.featurePolicy.allowedFeatures().includes("vr"), "VR is not allowed");
+    ok(!ifr.contentDocument.policy.allowedFeatures().includes("vr"), "VR is not allowed");
 
     next();
   };
   document.body.appendChild(ifr);
 }
 
 var tests = [
   test_document,
--- a/dom/webidl/Document.webidl
+++ b/dom/webidl/Document.webidl
@@ -596,20 +596,20 @@ Document implements GlobalEventHandlers;
 Document implements DocumentAndElementEventHandlers;
 Document implements TouchEventHandlers;
 Document implements ParentNode;
 Document implements OnErrorEventHandlerForNodes;
 Document implements GeometryUtils;
 Document implements FontFaceSource;
 Document implements DocumentOrShadowRoot;
 
-// https://w3c.github.io/webappsec-feature-policy/#idl-index
+// https://wicg.github.io/feature-policy/#policy
 partial interface Document {
     [SameObject, Pref="dom.security.featurePolicy.webidl.enabled"]
-    readonly attribute FeaturePolicy featurePolicy;
+    readonly attribute Policy policy;
 };
 
 /**
  * Document extensions to support devtools.
  */
 partial interface Document {
   // Is the Document embedded in a Responsive Design Mode pane. This property
   // is not propegated to descendant Documents upon settting.
--- a/dom/webidl/FeaturePolicy.webidl
+++ b/dom/webidl/FeaturePolicy.webidl
@@ -1,21 +1,20 @@
 /* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  *
  * For more information on this interface, please see
- * https://w3c.github.io/webappsec-feature-policy/#idl-index
+ * https://wicg.github.io/feature-policy/#policy
  */
 
 [NoInterfaceObject]
-interface FeaturePolicy {
+interface Policy {
   boolean allowsFeature(DOMString feature, optional DOMString origin);
-  sequence<DOMString> features();
   sequence<DOMString> allowedFeatures();
   sequence<DOMString> getAllowlistForFeature(DOMString feature);
 };
 
 [Pref="dom.reporting.featurePolicy.enabled"]
 interface FeaturePolicyViolationReportBody : ReportBody {
   readonly attribute DOMString featureId;
   readonly attribute DOMString? sourceFile;
--- a/dom/webidl/HTMLIFrameElement.webidl
+++ b/dom/webidl/HTMLIFrameElement.webidl
@@ -65,16 +65,16 @@ partial interface HTMLIFrameElement {
   // nsIDOMMozBrowserFrame
   [ChromeOnly,SetterThrows]
            attribute boolean mozbrowser;
 };
 
 HTMLIFrameElement implements MozFrameLoaderOwner;
 HTMLIFrameElement implements BrowserElement;
 
-// https://w3c.github.io/webappsec-feature-policy/#idl-index
+// https://wicg.github.io/feature-policy/#policy
 partial interface HTMLIFrameElement {
   [SameObject, Pref="dom.security.featurePolicy.webidl.enabled"]
-  readonly attribute FeaturePolicy featurePolicy;
+  readonly attribute Policy policy;
 
   [CEReactions, SetterThrows, Pure, Pref="dom.security.featurePolicy.enabled"]
            attribute DOMString allow;
 };
--- a/testing/web-platform/meta/css/css-position/fixed-z-index-blend.html.ini
+++ b/testing/web-platform/meta/css/css-position/fixed-z-index-blend.html.ini
@@ -1,9 +1,10 @@
 [fixed-z-index-blend.html]
   disabled:
     if os == "mac": https://bugzilla.mozilla.org/show_bug.cgi?id=1552460
     if os == "win": https://bugzilla.mozilla.org/show_bug.cgi?id=1552460
+    if os == "android": https://bugzilla.mozilla.org/show_bug.cgi?id=1559313
   expected:
     if (os == "linux") and not debug and not webrender: FAIL
     if (os == "linux") and debug and not webrender: FAIL
     if (os == "win") and (version == "10.0.17134"): FAIL
     if (os == "android") and not e10s: FAIL
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/encrypted-media/encrypted-media-supported-by-feature-policy.tentative.html.ini
@@ -0,0 +1,4 @@
+[encrypted-media-supported-by-feature-policy.tentative.html]
+  [document.featurePolicy.features should advertise encrypted-media.]
+    expected: FAIL
+
--- a/testing/web-platform/meta/feature-policy/experimental-features/layout-animations-disabled-violation-report-js-tentative.html.ini
+++ b/testing/web-platform/meta/feature-policy/experimental-features/layout-animations-disabled-violation-report-js-tentative.html.ini
@@ -4,8 +4,11 @@
     expected: FAIL
 
   [Verify that when 'layout-animations' is disabled, an 'element.animate' API including a keyframe that uses a blocked property generates violation report (linked scripts).]
     expected: TIMEOUT
 
   [Verify that when 'layout-animations' is disabled, an 'element.animate' API including a keyframe that uses a blocked property generates violation report (inline scripts).]
     expected: NOTRUN
 
+  [Verify 'layout-animations' is not in document's feature list.]
+    expected: FAIL
+
--- a/testing/web-platform/meta/feature-policy/experimental-features/layout-animations-disabled-violation-report-keyframes-tentative.html.ini
+++ b/testing/web-platform/meta/feature-policy/experimental-features/layout-animations-disabled-violation-report-keyframes-tentative.html.ini
@@ -1,7 +1,11 @@
 [layout-animations-disabled-violation-report-keyframes-tentative.html]
   expected: TIMEOUT
   [layout-animations-disabled-violation-report-keyframes-tentative]
     expected: FAIL
 
   [Verify that when 'layout-animations' is disabled, a keyframes which includes a blocked property generates violation report.]
     expected: TIMEOUT
+
+  [Sanity-check: 'layout-animations' is not in document's feature list.]
+    expected: FAIL
+
--- a/testing/web-platform/meta/feature-policy/experimental-features/lazyload/lazyload-enabled-tentative.sub.html.ini
+++ b/testing/web-platform/meta/feature-policy/experimental-features/lazyload/lazyload-enabled-tentative.sub.html.ini
@@ -5,8 +5,9 @@
   [lazyload-enabled-tentative]
     expected: FAIL
 
   [Sanity-check: Contents do not load immediately (no eager-loading) when the load attribute is 'lazy' and frame is in viewport.]
     expected: FAIL
 
   [Sanity-check: Contents do not load immediately (no eager-loading) when the loading attribute is 'lazy' and frame is in viewport.]
     expected: FAIL
+
--- a/testing/web-platform/meta/feature-policy/feature-policy-for-sandbox/feature-propagation-to-auxiliary-context.html.ini
+++ b/testing/web-platform/meta/feature-policy/feature-policy-for-sandbox/feature-propagation-to-auxiliary-context.html.ini
@@ -1,6 +1,4 @@
 [feature-propagation-to-auxiliary-context.html]
   [feature-propagation-to-auxiliary-context]
     expected: FAIL
 
-  [Verify feature policies are inherited by the auxiliary browsing context if opened from a non-sandboxed same-origin <iframe>.]
-    expected: FAIL
--- a/testing/web-platform/meta/feature-policy/feature-policy-for-sandbox/sandbox-policies-in-allow-attribute.html.ini
+++ b/testing/web-platform/meta/feature-policy/feature-policy-for-sandbox/sandbox-policies-in-allow-attribute.html.ini
@@ -1,7 +1,4 @@
 [sandbox-policies-in-allow-attribute.html]
   [sandbox-policies-in-allow-attribute]
     expected: FAIL
 
-  [Verify that when a sandbox related feature is enabled in 'allow' then  the feature will be enabled regardless of sandbox attribute's value.]
-    expected: FAIL
-
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/feature-policy/feature-policy-frame-policy-allowed-for-all.https.sub.html.ini
@@ -0,0 +1,235 @@
+[feature-policy-frame-policy-allowed-for-all.https.sub.html]
+  [Test frame policy on same origin iframe with allow = "'self'" and header policy = "Feature-Policy: fullscreen 'none';".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + cross origin iframe with allow = "'none'" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on srcdoc+ same origin iframe inherit from header policy.]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'self'" and header policy = "Feature-Policy: fullscreen 'self';".]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'self'".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + same origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on data: URL cross origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "*".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + same origin iframe with allow = "'none'".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + same origin iframe with allow = "'self'" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + same origin iframe with allow = "'none'" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on data: URL cross origin iframe inherit from header policy.]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'none'" and header policy = "Feature-Policy: fullscreen 'none';".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + same origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com".]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'self'" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on data: URL cross origin iframe with allow = "'none'" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "*" and header policy = "Feature-Policy: fullscreen 'self';".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc iframe with allow = "*".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc iframe with allow = "'none'".]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "*" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on srcdoc iframe with allow = "'none'" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'self'" and header policy = "Feature-Policy: fullscreen 'none';".]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'self'".]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com" and header policy = "Feature-Policy: fullscreen 'self';".]
+    expected: FAIL
+
+  [Test frame policy on data: URL cross origin iframe with allow = "'self'" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'none'" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'none'" and header policy = "Feature-Policy: fullscreen 'none';".]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "*" and header policy = "Feature-Policy: fullscreen *;".]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "*" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'self'" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on srcdoc iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + same origin iframe with allow = "*" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "*".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + cross origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + cross origin iframe with allow = "'self'" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on srcdoc iframe with allow = "*" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe inherit from header policy.]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'none'".]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'none'" and header policy = "Feature-Policy: fullscreen *;".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + cross origin iframe with allow = "*".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc iframe inherit from header policy.]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com" and header policy = "Feature-Policy: fullscreen 'self';".]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com" and header policy = "Feature-Policy: fullscreen 'none';".]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'self'" and header policy = "Feature-Policy: fullscreen 'self';".]
+    expected: FAIL
+
+  [Test frame policy on data: URL cross origin iframe with allow = "'self'".]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com" and header policy = "Feature-Policy: fullscreen 'none';".]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "*" and header policy = "Feature-Policy: fullscreen 'none';".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc iframe with allow = "'self'" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + cross origin iframe with allow = "'self'".]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'none'" and header policy = "Feature-Policy: fullscreen *;".]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com" and header policy = "Feature-Policy: fullscreen *;".]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'none'".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com".]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "*" and header policy = "Feature-Policy: fullscreen *;".]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe inherit from header policy.]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + same origin iframe with allow = "*".]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'self'" and header policy = "Feature-Policy: fullscreen *;".]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'self'" and header policy = "Feature-Policy: fullscreen *;".]
+    expected: FAIL
+
+  [Test frame policy on data: URL cross origin iframe with allow = "'none'".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc iframe with allow = "'self'".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + cross origin iframe with allow = "'none'".]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com".]
+    expected: FAIL
+
+  [Test frame policy on data: URL cross origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com".]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'none'" and header policy = "Feature-Policy: fullscreen 'self';".]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "*" and header policy = "Feature-Policy: fullscreen 'none';".]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + cross origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + cross origin iframe with allow = "*" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'none'" and header policy = "Feature-Policy: fullscreen 'self';".]
+    expected: FAIL
+
+  [Test frame policy on data: URL cross origin iframe with allow = "*" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com" and header policy = "Feature-Policy: fullscreen *;".]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + same origin iframe with allow = "'self'".]
+    expected: FAIL
+
+  [Test frame policy on data: URL cross origin iframe with allow = "*".]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "*" and header policy = "Feature-Policy: fullscreen 'self';".]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'none'" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on srcdoc+ cross origin iframe inherit from header policy.]
+    expected: FAIL
+
--- a/testing/web-platform/meta/feature-policy/feature-policy-frame-policy-allowed-for-self.https.sub.html.ini
+++ b/testing/web-platform/meta/feature-policy/feature-policy-frame-policy-allowed-for-self.https.sub.html.ini
@@ -1,13 +1,259 @@
 [feature-policy-frame-policy-allowed-for-self.https.sub.html]
+  [Test frame policy on sandboxed iframe with allow="fullscreen https://www.web-platform.test:8443".]
+    expected: FAIL
 
   [Test frame policy on sandboxed iframe with no allow attribute.]
     expected: FAIL
 
-  [Test frame policy on sandboxed iframe with allow="fullscreen https://www.web-platform.test:8443".]
-    expected: FAIL
-
   [Test frame policy on data: URL origin iframe with allow = "*".]
     expected: FAIL
 
   [Test frame policy on data: URL origin iframe with allow = "*" and allowfullscreen.]
     expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'self'" and header policy = "Feature-Policy: fullscreen 'none';".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + cross origin iframe inherit from header policy.]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "*" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on srcdoc iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe inherit from header policy.]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'none'" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'self'" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "*".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc iframe inherit from header policy.]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com" and header policy = "Feature-Policy: fullscreen 'none';".]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "*" and header policy = "Feature-Policy: fullscreen 'none';".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com".]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com".]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'none'" and header policy = "Feature-Policy: fullscreen 'self';".]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com" and header policy = "Feature-Policy: fullscreen 'self';".]
+    expected: FAIL
+
+  [Test frame policy on data: URL origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + same origin iframe with allow = "'self'".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc iframe with allow = "'none'" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on data: URL origin iframe with allow = "'none'" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'self'".]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'none'" and header policy = "Feature-Policy: fullscreen 'self';".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + same origin iframe with allow = "'none'".]
+    expected: FAIL
+
+  [Test frame policy on data: URL cross origin iframe inherit from header policy.]
+    expected: FAIL
+
+  [Test frame policy on srcdoc iframe with allow = "'none'".]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'none'" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + cross origin iframe with allow = "'self'" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'none'".]
+    expected: FAIL
+
+  [Test frame policy on data: URL origin iframe with allow = "'none'".]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'self'" and header policy = "Feature-Policy: fullscreen *;".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + cross origin iframe with allow = "'self'".]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'none'".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + cross origin sandboxed iframe with allow="fullscreen".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + same origin iframe with allow = "'self'" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'self'" and header policy = "Feature-Policy: fullscreen 'self';".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc iframe with allow = "'self'".]
+    expected: FAIL
+
+  [Test frame policy on data: URL origin iframe with allow = "'self'".]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'self'" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "*" and header policy = "Feature-Policy: fullscreen 'none';".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + cross origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com".]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com" and header policy = "Feature-Policy: fullscreen *;".]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "*" and header policy = "Feature-Policy: fullscreen *;".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc iframe with allow = "*" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'self'".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + same origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'none'" and header policy = "Feature-Policy: fullscreen 'none';".]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "*" and header policy = "Feature-Policy: fullscreen 'self';".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + cross origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + same origin iframe inherit from header policy.]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "*" and header policy = "Feature-Policy: fullscreen *;".]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'none'" and header policy = "Feature-Policy: fullscreen *;".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + cross origin iframe with allow = "*".]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com" and header policy = "Feature-Policy: fullscreen 'none';".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc iframe with allow = "'self'" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on sandboxed srcdoc iframe with allow="fullscreen https://www.web-platform.test:8443".]
+    expected: FAIL
+
+  [Test frame policy on sandboxed iframe with allow="fullscreen".]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com" and header policy = "Feature-Policy: fullscreen *;".]
+    expected: FAIL
+
+  [Test frame policy on sandboxed iframe with allow="fullscreen 'src'".]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe inherit from header policy.]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'self'" and header policy = "Feature-Policy: fullscreen *;".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + cross origin iframe with allow = "'none'".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + cross origin iframe with allow = "'none'" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'self'" and header policy = "Feature-Policy: fullscreen 'self';".]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + cross origin iframe with allow = "*" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'none'" and header policy = "Feature-Policy: fullscreen 'none';".]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "*" and header policy = "Feature-Policy: fullscreen 'self';".]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "*".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + same origin iframe with allow = "'none'" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + same origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc iframe with allow = "*".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc sandboxed iframe with allow="fullscreen".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + same origin sandboxed iframe with allow="fullscreen".]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'self'" and header policy = "Feature-Policy: fullscreen 'none';".]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com" and header policy = "Feature-Policy: fullscreen 'self';".]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "*" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + same origin iframe with allow = "*" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on data: URL origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'none'" and header policy = "Feature-Policy: fullscreen *;".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + same origin iframe with allow = "*".]
+    expected: FAIL
+
+  [Test frame policy on data: URL origin iframe with allow = "'self'" and allowfullscreen.]
+    expected: FAIL
+
--- a/testing/web-platform/meta/feature-policy/feature-policy-frame-policy-allowed-for-some.https.sub.html.ini
+++ b/testing/web-platform/meta/feature-policy/feature-policy-frame-policy-allowed-for-some.https.sub.html.ini
@@ -1,7 +1,325 @@
 [feature-policy-frame-policy-allowed-for-some.https.sub.html]
-
   [Test frame policy on data: URL cross origin iframe with allow = "*".]
     expected: FAIL
 
   [Test frame policy on data: URL cross origin iframe with allow = "*" and allowfullscreen.]
     expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'self'" and header policy = "Feature-Policy: fullscreen 'none';".]
+    expected: FAIL
+
+  [Test frame policy on another cross origin iframe with allow = "'self'".]
+    expected: FAIL
+
+  [Test frame policy on data: URL cross origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on another cross origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com" and header policy = "Feature-Policy: fullscreen 'self';".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + another cross origin iframe with allow = "*".]
+    expected: FAIL
+
+  [Test frame policy on another cross origin iframe inherit from header policy.]
+    expected: FAIL
+
+  [Test frame policy on another cross origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com" and header policy = "Feature-Policy: fullscreen 'none';".]
+    expected: FAIL
+
+  [Test frame policy on another cross origin iframe with allow = "'self'" and header policy = "Feature-Policy: fullscreen 'none';".]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "*" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on srcdoc iframe with allow = "'none'" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe inherit from header policy.]
+    expected: FAIL
+
+  [Test frame policy on another cross origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'none'" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'self'" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "*".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc iframe inherit from header policy.]
+    expected: FAIL
+
+  [Test frame policy on data: URL cross origin iframe with allow = "'self'".]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com" and header policy = "Feature-Policy: fullscreen 'none';".]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "*" and header policy = "Feature-Policy: fullscreen 'none';".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com".]
+    expected: FAIL
+
+  [Test frame policy on data: URL cross origin iframe with allow = "'none'".]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com".]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'none'" and header policy = "Feature-Policy: fullscreen 'self';".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + cross origin iframe inherit from header policy.]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com" and header policy = "Feature-Policy: fullscreen 'self';".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + same origin iframe with allow = "'self'".]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'self'".]
+    expected: FAIL
+
+  [Test frame policy on data: URL cross origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + same origin iframe with allow = "'none'".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + another cross origin iframe with allow = "'none'" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on another cross origin iframe with allow = "'none'" and header policy = "Feature-Policy: fullscreen *;".]
+    expected: FAIL
+
+  [Test frame policy on another cross origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com" and header policy = "Feature-Policy: fullscreen *;".]
+    expected: FAIL
+
+  [Test frame policy on data: URL cross origin iframe inherit from header policy.]
+    expected: FAIL
+
+  [Test frame policy on data: URL cross origin iframe with allow = "'none'" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + another cross origin iframe with allow = "*" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on srcdoc iframe with allow = "'none'".]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'none'" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on srcdoc iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on another cross origin iframe with allow = "'self'" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + cross origin iframe with allow = "'self'" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'none'".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + another cross origin iframe with allow = "'self'".]
+    expected: FAIL
+
+  [Test frame policy on another cross origin iframe with allow = "*" and header policy = "Feature-Policy: fullscreen 'none';".]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'self'" and header policy = "Feature-Policy: fullscreen *;".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + cross origin iframe with allow = "'self'".]
+    expected: FAIL
+
+  [Test frame policy on another cross origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com".]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'none'".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + same origin iframe with allow = "'self'" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'self'" and header policy = "Feature-Policy: fullscreen 'self';".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc iframe with allow = "'self'".]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'self'" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "*" and header policy = "Feature-Policy: fullscreen 'none';".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + cross origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com".]
+    expected: FAIL
+
+  [Test frame policy on another cross origin iframe with allow = "*" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com" and header policy = "Feature-Policy: fullscreen *;".]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "*" and header policy = "Feature-Policy: fullscreen *;".]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'self'".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + same origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + another cross origin iframe with allow = "'none'".]
+    expected: FAIL
+
+  [Test frame policy on another cross origin iframe with allow = "*".]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'none'" and header policy = "Feature-Policy: fullscreen 'none';".]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'none'" and header policy = "Feature-Policy: fullscreen 'self';".]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "*" and header policy = "Feature-Policy: fullscreen 'self';".]
+    expected: FAIL
+
+  [Test frame policy on data: URL cross origin iframe with allow = "'self'" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + another cross origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + another cross origin iframe inherit from header policy.]
+    expected: FAIL
+
+  [Test frame policy on another cross origin iframe with allow = "'self'" and header policy = "Feature-Policy: fullscreen 'self';".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + cross origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + same origin iframe inherit from header policy.]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "*" and header policy = "Feature-Policy: fullscreen *;".]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'none'" and header policy = "Feature-Policy: fullscreen *;".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + cross origin iframe with allow = "*".]
+    expected: FAIL
+
+  [Test frame policy on another cross origin iframe with allow = "'none'" and header policy = "Feature-Policy: fullscreen 'self';".]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com" and header policy = "Feature-Policy: fullscreen 'none';".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc iframe with allow = "'self'" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on srcdoc iframe with allow = "*" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com" and header policy = "Feature-Policy: fullscreen *;".]
+    expected: FAIL
+
+  [Test frame policy on another cross origin iframe with allow = "*" and header policy = "Feature-Policy: fullscreen 'self';".]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe inherit from header policy.]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'self'" and header policy = "Feature-Policy: fullscreen *;".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + cross origin iframe with allow = "'none'".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + cross origin iframe with allow = "'none'" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'self'" and header policy = "Feature-Policy: fullscreen 'self';".]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + same origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com".]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'none'" and header policy = "Feature-Policy: fullscreen 'none';".]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "*" and header policy = "Feature-Policy: fullscreen 'self';".]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "*".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + same origin iframe with allow = "'none'" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + cross origin iframe with allow = "*" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on srcdoc iframe with allow = "*".]
+    expected: FAIL
+
+  [Test frame policy on another cross origin iframe with allow = "'self'" and header policy = "Feature-Policy: fullscreen *;".]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'self'" and header policy = "Feature-Policy: fullscreen 'none';".]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com" and header policy = "Feature-Policy: fullscreen 'self';".]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "*" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + same origin iframe with allow = "*" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + same origin iframe with allow = "*".]
+    expected: FAIL
+
+  [Test frame policy on another cross origin iframe with allow = "'none'" and header policy = "Feature-Policy: fullscreen 'none';".]
+    expected: FAIL
+
+  [Test frame policy on another cross origin iframe with allow = "'none'" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'none'" and header policy = "Feature-Policy: fullscreen *;".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + another cross origin iframe with allow = "'self'" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on another cross origin iframe with allow = "'none'".]
+    expected: FAIL
+
+  [Test frame policy on another cross origin iframe with allow = "*" and header policy = "Feature-Policy: fullscreen *;".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + another cross origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com" and allowfullscreen.]
+    expected: FAIL
+
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/feature-policy/feature-policy-frame-policy-disallowed-for-all.https.sub.html.ini
@@ -0,0 +1,235 @@
+[feature-policy-frame-policy-disallowed-for-all.https.sub.html]
+  [Test frame policy on same origin iframe with allow = "'self'" and header policy = "Feature-Policy: fullscreen 'none';".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + cross origin iframe with allow = "'none'" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'self'" and header policy = "Feature-Policy: fullscreen 'self';".]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'self'".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + same origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on data: URL cross origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "*".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + same origin iframe with allow = "'none'".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + same origin iframe with allow = "'self'" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + same origin iframe with allow = "'none'" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on data: URL cross origin iframe inherit from header policy.]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'none'" and header policy = "Feature-Policy: fullscreen 'none';".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + same origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com".]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'self'" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on data: URL cross origin iframe with allow = "'none'" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "*" and header policy = "Feature-Policy: fullscreen 'self';".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc iframe with allow = "*".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc iframe with allow = "'none'".]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "*" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on srcdoc iframe with allow = "'none'" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'self'" and header policy = "Feature-Policy: fullscreen 'none';".]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe inherit from header policy.]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com" and header policy = "Feature-Policy: fullscreen 'self';".]
+    expected: FAIL
+
+  [Test frame policy on data: URL cross origin iframe with allow = "'self'" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'none'" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'none'" and header policy = "Feature-Policy: fullscreen 'none';".]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "*" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'none'" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'self'" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on srcdoc iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + same origin iframe with allow = "*" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "*".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + cross origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + cross origin iframe with allow = "'self'" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + same origin iframe inherit from header policy.]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "*" and header policy = "Feature-Policy: fullscreen *;".]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'none'".]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'none'" and header policy = "Feature-Policy: fullscreen *;".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + cross origin iframe with allow = "*".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc iframe inherit from header policy.]
+    expected: FAIL
+
+  [Test frame policy on data: URL cross origin iframe with allow = "*" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com" and header policy = "Feature-Policy: fullscreen 'self';".]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com" and header policy = "Feature-Policy: fullscreen 'none';".]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'self'" and header policy = "Feature-Policy: fullscreen 'self';".]
+    expected: FAIL
+
+  [Test frame policy on data: URL cross origin iframe with allow = "'self'".]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com" and header policy = "Feature-Policy: fullscreen 'none';".]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "*" and header policy = "Feature-Policy: fullscreen 'none';".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc iframe with allow = "'self'" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + cross origin iframe with allow = "'self'".]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'none'" and header policy = "Feature-Policy: fullscreen *;".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc iframe with allow = "*" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com" and header policy = "Feature-Policy: fullscreen *;".]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'none'".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com".]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "*" and header policy = "Feature-Policy: fullscreen *;".]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe inherit from header policy.]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + same origin iframe with allow = "*".]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'self'" and header policy = "Feature-Policy: fullscreen *;".]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'self'" and header policy = "Feature-Policy: fullscreen *;".]
+    expected: FAIL
+
+  [Test frame policy on data: URL cross origin iframe with allow = "'none'".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc iframe with allow = "'self'".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + cross origin iframe with allow = "'none'".]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com".]
+    expected: FAIL
+
+  [Test frame policy on data: URL cross origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com".]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'none'" and header policy = "Feature-Policy: fullscreen 'self';".]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "*" and header policy = "Feature-Policy: fullscreen 'none';".]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + cross origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + cross origin iframe with allow = "*" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'none'" and header policy = "Feature-Policy: fullscreen 'self';".]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + cross origin iframe inherit from header policy.]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com" and header policy = "Feature-Policy: fullscreen *;".]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "'self' https://www.web-platform.test:8443 https://www.example.com" and allowfullscreen.]
+    expected: FAIL
+
+  [Test frame policy on srcdoc + same origin iframe with allow = "'self'".]
+    expected: FAIL
+
+  [Test frame policy on data: URL cross origin iframe with allow = "*".]
+    expected: FAIL
+
+  [Test frame policy on same origin iframe with allow = "*" and header policy = "Feature-Policy: fullscreen 'self';".]
+    expected: FAIL
+
+  [Test frame policy on cross origin iframe with allow = "'self'".]
+    expected: FAIL
+
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/feature-policy/feature-policy-header-policy-allowed-for-all.https.sub.html.ini
@@ -0,0 +1,16 @@
+[feature-policy-header-policy-allowed-for-all.https.sub.html]
+  [Feature-Policy: fullscreen * -- test fullscreen is allowed on same-origin subframe]
+    expected: FAIL
+
+  [Feature-Policy: fullscreen * -- test fullscreen is allowed on cross-origin subframe]
+    expected: FAIL
+
+  [Feature-Policy: fullscreen *, iframe.allow = fullscreen 'self'; -- test fullscreen is disallowed on cross-origin subframe]
+    expected: FAIL
+
+  [Feature-Policy: fullscreen *, iframe.allow = fullscreen 'self'; -- test fullscreen is allowed on same-origin subframe]
+    expected: FAIL
+
+  [Feature-Policy: fullscreen *NaN]
+    expected: FAIL
+
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/feature-policy/feature-policy-header-policy-allowed-for-self.https.sub.html.ini
@@ -0,0 +1,16 @@
+[feature-policy-header-policy-allowed-for-self.https.sub.html]
+  [Feature-Policy: fullscreen 'self' -- test allowlist is [same_origin\]]
+    expected: FAIL
+
+  [Feature-Policy: fullscreen 'self', iframe.allow = fullscreen 'src'; -- test fullscreen is allowed on cross-origin subframe]
+    expected: FAIL
+
+  [Feature-Policy: fullscreen 'self', iframe.allow = fullscreen 'src'; -- test fullscreen is allowed on same-origin subframe]
+    expected: FAIL
+
+  [Feature-Policy: fullscreen 'self' -- test fullscreen is disallowed on cross-origin subframe]
+    expected: FAIL
+
+  [Feature-Policy: fullscreen 'self' -- test fullscreen is allowed on same-origin subframe]
+    expected: FAIL
+
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/feature-policy/feature-policy-header-policy-allowed-for-some.https.sub.html.ini
@@ -0,0 +1,19 @@
+[feature-policy-header-policy-allowed-for-some.https.sub.html]
+  [Feature-Policy: fullscreen 'self' https://www.web-platform.test:8443 https://www.example.com;, iframe.allow = fullscreen 'none'; -- test fullscreen is disallowed on same-origin subframe]
+    expected: FAIL
+
+  [Feature-Policy: fullscreen 'self' https://www.web-platform.test:8443 https://www.example.com; -- test fullscreen is disallowed on cross-origin https://www1.web-platform.test:8443/feature-policy/resources/feature-policy-allowedfeatures.html subframe]
+    expected: FAIL
+
+  [Feature-Policy: fullscreen 'self' https://www.web-platform.test:8443 https://www.example.com; -- test allowlist is [same_origin, cross_origin, https://www.example.com\]]
+    expected: FAIL
+
+  [Feature-Policy: fullscreen 'self' https://www.web-platform.test:8443 https://www.example.com; -- test fullscreen is allowed on cross-origin https://www.web-platform.test:8443/feature-policy/resources/feature-policy-allowedfeatures.html subframe]
+    expected: FAIL
+
+  [Feature-Policy: fullscreen 'self' https://www.web-platform.test:8443 https://www.example.com; -- test fullscreen is allowed on same-origin subframe]
+    expected: FAIL
+
+  [Feature-Policy: fullscreen 'self' https://www.web-platform.test:8443 https://www.example.com;iframe.allow = fullscreen 'none'; -- test fullscreen is disallowed on cross-origin subframe]
+    expected: FAIL
+
--- a/testing/web-platform/meta/feature-policy/feature-policy-header-policy-declined.https.sub.html.ini
+++ b/testing/web-platform/meta/feature-policy/feature-policy-header-policy-declined.https.sub.html.ini
@@ -1,3 +1,25 @@
 [feature-policy-header-policy-declined.https.sub.html]
   [Feature-Policy: fullscreen 'self' https://www.web-platform.test:8443 https://www.example.com; -- test allowlist is [cross_origin, https://www.example.com\]]
     expected: FAIL
+
+  [Feature-Policy: fullscreen 'self' https://www.web-platform.test:8443 https://www.example.com;, iframe.allow = fullscreen https://www.web-platform.test:8443 -- test fullscreen is disallowed on same-origin subframe]
+    expected: FAIL
+
+  [Feature-Policy: fullscreen 'self' https://www.web-platform.test:8443 https://www.example.com;, iframe.allow = fullscreen 'none'; -- test fullscreen is disallowed on same-origin subframe]
+    expected: FAIL
+
+  [Feature-Policy: fullscreen 'self' https://www.web-platform.test:8443 https://www.example.com; -- test fullscreen is disallowed on cross-origin https://www1.web-platform.test:8443/feature-policy/resources/feature-policy-allowedfeatures.html subframe]
+    expected: FAIL
+
+  [Feature-Policy: fullscreen 'self' https://www.web-platform.test:8443 https://www.example.com;iframe.allow = fullscreen https://www.web-platform.test:8443 -- test fullscreen is allowed on specific cross-origin subframe]
+    expected: FAIL
+
+  [Feature-Policy: fullscreen 'self' https://www.web-platform.test:8443 https://www.example.com;iframe.allow = fullscreen 'none'; -- test fullscreen is allowed on specific cross-origin subframe]
+    expected: FAIL
+
+  [Feature-Policy: fullscreen 'self' https://www.web-platform.test:8443 https://www.example.com; -- test fullscreen is allowed on same-origin subframe]
+    expected: FAIL
+
+  [Feature-Policy: fullscreen 'self' https://www.web-platform.test:8443 https://www.example.com; -- test fullscreen is allowed on cross-origin https://www.web-platform.test:8443/feature-policy/resources/feature-policy-allowedfeatures.html subframe]
+    expected: FAIL
+
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/feature-policy/feature-policy-header-policy-disallowed-for-all.https.sub.html.ini
@@ -0,0 +1,16 @@
+[feature-policy-header-policy-disallowed-for-all.https.sub.html]
+  [Feature-Policy: fullscreen 'none' -- test fullscreen is disallowed on same-origin subframe]
+    expected: FAIL
+
+  [Feature-Policy: fullscreen 'none' -- test allowlist is [\]]
+    expected: FAIL
+
+  [Feature-Policy: fullscreen 'none', iframe.allow = fullscreen 'src'; -- test fullscreen is disallowed on cross-origin subframe]
+    expected: FAIL
+
+  [Feature-Policy: fullscreen 'none', iframe.allow = fullscreen 'src'; -- test fullscreen is disallowed on same-origin subframe]
+    expected: FAIL
+
+  [Feature-Policy: fullscreen 'none' -- test fullscreen is disallowed on cross-origin subframe]
+    expected: FAIL
+
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/feature-policy/feature-policy-nested-header-policy-allowed-for-all.https.sub.html.ini
@@ -0,0 +1,19 @@
+[feature-policy-nested-header-policy-allowed-for-all.https.sub.html]
+  [Test nested header policy with remote iframe on policy "fullscreen *"]
+    expected: FAIL
+
+  [Test nested header policy with local iframe on policy "fullscreen *"]
+    expected: FAIL
+
+  [Test nested header policy with remote iframe on policy "fullscreen 'self'"]
+    expected: FAIL
+
+  [Test nested header policy with local iframe on policy "fullscreen 'self'"]
+    expected: FAIL
+
+  [Test nested header policy with local iframe on policy "fullscreen 'none'"]
+    expected: FAIL
+
+  [Test nested header policy with remote iframe on policy "fullscreen 'none'"]
+    expected: FAIL
+
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/feature-policy/feature-policy-nested-header-policy-allowed-for-self.https.sub.html.ini
@@ -0,0 +1,19 @@
+[feature-policy-nested-header-policy-allowed-for-self.https.sub.html]
+  [Test nested header policy with remote iframe on policy "fullscreen *"]
+    expected: FAIL
+
+  [Test nested header policy with local iframe on policy "fullscreen *"]
+    expected: FAIL
+
+  [Test nested header policy with remote iframe on policy "fullscreen 'self'"]
+    expected: FAIL
+
+  [Test nested header policy with local iframe on policy "fullscreen 'self'"]
+    expected: FAIL
+
+  [Test nested header policy with local iframe on policy "fullscreen 'none'"]
+    expected: FAIL
+
+  [Test nested header policy with remote iframe on policy "fullscreen 'none'"]
+    expected: FAIL
+
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/feature-policy/feature-policy-nested-header-policy-disallowed-for-all.https.sub.html.ini
@@ -0,0 +1,19 @@
+[feature-policy-nested-header-policy-disallowed-for-all.https.sub.html]
+  [Test nested header policy with remote iframe on policy "fullscreen 'self'".]
+    expected: FAIL
+
+  [Test nested header policy with local iframe on policy "fullscreen 'self'".]
+    expected: FAIL
+
+  [Test nested header policy with local iframe on policy "fullscreen *".]
+    expected: FAIL
+
+  [Test nested header policy with local iframe on policy "fullscreen 'none'".]
+    expected: FAIL
+
+  [Test nested header policy with remote iframe on policy "fullscreen 'none'".]
+    expected: FAIL
+
+  [Test nested header policy with remote iframe on policy "fullscreen *".]
+    expected: FAIL
+
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/feature-policy/idlharness.window.js.ini
@@ -0,0 +1,31 @@
+[idlharness.window.html]
+  [HTMLIFrameElement interface: attribute featurePolicy]
+    expected: FAIL
+
+  [Document interface: attribute featurePolicy]
+    expected: FAIL
+
+  [Document interface: document must inherit property "featurePolicy" with the proper type]
+    expected: FAIL
+
+  [FeaturePolicy interface: document.featurePolicy must inherit property "allowsFeature(DOMString, DOMString)" with the proper type]
+    expected: FAIL
+
+  [FeaturePolicy interface: document.featurePolicy must inherit property "getAllowlistForFeature(DOMString)" with the proper type]
+    expected: FAIL
+
+  [FeaturePolicy interface: document.featurePolicy must inherit property "allowedFeatures()" with the proper type]
+    expected: FAIL
+
+  [FeaturePolicy interface: calling getAllowlistForFeature(DOMString) on document.featurePolicy with too few arguments must throw TypeError]
+    expected: FAIL
+
+  [Stringification of document.featurePolicy]
+    expected: FAIL
+
+  [FeaturePolicy interface: calling allowsFeature(DOMString, DOMString) on document.featurePolicy with too few arguments must throw TypeError]
+    expected: FAIL
+
+  [FeaturePolicy interface: document.featurePolicy must inherit property "features()" with the proper type]
+    expected: FAIL
+
--- a/testing/web-platform/meta/feature-policy/payment-supported-by-feature-policy.tentative.html.ini
+++ b/testing/web-platform/meta/feature-policy/payment-supported-by-feature-policy.tentative.html.ini
@@ -1,3 +1,6 @@
 [payment-supported-by-feature-policy.tentative.html]
   disabled:
     if (os == "android") or not nightly_build: https://bugzilla.mozilla.org/show_bug.cgi?id=1549241
+  [document.featurePolicy.features should advertise payment.]
+    expected: FAIL
+
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/geolocation-sensor/GeolocationSensor-supported-by-feature-policy.html.ini
@@ -0,0 +1,4 @@
+[GeolocationSensor-supported-by-feature-policy.html]
+  [document.featurePolicy.features should advertise geolocation.]
+    expected: FAIL
+
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/html/semantics/embedded-content/media-elements/autoplay-supported-by-feature-policy.html.ini
@@ -0,0 +1,4 @@
+[autoplay-supported-by-feature-policy.html]
+  [document.featurePolicy.features should advertise autoplay.]
+    expected: FAIL
+
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/mediacapture-streams/MediaStream-supported-by-feature-policy.html.ini
@@ -0,0 +1,7 @@
+[MediaStream-supported-by-feature-policy.html]
+  [document.featurePolicy.features should advertise microphone.]
+    expected: FAIL
+
+  [document.featurePolicy.features should advertise camera.]
+    expected: FAIL
+
--- a/testing/web-platform/meta/webvr/webvr-supported-by-feature-policy.html.ini
+++ b/testing/web-platform/meta/webvr/webvr-supported-by-feature-policy.html.ini
@@ -1,3 +1,7 @@
 [webvr-supported-by-feature-policy.html]
   [document.featurePolicy.features should advertise xr.]
     expected: FAIL
+
+  [document.featurePolicy.features should advertise (obsolete) vr.]
+    expected: FAIL
+