Index: third_party/WebKit/Source/core/dom/Fullscreen.cpp |
diff --git a/third_party/WebKit/Source/core/dom/Fullscreen.cpp b/third_party/WebKit/Source/core/dom/Fullscreen.cpp |
index ff1331bd4cadc423dc311e1626746ce7ce733867..a1969cd2a570421f9dd0e2b76b255a65b20d5433 100644 |
--- a/third_party/WebKit/Source/core/dom/Fullscreen.cpp |
+++ b/third_party/WebKit/Source/core/dom/Fullscreen.cpp |
@@ -29,6 +29,7 @@ |
#include "core/dom/Fullscreen.h" |
+#include "bindings/core/v8/ConditionalFeatures.h" |
#include "core/dom/Document.h" |
#include "core/dom/ElementTraversal.h" |
#include "core/dom/StyleEngine.h" |
@@ -100,10 +101,38 @@ bool allowedToRequestFullscreen(Document& document) { |
} |
// https://fullscreen.spec.whatwg.org/#fullscreen-is-supported |
-bool fullscreenIsSupported(const Document& document) { |
+// TODO(lunalu): update the placement of the feature policy code once it is in |
+// https://fullscreen.spec.whatwg.org/. |
+bool fullscreenIsSupported(Document& document) { |
+ LocalFrame* frame = document.frame(); |
+ if (!frame) |
+ return false; |
+ |
// Fullscreen is supported if there is no previously-established user |
// preference, security risk, or platform limitation. |
- return !document.settings() || document.settings()->fullscreenSupported(); |
+ bool fullscreenSupported = |
+ !document.settings() || document.settings()->fullscreenSupported(); |
+ |
+ if (!RuntimeEnabledFeatures::featurePolicyEnabled()) { |
+ return fullscreenSupported; |
+ } |
+ |
+ if (fullscreenSupported) { |
iclelland
2016/12/05 20:48:30
Can we add a comment here? Something like
"If Fea
lunalu1
2016/12/05 21:07:32
Done.
|
+ if (frame->tree() |
+ .parent() |
+ ->securityContext() |
+ ->getFeaturePolicy() |
+ ->isFeatureEnabled(kFullscreenFeature)) { |
+ return true; |
+ } |
+ } else if (isFeatureEnabledInFrame(kFullscreenFeature, frame)) { |
iclelland
2016/12/05 20:48:30
And I'd add a comment here that says "Even if the
lunalu1
2016/12/05 21:07:32
Done.
|
+ return true; |
+ } |
+ |
+ document.addConsoleMessage(ConsoleMessage::create( |
+ JSMessageSource, WarningMessageLevel, |
+ "Fullscreen API is disabled by feature policy for this frame")); |
+ return false; |
} |
// https://fullscreen.spec.whatwg.org/#fullscreen-element-ready-check |