Title: [233771] trunk/Source/WebKit
Revision
233771
Author
jer.no...@apple.com
Date
2018-07-12 10:03:41 -0700 (Thu, 12 Jul 2018)

Log Message

REGRESSION (r230163): Videos cannot be seen full screen in Complete Anatomy app
https://bugs.webkit.org/show_bug.cgi?id=187527
<rdar://problem/40511527>

Reviewed by Ryosuke Niwa.

Do not enable element fullscreen mode unless apps specifically opt-in. The Fullscreen API is
an experimental feature on iOS, but not on Mac, but we can't simply not return the ExperimentalFeature
object from the list of experimental features, as this keeps Safari from being able to apply a
NSUserDefault value for that feature. Instead, add a property to API::ExperimentalFeature and
_WKExperimentalFeature called "hidden", which signals to clients whether to display the feature
in their UI.

* Scripts/GeneratePreferences.rb:
* Scripts/PreferencesTemplates/WebPreferencesExperimentalFeatures.cpp.erb:
* Shared/WebPreferences.yaml:
* Shared/WebPreferencesDefaultValues.h:
* UIProcess/API/APIExperimentalFeature.cpp:
(API::ExperimentalFeature::create):
(API::ExperimentalFeature::ExperimentalFeature):
* UIProcess/API/APIExperimentalFeature.h:
* UIProcess/API/Cocoa/_WKExperimentalFeature.h:
* UIProcess/API/Cocoa/_WKExperimentalFeature.mm:
(-[_WKExperimentalFeature isHidden]):

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (233770 => 233771)


--- trunk/Source/WebKit/ChangeLog	2018-07-12 17:00:58 UTC (rev 233770)
+++ trunk/Source/WebKit/ChangeLog	2018-07-12 17:03:41 UTC (rev 233771)
@@ -1,3 +1,30 @@
+2018-07-12  Jer Noble  <jer.no...@apple.com>
+
+        REGRESSION (r230163): Videos cannot be seen full screen in Complete Anatomy app
+        https://bugs.webkit.org/show_bug.cgi?id=187527
+        <rdar://problem/40511527>
+
+        Reviewed by Ryosuke Niwa.
+
+        Do not enable element fullscreen mode unless apps specifically opt-in. The Fullscreen API is
+        an experimental feature on iOS, but not on Mac, but we can't simply not return the ExperimentalFeature
+        object from the list of experimental features, as this keeps Safari from being able to apply a
+        NSUserDefault value for that feature. Instead, add a property to API::ExperimentalFeature and
+        _WKExperimentalFeature called "hidden", which signals to clients whether to display the feature
+        in their UI.
+
+        * Scripts/GeneratePreferences.rb:
+        * Scripts/PreferencesTemplates/WebPreferencesExperimentalFeatures.cpp.erb:
+        * Shared/WebPreferences.yaml:
+        * Shared/WebPreferencesDefaultValues.h:
+        * UIProcess/API/APIExperimentalFeature.cpp:
+        (API::ExperimentalFeature::create):
+        (API::ExperimentalFeature::ExperimentalFeature):
+        * UIProcess/API/APIExperimentalFeature.h:
+        * UIProcess/API/Cocoa/_WKExperimentalFeature.h:
+        * UIProcess/API/Cocoa/_WKExperimentalFeature.mm:
+        (-[_WKExperimentalFeature isHidden]):
+
 2018-07-12  Alexey Proskuryakov  <a...@apple.com>
 
         [Mac] Run Unlock Keychain more reliably

Modified: trunk/Source/WebKit/Scripts/GeneratePreferences.rb (233770 => 233771)


--- trunk/Source/WebKit/Scripts/GeneratePreferences.rb	2018-07-12 17:00:58 UTC (rev 233770)
+++ trunk/Source/WebKit/Scripts/GeneratePreferences.rb	2018-07-12 17:03:41 UTC (rev 233771)
@@ -70,7 +70,7 @@
   attr_accessor :category
   attr_accessor :webcoreBinding
   attr_accessor :condition
-  attr_accessor :visibleCondition
+  attr_accessor :hidden
 
   def initialize(name, opts)
     @name = name
@@ -83,7 +83,7 @@
     @webcoreBinding = opts["webcoreBinding"]
     @webcoreName = opts["webcoreName"]
     @condition = opts["condition"]
