diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
index 71a9094..584b6a4 100644
--- a/Source/WebCore/ChangeLog
+++ b/Source/WebCore/ChangeLog
@@ -1,3 +1,24 @@
+2020-04-02  Antoine Quint  <graouts@apple.com>
+
+        Video previews on shutterstock.com don't play when tapped on iPadOS
+        https://bugs.webkit.org/show_bug.cgi?id=209903
+        <rdar://problem/58844166>
+
+        Reviewed by Wenson Hsieh.
+
+        When tapping on a video preview after searching for a video on shutterstock.com, for instance on https://www.shutterstock.com/video/search/people,
+        we correctly enter the hover state thanks to our content observation heuristics, but the <video> preview inserted fails to play and show due to a
+        style rule setting a "display: none" style if the media-query "pointer: coarse" evaluates to true.
+
+        In order to improve this website's behavior on iPadOS, we add a new quirk that prevents the "pointer: coarse" media query from evaluating to true.
+        This new quirk, shouldPreventPointerMediaQueryFromEvaluatingToCoarse(), evaluates to true only for this this website.
+
+        * css/MediaQueryEvaluator.cpp:
+        (WebCore::pointerEvaluate):
+        * page/Quirks.cpp:
+        (WebCore::Quirks::shouldPreventPointerMediaQueryFromEvaluatingToCoarse const):
+        * page/Quirks.h:
+
 2020-04-02  youenn fablet  <youenn@apple.com>
 
         Remove synchronous termination of service workers
diff --git a/Source/WebCore/css/MediaQueryEvaluator.cpp b/Source/WebCore/css/MediaQueryEvaluator.cpp
index 2ac1630..7a3aade 100644
--- a/Source/WebCore/css/MediaQueryEvaluator.cpp
+++ b/Source/WebCore/css/MediaQueryEvaluator.cpp
@@ -43,6 +43,7 @@
 #include "NodeRenderStyle.h"
 #include "Page.h"
 #include "PlatformScreen.h"
+#include "Quirks.h"
 #include "RenderStyle.h"
 #include "RenderView.h"
 #include "Settings.h"
@@ -747,15 +748,19 @@
     return keyword == CSSValueHover;
 }
 
-static bool pointerEvaluate(CSSValue* value, const CSSToLengthConversionData&, Frame&, MediaFeaturePrefix)
+static bool pointerEvaluate(CSSValue* value, const CSSToLengthConversionData&, Frame& frame, MediaFeaturePrefix)
 {
     if (!is<CSSPrimitiveValue>(value))
         return true;
 
     auto keyword = downcast<CSSPrimitiveValue>(*value).valueID();
 #if ENABLE(TOUCH_EVENTS)
-    if (screenIsTouchPrimaryInputDevice())
-        return keyword == CSSValueCoarse;
+    if (screenIsTouchPrimaryInputDevice()) {
+        if (!frame.document() || !frame.document()->quirks().shouldPreventPointerMediaQueryFromEvaluatingToCoarse())
+            return keyword == CSSValueCoarse;
+    }
+#else
+    UNUSED_PARAM(frame);
 #endif
     return keyword == CSSValueFine;
 }
diff --git a/Source/WebCore/page/Quirks.cpp b/Source/WebCore/page/Quirks.cpp
index d978019..5f06b83 100644
--- a/Source/WebCore/page/Quirks.cpp
+++ b/Source/WebCore/page/Quirks.cpp
@@ -426,6 +426,15 @@
 
     return false;
 }
+
+bool Quirks::shouldPreventPointerMediaQueryFromEvaluatingToCoarse() const
+{
+    if (!needsQuirks())
+        return false;
+
+    auto host = m_document->topDocument().url().host();
+    return equalLettersIgnoringASCIICase(host, "shutterstock.com") || host.endsWithIgnoringASCIICase(".shutterstock.com");
+}
 #endif
 
 bool Quirks::shouldAvoidResizingWhenInputViewBoundsChange() const
diff --git a/Source/WebCore/page/Quirks.h b/Source/WebCore/page/Quirks.h
index bb737a0..d6f8574 100644
--- a/Source/WebCore/page/Quirks.h
+++ b/Source/WebCore/page/Quirks.h
@@ -56,6 +56,7 @@
     bool shouldDispatchedSimulatedMouseEventsAssumeDefaultPrevented(EventTarget*) const;
     Optional<Event::IsCancelable> simulatedMouseEventTypeForTarget(EventTarget*) const;
     bool shouldMakeTouchEventNonCancelableForTarget(EventTarget*) const;
+    bool shouldPreventPointerMediaQueryFromEvaluatingToCoarse() const;
 #endif
     bool shouldDisablePointerEventsQuirk() const;
     bool needsInputModeNoneImplicitly(const HTMLElement&) const;
