Skip to content
Permalink
Browse files
[GTK] Crash when starting DND on touchscreen
https://bugs.webkit.org/show_bug.cgi?id=235694

Reviewed by Adrian Perez de Castro.

Source/WebCore:

* page/DragController.cpp:
(WebCore::DragController::startDrag):
Skip drags for touch events on GTK.
* platform/PlatformMouseEvent.h:
(WebCore::PlatformMouseEvent::isTouchEvent const):

Source/WebKit:

Drag-n-drop on touch has never worked correctly in GTK, and is usually
just disabled. Do the same thing and ignore it for synthesized mouse
events.

* Shared/NativeWebMouseEvent.h:
* Shared/WebEventConversion.cpp:
(WebKit::WebKit2PlatformMouseEvent::WebKit2PlatformMouseEvent):
* Shared/WebMouseEvent.cpp:
(WebKit::WebMouseEvent::WebMouseEvent):
(WebKit::WebMouseEvent::encode const):
(WebKit::WebMouseEvent::decode):
* Shared/WebMouseEvent.h:
(WebKit::WebMouseEvent::isTouchEvent const):
* Shared/gtk/NativeWebMouseEventGtk.cpp:
(WebKit::NativeWebMouseEvent::NativeWebMouseEvent):
* UIProcess/API/gtk/WebKitWebViewBase.cpp:
(webkitWebViewBaseTouchRelease):
(webkitWebViewBaseTouchDragUpdate):
(webkitWebViewBaseTouchDragEnd):
(webkitWebViewBaseSynthesizeMouseEvent):
* UIProcess/API/gtk/WebKitWebViewBaseInternal.h:
* UIProcess/gtk/PointerLockManager.cpp:
(WebKit::PointerLockManager::handleMotion):

Tools:

* TestWebKitAPI/glib/CMakeLists.txt: Define BUILDING_TestWebKit



Canonical link: https://commits.webkit.org/246826@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@289129 268f45cc-cd09-0410-ab3c-d52691b4dbfc
  • Loading branch information
Exalm committed Feb 4, 2022
1 parent ecc8bcf commit e313ef565ccc6baddcb51e7105280a7989c084c5
Showing 14 changed files with 103 additions and 15 deletions.
@@ -1,3 +1,16 @@
2022-02-04 Alexander Mikhaylenko <alexm@gnome.org>

[GTK] Crash when starting DND on touchscreen
https://bugs.webkit.org/show_bug.cgi?id=235694

Reviewed by Adrian Perez de Castro.

* page/DragController.cpp:
(WebCore::DragController::startDrag):
Skip drags for touch events on GTK.
* platform/PlatformMouseEvent.h:
(WebCore::PlatformMouseEvent::isTouchEvent const):

2022-02-04 Christopher Reid <chris.reid@sony.com>

Revert some structured binding workarounds with Clang
@@ -975,6 +975,11 @@ bool DragController::startDrag(Frame& src, const DragState& state, OptionSet<Dra
if (!state.source)
return false;

#if PLATFORM(GTK)
if (dragEvent.isTouchEvent())
return false;
#endif

Ref<Frame> protector(src);
auto hitTestResult = hitTestResultForDragStart(src, *state.source, dragOrigin);
if (!hitTestResult)
@@ -87,6 +87,12 @@ const double ForceAtForceClick = 2;
bool didActivateWebView() const { return m_didActivateWebView; }
#endif

#if PLATFORM(GTK)
enum class IsTouch : bool { No, Yes };

bool isTouchEvent() const { return m_isTouchEvent == IsTouch::Yes; }
#endif

protected:
MouseButton m_button { NoButton };
SyntheticClickType m_syntheticClickType { NoTap };
@@ -105,6 +111,8 @@ const double ForceAtForceClick = 2;
int m_menuTypeForEvent { 0 };
#elif PLATFORM(WIN)
bool m_didActivateWebView { false };
#elif PLATFORM(GTK)
IsTouch m_isTouchEvent { IsTouch::No };
#endif
};

@@ -1,3 +1,34 @@
2022-02-04 Alexander Mikhaylenko <alexm@gnome.org>

[GTK] Crash when starting DND on touchscreen
https://bugs.webkit.org/show_bug.cgi?id=235694

Reviewed by Adrian Perez de Castro.