-    @visibleCondition = opts["visibleCondition"]
+    @hidden = opts["hidden"] || false
   end
 
   def nameLower

Modified: trunk/Source/WebKit/Scripts/PreferencesTemplates/WebPreferencesExperimentalFeatures.cpp.erb (233770 => 233771)


--- trunk/Source/WebKit/Scripts/PreferencesTemplates/WebPreferencesExperimentalFeatures.cpp.erb	2018-07-12 17:00:58 UTC (rev 233770)
+++ trunk/Source/WebKit/Scripts/PreferencesTemplates/WebPreferencesExperimentalFeatures.cpp.erb	2018-07-12 17:03:41 UTC (rev 233771)
@@ -53,13 +53,7 @@
 <%- if @pref.condition -%>
 #if <%= @pref.condition %>
 <%- end -%>
-<%- if @pref.visibleCondition -%>
-#if <%= @pref.visibleCondition %>
-<%- end -%>
-        API::ExperimentalFeature::create(<%= @pref.humanReadableName %>, "<%= @pref.name %>", <%= @pref.humanReadableDescription %>, <%= @pref.defaultValue %>),
-<%- if @pref.visibleCondition -%>
-#endif
-<%- end -%>
+        API::ExperimentalFeature::create(<%= @pref.humanReadableName %>, "<%= @pref.name %>", <%= @pref.humanReadableDescription %>, <%= @pref.defaultValue %>, <%= @pref.hidden %>),
 <%- if @pref.condition -%>
 #endif
 <%- end -%>

Modified: trunk/Source/WebKit/Shared/WebPreferences.yaml (233770 => 233771)


--- trunk/Source/WebKit/Shared/WebPreferences.yaml	2018-07-12 17:00:58 UTC (rev 233770)
+++ trunk/Source/WebKit/Shared/WebPreferences.yaml	2018-07-12 17:03:41 UTC (rev 233771)
@@ -1268,9 +1268,9 @@
 
 FullScreenEnabled:
   type: bool
-  defaultValue: DEFAULT_ENABLE_FULLSCREEN_API
+  defaultValue: false
   condition: ENABLE(FULLSCREEN_API)
-  visibleCondition: PLATFORM(IOS)
+  hidden: EXPERIMENTAL_FULLSCREEN_API_HIDDEN
   humanReadableName: "Fullscreen API"
   humanReadableDescription: "Fullscreen API"
   category: experimental

Modified: trunk/Source/WebKit/Shared/WebPreferencesDefaultValues.h (233770 => 233771)


--- trunk/Source/WebKit/Shared/WebPreferencesDefaultValues.h	2018-07-12 17:00:58 UTC (rev 233770)
+++ trunk/Source/WebKit/Shared/WebPreferencesDefaultValues.h	2018-07-12 17:03:41 UTC (rev 233771)
@@ -75,7 +75,7 @@
 #define DEFAULT_TEMPORARY_TILE_COHORT_RETENTION_ENABLED false
 #define DEFAULT_REQUIRES_USER_GESTURE_FOR_AUDIO_PLAYBACK true
 #define DEFAULT_INTERACTIVE_MEDIA_CAPTURE_STREAM_REPROMPT_INTERVAL_IN_MINUTES 1
-#define DEFAULT_ENABLE_FULLSCREEN_API false
+#define EXPERIMENTAL_FULLSCREEN_API_HIDDEN false
 #else
 #define DEFAULT_ALLOWS_PICTURE_IN_PICTURE_MEDIA_PLAYBACK false
 #define DEFAULT_BACKSPACE_KEY_NAVIGATION_ENABLED true
@@ -94,7 +94,7 @@
 #define DEFAULT_TEMPORARY_TILE_COHORT_RETENTION_ENABLED true
 #define DEFAULT_REQUIRES_USER_GESTURE_FOR_AUDIO_PLAYBACK false
 #define DEFAULT_INTERACTIVE_MEDIA_CAPTURE_STREAM_REPROMPT_INTERVAL_IN_MINUTES 10
-#define DEFAULT_ENABLE_FULLSCREEN_API true
+#define EXPERIMENTAL_FULLSCREEN_API_HIDDEN true
 #endif
 
 #if PLATFORM(COCOA)

Modified: trunk/Source/WebKit/UIProcess/API/APIExperimentalFeature.cpp (233770 => 233771)


