Title: [234454] branches/safari-606-branch/Source
Revision
234454
Author
bshaf...@apple.com
Date
2018-07-31 23:47:22 -0700 (Tue, 31 Jul 2018)

Log Message

Cherry-pick r234447. rdar://problem/42802126

    REGRESSION (r231107): MoviStar+ launches to a blank black screen
    https://bugs.webkit.org/show_bug.cgi?id=188139

    Reviewed by Brent Fulgham.

    Source/WebCore:

    For this app, revert behavior to how it was before r231107 with a linked-on-or-before check.
    r231107 increased our fetch spec conformance, which we intend to keep.  This makes a low-risk
    targeted fix that will fix the affected app until they update.

    I manually verified this fixes the app.

    * loader/DocumentThreadableLoader.cpp:
    (WebCore::DocumentThreadableLoader::makeCrossOriginAccessRequest):
    * platform/RuntimeApplicationChecks.h:
    * platform/cocoa/RuntimeApplicationChecksCocoa.mm:
    (WebCore::applicationSDKVersionOverride):
    (WebCore::setApplicationSDKVersion):
    (WebCore::applicationSDKVersion):
    (WebCore::IOSApplication::isMoviStarPlus):

    Source/WebKit:

    Add infrastructure to check UIProcess SDK from the WebProcess and NetworkProcess for linked-on-or-after checks.

    * NetworkProcess/NetworkProcessCreationParameters.cpp:
    (WebKit::NetworkProcessCreationParameters::encode const):
    (WebKit::NetworkProcessCreationParameters::decode):
    * NetworkProcess/NetworkProcessCreationParameters.h:
    * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
    (WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):
    * Shared/WebProcessCreationParameters.cpp:
    (WebKit::WebProcessCreationParameters::encode const):
    (WebKit::WebProcessCreationParameters::decode):
    * Shared/WebProcessCreationParameters.h:
    * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
    (WebKit::WebProcessPool::platformInitializeWebProcess):
    (WebKit::WebProcessPool::platformInitializeNetworkProcess):
    * WebProcess/cocoa/WebProcessCocoa.mm:
    (WebKit::WebProcess::platformInitializeWebProcess):

    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234447 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Modified Paths

Diff

Modified: branches/safari-606-branch/Source/WebCore/ChangeLog (234453 => 234454)


--- branches/safari-606-branch/Source/WebCore/ChangeLog	2018-08-01 06:47:16 UTC (rev 234453)
+++ branches/safari-606-branch/Source/WebCore/ChangeLog	2018-08-01 06:47:22 UTC (rev 234454)
@@ -1,5 +1,77 @@
 2018-07-31  Babak Shafiei  <bshaf...@apple.com>
 
+        Cherry-pick r234447. rdar://problem/42802126
+
+    REGRESSION (r231107): MoviStar+ launches to a blank black screen
+    https://bugs.webkit.org/show_bug.cgi?id=188139
+    
+    Reviewed by Brent Fulgham.
+    
+    Source/WebCore:
+    
+    For this app, revert behavior to how it was before r231107 with a linked-on-or-before check.
+    r231107 increased our fetch spec conformance, which we intend to keep.  This makes a low-risk
+    targeted fix that will fix the affected app until they update.  
+    
+    I manually verified this fixes the app.
+    
+    * loader/DocumentThreadableLoader.cpp:
+    (WebCore::DocumentThreadableLoader::makeCrossOriginAccessRequest):
+    * platform/RuntimeApplicationChecks.h:
+    * platform/cocoa/RuntimeApplicationChecksCocoa.mm:
+    (WebCore::applicationSDKVersionOverride):
+    (WebCore::setApplicationSDKVersion):
+    (WebCore::applicationSDKVersion):
+    (WebCore::IOSApplication::isMoviStarPlus):
+    
+    Source/WebKit:
+    
+    Add infrastructure to check UIProcess SDK from the WebProcess and NetworkProcess for linked-on-or-after checks.
+    
+    * NetworkProcess/NetworkProcessCreationParameters.cpp:
+    (WebKit::NetworkProcessCreationParameters::encode const):
+    (WebKit::NetworkProcessCreationParameters::decode):
+    * NetworkProcess/NetworkProcessCreationParameters.h:
+    * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
+    (WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):
+    * Shared/WebProcessCreationParameters.cpp:
+    (WebKit::WebProcessCreationParameters::encode const):
+    (WebKit::WebProcessCreationParameters::decode):
+    * Shared/WebProcessCreationParameters.h:
+    * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
+    (WebKit::WebProcessPool::platformInitializeWebProcess):
+    (WebKit::WebProcessPool::platformInitializeNetworkProcess):
+    * WebProcess/cocoa/WebProcessCocoa.mm:
+    (WebKit::WebProcess::platformInitializeWebProcess):
+    
+    
+    
+    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234447 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+    2018-07-31  Alex Christensen  <achristen...@webkit.org>
+
+            REGRESSION (r231107): MoviStar+ launches to a blank black screen
+            https://bugs.webkit.org/show_bug.cgi?id=188139
+
+            Reviewed by Brent Fulgham.
+
+            For this app, revert behavior to how it was before r231107 with a linked-on-or-before check.
+            r231107 increased our fetch spec conformance, which we intend to keep.  This makes a low-risk
+            targeted fix that will fix the affected app until they update.
+
+            I manually verified this fixes the app.
+
+            * loader/DocumentThreadableLoader.cpp:
+            (WebCore::DocumentThreadableLoader::makeCrossOriginAccessRequest):
+            * platform/RuntimeApplicationChecks.h:
+            * platform/cocoa/RuntimeApplicationChecksCocoa.mm:
+            (WebCore::applicationSDKVersionOverride):
+            (WebCore::setApplicationSDKVersion):
+            (WebCore::applicationSDKVersion):
+            (WebCore::IOSApplication::isMoviStarPlus):
+
+2018-07-31  Babak Shafiei  <bshaf...@apple.com>
+
         Cherry-pick r234432. rdar://problem/42802123
 
     Don't call RenderTheme::platformColorsDidChange() during printing.

