diff --git a/Source/WTF/wtf/spi/darwin/dyldSPI.h b/Source/WTF/wtf/spi/darwin/dyldSPI.h
index 805d65a..6564fcb 100644
--- a/Source/WTF/wtf/spi/darwin/dyldSPI.h
+++ b/Source/WTF/wtf/spi/darwin/dyldSPI.h
@@ -41,6 +41,10 @@
 #define DYLD_IOS_VERSION_12_0 0x000C0000
 #endif
 
+#ifndef DYLD_IOS_VERSION_13_0
+#define DYLD_IOS_VERSION_13_0 0x000D0000
+#endif
+
 #ifndef DYLD_MACOSX_VERSION_10_13
 #define DYLD_MACOSX_VERSION_10_13 0x000A0D00
 #endif
@@ -61,6 +65,7 @@
 #define DYLD_IOS_VERSION_11_0 0x000B0000
 #define DYLD_IOS_VERSION_11_3 0x000B0300
 #define DYLD_IOS_VERSION_12_0 0x000C0000
+#define DYLD_IOS_VERSION_13_0 0x000D0000
 
 #define DYLD_MACOSX_VERSION_10_11 0x000A0B00
 #define DYLD_MACOSX_VERSION_10_12 0x000A0C00
diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog
index 4d7c97f..59b8c97 100644
--- a/Source/WebKit/ChangeLog
+++ b/Source/WebKit/ChangeLog
@@ -1,3 +1,26 @@
+2019-06-19  Dean Jackson  <dino@apple.com>
+
+        No menu pop-up when long pressing on a link in Firefox app
+        https://bugs.webkit.org/show_bug.cgi?id=199045
+        <rdar://problem/51422407>
+
+        Reviewed by Tim Horton.
+
+        Add a version check for linking on-or-after iOS 13. When
+        that isn't true, we don't use UIContextMenuInteraction
+        and instead fall back on the legacy UIPreviewItem API.
+
+        * UIProcess/Cocoa/VersionChecks.h: Add FirstThatHasUIContextMenuInteraction.
+        * UIProcess/ios/WKContentViewInteraction.h: 
+        * UIProcess/ios/WKContentViewInteraction.mm:
+        (-[WKContentView _shouldUseContextMenus]): New method to decide if we should
+        use context menus or preview items.
+        (-[WKContentView setupInteraction]): Make the decision at runtime rather than
+        compile time.
+        (-[WKContentView _contentsOfUserInterfaceItem:]): Ditto.
+        (-[WKContentView _registerPreview]): Ditto.
+        (-[WKContentView _unregisterPreview]): Ditto.
+
 2019-06-19  Andy Estes  <aestes@apple.com>
 
         [iOS] Fall back to taking a UIView snapshohot for UITargetedPreviews if InteractionInformationAtPosition does not have an image
diff --git a/Source/WebKit/UIProcess/Cocoa/VersionChecks.h b/Source/WebKit/UIProcess/Cocoa/VersionChecks.h
index d15521d..ed2ac70 100644
--- a/Source/WebKit/UIProcess/Cocoa/VersionChecks.h
+++ b/Source/WebKit/UIProcess/Cocoa/VersionChecks.h
@@ -72,6 +72,7 @@
     FirstThatDecidesPolicyBeforeLoadingQuickLookPreview = DYLD_IOS_VERSION_FIRST_THAT_DECIDES_POLICY_BEFORE_LOADING_QUICK_LOOK_PREVIEW,
     FirstWithExceptionsForRelatedWebViewsUsingDifferentDataStores = DYLD_IOS_VERSION_FIRST_WITH_EXCEPTIONS_FOR_RELATED_WEBVIEWS_USING_DIFFERENT_DATA_STORES,
     FirstWithModernCompabilityModeByDefault = DYLD_IOS_VERSION_FIRST_WITH_MODERN_COMPATIBILITY_MODE_BY_DEFAULT,
+    FirstThatHasUIContextMenuInteraction = DYLD_IOS_VERSION_13_0,
 #elif PLATFORM(MAC)
     FirstWithNetworkCache = DYLD_MACOSX_VERSION_10_11,
     FirstWithExceptionsForDuplicateCompletionHandlerCalls = DYLD_MACOSX_VERSION_10_13,
