Diff
Modified: trunk/Source/WebCore/ChangeLog (229510 => 229511)
--- trunk/Source/WebCore/ChangeLog 2018-03-10 23:26:46 UTC (rev 229510)
+++ trunk/Source/WebCore/ChangeLog 2018-03-11 01:38:06 UTC (rev 229511)
@@ -1,3 +1,26 @@
+2018-03-10 Megan Gardner <[email protected]>
+
+ Media query for default appearance
+ https://bugs.webkit.org/show_bug.cgi?id=183539
+ <rdar://problem/38326388>
+
+ Reviewed by Tim Horton.
+
+ Not currently testable, will add tests in a later patch.
+
+ Write a media query to evaluate appearance.
+
+ * css/CSSValueKeywords.in:
+ * css/MediaFeatureNames.h:
+ * css/MediaQueryEvaluator.cpp:
+ (WebCore::defaultAppearanceEvaluate):
+ * css/MediaQueryExpression.cpp:
+ (WebCore::featureWithValidIdent):
+ (WebCore::isFeatureValidWithoutValue):
+ * page/Page.h:
+ (WebCore::Page::defaultAppearance const):
+ (WebCore::Page::setDefaultAppearance):
+
2018-03-10 Daniel Bates <[email protected]>
InlineTextBox should own shadow data
Modified: trunk/Source/WebCore/css/CSSValueKeywords.in (229510 => 229511)
--- trunk/Source/WebCore/css/CSSValueKeywords.in 2018-03-10 23:26:46 UTC (rev 229510)
+++ trunk/Source/WebCore/css/CSSValueKeywords.in 2018-03-11 01:38:06 UTC (rev 229511)
@@ -1333,6 +1333,10 @@
sRGB
display-p3
+// prefers-default-appearance
+prefers
+// no-preference
+
// prefers-reduced-motion
reduce
no-preference
Modified: trunk/Source/WebCore/css/MediaFeatureNames.h (229510 => 229511)
--- trunk/Source/WebCore/css/MediaFeatureNames.h 2018-03-10 23:26:46 UTC (rev 229510)
+++ trunk/Source/WebCore/css/MediaFeatureNames.h 2018-03-11 01:38:06 UTC (rev 229511)
@@ -29,6 +29,13 @@
#define CSS_MEDIAQUERY_DISPLAY_MODE(macro)
#endif
+#if USE(APPLE_INTERNAL_SDK)
+#import <WebKitAdditions/MediaFeatureNamesAdditions.h>
+#else
+#define DEFAULT_APPEARANCE_MEDIA_QUERY "prefers-default-appearance"
+#endif
+
+
#define CSS_MEDIAQUERY_NAMES_FOR_EACH_MEDIAFEATURE(macro) \
macro(animation, "-webkit-animation") \
macro(anyHover, "any-hover") \
@@ -70,6 +77,7 @@
macro(monochrome, "monochrome") \
macro(orientation, "orientation") \
macro(pointer, "pointer") \
+ macro(defaultAppearance, DEFAULT_APPEARANCE_MEDIA_QUERY) \
macro(prefersReducedMotion, "prefers-reduced-motion") \
macro(resolution, "resolution") \
macro(transform2d, "-webkit-transform-2d") \
Modified: trunk/Source/WebCore/css/MediaQueryEvaluator.cpp (229510 => 229511)
--- trunk/Source/WebCore/css/MediaQueryEvaluator.cpp 2018-03-10 23:26:46 UTC (rev 229510)
+++ trunk/Source/WebCore/css/MediaQueryEvaluator.cpp 2018-03-11 01:38:06 UTC (rev 229511)
@@ -710,6 +710,19 @@
{
return pointerEvaluate(value, cssToLengthConversionData, frame, prefix);
}
+
+static bool defaultAppearanceEvaluate(CSSValue* value, const CSSToLengthConversionData&, Frame& frame, MediaFeaturePrefix)
+{
+ bool defaultAppearance = false;
+
+ if (!frame.page()->defaultAppearance())
+ defaultAppearance = true;
+
+ if (!value)
+ return defaultAppearance;
+
+ return downcast<CSSPrimitiveValue>(*value).valueID() == (defaultAppearance ? CSSValuePrefers : CSSValueNoPreference);
+}
static bool prefersReducedMotionEvaluate(CSSValue* value, const CSSToLengthConversionData&, Frame& frame, MediaFeaturePrefix)
{
Modified: trunk/Source/WebCore/css/MediaQueryExpression.cpp (229510 => 229511)
--- trunk/Source/WebCore/css/MediaQueryExpression.cpp 2018-03-10 23:26:46 UTC (rev 229510)
+++ trunk/Source/WebCore/css/MediaQueryExpression.cpp 2018-03-11 01:38:06 UTC (rev 229511)
@@ -52,7 +52,8 @@
#if ENABLE(APPLICATION_MANIFEST)
|| mediaFeature == MediaFeatureNames::displayMode
#endif
- || mediaFeature == MediaFeatureNames::prefersReducedMotion;
+ || mediaFeature == MediaFeatureNames::prefersReducedMotion
+ || mediaFeature == MediaFeatureNames::defaultAppearance;
}
static inline bool featureWithValidDensity(const String& mediaFeature, const CSSPrimitiveValue& value)
@@ -160,6 +161,7 @@
|| mediaFeature == MediaFeatureNames::invertedColors
|| mediaFeature == MediaFeatureNames::pointer
|| mediaFeature == MediaFeatureNames::prefersReducedMotion
+ || mediaFeature == MediaFeatureNames::defaultAppearance
|| mediaFeature == MediaFeatureNames::devicePixelRatio
|| mediaFeature == MediaFeatureNames::resolution
#if ENABLE(APPLICATION_MANIFEST)
Modified: trunk/Source/WebCore/page/Page.h (229510 => 229511)
--- trunk/Source/WebCore/page/Page.h 2018-03-10 23:26:46 UTC (rev 229510)
+++ trunk/Source/WebCore/page/Page.h 2018-03-11 01:38:06 UTC (rev 229511)
@@ -327,6 +327,9 @@
bool useSystemAppearance() const { return m_useSystemAppearance; }
void setUseSystemAppearance(bool a) { m_useSystemAppearance = a; }
+
+ bool defaultAppearance() const { return m_defaultAppearance; }
+ void setDefaultAppearance(bool a) { m_defaultAppearance = a; }
#if ENABLE(TEXT_AUTOSIZING)
float textAutosizingWidth() const { return m_textAutosizingWidth; }
@@ -707,6 +710,7 @@
#endif
bool m_useSystemAppearance { false };
+ bool m_defaultAppearance { true };
#if ENABLE(TEXT_AUTOSIZING)
float m_textAutosizingWidth { 0 };
Modified: trunk/Source/WebKit/ChangeLog (229510 => 229511)
--- trunk/Source/WebKit/ChangeLog 2018-03-10 23:26:46 UTC (rev 229510)
+++ trunk/Source/WebKit/ChangeLog 2018-03-11 01:38:06 UTC (rev 229511)
@@ -1,3 +1,31 @@
+2018-03-10 Megan Gardner <[email protected]>
+
+ Media query for default appearance
+ https://bugs.webkit.org/show_bug.cgi?id=183539
+ <rdar://problem/38326388>
+
+ Reviewed by Tim Horton.
+
+ Write a media query to evaluate appearance.
+
+ * Shared/WebPageCreationParameters.cpp:
+ (WebKit::WebPageCreationParameters::encode const):
+ (WebKit::WebPageCreationParameters::decode):
+ * Shared/WebPageCreationParameters.h:
+ * UIProcess/API/Cocoa/WKWebView.mm:
+ (-[WKWebView _initializeWithConfiguration:]):
+ (-[WKWebView _setUseSystemAppearance:]):
+ * UIProcess/WebPageProxy.cpp:
+ (WebKit::WebPageProxy::creationParameters):
+ (WebKit::WebPageProxy::setDefaultAppearance):
+ * UIProcess/WebPageProxy.h:
+ (WebKit::WebPageProxy::defaultAppearance const):
+ * WebProcess/WebPage/WebPage.cpp:
+ (WebKit::m_credentialsMessenger):
+ (WebKit::WebPage::setDefaultAppearance):
+ * WebProcess/WebPage/WebPage.h:
+ * WebProcess/WebPage/WebPage.messages.in:
+
2018-03-09 Jer Noble <[email protected]>
Unconditionalize more methods in VideoFullscreenInterface (and related classes)
Modified: trunk/Source/WebKit/Shared/WebPageCreationParameters.cpp (229510 => 229511)
--- trunk/Source/WebKit/Shared/WebPageCreationParameters.cpp 2018-03-10 23:26:46 UTC (rev 229510)
+++ trunk/Source/WebKit/Shared/WebPageCreationParameters.cpp 2018-03-11 01:38:06 UTC (rev 229511)
@@ -82,6 +82,7 @@
#if PLATFORM(MAC)
encoder << colorSpace;
encoder << useSystemAppearance;
+ encoder << defaultAppearance;
#endif
#if PLATFORM(IOS)
encoder << screenSize;
@@ -235,6 +236,8 @@
return std::nullopt;
if (!decoder.decode(parameters.useSystemAppearance))
return std::nullopt;
+ if (!decoder.decode(parameters.defaultAppearance))
+ return std::nullopt;
#endif
#if PLATFORM(IOS)
Modified: trunk/Source/WebKit/Shared/WebPageCreationParameters.h (229510 => 229511)
--- trunk/Source/WebKit/Shared/WebPageCreationParameters.h 2018-03-10 23:26:46 UTC (rev 229510)
+++ trunk/Source/WebKit/Shared/WebPageCreationParameters.h 2018-03-11 01:38:06 UTC (rev 229511)
@@ -139,6 +139,7 @@
#if PLATFORM(MAC)
ColorSpaceData colorSpace;
bool useSystemAppearance;
+ bool defaultAppearance;
#endif
#if PLATFORM(IOS)
WebCore::FloatSize screenSize;
Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm (229510 => 229511)
--- trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm 2018-03-10 23:26:46 UTC (rev 229510)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm 2018-03-11 01:38:06 UTC (rev 229511)
@@ -471,8 +471,15 @@
}
return static_cast<uint32_t>(WebCore::UserInterfaceLayoutDirection::LTR);
}
+
+#if USE(APPLE_INTERNAL_SDK)
+#import <WebKitAdditions/WebViewAndWKWebViewAdditions.mm>
+#else
+- (bool)_defaultAppearance { return true; }
#endif
+#endif // PLATFORM(MAC)
+
static void validate(WKWebViewConfiguration *configuration)
{
if (!configuration.processPool)
@@ -677,6 +684,8 @@
_impl->setAutomaticallyAdjustsContentInsets(true);
_impl->setRequiresUserActionForEditingControlsManager([configuration _requiresUserActionForEditingControlsManager]);
+
+ _page->setDefaultAppearance([self _defaultAppearance]);
#endif
_page->setBackgroundExtendsBeyondPage(true);
@@ -6155,6 +6164,7 @@
- (void)_setUseSystemAppearance:(BOOL)useSystemAppearance
{
_page->setUseSystemAppearance(useSystemAppearance);
+ _page->setDefaultAppearance([self _defaultAppearance]);
}
- (void)_setHeaderBannerHeight:(int)height
Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.cpp (229510 => 229511)
--- trunk/Source/WebKit/UIProcess/WebPageProxy.cpp 2018-03-10 23:26:46 UTC (rev 229510)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.cpp 2018-03-11 01:38:06 UTC (rev 229511)
@@ -5855,6 +5855,7 @@
#if PLATFORM(MAC)
parameters.colorSpace = m_pageClient.colorSpace();
parameters.useSystemAppearance = m_useSystemAppearance;
+ parameters.defaultAppearance = m_defaultAppearance;
#endif
#if PLATFORM(IOS)
parameters.screenSize = screenSize();
@@ -6962,6 +6963,18 @@
m_useSystemAppearance = useSystemAppearance;
m_process->send(Messages::WebPage::SetUseSystemAppearance(useSystemAppearance), m_pageID);
}
+
+void WebPageProxy::setDefaultAppearance(bool defaultAppearance)
+{
+ if (!isValid())
+ return;
+
+ if (defaultAppearance == m_defaultAppearance)
+ return;
+
+ m_defaultAppearance = defaultAppearance;
+ m_process->send(Messages::WebPage::SetDefaultAppearance(defaultAppearance), m_pageID);
+}
void WebPageProxy::setHeaderBannerHeightForTesting(int height)
{
Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.h (229510 => 229511)
--- trunk/Source/WebKit/UIProcess/WebPageProxy.h 2018-03-10 23:26:46 UTC (rev 229510)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.h 2018-03-11 01:38:06 UTC (rev 229511)
@@ -805,6 +805,8 @@
#if PLATFORM(MAC)
void setUseSystemAppearance(bool);
bool useSystemAppearance() const { return m_useSystemAppearance; }
+ void setDefaultAppearance(bool);
+ bool defaultAppearance() const { return m_defaultAppearance; }
#endif
#if PLATFORM(COCOA)
@@ -1795,6 +1797,7 @@
#if PLATFORM(MAC)
bool m_useSystemAppearance { false };
+ bool m_defaultAppearance { true };
#endif
#if ENABLE(APPLE_PAY)
Modified: trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp (229510 => 229511)
--- trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp 2018-03-10 23:26:46 UTC (rev 229510)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp 2018-03-11 01:38:06 UTC (rev 229511)
@@ -492,7 +492,10 @@
setPageLength(parameters.pageLength);
setGapBetweenPages(parameters.gapBetweenPages);
setPaginationLineGridEnabled(parameters.paginationLineGridEnabled);
-
+#if PLATFORM(MAC)
+ setUseSystemAppearance(parameters.useSystemAppearance);
+ setDefaultAppearance(parameters.defaultAppearance);
+#endif
// If the page is created off-screen, its visibilityState should be prerender.
m_page->setActivityState(m_activityState);
if (!isVisible())
@@ -4123,6 +4126,11 @@
{
corePage()->setUseSystemAppearance(useSystemAppearance);
}
+
+void WebPage::setDefaultAppearance(bool defaultAppearance)
+{
+ corePage()->setDefaultAppearance(defaultAppearance);
+}
#endif
void WebPage::beginPrinting(uint64_t frameID, const PrintInfo& printInfo)
Modified: trunk/Source/WebKit/WebProcess/WebPage/WebPage.h (229510 => 229511)
--- trunk/Source/WebKit/WebProcess/WebPage/WebPage.h 2018-03-10 23:26:46 UTC (rev 229510)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebPage.h 2018-03-11 01:38:06 UTC (rev 229511)
@@ -490,6 +490,7 @@
void setBottomOverhangImage(WebImage*);
void setUseSystemAppearance(bool);
+ void setDefaultAppearance(bool);
#endif
bool windowIsFocused() const;
Modified: trunk/Source/WebKit/WebProcess/WebPage/WebPage.messages.in (229510 => 229511)
--- trunk/Source/WebKit/WebProcess/WebPage/WebPage.messages.in 2018-03-10 23:26:46 UTC (rev 229510)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebPage.messages.in 2018-03-11 01:38:06 UTC (rev 229511)
@@ -443,6 +443,7 @@
HandleAcceptedCandidate(struct WebCore::TextCheckingResult acceptedCandidate)
SetUseSystemAppearance(bool useSystemAppearance);
+ SetDefaultAppearance(bool defaultAppearance);
SetHeaderBannerHeightForTesting(int height);
SetFooterBannerHeightForTesting(int height);
Modified: trunk/Source/WebKitLegacy/mac/ChangeLog (229510 => 229511)
--- trunk/Source/WebKitLegacy/mac/ChangeLog 2018-03-10 23:26:46 UTC (rev 229510)
+++ trunk/Source/WebKitLegacy/mac/ChangeLog 2018-03-11 01:38:06 UTC (rev 229511)
@@ -1,3 +1,17 @@
+2018-03-10 Megan Gardner <[email protected]>
+
+ Media query for default appearance
+ https://bugs.webkit.org/show_bug.cgi?id=183539
+ <rdar://problem/38326388>
+
+ Reviewed by Tim Horton.
+
+ Write a media query to evaluate appearance.
+
+ * WebView/WebView.mm:
+ (-[WebView _commonInitializationWithFrameName:groupName:]):
+ (-[WebView _setUseSystemAppearance:]):
+
2018-03-09 Andy Estes <[email protected]>
[Mac] WebKit fails to receive file promises when the embedding app is sandboxed
Modified: trunk/Source/WebKitLegacy/mac/WebView/WebView.mm (229510 => 229511)
--- trunk/Source/WebKitLegacy/mac/WebView/WebView.mm 2018-03-10 23:26:46 UTC (rev 229510)
+++ trunk/Source/WebKitLegacy/mac/WebView/WebView.mm 2018-03-11 01:38:06 UTC (rev 229511)
@@ -1574,6 +1574,7 @@
ResourceHandle::forceContentSniffing();
_private->page->setDeviceScaleFactor([self _deviceScaleFactor]);
+ _private->page->setDefaultAppearance([self _defaultAppearance]);
#endif
_private->page->settings().setContentDispositionAttachmentSandboxEnabled(true);
@@ -5191,10 +5192,18 @@
return insets;
}
+#if USE(APPLE_INTERNAL_SDK)
+#import <WebKitAdditions/WebViewAndWKWebViewAdditions.mm>
+#else
+- (bool)_defaultAppearance { return true; }
+#endif
+
- (void)_setUseSystemAppearance:(BOOL)useSystemAppearance
{
- if (auto page = _private->page)
+ if (auto page = _private->page) {
page->setUseSystemAppearance(useSystemAppearance);
+ page->setDefaultAppearance([self _defaultAppearance]);
+ }
}
- (BOOL)_useSystemAppearance