From 77afd6bdad6514469ab533adc2d051ae27180339 Mon Sep 17 00:00:00 2001 From: Pavel Feldman Date: Tue, 13 Jul 2021 17:45:00 -0700 Subject: [PATCH] browser(webkit): pass some of the modernizr checks (#7593) --- browser_patches/webkit/BUILD_NUMBER | 4 +- browser_patches/webkit/patches/bootstrap.diff | 482 ++++++++++++++++-- 2 files changed, 444 insertions(+), 42 deletions(-) diff --git a/browser_patches/webkit/BUILD_NUMBER b/browser_patches/webkit/BUILD_NUMBER index 12c77e69b1..6b880265eb 100644 --- a/browser_patches/webkit/BUILD_NUMBER +++ b/browser_patches/webkit/BUILD_NUMBER @@ -1,2 +1,2 @@ -1510 -Changed: aslushnikov@gmail.com Wed Jul 14 03:26:24 MSK 2021 +1511 +Changed: pavel.feldman@gmail.com Wed Jul 14 03:36:24 MSK 2021 diff --git a/browser_patches/webkit/patches/bootstrap.diff b/browser_patches/webkit/patches/bootstrap.diff index 1ff54ee4e5..5922b51344 100644 --- a/browser_patches/webkit/patches/bootstrap.diff +++ b/browser_patches/webkit/patches/bootstrap.diff @@ -926,10 +926,19 @@ index 882a2d56befef0aba460cc8ff041969e0d2c1ed3..71d4bfc4a4bc5a43bd2b98aefa316b4e ], "events": [ diff --git a/Source/JavaScriptCore/inspector/protocol/Page.json b/Source/JavaScriptCore/inspector/protocol/Page.json -index db52479a72d459be23d4d8d080c0ed15ea9fc4c0..5f7add78fefc2bf8718ff8af7c49c169038e8226 100644 +index db52479a72d459be23d4d8d080c0ed15ea9fc4c0..35b44b9fc9bbde387991155e6fa3d26a0fd368d5 100644 --- a/Source/JavaScriptCore/inspector/protocol/Page.json +++ b/Source/JavaScriptCore/inspector/protocol/Page.json -@@ -27,7 +27,7 @@ +@@ -21,13 +21,15 @@ + "ShowDebugBorders", + "ShowRepaintCounter", + "WebRTCEncryptionEnabled", +- "WebSecurityEnabled" ++ "WebSecurityEnabled", ++ "DeviceOrientationEventEnabled", ++ "SpeechRecognitionEnabled" + ] + }, { "id": "ResourceType", "type": "string", @@ -938,7 +947,7 @@ index db52479a72d459be23d4d8d080c0ed15ea9fc4c0..5f7add78fefc2bf8718ff8af7c49c169 "description": "Resource type as it was perceived by the rendering engine." }, { -@@ -49,6 +49,12 @@ +@@ -49,6 +51,12 @@ "enum": ["Light", "Dark"], "description": "Page appearance name." }, @@ -951,7 +960,7 @@ index db52479a72d459be23d4d8d080c0ed15ea9fc4c0..5f7add78fefc2bf8718ff8af7c49c169 { "id": "Frame", "type": "object", -@@ -112,6 +118,51 @@ +@@ -112,6 +120,51 @@ { "name": "secure", "type": "boolean", "description": "True if cookie is secure." }, { "name": "sameSite", "$ref": "CookieSameSitePolicy", "description": "Cookie Same-Site policy." } ] @@ -1003,7 +1012,7 @@ index db52479a72d459be23d4d8d080c0ed15ea9fc4c0..5f7add78fefc2bf8718ff8af7c49c169 } ], "commands": [ -@@ -131,6 +182,14 @@ +@@ -131,6 +184,14 @@ { "name": "revalidateAllResources", "type": "boolean", "optional": true, "description": "If true, all cached subresources will be revalidated when the main resource loads. Otherwise, only expired cached subresources will be revalidated (the default behavior for most WebKit clients)." } ] }, @@ -1018,7 +1027,7 @@ index db52479a72d459be23d4d8d080c0ed15ea9fc4c0..5f7add78fefc2bf8718ff8af7c49c169 { "name": "navigate", "description": "Navigates current page to the given URL.", -@@ -204,7 +263,8 @@ +@@ -204,7 +265,8 @@ "name": "setBootstrapScript", "targetTypes": ["page"], "parameters": [ @@ -1028,7 +1037,7 @@ index db52479a72d459be23d4d8d080c0ed15ea9fc4c0..5f7add78fefc2bf8718ff8af7c49c169 ] }, { -@@ -270,6 +330,28 @@ +@@ -270,6 +332,28 @@ { "name": "appearance", "$ref": "Appearance", "optional": true } ] }, @@ -1057,7 +1066,7 @@ index db52479a72d459be23d4d8d080c0ed15ea9fc4c0..5f7add78fefc2bf8718ff8af7c49c169 { "name": "snapshotNode", "description": "Capture a snapshot of the specified node that does not include unrelated layers.", -@@ -290,7 +372,8 @@ +@@ -290,7 +374,8 @@ { "name": "y", "type": "integer", "description": "Y coordinate" }, { "name": "width", "type": "integer", "description": "Rectangle width" }, { "name": "height", "type": "integer", "description": "Rectangle height" }, @@ -1067,7 +1076,7 @@ index db52479a72d459be23d4d8d080c0ed15ea9fc4c0..5f7add78fefc2bf8718ff8af7c49c169 ], "returns": [ { "name": "dataURL", "type": "string", "description": "Base64-encoded image data (PNG)." } -@@ -308,12 +391,77 @@ +@@ -308,12 +393,77 @@ { "name": "setScreenSizeOverride", "description": "Overrides screen size exposed to DOM and used in media queries for testing with provided values.", @@ -1146,7 +1155,7 @@ index db52479a72d459be23d4d8d080c0ed15ea9fc4c0..5f7add78fefc2bf8718ff8af7c49c169 } ], "events": [ -@@ -321,14 +469,16 @@ +@@ -321,14 +471,16 @@ "name": "domContentEventFired", "targetTypes": ["page"], "parameters": [ @@ -1165,7 +1174,7 @@ index db52479a72d459be23d4d8d080c0ed15ea9fc4c0..5f7add78fefc2bf8718ff8af7c49c169 ] }, { -@@ -338,6 +488,14 @@ +@@ -338,6 +490,14 @@ { "name": "frame", "$ref": "Frame", "description": "Frame object." } ] }, @@ -1180,7 +1189,7 @@ index db52479a72d459be23d4d8d080c0ed15ea9fc4c0..5f7add78fefc2bf8718ff8af7c49c169 { "name": "frameDetached", "description": "Fired when frame has been detached from its parent.", -@@ -377,6 +535,22 @@ +@@ -377,6 +537,22 @@ { "name": "frameId", "$ref": "Network.FrameId", "description": "Id of the frame that has cleared its scheduled navigation." } ] }, @@ -1203,7 +1212,7 @@ index db52479a72d459be23d4d8d080c0ed15ea9fc4c0..5f7add78fefc2bf8718ff8af7c49c169 { "name": "defaultAppearanceDidChange", "description": "Fired when page's default appearance changes, even if there is a forced appearance.", -@@ -385,6 +559,28 @@ +@@ -385,6 +561,28 @@ "parameters": [ { "name": "appearance", "$ref": "Appearance", "description": "Name of the appearance that is active (not considering any forced appearance.)" } ] @@ -1940,7 +1949,7 @@ index e7331574bbfe695080432c506a393ed218d0e651..8333ecf890ba03175aa5fa9afe89217f InspectorWindowFrame: type: String diff --git a/Source/WTF/Scripts/Preferences/WebPreferencesExperimental.yaml b/Source/WTF/Scripts/Preferences/WebPreferencesExperimental.yaml -index 9ecb7a3d6b39ca23ddd3258326a1fdc2f016ce30..66fbf9a9d6706b3d449eb73d842dde7a4a211a89 100644 +index 9ecb7a3d6b39ca23ddd3258326a1fdc2f016ce30..743a455ad64684fd9fc35e4cd92056a9ba744e52 100644 --- a/Source/WTF/Scripts/Preferences/WebPreferencesExperimental.yaml +++ b/Source/WTF/Scripts/Preferences/WebPreferencesExperimental.yaml @@ -622,9 +622,9 @@ MaskWebGLStringsEnabled: @@ -1955,6 +1964,15 @@ index 9ecb7a3d6b39ca23ddd3258326a1fdc2f016ce30..66fbf9a9d6706b3d449eb73d842dde7a # FIXME: This is on by default in WebKit2. Perhaps we should consider turning it on for WebKitLegacy as well. MediaCapabilitiesExtensionsEnabled: +@@ -964,7 +964,7 @@ SpeechRecognitionEnabled: + WebKitLegacy: + default: false + WebKit: +- "HAVE(SPEECHRECOGNIZER) && ENABLE(MEDIA_STREAM)": true ++ "ENABLE(MEDIA_STREAM)": true + default: false + WebCore: + default: false diff --git a/Source/WTF/wtf/DateMath.cpp b/Source/WTF/wtf/DateMath.cpp index ebd69a4c76cd7acb0a233be552071158ca2171ca..2ee388e94a56d3de9c9fb2506d2ddead2db1ef87 100644 --- a/Source/WTF/wtf/DateMath.cpp @@ -2465,6 +2483,19 @@ index 4436fd8ca990af2e5cc147047fc39c2470104e64..9ebf2f8e499066a5e7461cfa1f8287f5 bool AccessibilityObject::accessibilityIsIgnored() const { AXComputedObjectAttributeCache* attributeCache = nullptr; +diff --git a/Source/WebCore/bindings/js/WebCoreBuiltinNames.h b/Source/WebCore/bindings/js/WebCoreBuiltinNames.h +index 7790e27189a050ff4a8c37e431b01632975d27a4..8660a68fcba1d3950305669a2cbb3f36771cc9c8 100644 +--- a/Source/WebCore/bindings/js/WebCoreBuiltinNames.h ++++ b/Source/WebCore/bindings/js/WebCoreBuiltinNames.h +@@ -88,6 +88,8 @@ namespace WebCore { + macro(Database) \ + macro(DataTransferItem) \ + macro(DataTransferItemList) \ ++ macro(DeviceMotionEvent) \ ++ macro(DeviceOrientationEvent) \ + macro(DocumentTimeline) \ + macro(EnterPictureInPictureEvent) \ + macro(ExtendableEvent) \ diff --git a/Source/WebCore/css/MediaQueryEvaluator.cpp b/Source/WebCore/css/MediaQueryEvaluator.cpp index a47b2fe549a89414a207864aabe897d07a59727c..53357bc9ce111bcb1241256647c3630ae767213d 100644 --- a/Source/WebCore/css/MediaQueryEvaluator.cpp @@ -2523,6 +2554,30 @@ index b084ee416512652220e43a6d4bcccaff7c666d5a..b250f3d0161817efef7e2634a16713b0 static Ref createForDragStartEvent(const Document&); static Ref createForDrop(const Document&, std::unique_ptr&&, OptionSet, bool draggingFiles); static Ref createForUpdatingDropTarget(const Document&, std::unique_ptr&&, OptionSet, bool draggingFiles); +diff --git a/Source/WebCore/dom/DeviceMotionEvent.idl b/Source/WebCore/dom/DeviceMotionEvent.idl +index cb64adcd7af56fb2977d2403b110ff3fb74c4408..ba037ac019ed8c47fd73df234a88cbef6f7254d8 100644 +--- a/Source/WebCore/dom/DeviceMotionEvent.idl ++++ b/Source/WebCore/dom/DeviceMotionEvent.idl +@@ -25,6 +25,7 @@ + + [ + Conditional=DEVICE_ORIENTATION, ++ EnabledBySetting=DeviceOrientationEvent, + Exposed=Window + ] interface DeviceMotionEvent : Event { + readonly attribute Acceleration? acceleration; +diff --git a/Source/WebCore/dom/DeviceOrientationEvent.idl b/Source/WebCore/dom/DeviceOrientationEvent.idl +index 1c1cbc1f55089ea7c73c83f04db3caddc5a8b3b3..f1ccf42cf7f699747b31873ab9d96b3f7afc8fd3 100644 +--- a/Source/WebCore/dom/DeviceOrientationEvent.idl ++++ b/Source/WebCore/dom/DeviceOrientationEvent.idl +@@ -25,6 +25,7 @@ + + [ + Conditional=DEVICE_ORIENTATION, ++ EnabledBySetting=DeviceOrientationEvent, + Exposed=Window + ] interface DeviceOrientationEvent : Event { + readonly attribute unrestricted double? alpha; diff --git a/Source/WebCore/dom/PointerEvent.cpp b/Source/WebCore/dom/PointerEvent.cpp index f21879fdfbc64e7d2f11ab084d46794a9e601110..151c9b72f0f552c2ff741305c4c0a8c7f51a92e3 100644 --- a/Source/WebCore/dom/PointerEvent.cpp @@ -3861,7 +3916,7 @@ index 7cdc5865e58e9a9a30ea25202692d4b9aa77b2d6..7c42be0cbadf9a594926cbe89ce510b0 std::unique_ptr m_frontendDispatcher; diff --git a/Source/WebCore/inspector/agents/InspectorPageAgent.cpp b/Source/WebCore/inspector/agents/InspectorPageAgent.cpp -index 64117425ba5c5b6a71d190dfc8f1eefb4ffc637c..8fa02250a9c5736a7a8099840bf8f263a43f6604 100644 +index 64117425ba5c5b6a71d190dfc8f1eefb4ffc637c..3a63079e3bba97ef638224c476169e42752ccb97 100644 --- a/Source/WebCore/inspector/agents/InspectorPageAgent.cpp +++ b/Source/WebCore/inspector/agents/InspectorPageAgent.cpp @@ -32,19 +32,25 @@ @@ -3997,7 +4052,29 @@ index 64117425ba5c5b6a71d190dfc8f1eefb4ffc637c..8fa02250a9c5736a7a8099840bf8f263 Protocol::ErrorStringOr InspectorPageAgent::navigate(const String& url) { UserGestureIndicator indicator { ProcessingUserGesture }; -@@ -696,9 +742,13 @@ Protocol::ErrorStringOr> InspectorP +@@ -439,6 +485,10 @@ Protocol::ErrorStringOr InspectorPageAgent::overrideSetting(Protocol::Page + inspectedPageSettings.setAuthorAndUserStylesEnabledInspectorOverride(value); + return { }; + ++ case Protocol::Page::Setting::DeviceOrientationEventEnabled: ++ inspectedPageSettings.setDeviceOrientationEventEnabled(value.value_or(false)); ++ return { }; ++ + case Protocol::Page::Setting::ICECandidateFilteringEnabled: + inspectedPageSettings.setICECandidateFilteringEnabledInspectorOverride(value); + return { }; +@@ -476,6 +526,10 @@ Protocol::ErrorStringOr InspectorPageAgent::overrideSetting(Protocol::Page + inspectedPageSettings.setShowRepaintCounterInspectorOverride(value); + return { }; + ++ case Protocol::Page::Setting::SpeechRecognitionEnabled: ++ inspectedPageSettings.setSpeechRecognitionEnabled(value.value_or(false)); ++ return { }; ++ + case Protocol::Page::Setting::WebRTCEncryptionEnabled: + inspectedPageSettings.setWebRTCEncryptionEnabledInspectorOverride(value); + return { }; +@@ -696,9 +750,13 @@ Protocol::ErrorStringOr> InspectorP return { { content, base64Encoded } }; } @@ -4013,7 +4090,7 @@ index 64117425ba5c5b6a71d190dfc8f1eefb4ffc637c..8fa02250a9c5736a7a8099840bf8f263 return { }; } -@@ -801,15 +851,16 @@ Protocol::ErrorStringOr InspectorPageAgent::setShowPaintRects(bool show) +@@ -801,15 +859,16 @@ Protocol::ErrorStringOr InspectorPageAgent::setShowPaintRects(bool show) return { }; } @@ -4035,7 +4112,7 @@ index 64117425ba5c5b6a71d190dfc8f1eefb4ffc637c..8fa02250a9c5736a7a8099840bf8f263 } void InspectorPageAgent::frameNavigated(Frame& frame) -@@ -817,13 +868,23 @@ void InspectorPageAgent::frameNavigated(Frame& frame) +@@ -817,13 +876,23 @@ void InspectorPageAgent::frameNavigated(Frame& frame) m_frontendDispatcher->frameNavigated(buildObjectForFrame(&frame)); } @@ -4062,7 +4139,7 @@ index 64117425ba5c5b6a71d190dfc8f1eefb4ffc637c..8fa02250a9c5736a7a8099840bf8f263 } Frame* InspectorPageAgent::frameForId(const Protocol::Network::FrameId& frameId) -@@ -835,20 +896,18 @@ String InspectorPageAgent::frameId(Frame* frame) +@@ -835,20 +904,18 @@ String InspectorPageAgent::frameId(Frame* frame) { if (!frame) return emptyString(); @@ -4089,7 +4166,7 @@ index 64117425ba5c5b6a71d190dfc8f1eefb4ffc637c..8fa02250a9c5736a7a8099840bf8f263 } Frame* InspectorPageAgent::assertFrame(Protocol::ErrorString& errorString, const Protocol::Network::FrameId& frameId) -@@ -859,11 +918,6 @@ Frame* InspectorPageAgent::assertFrame(Protocol::ErrorString& errorString, const +@@ -859,11 +926,6 @@ Frame* InspectorPageAgent::assertFrame(Protocol::ErrorString& errorString, const return frame; } @@ -4101,7 +4178,7 @@ index 64117425ba5c5b6a71d190dfc8f1eefb4ffc637c..8fa02250a9c5736a7a8099840bf8f263 void InspectorPageAgent::frameStartedLoading(Frame& frame) { m_frontendDispatcher->frameStartedLoading(frameId(&frame)); -@@ -884,6 +938,12 @@ void InspectorPageAgent::frameClearedScheduledNavigation(Frame& frame) +@@ -884,6 +946,12 @@ void InspectorPageAgent::frameClearedScheduledNavigation(Frame& frame) m_frontendDispatcher->frameClearedScheduledNavigation(frameId(&frame)); } @@ -4114,7 +4191,7 @@ index 64117425ba5c5b6a71d190dfc8f1eefb4ffc637c..8fa02250a9c5736a7a8099840bf8f263 #if ENABLE(DARK_MODE_CSS) || HAVE(OS_DARK_MODE_SUPPORT) void InspectorPageAgent::defaultAppearanceDidChange(bool useDarkAppearance) { -@@ -893,13 +953,22 @@ void InspectorPageAgent::defaultAppearanceDidChange(bool useDarkAppearance) +@@ -893,13 +961,22 @@ void InspectorPageAgent::defaultAppearanceDidChange(bool useDarkAppearance) void InspectorPageAgent::didClearWindowObjectInWorld(Frame& frame, DOMWrapperWorld& world) { @@ -4140,7 +4217,7 @@ index 64117425ba5c5b6a71d190dfc8f1eefb4ffc637c..8fa02250a9c5736a7a8099840bf8f263 } void InspectorPageAgent::didPaint(RenderObject& renderer, const LayoutRect& rect) -@@ -943,6 +1012,52 @@ void InspectorPageAgent::didRecalculateStyle() +@@ -943,6 +1020,52 @@ void InspectorPageAgent::didRecalculateStyle() m_overlay->update(); } @@ -4193,7 +4270,7 @@ index 64117425ba5c5b6a71d190dfc8f1eefb4ffc637c..8fa02250a9c5736a7a8099840bf8f263 Ref InspectorPageAgent::buildObjectForFrame(Frame* frame) { ASSERT_ARG(frame, frame); -@@ -1079,11 +1194,13 @@ Protocol::ErrorStringOr InspectorPageAgent::snapshotNode(Protocol::DOM:: +@@ -1079,11 +1202,13 @@ Protocol::ErrorStringOr InspectorPageAgent::snapshotNode(Protocol::DOM:: return snapshot->toDataURL("image/png"_s, std::nullopt, PreserveResolution::Yes); } @@ -4208,7 +4285,7 @@ index 64117425ba5c5b6a71d190dfc8f1eefb4ffc637c..8fa02250a9c5736a7a8099840bf8f263 IntRect rectangle(x, y, width, height); auto snapshot = snapshotFrameRect(m_inspectedPage.mainFrame(), rectangle, WTFMove(options)); -@@ -1094,6 +1211,47 @@ Protocol::ErrorStringOr InspectorPageAgent::snapshotRect(int x, int y, i +@@ -1094,6 +1219,47 @@ Protocol::ErrorStringOr InspectorPageAgent::snapshotRect(int x, int y, i return snapshot->toDataURL("image/png"_s, std::nullopt, PreserveResolution::Yes); } @@ -4256,7 +4333,7 @@ index 64117425ba5c5b6a71d190dfc8f1eefb4ffc637c..8fa02250a9c5736a7a8099840bf8f263 #if ENABLE(WEB_ARCHIVE) && USE(CF) Protocol::ErrorStringOr InspectorPageAgent::archive() { -@@ -1106,7 +1264,6 @@ Protocol::ErrorStringOr InspectorPageAgent::archive() +@@ -1106,7 +1272,6 @@ Protocol::ErrorStringOr InspectorPageAgent::archive() } #endif @@ -4264,7 +4341,7 @@ index 64117425ba5c5b6a71d190dfc8f1eefb4ffc637c..8fa02250a9c5736a7a8099840bf8f263 Protocol::ErrorStringOr InspectorPageAgent::setScreenSizeOverride(std::optional&& width, std::optional&& height) { if (width.has_value() != height.has_value()) -@@ -1121,6 +1278,595 @@ Protocol::ErrorStringOr InspectorPageAgent::setScreenSizeOverride(std::opt +@@ -1121,6 +1286,595 @@ Protocol::ErrorStringOr InspectorPageAgent::setScreenSizeOverride(std::opt m_inspectedPage.mainFrame().setOverrideScreenSize(FloatSize(width.value_or(0), height.value_or(0))); return { }; } @@ -7140,6 +7217,92 @@ index fd39633380b947a2050a7b8680c57990f6d75cb6..a9e564cee2d4b8e72344f31491a15619 #endif #if PLATFORM(IOS_FAMILY) +diff --git a/Source/WebCore/platform/SourcesGLib.txt b/Source/WebCore/platform/SourcesGLib.txt +index df273e58adfa61c6d25332b321f6f7d7775c6167..36befc1a01b6a06f2157d80a00d42ef56eee024f 100644 +--- a/Source/WebCore/platform/SourcesGLib.txt ++++ b/Source/WebCore/platform/SourcesGLib.txt +@@ -29,6 +29,7 @@ platform/glib/KeyedEncoderGlib.cpp + platform/glib/LowPowerModeNotifierGLib.cpp + platform/glib/SharedBufferGlib.cpp + platform/glib/UserAgentGLib.cpp ++platform/glib/PlatformSpeechSynthesizerGLib.cpp + + platform/network/glib/DNSResolveQueueGLib.cpp + platform/network/glib/NetworkStateNotifierGLib.cpp +diff --git a/Source/WebCore/platform/glib/PlatformSpeechSynthesizerGLib.cpp b/Source/WebCore/platform/glib/PlatformSpeechSynthesizerGLib.cpp +new file mode 100644 +index 0000000000000000000000000000000000000000..f0c3a183e5bc44bdfa4201e0db2067b41bf51580 +--- /dev/null ++++ b/Source/WebCore/platform/glib/PlatformSpeechSynthesizerGLib.cpp +@@ -0,0 +1,68 @@ ++/* ++ * Copyright (C) 2013 Apple Inc. All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * ++ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY ++ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR ++ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ++ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, ++ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, ++ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR ++ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY ++ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ */ ++ ++#import "config.h" ++#import "PlatformSpeechSynthesizer.h" ++ ++#if ENABLE(SPEECH_SYNTHESIS) ++ ++namespace WebCore { ++ ++PlatformSpeechSynthesizer::PlatformSpeechSynthesizer(PlatformSpeechSynthesizerClient* client) ++ : m_speechSynthesizerClient(client) ++{ ++} ++ ++PlatformSpeechSynthesizer::~PlatformSpeechSynthesizer() ++{ ++} ++ ++void PlatformSpeechSynthesizer::initializeVoiceList() ++{ ++} ++ ++void PlatformSpeechSynthesizer::pause() ++{ ++} ++ ++void PlatformSpeechSynthesizer::resume() ++{ ++} ++ ++void PlatformSpeechSynthesizer::speak(RefPtr&& utterance) ++{ ++} ++ ++void PlatformSpeechSynthesizer::cancel() ++{ ++} ++ ++void PlatformSpeechSynthesizer::resetState() ++{ ++} ++ ++} // namespace WebCore ++ ++#endif // ENABLE(SPEECH_SYNTHESIS) diff --git a/Source/WebCore/platform/graphics/FontCascade.h b/Source/WebCore/platform/graphics/FontCascade.h index 6dade9146fe99078ac1a58b28cf0c5dd0c351095..16a641f4237a8a3a7a40461e3429551f7ca96203 100644 --- a/Source/WebCore/platform/graphics/FontCascade.h @@ -10551,7 +10714,7 @@ index a4391be7b637fd96d880cb06838b6deb5db552b6..3f7d5e6c9debc1cf1155da11bad14fc5 UIProcess/gtk/WebPasteboardProxyGtk.cpp UIProcess/gtk/WebPopupMenuProxyGtk.cpp diff --git a/Source/WebKit/SourcesWPE.txt b/Source/WebKit/SourcesWPE.txt -index f8fb1511f2a019a08a896f7cbf45ca470da28185..c086fd981369d998ae39b836d4a71504d9b1aeea 100644 +index f8fb1511f2a019a08a896f7cbf45ca470da28185..eca7474a51db8dcf86fd4c538addd69633ffebe9 100644 --- a/Source/WebKit/SourcesWPE.txt +++ b/Source/WebKit/SourcesWPE.txt @@ -86,6 +86,7 @@ Shared/glib/ProcessExecutablePathGLib.cpp @@ -10570,7 +10733,15 @@ index f8fb1511f2a019a08a896f7cbf45ca470da28185..c086fd981369d998ae39b836d4a71504 UIProcess/API/glib/WebKitContextMenuClient.cpp @no-unify UIProcess/API/glib/WebKitCookieManager.cpp @no-unify UIProcess/API/glib/WebKitCredential.cpp @no-unify -@@ -198,6 +200,7 @@ UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp +@@ -182,6 +184,7 @@ UIProcess/API/wpe/InputMethodFilterWPE.cpp @no-unify + UIProcess/API/wpe/PageClientImpl.cpp @no-unify + UIProcess/API/wpe/TouchGestureController.cpp @no-unify + UIProcess/API/wpe/WebKitColor.cpp @no-unify ++UIProcess/API/wpe/WebKitDataListSuggestionsDropdown.cpp @no-unify + UIProcess/API/wpe/WebKitInputMethodContextWPE.cpp @no-unify + UIProcess/API/wpe/WebKitPopupMenu.cpp @no-unify + UIProcess/API/wpe/WebKitRectangle.cpp @no-unify +@@ -198,6 +201,7 @@ UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp UIProcess/geoclue/GeoclueGeolocationProvider.cpp @@ -10578,7 +10749,7 @@ index f8fb1511f2a019a08a896f7cbf45ca470da28185..c086fd981369d998ae39b836d4a71504 UIProcess/glib/WebPageProxyGLib.cpp UIProcess/glib/WebProcessPoolGLib.cpp UIProcess/glib/WebProcessProxyGLib.cpp -@@ -220,6 +223,10 @@ UIProcess/linux/MemoryPressureMonitor.cpp +@@ -220,6 +224,10 @@ UIProcess/linux/MemoryPressureMonitor.cpp UIProcess/soup/WebCookieManagerProxySoup.cpp UIProcess/soup/WebProcessPoolSoup.cpp @@ -10589,7 +10760,7 @@ index f8fb1511f2a019a08a896f7cbf45ca470da28185..c086fd981369d998ae39b836d4a71504 UIProcess/wpe/WebPageProxyWPE.cpp WebProcess/GPU/media/gstreamer/VideoLayerRemoteGStreamer.cpp -@@ -248,6 +255,8 @@ WebProcess/WebCoreSupport/glib/WebEditorClientGLib.cpp +@@ -248,6 +256,8 @@ WebProcess/WebCoreSupport/glib/WebEditorClientGLib.cpp WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.cpp @@ -11631,10 +11802,18 @@ index ecbe433ed888353b1e6013943b4463835c3582d2..7385877fe664515814fc5c3380a2b729 #include #include diff --git a/Source/WebKit/UIProcess/API/wpe/PageClientImpl.cpp b/Source/WebKit/UIProcess/API/wpe/PageClientImpl.cpp -index 9631a3f19d24c29286ab634c0bd65cfbc83f9334..eb465be92781c91a7c6df0b52f7b637694cfdd76 100644 +index 9631a3f19d24c29286ab634c0bd65cfbc83f9334..15c2813f21b419fc9067ae88231de2b12829c38f 100644 --- a/Source/WebKit/UIProcess/API/wpe/PageClientImpl.cpp +++ b/Source/WebKit/UIProcess/API/wpe/PageClientImpl.cpp -@@ -194,7 +194,7 @@ WebCore::IntPoint PageClientImpl::accessibilityScreenToRootView(const WebCore::I +@@ -34,6 +34,7 @@ + #include "WPEView.h" + #include "WebContextMenuProxy.h" + #include "WebContextMenuProxyWPE.h" ++#include "WebKitDataListSuggestionsDropdown.h" + #include "WebKitPopupMenu.h" + #include + #include +@@ -194,7 +195,7 @@ WebCore::IntPoint PageClientImpl::accessibilityScreenToRootView(const WebCore::I WebCore::IntRect PageClientImpl::rootViewToAccessibilityScreen(const WebCore::IntRect& rect) { @@ -11643,6 +11822,33 @@ index 9631a3f19d24c29286ab634c0bd65cfbc83f9334..eb465be92781c91a7c6df0b52f7b6376 } void PageClientImpl::doneWithKeyEvent(const NativeWebKeyboardEvent&, bool) +@@ -446,4 +447,11 @@ void PageClientImpl::selectionDidChange() + m_view.selectionDidChange(); + } + ++#if ENABLE(DATALIST_ELEMENT) ++RefPtr PageClientImpl::createDataListSuggestionsDropdown(WebKit::WebPageProxy& page) ++{ ++ return WebKitDataListSuggestionsDropdown::create(page); ++} ++#endif ++ + } // namespace WebKit +diff --git a/Source/WebKit/UIProcess/API/wpe/PageClientImpl.h b/Source/WebKit/UIProcess/API/wpe/PageClientImpl.h +index 8ab8db715db64616a15a06bb2b4760a40ad5f254..0307a117cbd5c4fb767c4905e9e3370efd5ebf9a 100644 +--- a/Source/WebKit/UIProcess/API/wpe/PageClientImpl.h ++++ b/Source/WebKit/UIProcess/API/wpe/PageClientImpl.h +@@ -166,6 +166,10 @@ private: + + void selectionDidChange() override; + ++#if ENABLE(DATALIST_ELEMENT) ++ RefPtr createDataListSuggestionsDropdown(WebKit::WebPageProxy& page) override; ++#endif ++ + WKWPE::View& m_view; + }; + diff --git a/Source/WebKit/UIProcess/API/wpe/WebKitBrowserInspector.h b/Source/WebKit/UIProcess/API/wpe/WebKitBrowserInspector.h new file mode 100644 index 0000000000000000000000000000000000000000..cb1a540d341b07581ec87b922b7d007ce45ba989 @@ -11730,6 +11936,131 @@ index 0000000000000000000000000000000000000000..cb1a540d341b07581ec87b922b7d007c +G_END_DECLS + +#endif +diff --git a/Source/WebKit/UIProcess/API/wpe/WebKitDataListSuggestionsDropdown.cpp b/Source/WebKit/UIProcess/API/wpe/WebKitDataListSuggestionsDropdown.cpp +new file mode 100644 +index 0000000000000000000000000000000000000000..afafef2b7fb433e006b1763e653e200bc80edcbd +--- /dev/null ++++ b/Source/WebKit/UIProcess/API/wpe/WebKitDataListSuggestionsDropdown.cpp +@@ -0,0 +1,58 @@ ++/* ++ * Copyright (C) 2019 Igalia S.L. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * ++ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS AS IS'' ++ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, ++ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR ++ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS ++ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR ++ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF ++ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ++ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN ++ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ++ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF ++ * THE POSSIBILITY OF SUCH DAMAGE. ++ */ ++ ++#include "config.h" ++#include "WebKitDataListSuggestionsDropdown.h" ++ ++#if ENABLE(DATALIST_ELEMENT) ++ ++#include "WebPageProxy.h" ++ ++namespace WebKit { ++ ++WebKitDataListSuggestionsDropdown::WebKitDataListSuggestionsDropdown(WebPageProxy& page) ++ : WebDataListSuggestionsDropdown(page) ++{ ++} ++ ++WebKitDataListSuggestionsDropdown::~WebKitDataListSuggestionsDropdown() ++{ ++} ++ ++void WebKitDataListSuggestionsDropdown::show(WebCore::DataListSuggestionInformation&& information) ++{ ++} ++ ++void WebKitDataListSuggestionsDropdown::handleKeydownWithIdentifier(const String& key) ++{ ++} ++ ++void WebKitDataListSuggestionsDropdown::close() ++{ ++} ++ ++} // namespace WebKit ++ ++#endif // ENABLE(DATALIST_ELEMENT) +diff --git a/Source/WebKit/UIProcess/API/wpe/WebKitDataListSuggestionsDropdown.h b/Source/WebKit/UIProcess/API/wpe/WebKitDataListSuggestionsDropdown.h +new file mode 100644 +index 0000000000000000000000000000000000000000..0a099832c3dd959f456fcae49a1d62a9477d2758 +--- /dev/null ++++ b/Source/WebKit/UIProcess/API/wpe/WebKitDataListSuggestionsDropdown.h +@@ -0,0 +1,55 @@ ++/* ++ * Copyright (C) 2019 Igalia S.L. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * ++ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS AS IS'' ++ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, ++ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR ++ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS ++ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR ++ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF ++ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ++ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN ++ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ++ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF ++ * THE POSSIBILITY OF SUCH DAMAGE. ++ */ ++ ++#pragma once ++ ++#if ENABLE(DATALIST_ELEMENT) ++ ++#include "WebDataListSuggestionsDropdown.h" ++ ++namespace WebKit { ++ ++class WebPageProxy; ++ ++class WebKitDataListSuggestionsDropdown final : public WebDataListSuggestionsDropdown { ++public: ++ static Ref create(WebPageProxy& page) ++ { ++ return adoptRef(*new WebKitDataListSuggestionsDropdown(page)); ++ } ++ ++ ~WebKitDataListSuggestionsDropdown(); ++ ++private: ++ WebKitDataListSuggestionsDropdown(WebPageProxy&); ++ ++ void show(WebCore::DataListSuggestionInformation&&) final; ++ void handleKeydownWithIdentifier(const String&) final; ++ void close() final; ++}; ++ ++} // namespace WebKit ++ ++#endif // ENABLE(DATALIST_ELEMENT) diff --git a/Source/WebKit/UIProcess/API/wpe/WebKitWebViewBackend.cpp b/Source/WebKit/UIProcess/API/wpe/WebKitWebViewBackend.cpp index e0fc205b39095cf8aae201a1dcca520461c60de4..872186ad99a7b82f0c61705ff6c5ae4453e5e1d4 100644 --- a/Source/WebKit/UIProcess/API/wpe/WebKitWebViewBackend.cpp @@ -13869,7 +14200,7 @@ index a2239cec8e18850f35f7f88a9c4ebadc62bf4023..79f3ff84327dc075ec96983e04db4b10 } // namespace WebKit diff --git a/Source/WebKit/UIProcess/Inspector/WebPageInspectorController.cpp b/Source/WebKit/UIProcess/Inspector/WebPageInspectorController.cpp -index ed4e6f30b8c35966075573dccee801daceec865e..2357769f3f78a7fda3d3fff1005e77c5d082948d 100644 +index ed4e6f30b8c35966075573dccee801daceec865e..6e0bf726a6e8e8773940041bc87f3c7e14403d34 100644 --- a/Source/WebKit/UIProcess/Inspector/WebPageInspectorController.cpp +++ b/Source/WebKit/UIProcess/Inspector/WebPageInspectorController.cpp @@ -26,13 +26,21 @@ @@ -14154,7 +14485,7 @@ index ed4e6f30b8c35966075573dccee801daceec865e..2357769f3f78a7fda3d3fff1005e77c5 } void WebPageInspectorController::willDestroyProvisionalPage(const ProvisionalPageProxy& provisionalPage) -@@ -267,4 +457,20 @@ void WebPageInspectorController::browserExtensionsDisabled(HashSet&& ext +@@ -267,4 +457,27 @@ void WebPageInspectorController::browserExtensionsDisabled(HashSet&& ext m_enabledBrowserAgent->extensionsDisabled(WTFMove(extensionIDs)); } @@ -14172,6 +14503,13 @@ index ed4e6f30b8c35966075573dccee801daceec865e..2357769f3f78a7fda3d3fff1005e77c5 + // Enable popup debugging. + // TODO: allow to set preferences over the inspector protocol or find a better place for this. + m_inspectedPage.preferences().setJavaScriptCanOpenWindowsAutomatically(true); ++ ++ // Enable media stream. ++ if (!m_inspectedPage.preferences().mediaStreamEnabled()) { ++ m_inspectedPage.preferences().setMediaDevicesEnabled(true); ++ m_inspectedPage.preferences().setMediaStreamEnabled(true); ++ m_inspectedPage.preferences().setPeerConnectionEnabled(true); ++ } +} + } // namespace WebKit @@ -17961,6 +18299,45 @@ index 0000000000000000000000000000000000000000..8006336003a4512b4c63bc8272d4b350 +} // namespace API + +#endif // ENABLE(REMOTE_INSPECTOR) +diff --git a/Source/WebKit/UIProcess/glib/WebPageProxyGLib.cpp b/Source/WebKit/UIProcess/glib/WebPageProxyGLib.cpp +index 521df7840ab6d376c25130e87ea500942398c8b6..c733d9d5cd304889640e5af4423860717be94725 100644 +--- a/Source/WebKit/UIProcess/glib/WebPageProxyGLib.cpp ++++ b/Source/WebKit/UIProcess/glib/WebPageProxyGLib.cpp +@@ -57,4 +57,34 @@ void WebPageProxy::loadRecentSearches(const String&, CompletionHandler