diff --git a/Source/WebKit/UIProcess/ios/WKContentViewInteraction.h b/Source/WebKit/UIProcess/ios/WKContentViewInteraction.h
index 27dadb8..e96dedb 100644
--- a/Source/WebKit/UIProcess/ios/WKContentViewInteraction.h
+++ b/Source/WebKit/UIProcess/ios/WKContentViewInteraction.h
@@ -251,9 +251,8 @@
     RetainPtr<UIMenu> _contextMenuLegacyMenu;
     BOOL _contextMenuHasRequestedLegacyData;
     RetainPtr<UITargetedPreview> _contextMenuInteractionTargetedPreview;
-#else
-    RetainPtr<UIPreviewItemController> _previewItemController;
 #endif
+    RetainPtr<UIPreviewItemController> _previewItemController;
 #endif
 
     std::unique_ptr<WebKit::SmartMagnificationController> _smartMagnificationController;
@@ -537,10 +536,11 @@
 
 #if HAVE(LINK_PREVIEW)
 #if USE(UICONTEXTMENU)
-@interface WKContentView (WKInteractionPreview) <UIContextMenuInteractionDelegate>
+@interface WKContentView (WKInteractionPreview) <UIContextMenuInteractionDelegate, UIPreviewItemDelegate>
 #else
 @interface WKContentView (WKInteractionPreview) <UIPreviewItemDelegate>
 #endif
+- (bool)_shouldUseContextMenus;
 - (void)_registerPreview;
 - (void)_unregisterPreview;
 @end
diff --git a/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm b/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm
index 0398202..3111a48 100644
--- a/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm
+++ b/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm
@@ -42,6 +42,7 @@
 #import "SmartMagnificationController.h"
 #import "TextInputSPI.h"
 #import "UIKitSPI.h"
+#import "VersionChecks.h"
 #import "WKActionSheetAssistant.h"
 #import "WKContextMenuElementInfoInternal.h"
 #import "WKDatePickerViewController.h"
@@ -768,9 +769,11 @@
     [_highlightLongPressGestureRecognizer setDelay:highlightDelay];
     [_highlightLongPressGestureRecognizer setDelegate:self];
 
-#if HAVE(LINK_PREVIEW) && !USE(UICONTEXTMENU)
-    [self addGestureRecognizer:_highlightLongPressGestureRecognizer.get()];
-    [self _createAndConfigureLongPressGestureRecognizer];
+#if HAVE(LINK_PREVIEW)
+    if (![self _shouldUseContextMenus]) {
+        [self addGestureRecognizer:_highlightLongPressGestureRecognizer.get()];
+        [self _createAndConfigureLongPressGestureRecognizer];
+    }
 #endif
 
 #if ENABLE(DATA_INTERACTION)
@@ -7367,12 +7370,11 @@
 
 #if HAVE(LINK_PREVIEW)
     if ([userInterfaceItem isEqualToString:@"linkPreviewPopoverContents"]) {
-#if USE(UICONTEXTMENU)
-        return @{ userInterfaceItem: @{ @"pageURL": WTF::userVisibleString(_positionInformation.url) } };
-#else
+        if ([self _shouldUseContextMenus])
+            return @{ userInterfaceItem: @{ @"pageURL": WTF::userVisibleString(_positionInformation.url) } };
+
         NSString *url = [_previewItemController previewData][UIPreviewDataLink];
         return @{ userInterfaceItem: @{ @"pageURL": url } };
-#endif
     }
 #endif
 
@@ -7411,35 +7413,68 @@
     return nil;
 }
 
-#if USE(UICONTEXTMENU)
-
 @implementation WKContentView (WKInteractionPreview)
 