--- trunk/Source/WebKit/UIProcess/API/APIExperimentalFeature.cpp	2018-07-12 17:00:58 UTC (rev 233770)
+++ trunk/Source/WebKit/UIProcess/API/APIExperimentalFeature.cpp	2018-07-12 17:03:41 UTC (rev 233771)
@@ -28,16 +28,17 @@
 
 namespace API {
 
-Ref<ExperimentalFeature> ExperimentalFeature::create(const WTF::String& name, const WTF::String& key, const WTF::String& details, bool defaultValue)
+Ref<ExperimentalFeature> ExperimentalFeature::create(const WTF::String& name, const WTF::String& key, const WTF::String& details, bool defaultValue, bool hidden)
 {
-    return adoptRef(*new ExperimentalFeature(name, key, details, defaultValue));
+    return adoptRef(*new ExperimentalFeature(name, key, details, defaultValue, hidden));
 }
 
-ExperimentalFeature::ExperimentalFeature(const WTF::String& name, const WTF::String& key, const WTF::String& details, bool defaultValue)
+ExperimentalFeature::ExperimentalFeature(const WTF::String& name, const WTF::String& key, const WTF::String& details, bool defaultValue, bool hidden)
     : m_name(name)
     , m_key(key)
     , m_details(details)
     , m_defaultValue(defaultValue)
+    , m_hidden(hidden)
 {
 }
 

Modified: trunk/Source/WebKit/UIProcess/API/APIExperimentalFeature.h (233770 => 233771)


--- trunk/Source/WebKit/UIProcess/API/APIExperimentalFeature.h	2018-07-12 17:00:58 UTC (rev 233770)
+++ trunk/Source/WebKit/UIProcess/API/APIExperimentalFeature.h	2018-07-12 17:03:41 UTC (rev 233771)
@@ -33,7 +33,7 @@
 
 class ExperimentalFeature final : public ObjectImpl<Object::Type::ExperimentalFeature> {
 public:
-    static Ref<ExperimentalFeature> create(const WTF::String& name, const WTF::String& key, const WTF::String& details, bool defaultValue);
+    static Ref<ExperimentalFeature> create(const WTF::String& name, const WTF::String& key, const WTF::String& details, bool defaultValue, bool hidden);
     virtual ~ExperimentalFeature();
 
     WTF::String name() const { return m_name; }
@@ -40,14 +40,16 @@
     WTF::String key() const { return m_key; }
     WTF::String details() const { return m_details; }
     bool defaultValue() const { return m_defaultValue; }
+    bool isHidden() const { return m_hidden; }
 
 private:
-    explicit ExperimentalFeature(const WTF::String& name, const WTF::String& key, const WTF::String& details, bool defaultValue);
+    explicit ExperimentalFeature(const WTF::String& name, const WTF::String& key, const WTF::String& details, bool defaultValue, bool hidden);
 
     WTF::String m_name;
     WTF::String m_key;
     WTF::String m_details;
     bool m_defaultValue;
+    bool m_hidden;
 };
 
 }

Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/_WKExperimentalFeature.h (233770 => 233771)


--- trunk/Source/WebKit/UIProcess/API/Cocoa/_WKExperimentalFeature.h	2018-07-12 17:00:58 UTC (rev 233770)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/_WKExperimentalFeature.h	2018-07-12 17:03:41 UTC (rev 233771)
@@ -36,6 +36,7 @@
 @property (nonatomic, readonly, copy) NSString *name;
 @property (nonatomic, readonly, copy) NSString *details;
 @property (nonatomic, readonly) BOOL defaultValue;
+@property (nonatomic, readonly, getter=isHidden) BOOL hidden;
 
 @end
 

Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/_WKExperimentalFeature.mm (233770 => 233771)


--- trunk/Source/WebKit/UIProcess/API/Cocoa/_WKExperimentalFeature.mm	2018-07-12 17:00:58 UTC (rev 233770)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/_WKExperimentalFeature.mm	2018-07-12 17:03:41 UTC (rev 233771)
@@ -62,6 +62,11 @@
     return _experimentalFeature->defaultValue();
 }
 
+- (BOOL)isHidden
+{
+    return _experimentalFeature->isHidden();
+}
+
 #pragma mark WKObject protocol implementation
 
 - (API::Object&)_apiObject
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to