Drag-n-drop on touch has never worked correctly in GTK, and is usually
just disabled. Do the same thing and ignore it for synthesized mouse
events.

* Shared/NativeWebMouseEvent.h:
* Shared/WebEventConversion.cpp:
(WebKit::WebKit2PlatformMouseEvent::WebKit2PlatformMouseEvent):
* Shared/WebMouseEvent.cpp:
(WebKit::WebMouseEvent::WebMouseEvent):
(WebKit::WebMouseEvent::encode const):
(WebKit::WebMouseEvent::decode):
* Shared/WebMouseEvent.h:
(WebKit::WebMouseEvent::isTouchEvent const):
* Shared/gtk/NativeWebMouseEventGtk.cpp:
(WebKit::NativeWebMouseEvent::NativeWebMouseEvent):
* UIProcess/API/gtk/WebKitWebViewBase.cpp:
(webkitWebViewBaseTouchRelease):
(webkitWebViewBaseTouchDragUpdate):
(webkitWebViewBaseTouchDragEnd):
(webkitWebViewBaseSynthesizeMouseEvent):
* UIProcess/API/gtk/WebKitWebViewBaseInternal.h:
* UIProcess/gtk/PointerLockManager.cpp:
(WebKit::PointerLockManager::handleMotion):

2022-02-04 Christopher Reid <chris.reid@sony.com>