+- (bool)_shouldUseContextMenus
+{
+#if USE(UICONTEXTMENU)
+    return linkedOnOrAfter(WebKit::SDKVersion::FirstThatHasUIContextMenuInteraction);
+#endif
+    return false;
+}
+
 - (void)_registerPreview
 {
     if (!_webView.allowsLinkPreview)
         return;
 
-    _contextMenuInteraction = adoptNS([[UIContextMenuInteraction alloc] initWithDelegate:self]);
-    _contextMenuHasRequestedLegacyData = NO;
-    [self addInteraction:_contextMenuInteraction.get()];
+#if USE(UICONTEXTMENU)
+    if ([self _shouldUseContextMenus]) {
+        _contextMenuInteraction = adoptNS([[UIContextMenuInteraction alloc] initWithDelegate:self]);
+        _contextMenuHasRequestedLegacyData = NO;
+        [self addInteraction:_contextMenuInteraction.get()];
 
-    [self _showLinkPreviewsPreferenceChanged:nil];
+        [self _showLinkPreviewsPreferenceChanged:nil];
 
-    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_showLinkPreviewsPreferenceChanged:) name:webkitShowLinkPreviewsPreferenceChangedNotification object:nil];
+        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_showLinkPreviewsPreferenceChanged:) name:webkitShowLinkPreviewsPreferenceChangedNotification object:nil];
+
+        return;
+    }
+#endif
+
+    if (!_webView.allowsLinkPreview)
+        return;
+
+    _previewItemController = adoptNS([[UIPreviewItemController alloc] initWithView:self]);
+    [_previewItemController setDelegate:self];
+    _previewGestureRecognizer = _previewItemController.get().presentationGestureRecognizer;
+    if ([_previewItemController respondsToSelector:@selector(presentationSecondaryGestureRecognizer)])
+        _previewSecondaryGestureRecognizer = _previewItemController.get().presentationSecondaryGestureRecognizer;
 }
 
 - (void)_unregisterPreview
 {
-    if (!_contextMenuInteraction)
+#if USE(UICONTEXTMENU)
+    if ([self _shouldUseContextMenus]) {
+        if (!_contextMenuInteraction)
+            return;
+
+        [self removeInteraction:_contextMenuInteraction.get()];
+        _contextMenuInteraction = nil;
+
+        [[NSNotificationCenter defaultCenter] removeObserver:self name:webkitShowLinkPreviewsPreferenceChangedNotification object:nil];
         return;
+    }
+#endif
 
-    [self removeInteraction:_contextMenuInteraction.get()];
-    _contextMenuInteraction = nil;
-
-    [[NSNotificationCenter defaultCenter] removeObserver:self name:webkitShowLinkPreviewsPreferenceChangedNotification object:nil];
+    [_previewItemController setDelegate:nil];
+    _previewGestureRecognizer = nil;
+    _previewSecondaryGestureRecognizer = nil;
+    _previewItemController = nil;
 }
 
+#if USE(UICONTEXTMENU)
+
 - (void)_showLinkPreviewsPreferenceChanged:(NSNotification *)notification
 {
     Boolean keyExistsAndHasValidFormat = false;
@@ -8004,31 +8039,7 @@
     _contextMenuInteractionTargetedPreview = nil;
 }
 
-@end
-
-#else
-
-@implementation WKContentView (WKInteractionPreview)
-
-- (void)_registerPreview
-{
-    if (!_webView.allowsLinkPreview)
-        return;
-
-    _previewItemController = adoptNS([[UIPreviewItemController alloc] initWithView:self]);
-    [_previewItemController setDelegate:self];
-    _previewGestureRecognizer = _previewItemController.get().presentationGestureRecognizer;
-    if ([_previewItemController respondsToSelector:@selector(presentationSecondaryGestureRecognizer)])
-        _previewSecondaryGestureRecognizer = _previewItemController.get().presentationSecondaryGestureRecognizer;
-}
-
-- (void)_unregisterPreview
-{
-    [_previewItemController setDelegate:nil];
-    _previewGestureRecognizer = nil;
-    _previewSecondaryGestureRecognizer = nil;
-    _previewItemController = nil;
-}
+#endif // USE(UICONTEXTMENU)
 
 - (BOOL)_interactionShouldBeginFromPreviewItemController:(UIPreviewItemController *)controller forPosition:(CGPoint)position
 {
@@ -8354,8 +8365,6 @@
 
 @end
 
-#endif // USE(UICONTEXTMENU)
-
 #endif // HAVE(LINK_PREVIEW)
 
 // UITextRange, UITextPosition and UITextSelectionRect implementations for WK2
