Diff
Modified: trunk/Source/WebCore/ChangeLog (177109 => 177110)
--- trunk/Source/WebCore/ChangeLog 2014-12-10 23:35:26 UTC (rev 177109)
+++ trunk/Source/WebCore/ChangeLog 2014-12-10 23:42:51 UTC (rev 177110)
@@ -1,3 +1,21 @@
+2014-12-10 Martin Hock <mh...@apple.com>
+
+ [iOS] Add setting to ignore viewport scaling constraints
+ https://bugs.webkit.org/show_bug.cgi?id=139466
+ <rdar://problem/19200328>
+
+ Reviewed by Benjamin Poulain.
+
+ * WebCore.exp.in:
+ * page/Settings.in: Add setting to ignore viewport scaling constraints.
+ * page/ViewportConfiguration.cpp: Ignore viewport scaling constraints based on preference.
+ (WebCore::ViewportConfiguration::initialScale):
+ (WebCore::ViewportConfiguration::minimumScale):
+ (WebCore::ViewportConfiguration::allowsUserScaling):
+ * page/ViewportConfiguration.h:
+ (WebCore::ViewportConfiguration::setIgnoreScalingConstraints):
+ (WebCore::ViewportConfiguration::allowsUserScaling): Moved to cpp.
+
2014-12-10 Andreas Kling <akl...@apple.com>
Speculative fix for assertion "frame().view() == this"
Modified: trunk/Source/WebCore/WebCore.exp.in (177109 => 177110)
--- trunk/Source/WebCore/WebCore.exp.in 2014-12-10 23:35:26 UTC (rev 177109)
+++ trunk/Source/WebCore/WebCore.exp.in 2014-12-10 23:42:51 UTC (rev 177110)
@@ -1908,6 +1908,7 @@
__ZNK7WebCore21ViewportConfiguration10layoutSizeEv
__ZNK7WebCore21ViewportConfiguration12initialScaleEv
__ZNK7WebCore21ViewportConfiguration12minimumScaleEv
+__ZNK7WebCore21ViewportConfiguration17allowsUserScalingEv
__ZNK7WebCore22WheelEventDeltaTracker30dominantScrollGestureDirectionEv
__ZNK7WebCore23ApplicationCacheStorage11maximumSizeEv
__ZNK7WebCore23AuthenticationChallenge20authenticationClientEv
Modified: trunk/Source/WebCore/page/Settings.in (177109 => 177110)
--- trunk/Source/WebCore/page/Settings.in 2014-12-10 23:35:26 UTC (rev 177109)
+++ trunk/Source/WebCore/page/Settings.in 2014-12-10 23:42:51 UTC (rev 177110)
@@ -236,3 +236,5 @@
longMousePressEnabled initial=false
serviceControlsEnabled initial=false, conditional=SERVICE_CONTROLS
+
+ignoreViewportScalingConstraints initial=false
\ No newline at end of file
Modified: trunk/Source/WebCore/page/ViewportConfiguration.cpp (177109 => 177110)
--- trunk/Source/WebCore/page/ViewportConfiguration.cpp 2014-12-10 23:35:26 UTC (rev 177109)
+++ trunk/Source/WebCore/page/ViewportConfiguration.cpp 2014-12-10 23:42:51 UTC (rev 177110)
@@ -46,6 +46,7 @@
ViewportConfiguration::ViewportConfiguration()
: m_minimumLayoutSize(1024, 768)
+ , m_ignoreScalingConstraints(false)
{
// Setup a reasonable default configuration to avoid computing infinite scale/sizes.
// Those are the original iPhone configuration.
@@ -102,7 +103,7 @@
// If the document has specified its own initial scale, use it regardless.
// This is guaranteed to be sanity checked already, so no need for MIN/MAX.
- if (m_configuration.initialScaleIsSet)
+ if (m_configuration.initialScaleIsSet && !m_ignoreScalingConstraints)
return m_configuration.initialScale;
// If not, it is up to us to determine the initial scale.
@@ -117,13 +118,13 @@
double height = m_contentSize.height() > 0 ? m_contentSize.height() : layoutHeight();
if (height > 0 && height * initialScale < minimumLayoutSize.height())
initialScale = minimumLayoutSize.height() / height;
- return std::min(std::max(initialScale, m_configuration.minimumScale), m_configuration.maximumScale);
+ return std::min(std::max(initialScale, m_ignoreScalingConstraints ? m_defaultConfiguration.minimumScale : m_configuration.minimumScale), m_configuration.maximumScale);
}
double ViewportConfiguration::minimumScale() const
{
// If we scale to fit, then this is our minimum scale as well.
- if (!m_configuration.initialScaleIsSet)
+ if (!m_configuration.initialScaleIsSet || m_ignoreScalingConstraints)
return initialScale();
// If not, we still need to sanity check our value.
@@ -143,6 +144,11 @@
return minimumScale;
}
+bool ViewportConfiguration::allowsUserScaling() const
+{
+ return m_ignoreScalingConstraints || m_configuration.allowsUserScaling;
+}
+
ViewportConfiguration::Parameters ViewportConfiguration::webpageParameters()
{
Parameters parameters;
Modified: trunk/Source/WebCore/page/ViewportConfiguration.h (177109 => 177110)
--- trunk/Source/WebCore/page/ViewportConfiguration.h 2014-12-10 23:35:26 UTC (rev 177109)
+++ trunk/Source/WebCore/page/ViewportConfiguration.h 2014-12-10 23:42:51 UTC (rev 177110)
@@ -77,11 +77,13 @@
const ViewportArguments& viewportArguments() const { return m_viewportArguments; }
WEBCORE_EXPORT void setViewportArguments(const ViewportArguments&);
+ void setIgnoreScalingConstraints(bool ignoreScalingConstraints) {m_ignoreScalingConstraints = ignoreScalingConstraints; }
+
WEBCORE_EXPORT IntSize layoutSize() const;
WEBCORE_EXPORT double initialScale() const;
WEBCORE_EXPORT double minimumScale() const;
double maximumScale() const { return m_configuration.maximumScale; }
- bool allowsUserScaling() const { return m_configuration.allowsUserScaling; }
+ WEBCORE_EXPORT bool allowsUserScaling() const;
WEBCORE_EXPORT static Parameters webpageParameters();
WEBCORE_EXPORT static Parameters textDocumentParameters();
@@ -105,6 +107,8 @@
IntSize m_contentSize;
FloatSize m_minimumLayoutSize;
ViewportArguments m_viewportArguments;
+
+ bool m_ignoreScalingConstraints;
};
} // namespace WebCore
Modified: trunk/Source/WebKit2/ChangeLog (177109 => 177110)
--- trunk/Source/WebKit2/ChangeLog 2014-12-10 23:35:26 UTC (rev 177109)
+++ trunk/Source/WebKit2/ChangeLog 2014-12-10 23:42:51 UTC (rev 177110)
@@ -1,3 +1,19 @@
+2014-12-10 Martin Hock <mh...@apple.com>
+
+ [iOS] Add setting to ignore viewport scaling constraints
+ https://bugs.webkit.org/show_bug.cgi?id=139466
+ <rdar://problem/19200328>
+
+ Reviewed by Benjamin Poulain.
+
+ * Shared/WebPreferencesDefinitions.h: Add ignoreViewportScalingConstraints preference.
+ * UIProcess/API/C/WKPreferences.cpp:
+ (WKPreferencesSetIgnoreViewportScalingConstraints):
+ (WKPreferencesGetIgnoreViewportScalingConstraints):
+ * UIProcess/API/C/WKPreferencesRef.h:
+ * WebProcess/WebPage/WebPage.cpp:
+ (WebKit::WebPage::updatePreferences):
+
2014-12-10 Timothy Horton <timothy_hor...@apple.com>
Fix the build.
Modified: trunk/Source/WebKit2/Shared/WebPreferencesDefinitions.h (177109 => 177110)
--- trunk/Source/WebKit2/Shared/WebPreferencesDefinitions.h 2014-12-10 23:35:26 UTC (rev 177109)
+++ trunk/Source/WebKit2/Shared/WebPreferencesDefinitions.h 2014-12-10 23:42:51 UTC (rev 177110)
@@ -236,6 +236,7 @@
macro(TiledScrollingIndicatorVisible, tiledScrollingIndicatorVisible, Bool, bool, false) \
macro(SimpleLineLayoutDebugBordersEnabled, simpleLineLayoutDebugBordersEnabled, Bool, bool, false) \
macro(LogsPageMessagesToSystemConsoleEnabled, logsPageMessagesToSystemConsoleEnabled, Bool, bool, false) \
+ macro(IgnoreViewportScalingConstraints, ignoreViewportScalingConstraints, Bool, bool, false) \
\
#define FOR_EACH_WEBKIT_DEBUG_UINT32_PREFERENCE(macro) \
Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp (177109 => 177110)
--- trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp 2014-12-10 23:35:26 UTC (rev 177109)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp 2014-12-10 23:42:51 UTC (rev 177110)
@@ -1326,3 +1326,12 @@
return toImpl(preferencesRef)->visibleDebugOverlayRegions();
}
+void WKPreferencesSetIgnoreViewportScalingConstraints(WKPreferencesRef preferencesRef, bool enabled)
+{
+ toImpl(preferencesRef)->setIgnoreViewportScalingConstraints(enabled);
+}
+
+bool WKPreferencesGetIgnoreViewportScalingConstraints(WKPreferencesRef preferencesRef)
+{
+ return toImpl(preferencesRef)->ignoreViewportScalingConstraints();
+}
Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPreferencesRef.h (177109 => 177110)
--- trunk/Source/WebKit2/UIProcess/API/C/WKPreferencesRef.h 2014-12-10 23:35:26 UTC (rev 177109)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPreferencesRef.h 2014-12-10 23:42:51 UTC (rev 177110)
@@ -258,6 +258,10 @@
WK_EXPORT void WKPreferencesSetVisibleDebugOverlayRegions(WKPreferencesRef preferencesRef, WKDebugOverlayRegions enabled);
WK_EXPORT WKDebugOverlayRegions WKPreferencesGetVisibleDebugOverlayRegions(WKPreferencesRef preferencesRef);
+// Defaults to false.
+WK_EXPORT void WKPreferencesSetIgnoreViewportScalingConstraints(WKPreferencesRef preferencesRef, bool enabled);
+WK_EXPORT bool WKPreferencesGetIgnoreViewportScalingConstraints(WKPreferencesRef preferencesRef);
+
#ifdef __cplusplus
}
#endif
Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (177109 => 177110)
--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp 2014-12-10 23:35:26 UTC (rev 177109)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp 2014-12-10 23:42:51 UTC (rev 177110)
@@ -2885,6 +2885,10 @@
if (m_drawingArea)
m_drawingArea->updatePreferences(store);
+
+#if PLATFORM(IOS)
+ m_viewportConfiguration.setIgnoreScalingConstraints(store.getBoolValueForKey(WebPreferencesKey::ignoreViewportScalingConstraintsKey()));
+#endif
}
#if PLATFORM(COCOA)