Modified: branches/safari-606-branch/Source/WebCore/loader/DocumentThreadableLoader.cpp (234453 => 234454)


--- branches/safari-606-branch/Source/WebCore/loader/DocumentThreadableLoader.cpp	2018-08-01 06:47:16 UTC (rev 234453)
+++ branches/safari-606-branch/Source/WebCore/loader/DocumentThreadableLoader.cpp	2018-08-01 06:47:22 UTC (rev 234454)
@@ -50,6 +50,7 @@
 #include "ResourceError.h"
 #include "ResourceRequest.h"
 #include "ResourceTiming.h"
+#include "RuntimeApplicationChecks.h"
 #include "RuntimeEnabledFeatures.h"
 #include "SchemeRegistry.h"
 #include "SecurityOrigin.h"
@@ -60,6 +61,10 @@
 #include <wtf/Assertions.h>
 #include <wtf/Ref.h>
 
+#if PLATFORM(IOS)
+#include <wtf/spi/darwin/dyldSPI.h>
+#endif
+
 namespace WebCore {
 
 void DocumentThreadableLoader::loadResourceSynchronously(Document& document, ResourceRequest&& request, ThreadableLoaderClient& client, const ThreadableLoaderOptions& options, RefPtr<SecurityOrigin>&& origin, std::unique_ptr<ContentSecurityPolicy>&& contentSecurityPolicy)
@@ -179,7 +184,13 @@
 {
     ASSERT(m_options.mode == FetchOptions::Mode::Cors);
 
-    if ((m_options.preflightPolicy == PreflightPolicy::Consider && isSimpleCrossOriginAccessRequest(request.httpMethod(), request.httpHeaderFields())) || m_options.preflightPolicy == PreflightPolicy::Prevent || shouldPerformSecurityChecks()) {
+#if PLATFORM(IOS)
+    bool needsPreflightQuirk = IOSApplication::isMoviStarPlus() && applicationSDKVersion() < DYLD_IOS_VERSION_12_0 && (m_options.preflightPolicy == PreflightPolicy::Consider || m_options.preflightPolicy == PreflightPolicy::Force);
+#else
+    bool needsPreflightQuirk = false;
+#endif
+
+    if ((m_options.preflightPolicy == PreflightPolicy::Consider && isSimpleCrossOriginAccessRequest(request.httpMethod(), request.httpHeaderFields())) || m_options.preflightPolicy == PreflightPolicy::Prevent || (shouldPerformSecurityChecks() && !needsPreflightQuirk)) {
         if (checkURLSchemeAsCORSEnabled(request.url()))
             makeSimpleCrossOriginAccessRequest(WTFMove(request));
     } else {
@@ -194,7 +205,7 @@
             }
         }
 #endif
-        if (!checkURLSchemeAsCORSEnabled(request.url()))
+        if (!needsPreflightQuirk && !checkURLSchemeAsCORSEnabled(request.url()))
             return;
 
         m_simpleRequest = false;

Modified: branches/safari-606-branch/Source/WebCore/platform/RuntimeApplicationChecks.h (234453 => 234454)


--- branches/safari-606-branch/Source/WebCore/platform/RuntimeApplicationChecks.h	2018-08-01 06:47:16 UTC (rev 234453)
+++ branches/safari-606-branch/Source/WebCore/platform/RuntimeApplicationChecks.h	2018-08-01 06:47:22 UTC (rev 234454)
@@ -42,6 +42,9 @@
 
 bool isInWebProcess();
 
+WEBCORE_EXPORT void setApplicationSDKVersion(uint32_t);
+uint32_t applicationSDKVersion();
+
 WEBCORE_EXPORT void setApplicationBundleIdentifier(const String&);
 String applicationBundleIdentifier();
 
@@ -86,6 +89,7 @@
 WEBCORE_EXPORT bool isTheSecretSocietyHiddenMystery();
 WEBCORE_EXPORT bool isCardiogram();
 WEBCORE_EXPORT bool isNike();
+bool isMoviStarPlus();
 
 } // IOSApplication
 

Modified: branches/safari-606-branch/Source/WebCore/platform/cocoa/RuntimeApplicationChecksCocoa.mm (234453 => 234454)


--- branches/safari-606-branch/Source/WebCore/platform/cocoa/RuntimeApplicationChecksCocoa.mm	2018-08-01 06:47:16 UTC (rev 234453)
+++ branches/safari-606-branch/Source/WebCore/platform/cocoa/RuntimeApplicationChecksCocoa.mm	2018-08-01 06:47:22 UTC (rev 234454)
@@ -31,6 +31,7 @@
 #import <Foundation/NSBundle.h>
 #import <wtf/NeverDestroyed.h>
 #import <wtf/RunLoop.h>
+#import <wtf/spi/darwin/dyldSPI.h>
 #import <wtf/text/WTFString.h>
 
 namespace WebCore {
@@ -65,6 +66,24 @@
     applicationBundleIdentifierOverride() = bundleIdentifier;
 }
 
+static std::optional<uint32_t>& applicationSDKVersionOverride()
+{
+    static NeverDestroyed<std::optional<uint32_t>> version;
+    return version;
+}
+
+void setApplicationSDKVersion(uint32_t version)
+{
+    applicationSDKVersionOverride() = version;
+}
+
+uint32_t applicationSDKVersion()
+{
+    if (applicationSDKVersionOverride())
+        return *applicationSDKVersionOverride();
+    return dyld_get_program_sdk_version();
+}
+
 bool isInWebProcess()
 {
     static bool mainBundleIsWebProcess = [[[NSBundle mainBundle] bundleIdentifier] isEqualToString:@"com.apple.WebKit.WebContent.Development"]
@@ -254,6 +273,12 @@
     return isNike;
 }
 
+bool IOSApplication::isMoviStarPlus()
+{
+    static bool isMoviStarPlus = applicationBundleIsEqualTo("com.prisatv.yomvi"_s);
+    return isMoviStarPlus;
+}
+    
 #endif
 
 } // namespace WebCore

