Changeset 234447 in webkit


Ignore:
Timestamp:
Jul 31, 2018 8:57:07 PM (6 years ago)
Author:
achristensen@apple.com
Message:

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):

Location:
trunk/Source
Files:
12 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r234444 r234447  
     12018-07-31  Alex Christensen  <achristensen@webkit.org>
     2
     3        REGRESSION (r231107): MoviStar+ launches to a blank black screen
     4        https://bugs.webkit.org/show_bug.cgi?id=188139
     5
     6        Reviewed by Brent Fulgham.
     7
     8        For this app, revert behavior to how it was before r231107 with a linked-on-or-before check.
     9        r231107 increased our fetch spec conformance, which we intend to keep.  This makes a low-risk
     10        targeted fix that will fix the affected app until they update. 
     11
     12        I manually verified this fixes the app.
     13
     14        * loader/DocumentThreadableLoader.cpp:
     15        (WebCore::DocumentThreadableLoader::makeCrossOriginAccessRequest):
     16        * platform/RuntimeApplicationChecks.h:
     17        * platform/cocoa/RuntimeApplicationChecksCocoa.mm:
     18        (WebCore::applicationSDKVersionOverride):
     19        (WebCore::setApplicationSDKVersion):
     20        (WebCore::applicationSDKVersion):
     21        (WebCore::IOSApplication::isMoviStarPlus):
     22
    1232018-07-31  Myles C. Maxfield  <mmaxfield@apple.com>
    224
  • trunk/Source/WebCore/loader/DocumentThreadableLoader.cpp

    r233720 r234447  
    5151#include "ResourceRequest.h"
    5252#include "ResourceTiming.h"
     53#include "RuntimeApplicationChecks.h"
    5354#include "RuntimeEnabledFeatures.h"
    5455#include "SchemeRegistry.h"
     
    6061#include <wtf/Assertions.h>
    6162#include <wtf/Ref.h>
     63
     64#if PLATFORM(IOS)
     65#include <wtf/spi/darwin/dyldSPI.h>
     66#endif
    6267
    6368namespace WebCore {
     
    180185    ASSERT(m_options.mode == FetchOptions::Mode::Cors);
    181186
    182     if ((m_options.preflightPolicy == PreflightPolicy::Consider && isSimpleCrossOriginAccessRequest(request.httpMethod(), request.httpHeaderFields())) || m_options.preflightPolicy == PreflightPolicy::Prevent || shouldPerformSecurityChecks()) {
     187#if PLATFORM(IOS)
     188    bool needsPreflightQuirk = IOSApplication::isMoviStarPlus() && applicationSDKVersion() < DYLD_IOS_VERSION_12_0 && (m_options.preflightPolicy == PreflightPolicy::Consider || m_options.preflightPolicy == PreflightPolicy::Force);
     189#else
     190    bool needsPreflightQuirk = false;
     191#endif
     192
     193    if ((m_options.preflightPolicy == PreflightPolicy::Consider && isSimpleCrossOriginAccessRequest(request.httpMethod(), request.httpHeaderFields())) || m_options.preflightPolicy == PreflightPolicy::Prevent || (shouldPerformSecurityChecks() && !needsPreflightQuirk)) {
    183194        if (checkURLSchemeAsCORSEnabled(request.url()))
    184195            makeSimpleCrossOriginAccessRequest(WTFMove(request));
     
    195206        }
    196207#endif
    197         if (!checkURLSchemeAsCORSEnabled(request.url()))
     208        if (!needsPreflightQuirk && !checkURLSchemeAsCORSEnabled(request.url()))
    198209            return;
    199210
  • trunk/Source/WebCore/platform/RuntimeApplicationChecks.h

    r233466 r234447  
    4242
    4343bool isInWebProcess();
     44
     45WEBCORE_EXPORT void setApplicationSDKVersion(uint32_t);
     46uint32_t applicationSDKVersion();
    4447
    4548WEBCORE_EXPORT void setApplicationBundleIdentifier(const String&);
     
    8790WEBCORE_EXPORT bool isCardiogram();
    8891WEBCORE_EXPORT bool isNike();
     92bool isMoviStarPlus();
    8993
    9094} // IOSApplication
  • trunk/Source/WebCore/platform/cocoa/RuntimeApplicationChecksCocoa.mm

    r233466 r234447  
    3232#import <wtf/NeverDestroyed.h>
    3333#import <wtf/RunLoop.h>
     34#import <wtf/spi/darwin/dyldSPI.h>
    3435#import <wtf/text/WTFString.h>
    3536
     
    6667}
    6768
     69static std::optional<uint32_t>& applicationSDKVersionOverride()
     70{
     71    static NeverDestroyed<std::optional<uint32_t>> version;
     72    return version;
     73}
     74
     75void setApplicationSDKVersion(uint32_t version)
     76{
     77    applicationSDKVersionOverride() = version;
     78}
     79
     80uint32_t applicationSDKVersion()
     81{
     82    if (applicationSDKVersionOverride())
     83        return *applicationSDKVersionOverride();
     84    return dyld_get_program_sdk_version();
     85}
     86
    6887bool isInWebProcess()
    6988{
     
    255274}
    256275
     276bool IOSApplication::isMoviStarPlus()
     277{
     278    static bool isMoviStarPlus = applicationBundleIsEqualTo("com.prisatv.yomvi"_s);
     279    return isMoviStarPlus;
     280}
     281   
    257282#endif
    258283
  • trunk/Source/WebKit/ChangeLog

    r234445 r234447  
     12018-07-31  Alex Christensen  <achristensen@webkit.org>
     2
     3        REGRESSION (r231107): MoviStar+ launches to a blank black screen
     4        https://bugs.webkit.org/show_bug.cgi?id=188139
     5
     6        Reviewed by Brent Fulgham.
     7
     8        Add infrastructure to check UIProcess SDK from the WebProcess and NetworkProcess for linked-on-or-after checks.
     9
     10        * NetworkProcess/NetworkProcessCreationParameters.cpp:
     11        (WebKit::NetworkProcessCreationParameters::encode const):
     12        (WebKit::NetworkProcessCreationParameters::decode):
     13        * NetworkProcess/NetworkProcessCreationParameters.h:
     14        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
     15        (WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):
     16        * Shared/WebProcessCreationParameters.cpp:
     17        (WebKit::WebProcessCreationParameters::encode const):
     18        (WebKit::WebProcessCreationParameters::decode):
     19        * Shared/WebProcessCreationParameters.h:
     20        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
     21        (WebKit::WebProcessPool::platformInitializeWebProcess):
     22        (WebKit::WebProcessPool::platformInitializeNetworkProcess):
     23        * WebProcess/cocoa/WebProcessCocoa.mm:
     24        (WebKit::WebProcess::platformInitializeWebProcess):
     25
    1262018-07-31  Ryosuke Niwa  <rniwa@webkit.org>
    227
  • trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.cpp

    r234440 r234447  
    7070    encoder << parentProcessName;
    7171    encoder << uiProcessBundleIdentifier;
     72    encoder << uiProcessSDKVersion;
    7273    encoder << sourceApplicationBundleIdentifier;
    7374    encoder << sourceApplicationSecondaryIdentifier;
     
    184185    if (!decoder.decode(result.uiProcessBundleIdentifier))
    185186        return false;
     187    if (!decoder.decode(result.uiProcessSDKVersion))
     188        return false;
    186189    if (!decoder.decode(result.sourceApplicationBundleIdentifier))
    187190        return false;
  • trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.h

    r234440 r234447  
    8383    String parentProcessName;
    8484    String uiProcessBundleIdentifier;
     85    uint32_t uiProcessSDKVersion { 0 };
    8586    String sourceApplicationBundleIdentifier;
    8687    String sourceApplicationSecondaryIdentifier;
  • trunk/Source/WebKit/NetworkProcess/cocoa/NetworkProcessCocoa.mm

    r234440 r234447  
    7575{
    7676    WebCore::setApplicationBundleIdentifier(parameters.uiProcessBundleIdentifier);
     77    WebCore::setApplicationSDKVersion(parameters.uiProcessSDKVersion);
    7778
    7879#if PLATFORM(IOS)
  • trunk/Source/WebKit/Shared/WebProcessCreationParameters.cpp

    r232535 r234447  
    104104#if PLATFORM(COCOA)
    105105    encoder << uiProcessBundleIdentifier;
     106    encoder << uiProcessSDKVersion;
    106107#endif
    107108    encoder << presentingApplicationPID;
     
    320321    if (!decoder.decode(parameters.uiProcessBundleIdentifier))
    321322        return false;
     323    if (!decoder.decode(parameters.uiProcessSDKVersion))
     324        return false;
    322325#endif
    323326    if (!decoder.decode(parameters.presentingApplicationPID))
  • trunk/Source/WebKit/Shared/WebProcessCreationParameters.h

    r232535 r234447  
    147147#if PLATFORM(COCOA)
    148148    String uiProcessBundleIdentifier;
     149    uint32_t uiProcessSDKVersion { 0 };
    149150#endif
    150151
  • trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm

    r234440 r234447  
    5353#import <sys/param.h>
    5454#import <wtf/ProcessPrivilege.h>
     55#import <wtf/spi/darwin/dyldSPI.h>
    5556
    5657#if PLATFORM(IOS)
     
    206207
    207208    parameters.uiProcessBundleIdentifier = String([[NSBundle mainBundle] bundleIdentifier]);
     209    parameters.uiProcessSDKVersion = dyld_get_program_sdk_version();
    208210
    209211#if PLATFORM(IOS)
     
    292294    parameters.parentProcessName = [[NSProcessInfo processInfo] processName];
    293295    parameters.uiProcessBundleIdentifier = [[NSBundle mainBundle] bundleIdentifier];
     296    parameters.uiProcessSDKVersion = dyld_get_program_sdk_version();
    294297
    295298    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
  • trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm

    r234382 r234447  
    125125
    126126    WebCore::setApplicationBundleIdentifier(parameters.uiProcessBundleIdentifier);
     127    WebCore::setApplicationSDKVersion(parameters.uiProcessSDKVersion);
     128
    127129    SessionTracker::setIdentifierBase(parameters.uiProcessBundleIdentifier);
    128130
Note: See TracChangeset for help on using the changeset viewer.