Diff
Modified: trunk/Source/WebCore/ChangeLog (234446 => 234447)
--- trunk/Source/WebCore/ChangeLog 2018-08-01 03:04:40 UTC (rev 234446)
+++ trunk/Source/WebCore/ChangeLog 2018-08-01 03:57:07 UTC (rev 234447)
@@ -1,3 +1,25 @@
+2018-07-31 Alex Christensen <[email protected]>
+
+ 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 Myles C. Maxfield <[email protected]>
[Cocoa] Addressing post-review comments on r234158
Modified: trunk/Source/WebCore/loader/DocumentThreadableLoader.cpp (234446 => 234447)
--- trunk/Source/WebCore/loader/DocumentThreadableLoader.cpp 2018-08-01 03:04:40 UTC (rev 234446)
+++ trunk/Source/WebCore/loader/DocumentThreadableLoader.cpp 2018-08-01 03:57:07 UTC (rev 234447)
@@ -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: trunk/Source/WebCore/platform/RuntimeApplicationChecks.h (234446 => 234447)
--- trunk/Source/WebCore/platform/RuntimeApplicationChecks.h 2018-08-01 03:04:40 UTC (rev 234446)
+++ trunk/Source/WebCore/platform/RuntimeApplicationChecks.h 2018-08-01 03:57:07 UTC (rev 234447)
@@ -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: trunk/Source/WebCore/platform/cocoa/RuntimeApplicationChecksCocoa.mm (234446 => 234447)
--- trunk/Source/WebCore/platform/cocoa/RuntimeApplicationChecksCocoa.mm 2018-08-01 03:04:40 UTC (rev 234446)
+++ trunk/Source/WebCore/platform/cocoa/RuntimeApplicationChecksCocoa.mm 2018-08-01 03:57:07 UTC (rev 234447)
@@ -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: trunk/Source/WebKit/ChangeLog (234446 => 234447)
--- trunk/Source/WebKit/ChangeLog 2018-08-01 03:04:40 UTC (rev 234446)
+++ trunk/Source/WebKit/ChangeLog 2018-08-01 03:57:07 UTC (rev 234447)
@@ -1,3 +1,28 @@
+2018-07-31 Alex Christensen <[email protected]>
+
+ 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-31 Ryosuke Niwa <[email protected]>
Add configuration for automatic process pre-warming
Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.cpp (234446 => 234447)
--- trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.cpp 2018-08-01 03:04:40 UTC (rev 234446)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.cpp 2018-08-01 03:57:07 UTC (rev 234447)
@@ -69,6 +69,7 @@
#if PLATFORM(COCOA)
encoder << parentProcessName;
encoder << uiProcessBundleIdentifier;
+ encoder << uiProcessSDKVersion;
encoder << sourceApplicationBundleIdentifier;
encoder << sourceApplicationSecondaryIdentifier;
#if PLATFORM(IOS)
@@ -183,6 +184,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: trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.h (234446 => 234447)
--- trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.h 2018-08-01 03:04:40 UTC (rev 234446)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.h 2018-08-01 03:57:07 UTC (rev 234447)
@@ -82,6 +82,7 @@
#if PLATFORM(COCOA)
String parentProcessName;
String uiProcessBundleIdentifier;
+ uint32_t uiProcessSDKVersion { 0 };
String sourceApplicationBundleIdentifier;
String sourceApplicationSecondaryIdentifier;
#if PLATFORM(IOS)
Modified: trunk/Source/WebKit/NetworkProcess/cocoa/NetworkProcessCocoa.mm (234446 => 234447)
--- trunk/Source/WebKit/NetworkProcess/cocoa/NetworkProcessCocoa.mm 2018-08-01 03:04:40 UTC (rev 234446)
+++ trunk/Source/WebKit/NetworkProcess/cocoa/NetworkProcessCocoa.mm 2018-08-01 03:57:07 UTC (rev 234447)
@@ -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: trunk/Source/WebKit/Shared/WebProcessCreationParameters.cpp (234446 => 234447)
--- trunk/Source/WebKit/Shared/WebProcessCreationParameters.cpp 2018-08-01 03:04:40 UTC (rev 234446)
+++ trunk/Source/WebKit/Shared/WebProcessCreationParameters.cpp 2018-08-01 03:57:07 UTC (rev 234447)
@@ -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: trunk/Source/WebKit/Shared/WebProcessCreationParameters.h (234446 => 234447)
--- trunk/Source/WebKit/Shared/WebProcessCreationParameters.h 2018-08-01 03:04:40 UTC (rev 234446)
+++ trunk/Source/WebKit/Shared/WebProcessCreationParameters.h 2018-08-01 03:57:07 UTC (rev 234447)
@@ -146,6 +146,7 @@
#if PLATFORM(COCOA)
String uiProcessBundleIdentifier;
+ uint32_t uiProcessSDKVersion { 0 };
#endif
ProcessID presentingApplicationPID { 0 };
Modified: trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm (234446 => 234447)
--- trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm 2018-08-01 03:04:40 UTC (rev 234446)
+++ trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm 2018-08-01 03:57:07 UTC (rev 234447)
@@ -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: trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm (234446 => 234447)
--- trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm 2018-08-01 03:04:40 UTC (rev 234446)
+++ trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm 2018-08-01 03:57:07 UTC (rev 234447)
@@ -124,6 +124,8 @@
#endif
WebCore::setApplicationBundleIdentifier(parameters.uiProcessBundleIdentifier);
+ WebCore::setApplicationSDKVersion(parameters.uiProcessSDKVersion);
+
SessionTracker::setIdentifierBase(parameters.uiProcessBundleIdentifier);
#if ENABLE(SANDBOX_EXTENSIONS)