Revert some structured binding workarounds with Clang
@@ -66,7 +66,7 @@ class NativeWebMouseEvent : public WebMouseEvent {
NativeWebMouseEvent(const NativeWebMouseEvent&);
NativeWebMouseEvent(GdkEvent*, int, std::optional<WebCore::FloatSize>);
NativeWebMouseEvent(GdkEvent*, const WebCore::IntPoint&, int, std::optional<WebCore::FloatSize>);
NativeWebMouseEvent(Type, Button, unsigned short buttons, const WebCore::IntPoint& position, const WebCore::IntPoint& globalPosition, int clickCount, OptionSet<Modifier> modifiers, std::optional<WebCore::FloatSize>, WebCore::PointerID, const String& pointerType);
NativeWebMouseEvent(Type, Button, unsigned short buttons, const WebCore::IntPoint& position, const WebCore::IntPoint& globalPosition, int clickCount, OptionSet<Modifier> modifiers, std::optional<WebCore::FloatSize>, WebCore::PointerID, const String& pointerType, WebCore::PlatformMouseEvent::IsTouch isTouchEvent);
explicit NativeWebMouseEvent(const WebCore::IntPoint&);
#elif PLATFORM(IOS_FAMILY)
NativeWebMouseEvent(::WebEvent *);
@@ -111,6 +111,8 @@ class WebKit2PlatformMouseEvent : public WebCore::PlatformMouseEvent {
#if PLATFORM(MAC)
m_eventNumber = webEvent.eventNumber();
m_menuTypeForEvent = webEvent.menuTypeForEvent();
#elif PLATFORM(GTK)
m_isTouchEvent = webEvent.isTouchEvent();
#endif
m_modifierFlags = 0;
if (webEvent.shiftKey())
@@ -35,6 +35,8 @@ WebMouseEvent::WebMouseEvent() = default;

#if PLATFORM(MAC)
WebMouseEvent::WebMouseEvent(Type type, Button button, unsigned short buttons, const IntPoint& positionInView, const IntPoint& globalPosition, float deltaX, float deltaY, float deltaZ, int clickCount, OptionSet<Modifier> modifiers, WallTime timestamp, double force, SyntheticClickType syntheticClickType, int eventNumber, int menuType, GestureWasCancelled gestureWasCancelled)
#elif PLATFORM(GTK)
WebMouseEvent::WebMouseEvent(Type type, Button button, unsigned short buttons, const IntPoint& positionInView, const IntPoint& globalPosition, float deltaX, float deltaY, float deltaZ, int clickCount, OptionSet<Modifier> modifiers, WallTime timestamp, double force, SyntheticClickType syntheticClickType, PlatformMouseEvent::IsTouch isTouchEvent, WebCore::PointerID pointerId, const String& pointerType, GestureWasCancelled gestureWasCancelled)
#else
WebMouseEvent::WebMouseEvent(Type type, Button button, unsigned short buttons, const IntPoint& positionInView, const IntPoint& globalPosition, float deltaX, float deltaY, float deltaZ, int clickCount, OptionSet<Modifier> modifiers, WallTime timestamp, double force, SyntheticClickType syntheticClickType, WebCore::PointerID pointerId, const String& pointerType, GestureWasCancelled gestureWasCancelled)
#endif
@@ -50,6 +52,8 @@ WebMouseEvent::WebMouseEvent(Type type, Button button, unsigned short buttons, c
#if PLATFORM(MAC)
, m_eventNumber(eventNumber)
, m_menuTypeForEvent(menuType)
#elif PLATFORM(GTK)
, m_isTouchEvent(isTouchEvent)
#endif
, m_force(force)
, m_syntheticClickType(syntheticClickType)
@@ -77,6 +81,8 @@ void WebMouseEvent::encode(IPC::Encoder& encoder) const
#if PLATFORM(MAC)
encoder << m_eventNumber;
encoder << m_menuTypeForEvent;
#elif PLATFORM(GTK)
encoder << m_isTouchEvent;
#endif
encoder << m_force;
encoder << m_syntheticClickType;
@@ -111,6 +117,9 @@ bool WebMouseEvent::decode(IPC::Decoder& decoder, WebMouseEvent& result)
return false;
if (!decoder.decode(result.m_menuTypeForEvent))
return false;
#elif PLATFORM(GTK)
if (!decoder.decode(result.m_isTouchEvent))
return false;
#endif
if (!decoder.decode(result.m_force))
return false;
@@ -31,6 +31,7 @@

#include "WebEvent.h"
#include <WebCore/IntPoint.h>
#include <WebCore/PlatformMouseEvent.h>
#include <WebCore/PointerEventTypeNames.h>
#include <WebCore/PointerID.h>

@@ -53,6 +54,8 @@ class WebMouseEvent : public WebEvent {

#if PLATFORM(MAC)
WebMouseEvent(Type, Button, unsigned short buttons, const WebCore::IntPoint& positionInView, const WebCore::IntPoint& globalPosition, float deltaX, float deltaY, float deltaZ, int clickCount, OptionSet<Modifier>, WallTime timestamp, double force, SyntheticClickType = NoTap, int eventNumber = -1, int menuType = 0, GestureWasCancelled = GestureWasCancelled::No);
#elif PLATFORM(GTK)
WebMouseEvent(Type, Button, unsigned short buttons, const WebCore::IntPoint& positionInView, const WebCore::IntPoint& globalPosition, float deltaX, float deltaY, float deltaZ, int clickCount, OptionSet<Modifier>, WallTime timestamp, double force = 0, SyntheticClickType = NoTap, WebCore::PlatformMouseEvent::IsTouch m_isTouchEvent = WebCore::PlatformMouseEvent::IsTouch::No, WebCore::PointerID = WebCore::mousePointerID, const String& pointerType = WebCore::mousePointerEventType(), GestureWasCancelled = GestureWasCancelled::No);
#else
WebMouseEvent(Type, Button, unsigned short buttons, const WebCore::IntPoint& positionInView, const WebCore::IntPoint& globalPosition, float deltaX, float deltaY, float deltaZ, int clickCount, OptionSet<Modifier>, WallTime timestamp, double force = 0, SyntheticClickType = NoTap, WebCore::PointerID = WebCore::mousePointerID, const String& pointerType = WebCore::mousePointerEventType(), GestureWasCancelled = GestureWasCancelled::No);
#endif
@@ -68,6 +71,8 @@ class WebMouseEvent : public WebEvent {
#if PLATFORM(MAC)
int32_t eventNumber() const { return m_eventNumber; }
int32_t menuTypeForEvent() const { return m_menuTypeForEvent; }
#elif PLATFORM(GTK)
WebCore::PlatformMouseEvent::IsTouch isTouchEvent() const { return m_isTouchEvent; }
#endif
double force() const { return m_force; }
SyntheticClickType syntheticClickType() const { return static_cast<SyntheticClickType>(m_syntheticClickType); }
@@ -92,6 +97,8 @@ class WebMouseEvent : public WebEvent {
#if PLATFORM(MAC)
int32_t m_eventNumber { -1 };
int32_t m_menuTypeForEvent { 0 };
#elif PLATFORM(GTK)
WebCore::PlatformMouseEvent::IsTouch m_isTouchEvent { WebCore::PlatformMouseEvent::IsTouch::No };
#endif
double m_force { 0 };
uint32_t m_syntheticClickType { NoTap };
@@ -48,13 +48,13 @@ NativeWebMouseEvent::NativeWebMouseEvent(const WebCore::IntPoint& position)
{
}

NativeWebMouseEvent::NativeWebMouseEvent(Type type, Button button, unsigned short buttons, const WebCore::IntPoint& position, const WebCore::IntPoint& globalPosition, int clickCount, OptionSet<Modifier> modifiers, std::optional<WebCore::FloatSize> delta, WebCore::PointerID pointerId, const String& pointerType)
: WebMouseEvent(type, button, buttons, position, globalPosition, delta.value_or(WebCore::FloatSize()).width(), delta.value_or(WebCore::FloatSize()).height(), 0, clickCount, modifiers, WallTime::now(), 0, NoTap, pointerId, pointerType)
NativeWebMouseEvent::NativeWebMouseEvent(Type type, Button button, unsigned short buttons, const WebCore::IntPoint& position, const WebCore::IntPoint& globalPosition, int clickCount, OptionSet<Modifier> modifiers, std::optional<WebCore::FloatSize> delta, WebCore::PointerID pointerId, const String& pointerType, WebCore::PlatformMouseEvent::IsTouch isTouchEvent)
: WebMouseEvent(type, button, buttons, position, globalPosition, delta.value_or(WebCore::FloatSize()).width(), delta.value_or(WebCore::FloatSize()).height(), 0, clickCount, modifiers, WallTime::now(), 0, NoTap, isTouchEvent, pointerId, pointerType)
{
}

NativeWebMouseEvent::NativeWebMouseEvent(const NativeWebMouseEvent& event)
: WebMouseEvent(event.type(), event.button(), event.buttons(), event.position(), event.globalPosition(), event.deltaX(), event.deltaY(), event.deltaZ(), event.clickCount(), event.modifiers(), event.timestamp(), 0, NoTap, event.pointerId(), event.pointerType())
: WebMouseEvent(event.type(), event.button(), event.buttons(), event.position(), event.globalPosition(), event.deltaX(), event.deltaY(), event.deltaZ(), event.clickCount(), event.modifiers(), event.timestamp(), 0, NoTap, event.isTouchEvent(), event.pointerId(), event.pointerType())
, m_nativeEvent(event.nativeEvent() ? gdk_event_copy(const_cast<GdkEvent*>(event.nativeEvent())) : nullptr)
{
}
@@ -65,6 +65,7 @@
#include <WebCore/NotImplemented.h>
#include <WebCore/PlatformDisplay.h>
#include <WebCore/PlatformKeyboardEvent.h>
#include <WebCore/PlatformMouseEvent.h>
#include <WebCore/PointerEvent.h>
#include <WebCore/RefPtrCairo.h>
#include <WebCore/Region.h>
@@ -1953,9 +1954,9 @@ static void webkitWebViewBaseTouchRelease(WebKitWebViewBase* webViewBase, int nP
}

unsigned modifiers = gtk_event_controller_get_current_event_state(GTK_EVENT_CONTROLLER(gesture));
webkitWebViewBaseSynthesizeMouseEvent(webViewBase, MouseEventType::Motion, 0, 0, x, y, modifiers, nPress, mousePointerEventType());
webkitWebViewBaseSynthesizeMouseEvent(webViewBase, MouseEventType::Press, button, 0, x, y, modifiers, nPress, mousePointerEventType());
webkitWebViewBaseSynthesizeMouseEvent(webViewBase, MouseEventType::Release, button, buttons, x, y, modifiers, nPress, mousePointerEventType());
webkitWebViewBaseSynthesizeMouseEvent(webViewBase, MouseEventType::Motion, 0, 0, x, y, modifiers, nPress, mousePointerEventType(), PlatformMouseEvent::IsTouch::Yes);
webkitWebViewBaseSynthesizeMouseEvent(webViewBase, MouseEventType::Press, button, 0, x, y, modifiers, nPress, mousePointerEventType(), PlatformMouseEvent::IsTouch::Yes);
webkitWebViewBaseSynthesizeMouseEvent(webViewBase, MouseEventType::Release, button, buttons, x, y, modifiers, nPress, mousePointerEventType(), PlatformMouseEvent::IsTouch::Yes);
}

static void webkitWebViewBaseTouchDragBegin(WebKitWebViewBase* webViewBase, gdouble startX, gdouble startY, GtkGesture* gesture)
@@ -1991,14 +1992,14 @@ static void webkitWebViewBaseTouchDragUpdate(WebKitWebViewBase* webViewBase, dou

if (priv->isLongPressed) {
// Drag after long press forwards emulated mouse events (for e.g. text selection)
webkitWebViewBaseSynthesizeMouseEvent(webViewBase, MouseEventType::Motion, 0, 0, x, y, modifiers, 1, mousePointerEventType());
webkitWebViewBaseSynthesizeMouseEvent(webViewBase, MouseEventType::Press, GDK_BUTTON_PRIMARY, 0, x, y, modifiers, 0, mousePointerEventType());
webkitWebViewBaseSynthesizeMouseEvent(webViewBase, MouseEventType::Motion, 0, 0, x, y, modifiers, 1, mousePointerEventType(), PlatformMouseEvent::IsTouch::Yes);
webkitWebViewBaseSynthesizeMouseEvent(webViewBase, MouseEventType::Press, GDK_BUTTON_PRIMARY, 0, x, y, modifiers, 0, mousePointerEventType(), PlatformMouseEvent::IsTouch::Yes);
} else
webkitWebViewBaseSynthesizeWheelEvent(webViewBase, event, 0, 0, x, y, WheelEventPhase::Began, WheelEventPhase::NoPhase, true);
}

if (priv->isLongPressed)
webkitWebViewBaseSynthesizeMouseEvent(webViewBase, MouseEventType::Motion, GDK_BUTTON_PRIMARY, GDK_BUTTON1_MASK, x + offsetX, y + offsetY, modifiers, 0, mousePointerEventType());
webkitWebViewBaseSynthesizeMouseEvent(webViewBase, MouseEventType::Motion, GDK_BUTTON_PRIMARY, GDK_BUTTON1_MASK, x + offsetX, y + offsetY, modifiers, 0, mousePointerEventType(), PlatformMouseEvent::IsTouch::Yes);
else {
double deltaX = priv->dragOffset.x() - offsetX;
double deltaY = priv->dragOffset.y() - offsetY;
@@ -2027,7 +2028,7 @@ static void webkitWebViewBaseTouchDragEnd(WebKitWebViewBase* webViewBase, gdoubl
double x, y;
gtk_gesture_drag_get_start_point(GTK_GESTURE_DRAG(gesture), &x, &y);
unsigned modifiers = gtk_event_controller_get_current_event_state(GTK_EVENT_CONTROLLER(gesture));
webkitWebViewBaseSynthesizeMouseEvent(webViewBase, MouseEventType::Release, GDK_BUTTON_PRIMARY, GDK_BUTTON1_MASK, x + offsetX, y + offsetY, modifiers, 0, mousePointerEventType());
webkitWebViewBaseSynthesizeMouseEvent(webViewBase, MouseEventType::Release, GDK_BUTTON_PRIMARY, GDK_BUTTON1_MASK, x + offsetX, y + offsetY, modifiers, 0, mousePointerEventType(), PlatformMouseEvent::IsTouch::Yes);
}
}

@@ -2819,7 +2820,7 @@ static inline PointerID primaryPointerForType(const String& pointerType)
return mousePointerID;
}

void webkitWebViewBaseSynthesizeMouseEvent(WebKitWebViewBase* webViewBase, MouseEventType type, unsigned button, unsigned short buttons, int x, int y, unsigned modifiers, int clickCount, const String& pointerType)
void webkitWebViewBaseSynthesizeMouseEvent(WebKitWebViewBase* webViewBase, MouseEventType type, unsigned button, unsigned short buttons, int x, int y, unsigned modifiers, int clickCount, const String& pointerType, PlatformMouseEvent::IsTouch isTouchEvent)
{
WebKitWebViewBasePrivate* priv = webViewBase->priv;
if (priv->dialog)
@@ -2904,7 +2905,7 @@ void webkitWebViewBaseSynthesizeMouseEvent(WebKitWebViewBase* webViewBase, Mouse

priv->pageProxy->handleMouseEvent(NativeWebMouseEvent(webEventType, webEventButton, webEventButtons, { x, y },
widgetRootCoords(GTK_WIDGET(webViewBase), x, y), clickCount, toWebKitModifiers(modifiers), movementDelta,
primaryPointerForType(pointerType), pointerType.isNull() ? mousePointerEventType() : pointerType));
primaryPointerForType(pointerType), pointerType.isNull() ? mousePointerEventType() : pointerType, isTouchEvent));
}

void webkitWebViewBaseSynthesizeKeyEvent(WebKitWebViewBase* webViewBase, KeyEventType type, unsigned keyval, unsigned modifiers, ShouldTranslateKeyboardState shouldTranslate)
@@ -26,6 +26,7 @@
#pragma once

#include <WebKit/WKBase.h>
#include <WebCore/PlatformMouseEvent.h>
#include <wtf/text/WTFString.h>

typedef struct _WebKitWebViewBase WebKitWebViewBase;
@@ -37,7 +38,7 @@ struct KeyEvent {
};

enum class MouseEventType { Press, Release, Motion };
WK_EXPORT void webkitWebViewBaseSynthesizeMouseEvent(WebKitWebViewBase*, MouseEventType type, unsigned button, unsigned short buttons, int x, int y, unsigned modifiers, int clickCount, const String& pointerType = "mouse"_s);
WK_EXPORT void webkitWebViewBaseSynthesizeMouseEvent(WebKitWebViewBase*, MouseEventType type, unsigned button, unsigned short buttons, int x, int y, unsigned modifiers, int clickCount, const String& pointerType = "mouse"_s, WebCore::PlatformMouseEvent::IsTouch isTouchEvent = WebCore::PlatformMouseEvent::IsTouch::No);

enum class KeyEventType { Press, Release, Insert };
enum class ShouldTranslateKeyboardState { No, Yes };
@@ -29,6 +29,7 @@
#include "NativeWebMouseEvent.h"
#include "WebPageProxy.h"
#include <WebCore/PlatformDisplay.h>
#include <WebCore/PlatformMouseEvent.h>
#include <WebCore/PointerEvent.h>
#include <WebCore/PointerID.h>
#include <gtk/gtk.h>
@@ -93,7 +94,7 @@ bool PointerLockManager::unlock()

void PointerLockManager::handleMotion(FloatSize&& delta)
{
m_webPage.handleMouseEvent(NativeWebMouseEvent(WebEvent::MouseMove, m_button, m_buttons, IntPoint(m_position), IntPoint(m_initialPoint), 0, m_modifiers, delta, mousePointerID, mousePointerEventType()));
m_webPage.handleMouseEvent(NativeWebMouseEvent(WebEvent::MouseMove, m_button, m_buttons, IntPoint(m_position), IntPoint(m_initialPoint), 0, m_modifiers, delta, mousePointerID, mousePointerEventType(), PlatformMouseEvent::IsTouch::No));
}

} // namespace WebKit
@@ -1,3 +1,12 @@
2022-02-04 Alexander Mikhaylenko <alexm@gnome.org>

[GTK] Crash when starting DND on touchscreen
https://bugs.webkit.org/show_bug.cgi?id=235694

Reviewed by Adrian Perez de Castro.

* TestWebKitAPI/glib/CMakeLists.txt: Define BUILDING_TestWebKit

2022-02-04 Chris Dumez <cdumez@apple.com>

Fix WPT test importer and resync web-platform-tests/workers from upstream
@@ -110,6 +110,7 @@ set(WebKitGLibAPITests_DEFINITIONS
add_library(WebKitGLibAPITestsCore STATIC ${WebKitGLibAPITests_SOURCES})
target_include_directories(WebKitGLibAPITestsCore PUBLIC ${WebKitGLibAPITests_INCLUDE_DIRECTORIES})
target_include_directories(WebKitGLibAPITestsCore SYSTEM PUBLIC ${WebKitGLibAPITests_SYSTEM_INCLUDE_DIRECTORIES})
target_compile_definitions(WebKitGLibAPITestsCore PRIVATE BUILDING_TestWebKit)
target_compile_definitions(WebKitGLibAPITestsCore PUBLIC ${WebKitGLibAPITests_DEFINITIONS})
target_link_libraries(WebKitGLibAPITestsCore ${WebKitGLibAPITestsCore_LIBRARIES})

0 comments on commit e313ef5

Please sign in to comment.