Diff
Modified: trunk/LayoutTests/ChangeLog (255456 => 255457)
--- trunk/LayoutTests/ChangeLog 2020-01-30 21:52:52 UTC (rev 255456)
+++ trunk/LayoutTests/ChangeLog 2020-01-30 22:13:23 UTC (rev 255457)
@@ -1,3 +1,15 @@
+2020-01-30 Per Arne Vollan <[email protected]>
+
+ [iOS] Issue mach sandbox extension to the frontboard and icon service when the attachment element is enabled
+ https://bugs.webkit.org/show_bug.cgi?id=205443
+
+ Reviewed by Brent Fulgham.
+
+ * fast/sandbox/ios/focus-ring-color-expected.txt: Added.
+ * fast/sandbox/ios/focus-ring-color.html: Added.
+ * fast/sandbox/ios/sandbox-mach-lookup-attachment-element-expected.txt: Added.
+ * fast/sandbox/ios/sandbox-mach-lookup-attachment-element.html: Added.
+
2020-01-30 Alexey Shvayka <[email protected]>
Incomplete braced quantifiers should be banned in Unicode patterns only
Added: trunk/LayoutTests/fast/sandbox/ios/focus-ring-color-expected.txt (0 => 255457)
--- trunk/LayoutTests/fast/sandbox/ios/focus-ring-color-expected.txt (rev 0)
+++ trunk/LayoutTests/fast/sandbox/ios/focus-ring-color-expected.txt 2020-01-30 22:13:23 UTC (rev 255457)
@@ -0,0 +1,7 @@
+Test that the focus ring color is as expected.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS internals.focusRingColor() is 'rgb(0, 122, 255)'
+
Added: trunk/LayoutTests/fast/sandbox/ios/focus-ring-color.html (0 => 255457)
--- trunk/LayoutTests/fast/sandbox/ios/focus-ring-color.html (rev 0)
+++ trunk/LayoutTests/fast/sandbox/ios/focus-ring-color.html 2020-01-30 22:13:23 UTC (rev 255457)
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script src=""
+<script>
+description('Test that the focus ring color is as expected.');
+
+if (window.internals) {
+ shouldBe("internals.focusRingColor()", "'rgb(0, 122, 255)'");
+}
+</script>
+</head>
+<body>
+</body>
Added: trunk/LayoutTests/fast/sandbox/ios/sandbox-mach-lookup-attachment-element-expected.txt (0 => 255457)
--- trunk/LayoutTests/fast/sandbox/ios/sandbox-mach-lookup-attachment-element-expected.txt (rev 0)
+++ trunk/LayoutTests/fast/sandbox/ios/sandbox-mach-lookup-attachment-element-expected.txt 2020-01-30 22:13:23 UTC (rev 255457)
@@ -0,0 +1,8 @@
+Test that the WebContent process has mach lookup access to frontboard and icon services when the attachment element is enabled
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS internals.hasSandboxMachLookupAccessToGlobalName('com.apple.WebKit.WebContent', 'com.apple.frontboard.systemappservices') is true
+PASS internals.hasSandboxMachLookupAccessToGlobalName('com.apple.WebKit.WebContent', 'com.apple.iconservices') is true
+
Added: trunk/LayoutTests/fast/sandbox/ios/sandbox-mach-lookup-attachment-element.html (0 => 255457)
--- trunk/LayoutTests/fast/sandbox/ios/sandbox-mach-lookup-attachment-element.html (rev 0)
+++ trunk/LayoutTests/fast/sandbox/ios/sandbox-mach-lookup-attachment-element.html 2020-01-30 22:13:23 UTC (rev 255457)
@@ -0,0 +1,15 @@
+<!DOCTYPE html><!-- webkit-test-runner [ enableAttachmentElement=true ] -->
+<html>
+<head>
+<script src=""
+<script>
+description('Test that the WebContent process has mach lookup access to frontboard and icon services when the attachment element is enabled');
+
+if (window.internals) {
+ shouldBeTrue("internals.hasSandboxMachLookupAccessToGlobalName('com.apple.WebKit.WebContent', 'com.apple.frontboard.systemappservices')");
+ shouldBeTrue("internals.hasSandboxMachLookupAccessToGlobalName('com.apple.WebKit.WebContent', 'com.apple.iconservices')");
+}
+</script>
+</head>
+<body>
+</body>
Modified: trunk/Source/WebCore/ChangeLog (255456 => 255457)
--- trunk/Source/WebCore/ChangeLog 2020-01-30 21:52:52 UTC (rev 255456)
+++ trunk/Source/WebCore/ChangeLog 2020-01-30 22:13:23 UTC (rev 255457)
@@ -1,3 +1,25 @@
+2020-01-30 Per Arne Vollan <[email protected]>
+
+ [iOS] Issue mach sandbox extension to the frontboard and icon service when the attachment element is enabled
+ https://bugs.webkit.org/show_bug.cgi?id=205443
+
+ Reviewed by Brent Fulgham.
+
+ Get focus ring color in the UI process since getting this color will communicate with the frontboard daemon.
+
+ Test: fast/sandbox/ios/focus-ring-color.html
+
+ * rendering/RenderTheme.h:
+ * rendering/RenderThemeIOS.h:
+ * rendering/RenderThemeIOS.mm:
+ (WebCore::cachedFocusRingColor):
+ (WebCore::RenderThemeIOS::platformFocusRingColor const):
+ (WebCore::RenderThemeIOS::setFocusRingColor):
+ * testing/Internals.cpp:
+ (WebCore::Internals::focusRingColor):
+ * testing/Internals.h:
+ * testing/Internals.idl:
+
2020-01-30 Jonathan Bedard <[email protected]>
PAL: Remove old iOS version macros
Modified: trunk/Source/WebCore/rendering/RenderTheme.h (255456 => 255457)
--- trunk/Source/WebCore/rendering/RenderTheme.h 2020-01-30 21:52:52 UTC (rev 255456)
+++ trunk/Source/WebCore/rendering/RenderTheme.h 2020-01-30 22:13:23 UTC (rev 255457)
@@ -160,7 +160,7 @@
virtual Color disabledTextColor(const Color& textColor, const Color& backgroundColor) const;
- Color focusRingColor(OptionSet<StyleColor::Options>) const;
+ WTF_EXPORT Color focusRingColor(OptionSet<StyleColor::Options>) const;
virtual Color platformFocusRingColor(OptionSet<StyleColor::Options>) const { return Color(0, 0, 0); }
static void setCustomFocusRingColor(const Color&);
static float platformFocusRingWidth() { return 3; }
Modified: trunk/Source/WebCore/rendering/RenderThemeIOS.h (255456 => 255457)
--- trunk/Source/WebCore/rendering/RenderThemeIOS.h 2020-01-30 21:52:52 UTC (rev 255456)
+++ trunk/Source/WebCore/rendering/RenderThemeIOS.h 2020-01-30 22:13:23 UTC (rev 255457)
@@ -64,7 +64,9 @@
WEBCORE_EXPORT static const CSSValueToSystemColorMap& cssValueToSystemColorMap();
WEBCORE_EXPORT static void setCSSValueToSystemColorMap(CSSValueToSystemColorMap&&);
-
+
+ WEBCORE_EXPORT static void setFocusRingColor(const Color&);
+
protected:
LengthBox popupInternalPaddingBox(const RenderStyle&) const override;
Modified: trunk/Source/WebCore/rendering/RenderThemeIOS.mm (255456 => 255457)
--- trunk/Source/WebCore/rendering/RenderThemeIOS.mm 2020-01-30 21:52:52 UTC (rev 255456)
+++ trunk/Source/WebCore/rendering/RenderThemeIOS.mm 2020-01-30 22:13:23 UTC (rev 255457)
@@ -1130,9 +1130,18 @@
return Color::transparent;
}
+static Optional<Color>& cachedFocusRingColor()
+{
+ static NeverDestroyed<Optional<Color>> color;
+ return color;
+}
+
#if ENABLE(FULL_KEYBOARD_ACCESS)
Color RenderThemeIOS::platformFocusRingColor(OptionSet<StyleColor::Options>) const
{
+ if (cachedFocusRingColor().hasValue())
+ return *cachedFocusRingColor();
+
// FIXME: Should be using -keyboardFocusIndicatorColor. For now, work around <rdar://problem/50838886>.
return colorFromUIColor([PAL::getUIColorClass() systemBlueColor]);
}
@@ -1538,6 +1547,11 @@
globalCSSValueToSystemColorMap() = WTFMove(colorMap);
}
+void RenderThemeIOS::setFocusRingColor(const Color& color)
+{
+ cachedFocusRingColor() = color;
+}
+
Color RenderThemeIOS::systemColor(CSSValueID cssValueID, OptionSet<StyleColor::Options> options) const
{
const bool forVisitedLink = options.contains(StyleColor::Options::ForVisitedLink);
Modified: trunk/Source/WebCore/testing/Internals.cpp (255456 => 255457)
--- trunk/Source/WebCore/testing/Internals.cpp 2020-01-30 21:52:52 UTC (rev 255456)
+++ trunk/Source/WebCore/testing/Internals.cpp 2020-01-30 22:13:23 UTC (rev 255457)
@@ -5455,4 +5455,10 @@
return MIMETypeRegistry::getMediaMIMETypeForExtension(extension);
}
+String Internals::focusRingColor()
+{
+ OptionSet<StyleColor::Options> options;
+ return RenderTheme::singleton().focusRingColor(options).cssText();
+}
+
} // namespace WebCore
Modified: trunk/Source/WebCore/testing/Internals.h (255456 => 255457)
--- trunk/Source/WebCore/testing/Internals.h 2020-01-30 21:52:52 UTC (rev 255456)
+++ trunk/Source/WebCore/testing/Internals.h 2020-01-30 22:13:23 UTC (rev 255457)
@@ -933,6 +933,8 @@
String mediaMIMETypeForExtension(const String& extension);
+ String focusRingColor();
+
private:
explicit Internals(Document&);
Document* contextDocument() const;
Modified: trunk/Source/WebCore/testing/Internals.idl (255456 => 255457)
--- trunk/Source/WebCore/testing/Internals.idl 2020-01-30 21:52:52 UTC (rev 255456)
+++ trunk/Source/WebCore/testing/Internals.idl 2020-01-30 22:13:23 UTC (rev 255457)
@@ -836,6 +836,7 @@
boolean hasSandboxMachLookupAccessToXPCServiceName(DOMString process, DOMString service);
DOMString systemColorForCSSValue(DOMString cssValue, boolean useDarkModeAppearance, boolean useElevatedUserInterfaceLevel);
+ DOMString focusRingColor();
boolean systemHasBattery();
Modified: trunk/Source/WebKit/ChangeLog (255456 => 255457)
--- trunk/Source/WebKit/ChangeLog 2020-01-30 21:52:52 UTC (rev 255456)
+++ trunk/Source/WebKit/ChangeLog 2020-01-30 22:13:23 UTC (rev 255457)
@@ -1,3 +1,27 @@
+2020-01-30 Per Arne Vollan <[email protected]>
+
+ [iOS] Issue mach sandbox extension to the frontboard and icon service when the attachment element is enabled
+ https://bugs.webkit.org/show_bug.cgi?id=205443
+ <rdar://problem/58074291>
+
+ Reviewed by Brent Fulgham.
+
+ When support for the html attachment element is enabled, issue a mach lookup extension to the frontboard and icon service
+ for the WebContent process, since these daemons are being contacted when icons for attachments are being queried. Also,
+ retrieve the focus ring color in the UI process, since getting this color requires access to the frontboard daemon.
+
+ Test: fast/sandbox/ios/sandbox-mach-lookup-attachment-element.html
+
+ * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
+ * Shared/WebProcessCreationParameters.cpp:
+ (WebKit::WebProcessCreationParameters::encode const):
+ (WebKit::WebProcessCreationParameters::decode):
+ * Shared/WebProcessCreationParameters.h:
+ * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
+ (WebKit::WebProcessPool::platformInitializeWebProcess):
+ * WebProcess/cocoa/WebProcessCocoa.mm:
+ (WebKit::WebProcess::platformInitializeWebProcess):
+
2020-01-30 Tim Horton <[email protected]>
REGRESSION (r253267): Swipe from edge on Twitter images no longer goes back
Modified: trunk/Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb (255456 => 255457)
--- trunk/Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb 2020-01-30 21:52:52 UTC (rev 255456)
+++ trunk/Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb 2020-01-30 22:13:23 UTC (rev 255457)
@@ -919,7 +919,7 @@
(allow mach-lookup
(require-all
(extension "com.apple.webkit.extension.mach")
- (global-name "com.apple.iphone.axserver-systemwide" "com.apple.tccd" "com.apple.nehelper" "com.apple.nesessionmanager.content-filter" "com.apple.uikit.viewservice.com.apple.WebContentFilter.remoteUI" "com.apple.diagnosticd" "com.apple.lsd.open" "com.apple.mobileassetd" "com.apple.mobileassetd.v2")))
+ (global-name "com.apple.iphone.axserver-systemwide" "com.apple.tccd" "com.apple.nehelper" "com.apple.nesessionmanager.content-filter" "com.apple.uikit.viewservice.com.apple.WebContentFilter.remoteUI" "com.apple.diagnosticd" "com.apple.lsd.open" "com.apple.mobileassetd" "com.apple.mobileassetd.v2" "com.apple.frontboard.systemappservices" "com.apple.iconservices")))
(allow mach-lookup
(require-all
Modified: trunk/Source/WebKit/Shared/WebPageCreationParameters.cpp (255456 => 255457)
--- trunk/Source/WebKit/Shared/WebPageCreationParameters.cpp 2020-01-30 21:52:52 UTC (rev 255456)
+++ trunk/Source/WebKit/Shared/WebPageCreationParameters.cpp 2020-01-30 22:13:23 UTC (rev 255457)
@@ -92,6 +92,8 @@
encoder << viewportConfigurationMinimumEffectiveDeviceWidth;
encoder << viewportConfigurationViewSize;
encoder << overrideViewportArguments;
+ encoder << frontboardExtensionHandle;
+ encoder << iconServicesExtensionHandle;
#endif
#if PLATFORM(IOS_FAMILY)
@@ -299,6 +301,18 @@
if (!overrideViewportArguments)
return WTF::nullopt;
parameters.overrideViewportArguments = WTFMove(*overrideViewportArguments);
+
+ Optional<Optional<SandboxExtension::Handle>> frontboardExtensionHandle;
+ decoder >> frontboardExtensionHandle;
+ if (!frontboardExtensionHandle)
+ return WTF::nullopt;
+ parameters.frontboardExtensionHandle = WTFMove(*frontboardExtensionHandle);
+
+ Optional<Optional<SandboxExtension::Handle>> iconServicesExtensionHandle;
+ decoder >> iconServicesExtensionHandle;
+ if (!iconServicesExtensionHandle)
+ return WTF::nullopt;
+ parameters.iconServicesExtensionHandle = WTFMove(*iconServicesExtensionHandle);
#endif
#if PLATFORM(IOS_FAMILY)
Modified: trunk/Source/WebKit/Shared/WebPageCreationParameters.h (255456 => 255457)
--- trunk/Source/WebKit/Shared/WebPageCreationParameters.h 2020-01-30 21:52:52 UTC (rev 255456)
+++ trunk/Source/WebKit/Shared/WebPageCreationParameters.h 2020-01-30 22:13:23 UTC (rev 255457)
@@ -152,6 +152,8 @@
double viewportConfigurationMinimumEffectiveDeviceWidth;
WebCore::FloatSize viewportConfigurationViewSize;
Optional<WebCore::ViewportArguments> overrideViewportArguments;
+ Optional<SandboxExtension::Handle> frontboardExtensionHandle;
+ Optional<SandboxExtension::Handle> iconServicesExtensionHandle;
#endif
#if PLATFORM(IOS_FAMILY)
WebCore::FloatSize screenSize;
Modified: trunk/Source/WebKit/Shared/WebProcessCreationParameters.cpp (255456 => 255457)
--- trunk/Source/WebKit/Shared/WebProcessCreationParameters.cpp 2020-01-30 21:52:52 UTC (rev 255456)
+++ trunk/Source/WebKit/Shared/WebProcessCreationParameters.cpp 2020-01-30 22:13:23 UTC (rev 255457)
@@ -173,6 +173,7 @@
#if PLATFORM(IOS_FAMILY)
encoder << currentUserInterfaceIdiomIsPad;
encoder << cssValueToSystemColorMap;
+ encoder << focusRingColor;
#endif
}
@@ -458,6 +459,12 @@
if (!cssValueToSystemColorMap)
return false;
parameters.cssValueToSystemColorMap = WTFMove(*cssValueToSystemColorMap);
+
+ Optional<WebCore::Color> focusRingColor;
+ decoder >> focusRingColor;
+ if (!focusRingColor)
+ return false;
+ parameters.focusRingColor = WTFMove(*focusRingColor);
#endif
return true;
Modified: trunk/Source/WebKit/Shared/WebProcessCreationParameters.h (255456 => 255457)
--- trunk/Source/WebKit/Shared/WebProcessCreationParameters.h 2020-01-30 21:52:52 UTC (rev 255456)
+++ trunk/Source/WebKit/Shared/WebProcessCreationParameters.h 2020-01-30 22:13:23 UTC (rev 255457)
@@ -215,6 +215,7 @@
#if PLATFORM(IOS_FAMILY)
bool currentUserInterfaceIdiomIsPad { false };
WebCore::RenderThemeIOS::CSSValueToSystemColorMap cssValueToSystemColorMap;
+ WebCore::Color focusRingColor;
#endif
};
Modified: trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm (255456 => 255457)
--- trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm 2020-01-30 21:52:52 UTC (rev 255456)
+++ trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm 2020-01-30 22:13:23 UTC (rev 255457)
@@ -360,6 +360,7 @@
#if PLATFORM(IOS_FAMILY)
parameters.currentUserInterfaceIdiomIsPad = currentUserInterfaceIdiomIsPad();
parameters.cssValueToSystemColorMap = RenderThemeIOS::cssValueToSystemColorMap();
+ parameters.focusRingColor = RenderTheme::singleton().focusRingColor(OptionSet<StyleColor::Options>());
#endif
}
Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.cpp (255456 => 255457)
--- trunk/Source/WebKit/UIProcess/WebPageProxy.cpp 2020-01-30 21:52:52 UTC (rev 255456)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.cpp 2020-01-30 22:13:23 UTC (rev 255457)
@@ -7651,6 +7651,17 @@
parameters.themeName = pageClient().themeName();
#endif
+#if ENABLE(ATTACHMENT_ELEMENT) && PLATFORM(IOS_FAMILY)
+ if (m_preferences->attachmentElementEnabled() && !m_process->hasIssuedAttachmentElementRelatedSandboxExtensions()) {
+ SandboxExtension::Handle handle;
+ SandboxExtension::createHandleForMachLookup("com.apple.frontboard.systemappservices", WTF::nullopt, handle);
+ parameters.frontboardExtensionHandle = WTFMove(handle);
+ SandboxExtension::createHandleForMachLookup("com.apple.iconservices", WTF::nullopt, handle);
+ parameters.iconServicesExtensionHandle = WTFMove(handle);
+ m_process->setHasIssuedAttachmentElementRelatedSandboxExtensions();
+ }
+#endif
+
return parameters;
}
Modified: trunk/Source/WebKit/UIProcess/WebProcessProxy.h (255456 => 255457)
--- trunk/Source/WebKit/UIProcess/WebProcessProxy.h 2020-01-30 21:52:52 UTC (rev 255456)
+++ trunk/Source/WebKit/UIProcess/WebProcessProxy.h 2020-01-30 22:13:23 UTC (rev 255457)
@@ -354,6 +354,11 @@
UserMediaCaptureManagerProxy* userMediaCaptureManagerProxy() { return m_userMediaCaptureManagerProxy.get(); }
#endif
+#if ENABLE(ATTACHMENT_ELEMENT) && PLATFORM(IOS_FAMILY)
+ bool hasIssuedAttachmentElementRelatedSandboxExtensions() const { return m_hasIssuedAttachmentElementRelatedSandboxExtensions; }
+ void setHasIssuedAttachmentElementRelatedSandboxExtensions() { m_hasIssuedAttachmentElementRelatedSandboxExtensions = true; }
+#endif
+
protected:
WebProcessProxy(WebProcessPool&, WebsiteDataStore*, IsPrewarmed);
@@ -532,6 +537,9 @@
bool m_hasCommittedAnyProvisionalLoads { false };
bool m_isPrewarmed;
bool m_hasAudibleWebPage { false };
+#if ENABLE(ATTACHMENT_ELEMENT) && PLATFORM(IOS_FAMILY)
+ bool m_hasIssuedAttachmentElementRelatedSandboxExtensions { false };
+#endif
#if PLATFORM(WATCHOS)
std::unique_ptr<ProcessThrottler::BackgroundActivity> m_backgroundActivityForFullscreenFormControls;
Modified: trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp (255456 => 255457)
--- trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp 2020-01-30 21:52:52 UTC (rev 255456)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp 2020-01-30 22:13:23 UTC (rev 255457)
@@ -526,6 +526,13 @@
pageConfiguration.corsDisablingPatterns = WTFMove(parameters.corsDisablingPatterns);
+#if ENABLE(ATTACHMENT_ELEMENT) && PLATFORM(IOS_FAMILY)
+ if (parameters.frontboardExtensionHandle)
+ SandboxExtension::consumePermanently(*parameters.frontboardExtensionHandle);
+ if (parameters.iconServicesExtensionHandle)
+ SandboxExtension::consumePermanently(*parameters.iconServicesExtensionHandle);
+#endif
+
m_page = makeUnique<Page>(WTFMove(pageConfiguration));
updatePreferences(parameters.store);
Modified: trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm (255456 => 255457)
--- trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm 2020-01-30 21:52:52 UTC (rev 255456)
+++ trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm 2020-01-30 22:13:23 UTC (rev 255457)
@@ -267,6 +267,7 @@
#if PLATFORM(IOS_FAMILY)
RenderThemeIOS::setCSSValueToSystemColorMap(WTFMove(parameters.cssValueToSystemColorMap));
+ RenderThemeIOS::setFocusRingColor(parameters.focusRingColor);
#endif
}