WebKit Bugzilla
Attachment 358943 Details for
Bug 193366
: REGRESSION (PSON): Firefox app lacks Open in New Tab in menu
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-193366-20190111140223.patch (text/plain), 8.08 KB, created by
Tim Horton
on 2019-01-11 14:02:24 PST
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Tim Horton
Created:
2019-01-11 14:02:24 PST
Size:
8.08 KB
patch
obsolete
>Subversion Revision: 239853 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index 487db82b308d3c4db692ebc64faaf2f251ab7d2f..9d068a2606273de91ba0b3cde06d02973bf79dbc 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,16 @@ >+2019-01-11 Tim Horton <timothy_horton@apple.com> >+ >+ REGRESSION (PSON): Firefox app lacks Open in New Tab in menu >+ https://bugs.webkit.org/show_bug.cgi?id=193366 >+ <rdar://problem/46097212> >+ >+ Reviewed by Simon Fraser. >+ >+ * platform/RuntimeApplicationChecks.h: >+ * platform/cocoa/RuntimeApplicationChecksCocoa.mm: >+ (WebCore::IOSApplication::isFirefox): >+ Add a Firefox Mobile bundle check. >+ > 2019-01-10 Justin Fan <justin_fan@apple.com> > > [WebGPU] WebGPUBindGroup and device::createBindGroup prototype >diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog >index c6d17bbf70a8c724db5ab05db7b200321e6f676e..5406804be62a4e146d00fe2b7d12bab6f1ed1db4 100644 >--- a/Source/WebKit/ChangeLog >+++ b/Source/WebKit/ChangeLog >@@ -1,3 +1,32 @@ >+2019-01-11 Tim Horton <timothy_horton@apple.com> >+ >+ REGRESSION (PSON): Firefox app lacks Open in New Tab in menu >+ https://bugs.webkit.org/show_bug.cgi?id=193366 >+ <rdar://problem/46097212> >+ >+ Reviewed by Simon Fraser. >+ >+ A pair of unrelated changes broke Firefox's use of WKWebView internals >+ to override the long-press menu. Maintain binary compatibility by >+ introducing linked-on-or-after checks. >+ >+ * UIProcess/Cocoa/VersionChecks.h: >+ * UIProcess/WebProcessPool.cpp: >+ (WebKit::WebProcessPool::createWebPage): >+ Disable PSON in Firefox when linked against an SDK where PSON wasn't enabled by default. >+ Because gestures are very stateful, we always swap them out when swapping >+ processes (changing that behavior is fairly risky). Also, we don't always >+ inform the client when we swap processes (only when the process actually crashes), >+ so they currently don't re-adjust the gesture recognizers when a PSON swap occurs. >+ >+ * UIProcess/ios/WKContentView.mm: >+ (-[WKContentView _commonInitializationWithProcessPool:configuration:]): >+ Synchronously install gesture recognizers under -init when linked against >+ an SDK before the version that introduces lazy gesture recognizer installation. >+ r237331 is an optimization that made us lazily install gestures when the >+ view is parented, but Firefox (and potentially other clients) depend >+ on them being installed synchronously in order to find and override them. >+ > 2019-01-10 Jiewen Tan <jiewen_tan@apple.com> > > [WebAuthN] Change the nonce in the CTAP kInit command to weak random values >diff --git a/Source/WebCore/platform/RuntimeApplicationChecks.h b/Source/WebCore/platform/RuntimeApplicationChecks.h >index 3285c53acc4bc4776a85ba7ffe504ba4a1a11601..ba0d46f62e8b26b90b4a9b8bf6dd6b9ca327d02a 100644 >--- a/Source/WebCore/platform/RuntimeApplicationChecks.h >+++ b/Source/WebCore/platform/RuntimeApplicationChecks.h >@@ -90,6 +90,7 @@ WEBCORE_EXPORT bool isTheSecretSocietyHiddenMystery(); > WEBCORE_EXPORT bool isCardiogram(); > WEBCORE_EXPORT bool isNike(); > bool isMoviStarPlus(); >+WEBCORE_EXPORT bool isFirefox(); > > } // IOSApplication > >diff --git a/Source/WebCore/platform/cocoa/RuntimeApplicationChecksCocoa.mm b/Source/WebCore/platform/cocoa/RuntimeApplicationChecksCocoa.mm >index c54b28833c09d06323405c8a9dd4a89ffcdfc9c0..60b2330ed63d989e0ec978def1acc1d2c94f2b48 100644 >--- a/Source/WebCore/platform/cocoa/RuntimeApplicationChecksCocoa.mm >+++ b/Source/WebCore/platform/cocoa/RuntimeApplicationChecksCocoa.mm >@@ -276,7 +276,13 @@ bool IOSApplication::isMoviStarPlus() > static bool isMoviStarPlus = applicationBundleIsEqualTo("com.prisatv.yomvi"_s); > return isMoviStarPlus; > } >- >+ >+bool IOSApplication::isFirefox() >+{ >+ static bool isFirefox = applicationBundleIsEqualTo("org.mozilla.ios.Firefox"_s); >+ return isFirefox; >+} >+ > #endif > > } // namespace WebCore >diff --git a/Source/WebKit/UIProcess/Cocoa/VersionChecks.h b/Source/WebKit/UIProcess/Cocoa/VersionChecks.h >index d369507f31f8b4330f905e1cf4b8290ae8cc50ce..a9c03ce5307bfce48b9f3af9857c7522b9d4a244 100644 >--- a/Source/WebKit/UIProcess/Cocoa/VersionChecks.h >+++ b/Source/WebKit/UIProcess/Cocoa/VersionChecks.h >@@ -27,6 +27,13 @@ > > #import <wtf/spi/darwin/dyldSPI.h> > >+#if USE(APPLE_INTERNAL_SDK) >+#import <WebKitAdditions/VersionChecksAdditions.h> >+#else >+#define DYLD_IOS_VERSION_FIRST_WITH_LAZY_GESTURE_RECOGNIZER_INSTALLATION 0 >+#define DYLD_IOS_VERSION_FIRST_WITH_PROCESS_SWAP_ON_CROSS_SITE_NAVIGATION 0 >+#endif >+ > namespace WebKit { > > enum class SDKVersion : uint32_t { >@@ -41,6 +48,8 @@ enum class SDKVersion : uint32_t { > FirstWhereScrollViewContentInsetsAreNotObscuringInsets = DYLD_IOS_VERSION_12_0, > FirstWhereUIScrollViewDoesNotApplyKeyboardInsetsUnconditionally = DYLD_IOS_VERSION_12_0, > FirstWithMainThreadReleaseAssertionInWebPageProxy = DYLD_IOS_VERSION_12_0, >+ FirstWithLazyGestureRecognizerInstallation = DYLD_IOS_VERSION_FIRST_WITH_LAZY_GESTURE_RECOGNIZER_INSTALLATION, >+ FirstWithProcessSwapOnCrossSiteNavigation = DYLD_IOS_VERSION_FIRST_WITH_PROCESS_SWAP_ON_CROSS_SITE_NAVIGATION, > #elif PLATFORM(MAC) > FirstWithNetworkCache = DYLD_MACOSX_VERSION_10_11, > FirstWithExceptionsForDuplicateCompletionHandlerCalls = DYLD_MACOSX_VERSION_10_13, >diff --git a/Source/WebKit/UIProcess/WebProcessPool.cpp b/Source/WebKit/UIProcess/WebProcessPool.cpp >index 3f1406e4c68c9dc4b04e293316be78ef9a80aff9..2ab783c91b92758be50488435de288d8e70c654b 100644 >--- a/Source/WebKit/UIProcess/WebProcessPool.cpp >+++ b/Source/WebKit/UIProcess/WebProcessPool.cpp >@@ -57,6 +57,7 @@ > #include "TextChecker.h" > #include "UIGamepad.h" > #include "UIGamepadProvider.h" >+#include "VersionChecks.h" > #include "WKContextPrivate.h" > #include "WebAutomationSession.h" > #include "WebBackForwardList.h" >@@ -87,6 +88,7 @@ > #include <WebCore/Process.h> > #include <WebCore/ProcessWarming.h> > #include <WebCore/ResourceRequest.h> >+#include <WebCore/RuntimeApplicationChecks.h> > #include <pal/SessionID.h> > #include <wtf/Language.h> > #include <wtf/MainThread.h> >@@ -1145,7 +1147,14 @@ Ref<WebPageProxy> WebProcessPool::createWebPage(PageClient& pageClient, Ref<API: > #endif > > auto page = process->createWebPage(pageClient, WTFMove(pageConfiguration)); >- m_configuration->setProcessSwapsOnNavigationFromExperimentalFeatures(page->preferences().processSwapOnCrossSiteNavigationEnabled()); >+ >+ bool enableProcessSwapOnCrossSiteNavigation = page->preferences().processSwapOnCrossSiteNavigationEnabled(); >+#if PLATFORM(IOS_FAMILY) >+ if (WebCore::IOSApplication::isFirefox() && !linkedOnOrAfter(WebKit::SDKVersion::FirstWithProcessSwapOnCrossSiteNavigation)) >+ enableProcessSwapOnCrossSiteNavigation = false; >+#endif >+ >+ m_configuration->setProcessSwapsOnNavigationFromExperimentalFeatures(enableProcessSwapOnCrossSiteNavigation); > m_configuration->setShouldCaptureAudioInUIProcess(page->preferences().captureAudioInUIProcessEnabled()); > m_configuration->setShouldCaptureVideoInUIProcess(page->preferences().captureVideoInUIProcessEnabled()); > >diff --git a/Source/WebKit/UIProcess/ios/WKContentView.mm b/Source/WebKit/UIProcess/ios/WKContentView.mm >index eb2aed54d3000080575acd63e56aa8f8482244ea..c27ebcae3b0636957727978aee61c13b7edaa1b8 100644 >--- a/Source/WebKit/UIProcess/ios/WKContentView.mm >+++ b/Source/WebKit/UIProcess/ios/WKContentView.mm >@@ -39,6 +39,7 @@ > #import "RemoteScrollingCoordinatorProxy.h" > #import "SmartMagnificationController.h" > #import "UIKitSPI.h" >+#import "VersionChecks.h" > #import "WKBrowsingContextControllerInternal.h" > #import "WKBrowsingContextGroupPrivate.h" > #import "WKInspectorHighlightView.h" >@@ -219,6 +220,8 @@ - (instancetype)_commonInitializationWithProcessPool:(WebKit::WebProcessPool&)pr > [self addSubview:_fixedClippingView.get()]; > [_fixedClippingView addSubview:_rootContentView.get()]; > >+ if (!linkedOnOrAfter(WebKit::SDKVersion::FirstWithLazyGestureRecognizerInstallation)) >+ [self setupInteraction]; > [self setUserInteractionEnabled:YES]; > > self.layer.hitTestsAsOpaque = YES;
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 193366
:
358940
|
358943
|
358946