Modified: branches/safari-606-branch/Source/WebKit/ChangeLog (234453 => 234454)


--- branches/safari-606-branch/Source/WebKit/ChangeLog	2018-08-01 06:47:16 UTC (rev 234453)
+++ branches/safari-606-branch/Source/WebKit/ChangeLog	2018-08-01 06:47:22 UTC (rev 234454)
@@ -1,3 +1,78 @@
+2018-07-31  Babak Shafiei  <bshaf...@apple.com>
+
+        Cherry-pick r234447. rdar://problem/42802126
+
+    REGRESSION (r231107): MoviStar+ launches to a blank black screen
+    https://bugs.webkit.org/show_bug.cgi?id=188139
+    
+    Reviewed by Brent Fulgham.
+    
+    Source/WebCore:
+    
+    For this app, revert behavior to how it was before r231107 with a linked-on-or-before check.
+    r231107 increased our fetch spec conformance, which we intend to keep.  This makes a low-risk
+    targeted fix that will fix the affected app until they update.  
+    
+    I manually verified this fixes the app.
+    
+    * loader/DocumentThreadableLoader.cpp:
+    (WebCore::DocumentThreadableLoader::makeCrossOriginAccessRequest):
+    * platform/RuntimeApplicationChecks.h:
+    * platform/cocoa/RuntimeApplicationChecksCocoa.mm:
+    (WebCore::applicationSDKVersionOverride):
+    (WebCore::setApplicationSDKVersion):
+    (WebCore::applicationSDKVersion):
+    (WebCore::IOSApplication::isMoviStarPlus):
+    
+    Source/WebKit:
+    
+    Add infrastructure to check UIProcess SDK from the WebProcess and NetworkProcess for linked-on-or-after checks.
+    
+    * NetworkProcess/NetworkProcessCreationParameters.cpp:
+    (WebKit::NetworkProcessCreationParameters::encode const):
+    (WebKit::NetworkProcessCreationParameters::decode):
+    * NetworkProcess/NetworkProcessCreationParameters.h:
+    * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
+    (WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):
+    * Shared/WebProcessCreationParameters.cpp:
+    (WebKit::WebProcessCreationParameters::encode const):
+    (WebKit::WebProcessCreationParameters::decode):
+    * Shared/WebProcessCreationParameters.h:
+    * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
+    (WebKit::WebProcessPool::platformInitializeWebProcess):
+    (WebKit::WebProcessPool::platformInitializeNetworkProcess):
+    * WebProcess/cocoa/WebProcessCocoa.mm:
+    (WebKit::WebProcess::platformInitializeWebProcess):
+    
+    
+    
+    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234447 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+    2018-07-31  Alex Christensen  <achristen...@webkit.org>
+
+            REGRESSION (r231107): MoviStar+ launches to a blank black screen
+            https://bugs.webkit.org/show_bug.cgi?id=188139
+
+            Reviewed by Brent Fulgham.
+
+            Add infrastructure to check UIProcess SDK from the WebProcess and NetworkProcess for linked-on-or-after checks.
+
+            * NetworkProcess/NetworkProcessCreationParameters.cpp:
+            (WebKit::NetworkProcessCreationParameters::encode const):
+            (WebKit::NetworkProcessCreationParameters::decode):
+            * NetworkProcess/NetworkProcessCreationParameters.h:
+            * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
+            (WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):
+            * Shared/WebProcessCreationParameters.cpp:
+            (WebKit::WebProcessCreationParameters::encode const):
+            (WebKit::WebProcessCreationParameters::decode):
+            * Shared/WebProcessCreationParameters.h:
+            * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
+            (WebKit::WebProcessPool::platformInitializeWebProcess):
+            (WebKit::WebProcessPool::platformInitializeNetworkProcess):
+            * WebProcess/cocoa/WebProcessCocoa.mm:
+            (WebKit::WebProcess::platformInitializeWebProcess):
+
 2018-07-30  Babak Shafiei  <bshaf...@apple.com>
 
         Revert r233926. rdar://problem/42354941

