Add an experimental feature flag for viewport "min-device-width"
https://bugs.webkit.org/show_bug.cgi?id=185050
<rdar://problem/39624038>
Reviewed by Tim Horton.
Source/WebCore:
Add MinDeviceWidthEnabled as a new runtime-enabled feature.
* dom/ViewportArguments.cpp:
(WebCore::setViewportFeature):
Gate the parsing of "min-device-width" on the runtime-enabled feature being flipped on.
* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::setMinDeviceWidthEnabled):
(WebCore::RuntimeEnabledFeatures::minDeviceWidthEnabled const):
Source/WebKit:
Add MinDeviceWidthEnabled as a new experimental feature, on by default in extra zoom mode and off elsewhere.
* Shared/WebPreferences.yaml:
* Shared/WebPreferencesDefaultValues.h:
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@231106 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
index 05ebb31..ea0f6c2 100644
--- a/Source/WebCore/ChangeLog
+++ b/Source/WebCore/ChangeLog
@@ -1,3 +1,22 @@
+2018-04-27 Wenson Hsieh <wenson_hsieh@apple.com>
+
+ Add an experimental feature flag for viewport "min-device-width"
+ https://bugs.webkit.org/show_bug.cgi?id=185050
+ <rdar://problem/39624038>
+
+ Reviewed by Tim Horton.
+
+ Add MinDeviceWidthEnabled as a new runtime-enabled feature.
+
+ * dom/ViewportArguments.cpp:
+ (WebCore::setViewportFeature):
+
+ Gate the parsing of "min-device-width" on the runtime-enabled feature being flipped on.
+
+ * page/RuntimeEnabledFeatures.h:
+ (WebCore::RuntimeEnabledFeatures::setMinDeviceWidthEnabled):
+ (WebCore::RuntimeEnabledFeatures::minDeviceWidthEnabled const):
+
2018-04-27 Simon Fraser <simon.fraser@apple.com>
Make color-filter transform gradient colors
diff --git a/Source/WebCore/dom/ViewportArguments.cpp b/Source/WebCore/dom/ViewportArguments.cpp
index 71a3c5d..a77b979 100644
--- a/Source/WebCore/dom/ViewportArguments.cpp
+++ b/Source/WebCore/dom/ViewportArguments.cpp
@@ -31,6 +31,7 @@
#include "Document.h"
#include "Frame.h"
#include "IntSize.h"
+#include "RuntimeEnabledFeatures.h"
#include "ScriptableDocumentParser.h"
#include "Settings.h"
#include <wtf/text/TextStream.h>
@@ -420,7 +421,7 @@
arguments.shrinkToFit = findBooleanValue(document, key, value);
else if (equalLettersIgnoringASCIICase(key, "viewport-fit") && document.settings().viewportFitEnabled())
arguments.viewportFit = parseViewportFitValue(document, key, value);
- else if (equalLettersIgnoringASCIICase(key, "min-device-width"))
+ else if (equalLettersIgnoringASCIICase(key, "min-device-width") && RuntimeEnabledFeatures::sharedFeatures().minDeviceWidthEnabled())
arguments.minDeviceWidth = numericPrefix(document, key, value);
else
reportViewportWarning(document, UnrecognizedViewportArgumentKeyError, key);
diff --git a/Source/WebCore/page/RuntimeEnabledFeatures.h b/Source/WebCore/page/RuntimeEnabledFeatures.h
index 35a3b8f..29c49d1 100644
--- a/Source/WebCore/page/RuntimeEnabledFeatures.h
+++ b/Source/WebCore/page/RuntimeEnabledFeatures.h
@@ -253,6 +253,9 @@
void setFromOriginResponseHeaderEnabled(bool isEnabled) { m_fromOriginResponseHeaderEnabled = isEnabled; }
bool fromOriginResponseHeaderEnabled() const { return m_fromOriginResponseHeaderEnabled; }
+ void setMinDeviceWidthEnabled(bool isEnabled) { m_minDeviceWidthEnabled = isEnabled; }
+ bool minDeviceWidthEnabled() const { return m_minDeviceWidthEnabled; }
+
WEBCORE_EXPORT static RuntimeEnabledFeatures& sharedFeatures();
private:
@@ -389,6 +392,8 @@
bool m_fromOriginResponseHeaderEnabled { false };
+ bool m_minDeviceWidthEnabled { false };
+
friend class WTF::NeverDestroyed<RuntimeEnabledFeatures>;
};
diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog
index 4948836..70f977f 100644
--- a/Source/WebKit/ChangeLog
+++ b/Source/WebKit/ChangeLog
@@ -1,3 +1,16 @@
+2018-04-27 Wenson Hsieh <wenson_hsieh@apple.com>
+
+ Add an experimental feature flag for viewport "min-device-width"
+ https://bugs.webkit.org/show_bug.cgi?id=185050
+ <rdar://problem/39624038>
+
+ Reviewed by Tim Horton.
+
+ Add MinDeviceWidthEnabled as a new experimental feature, on by default in extra zoom mode and off elsewhere.
+
+ * Shared/WebPreferences.yaml:
+ * Shared/WebPreferencesDefaultValues.h:
+
2018-04-27 Daniel Bates <dabates@apple.com>
UIDelegate::UIClient::didResignInputElementStrongPasswordAppearance() is applicable to both Mac and iOS
diff --git a/Source/WebKit/Shared/WebPreferences.yaml b/Source/WebKit/Shared/WebPreferences.yaml
index b5f62c7..f44c7d7 100644
--- a/Source/WebKit/Shared/WebPreferences.yaml
+++ b/Source/WebKit/Shared/WebPreferences.yaml
@@ -781,7 +781,7 @@
CustomPasteboardDataEnabled:
type: bool
defaultValue: defaultCustomPasteboardDataEnabled()
- humanReadableName: "Custom pateboard data"
+ humanReadableName: "Custom pasteboard data"
humanReadableDescription: "Enable custom clipboard types and better security model for clipboard API."
webcoreBinding: RuntimeEnabledFeatures
@@ -1248,3 +1248,11 @@
humanReadableDescription: "Support for the From-Origin Response Header"
category: experimental
webcoreBinding: RuntimeEnabledFeatures
+
+MinDeviceWidthEnabled:
+ type: bool
+ defaultValue: DEFAULT_MIN_DEVICE_WIDTH_ENABLED
+ humanReadableName: "Minimum device width"
+ humanReadableDescription: "Enable the min-device-width viewport parameter"
+ category: experimental
+ webcoreBinding: RuntimeEnabledFeatures
diff --git a/Source/WebKit/Shared/WebPreferencesDefaultValues.h b/Source/WebKit/Shared/WebPreferencesDefaultValues.h
index e75f3d4..194e026 100644
--- a/Source/WebKit/Shared/WebPreferencesDefaultValues.h
+++ b/Source/WebKit/Shared/WebPreferencesDefaultValues.h
@@ -177,6 +177,12 @@
#define DEFAULT_VISUAL_VIEWPORT_HEIGHT_EXPANSION_FACTOR 0
#endif
+#if ENABLE(EXTRA_ZOOM_MODE)
+#define DEFAULT_MIN_DEVICE_WIDTH_ENABLED 1
+#else
+#define DEFAULT_MIN_DEVICE_WIDTH_ENABLED 0
+#endif
+
// Cocoa ports must disable experimental features on release branches for now.
#if ENABLE(EXPERIMENTAL_FEATURES) || PLATFORM(COCOA)
#define DEFAULT_EXPERIMENTAL_FEATURES_ENABLED true