Modified: branches/safari-606-branch/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.cpp (234453 => 234454)


--- branches/safari-606-branch/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.cpp	2018-08-01 06:47:16 UTC (rev 234453)
+++ branches/safari-606-branch/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.cpp	2018-08-01 06:47:22 UTC (rev 234454)
@@ -69,6 +69,7 @@
 #if PLATFORM(COCOA)
     encoder << parentProcessName;
     encoder << uiProcessBundleIdentifier;
+    encoder << uiProcessSDKVersion;
     encoder << sourceApplicationBundleIdentifier;
     encoder << sourceApplicationSecondaryIdentifier;
 #if PLATFORM(IOS)
@@ -184,6 +185,8 @@
         return false;
     if (!decoder.decode(result.uiProcessBundleIdentifier))
         return false;
+    if (!decoder.decode(result.uiProcessSDKVersion))
+        return false;
     if (!decoder.decode(result.sourceApplicationBundleIdentifier))
         return false;
     if (!decoder.decode(result.sourceApplicationSecondaryIdentifier))

Modified: branches/safari-606-branch/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.h (234453 => 234454)


--- branches/safari-606-branch/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.h	2018-08-01 06:47:16 UTC (rev 234453)
+++ branches/safari-606-branch/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.h	2018-08-01 06:47:22 UTC (rev 234454)
@@ -82,6 +82,7 @@
 #if PLATFORM(COCOA)
     String parentProcessName;
     String uiProcessBundleIdentifier;
+    uint32_t uiProcessSDKVersion { 0 };
     String sourceApplicationBundleIdentifier;
     String sourceApplicationSecondaryIdentifier;
 #if PLATFORM(IOS)

Modified: branches/safari-606-branch/Source/WebKit/NetworkProcess/cocoa/NetworkProcessCocoa.mm (234453 => 234454)


--- branches/safari-606-branch/Source/WebKit/NetworkProcess/cocoa/NetworkProcessCocoa.mm	2018-08-01 06:47:16 UTC (rev 234453)
+++ branches/safari-606-branch/Source/WebKit/NetworkProcess/cocoa/NetworkProcessCocoa.mm	2018-08-01 06:47:22 UTC (rev 234454)
@@ -74,6 +74,7 @@
 void NetworkProcess::platformInitializeNetworkProcessCocoa(const NetworkProcessCreationParameters& parameters)
 {
     WebCore::setApplicationBundleIdentifier(parameters.uiProcessBundleIdentifier);
+    WebCore::setApplicationSDKVersion(parameters.uiProcessSDKVersion);
 
 #if PLATFORM(IOS)
     SandboxExtension::consumePermanently(parameters.cookieStorageDirectoryExtensionHandle);

Modified: branches/safari-606-branch/Source/WebKit/Shared/WebProcessCreationParameters.cpp (234453 => 234454)


--- branches/safari-606-branch/Source/WebKit/Shared/WebProcessCreationParameters.cpp	2018-08-01 06:47:16 UTC (rev 234453)
+++ branches/safari-606-branch/Source/WebKit/Shared/WebProcessCreationParameters.cpp	2018-08-01 06:47:22 UTC (rev 234454)
@@ -103,6 +103,7 @@
     encoder << defaultRequestTimeoutInterval;
 #if PLATFORM(COCOA)
     encoder << uiProcessBundleIdentifier;
+    encoder << uiProcessSDKVersion;
 #endif
     encoder << presentingApplicationPID;
 #if PLATFORM(COCOA)
@@ -319,6 +320,8 @@
 #if PLATFORM(COCOA)
     if (!decoder.decode(parameters.uiProcessBundleIdentifier))
         return false;
+    if (!decoder.decode(parameters.uiProcessSDKVersion))
+        return false;
 #endif
     if (!decoder.decode(parameters.presentingApplicationPID))
         return false;

Modified: branches/safari-606-branch/Source/WebKit/Shared/WebProcessCreationParameters.h (234453 => 234454)


--- branches/safari-606-branch/Source/WebKit/Shared/WebProcessCreationParameters.h	2018-08-01 06:47:16 UTC (rev 234453)
+++ branches/safari-606-branch/Source/WebKit/Shared/WebProcessCreationParameters.h	2018-08-01 06:47:22 UTC (rev 234454)
@@ -146,6 +146,7 @@
 
 #if PLATFORM(COCOA)
     String uiProcessBundleIdentifier;
+    uint32_t uiProcessSDKVersion { 0 };
 #endif
 
     ProcessID presentingApplicationPID { 0 };

Modified: branches/safari-606-branch/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm (234453 => 234454)


--- branches/safari-606-branch/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm	2018-08-01 06:47:16 UTC (rev 234453)
+++ branches/safari-606-branch/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm	2018-08-01 06:47:22 UTC (rev 234454)
@@ -52,6 +52,7 @@
 #import <pal/spi/cocoa/NSKeyedArchiverSPI.h>
 #import <sys/param.h>
 #import <wtf/ProcessPrivilege.h>
+#import <wtf/spi/darwin/dyldSPI.h>
 
 #if PLATFORM(IOS)
 #import "WebMemoryPressureHandlerIOS.h"
@@ -205,6 +206,7 @@
     SandboxExtension::createHandleWithoutResolvingPath(parameters.uiProcessBundleResourcePath, SandboxExtension::Type::ReadOnly, parameters.uiProcessBundleResourcePathExtensionHandle);
 
     parameters.uiProcessBundleIdentifier = String([[NSBundle mainBundle] bundleIdentifier]);
+    parameters.uiProcessSDKVersion = dyld_get_program_sdk_version();
 
 #if PLATFORM(IOS)
     if (!m_resolvedPaths.cookieStorageDirectory.isEmpty())
@@ -291,6 +293,7 @@
 {
     parameters.parentProcessName = [[NSProcessInfo processInfo] processName];
     parameters.uiProcessBundleIdentifier = [[NSBundle mainBundle] bundleIdentifier];
+    parameters.uiProcessSDKVersion = dyld_get_program_sdk_version();
 
     NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
 

Modified: branches/safari-606-branch/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm (234453 => 234454)


--- branches/safari-606-branch/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm	2018-08-01 06:47:16 UTC (rev 234453)
+++ branches/safari-606-branch/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm	2018-08-01 06:47:22 UTC (rev 234454)
@@ -123,6 +123,8 @@
 #endif
 
     WebCore::setApplicationBundleIdentifier(parameters.uiProcessBundleIdentifier);
+    WebCore::setApplicationSDKVersion(parameters.uiProcessSDKVersion);
+
     SessionTracker::setIdentifierBase(parameters.uiProcessBundleIdentifier);
 
 #if ENABLE(SANDBOX_EXTENSIONS)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to