Changeset 232082 in webkit


Ignore:
Timestamp:
May 22, 2018 3:41:06 PM (6 years ago)
Author:
Chris Dumez
Message:

Regression(AsyncPolicyDelegates): Box.app login Window is blank
https://bugs.webkit.org/show_bug.cgi?id=185832
<rdar://problem/40307871>

Reviewed by Geoffrey Garen.

Source/WebKit:

Moved WeakObjCPtr.h header from WebKit/ to wtf/ so that it can be used in
WebKitLegacy code.

  • UIProcess/API/Cocoa/WKBrowsingContextController.mm:
  • UIProcess/API/Cocoa/WKBrowsingContextControllerInternal.h:
  • UIProcess/API/Cocoa/WKConnection.mm:
  • UIProcess/API/Cocoa/WKHTTPCookieStore.mm:
  • UIProcess/API/Cocoa/WKProcessGroup.mm:
  • UIProcess/API/Cocoa/WKProcessPool.mm:
  • UIProcess/API/Cocoa/WKScriptMessage.mm:
  • UIProcess/API/Cocoa/WKWebView.mm:
  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
  • UIProcess/API/Cocoa/_WKAutomationSession.mm:
  • UIProcess/API/Cocoa/_WKDownload.mm:
  • UIProcess/API/Cocoa/_WKElementAction.mm:
  • UIProcess/ApplicationStateTracker.h:
  • UIProcess/Cocoa/AutomationClient.h:
  • UIProcess/Cocoa/AutomationSessionClient.h:
  • UIProcess/Cocoa/DiagnosticLoggingClient.h:
  • UIProcess/Cocoa/DownloadClient.h:
  • UIProcess/Cocoa/FindClient.h:
  • UIProcess/Cocoa/FullscreenClient.h:
  • UIProcess/Cocoa/IconLoadingDelegate.h:
  • UIProcess/Cocoa/NavigationState.h:
  • UIProcess/Cocoa/UIDelegate.h:
  • UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
  • UIProcess/Cocoa/WKReloadFrameErrorRecoveryAttempter.mm:
  • UIProcess/Cocoa/WebViewImpl.h:
  • UIProcess/ios/ViewGestureControllerIOS.mm:
  • UIProcess/ios/WKActionSheetAssistant.mm:
  • UIProcess/ios/WKContentViewInteraction.mm:
  • UIProcess/ios/WKPDFView.mm:

(-[WKPDFView web_setContentProviderData:suggestedFilename:]):

  • UIProcess/ios/WKScrollView.mm:
  • UIProcess/mac/WKInspectorViewController.mm:
  • UIProcess/mac/WKInspectorWKWebView.mm:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:

Source/WebKitLegacy/mac:

We used to have a bug where where we would fail to wait for the policy decision for
the navigation response from the client and the load would keep going, racing with
the client's policy decision. If the client did not respond in time, the behavior
would be the same as "Use" policy action.

Box.app fails to make any policy decision in its decidePolicyForMIMEType delegate
but the load happened to proceed anyway due to our bug. Now that we've fixed the
WebKit bug, however, the load would hang because the completion handler for the
decidePolicyForNavigationResponse would never get called.

To work around the issue, I made the policy listener weak on the WebFrameLoaderClient
instead of retaining it. If the policy listener object gets destroyed because getting
resolved, we now use "Use" policy action in its dealloc function to maintain previous
behavior.

  • WebCoreSupport/WebFrameLoaderClient.h:
  • WebCoreSupport/WebFrameLoaderClient.mm:

(WebFrameLoaderClient::cancelPolicyCheck):
(WebFrameLoaderClient::setUpPolicyListener):
(-[WebFramePolicyListener dealloc]):

Source/WTF:

Moved WeakObjCPtr.h from WebKit2 to WTF with RetainPtr.h, so that it can be used
in WebKitLegacy code.

  • WTF.xcodeproj/project.pbxproj:
  • wtf/WeakObjCPtr.h: Renamed from Source/WebKit/Shared/mac/WeakObjCPtr.h.

Tools:

Add API test coverage.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit/cocoa/WeakObjCPtr.mm:
  • TestWebKitAPI/Tests/mac/NoPolicyDelegateResponse.mm: Added.

(-[NoPolicyDelegateDecisionDelegate webView:decidePolicyForNavigationAction:request:frame:decisionListener:]):
(-[NoPolicyDelegateDecisionDelegate webView:decidePolicyForMIMEType:request:frame:decisionListener:]):
(-[NoPolicyDelegateDecisionDelegate webView:didFinishLoadForFrame:]):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/cocoa/TestWKWebView.mm:

(-[WKWebView _isBackground]):

Location:
trunk
Files:
1 added
46 edited
1 moved

Legend:

Unmodified
Added
Removed
  • trunk/Source/WTF/ChangeLog

    r232074 r232082  
     12018-05-22  Chris Dumez  <cdumez@apple.com>
     2
     3        Regression(AsyncPolicyDelegates): Box.app login Window is blank
     4        https://bugs.webkit.org/show_bug.cgi?id=185832
     5        <rdar://problem/40307871>
     6
     7        Reviewed by Geoffrey Garen.
     8
     9        Moved WeakObjCPtr.h from WebKit2 to WTF with RetainPtr.h, so that it can be used
     10        in WebKitLegacy code.
     11
     12        * WTF.xcodeproj/project.pbxproj:
     13        * wtf/WeakObjCPtr.h: Renamed from Source/WebKit/Shared/mac/WeakObjCPtr.h.
     14
    1152018-05-22  Filip Pizlo  <fpizlo@apple.com>
    216
  • trunk/Source/WTF/WTF.xcodeproj/project.pbxproj

    r232000 r232082  
    397397                8134013715B092FD001FF0B8 /* Base64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Base64.h; sourceTree = "<group>"; };
    398398                83A8AC3D1FABBE94002064AC /* ObjectIdentifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ObjectIdentifier.h; sourceTree = "<group>"; };
     399                83ABB3C020B3823200BA3306 /* WeakObjCPtr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WeakObjCPtr.h; sourceTree = "<group>"; };
    399400                83F2BADE1CF9524E003E99C3 /* Function.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Function.h; sourceTree = "<group>"; };
    400401                83FBA93119DF459700F30ADB /* TypeCasts.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TypeCasts.h; sourceTree = "<group>"; };
     
    11181119                                0F66B2881DC97BAB004A1D3F /* WallTime.cpp */,
    11191120                                0F66B2891DC97BAB004A1D3F /* WallTime.h */,
     1121                                83ABB3C020B3823200BA3306 /* WeakObjCPtr.h */,
    11201122                                974CFC8D16A4F327006D5404 /* WeakPtr.h */,
    11211123                                0F3501631BB258C800F0A2A3 /* WeakRandom.h */,
  • trunk/Source/WTF/wtf/WeakObjCPtr.h

    r232081 r232082  
    11/*
    2  * Copyright (C) 2013 Apple Inc. All rights reserved.
     2 * Copyright (C) 2013-2018 Apple Inc. All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    2424 */
    2525
    26 #ifndef WeakObjCPtr_h
    27 #define WeakObjCPtr_h
     26#pragma once
    2827
    2928#include <objc/runtime.h>
     
    4342#endif
    4443
    45 namespace WebKit {
     44namespace WTF {
    4645
    4746template<typename T> class WeakObjCPtr {
     
    102101};
    103102
    104 } // namespace WebKit
     103} // namespace WTF
    105104
    106 #endif // WeakObjCPtr_h
     105using WTF::WeakObjCPtr;
  • trunk/Source/WebKit/ChangeLog

    r232079 r232082  
     12018-05-22  Chris Dumez  <cdumez@apple.com>
     2
     3        Regression(AsyncPolicyDelegates): Box.app login Window is blank
     4        https://bugs.webkit.org/show_bug.cgi?id=185832
     5        <rdar://problem/40307871>
     6
     7        Reviewed by Geoffrey Garen.
     8
     9        Moved WeakObjCPtr.h header from WebKit/ to wtf/ so that it can be used in
     10        WebKitLegacy code.
     11
     12        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
     13        * UIProcess/API/Cocoa/WKBrowsingContextControllerInternal.h:
     14        * UIProcess/API/Cocoa/WKConnection.mm:
     15        * UIProcess/API/Cocoa/WKHTTPCookieStore.mm:
     16        * UIProcess/API/Cocoa/WKProcessGroup.mm:
     17        * UIProcess/API/Cocoa/WKProcessPool.mm:
     18        * UIProcess/API/Cocoa/WKScriptMessage.mm:
     19        * UIProcess/API/Cocoa/WKWebView.mm:
     20        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
     21        * UIProcess/API/Cocoa/_WKAutomationSession.mm:
     22        * UIProcess/API/Cocoa/_WKDownload.mm:
     23        * UIProcess/API/Cocoa/_WKElementAction.mm:
     24        * UIProcess/ApplicationStateTracker.h:
     25        * UIProcess/Cocoa/AutomationClient.h:
     26        * UIProcess/Cocoa/AutomationSessionClient.h:
     27        * UIProcess/Cocoa/DiagnosticLoggingClient.h:
     28        * UIProcess/Cocoa/DownloadClient.h:
     29        * UIProcess/Cocoa/FindClient.h:
     30        * UIProcess/Cocoa/FullscreenClient.h:
     31        * UIProcess/Cocoa/IconLoadingDelegate.h:
     32        * UIProcess/Cocoa/NavigationState.h:
     33        * UIProcess/Cocoa/UIDelegate.h:
     34        * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
     35        * UIProcess/Cocoa/WKReloadFrameErrorRecoveryAttempter.mm:
     36        * UIProcess/Cocoa/WebViewImpl.h:
     37        * UIProcess/ios/ViewGestureControllerIOS.mm:
     38        * UIProcess/ios/WKActionSheetAssistant.mm:
     39        * UIProcess/ios/WKContentViewInteraction.mm:
     40        * UIProcess/ios/WKPDFView.mm:
     41        (-[WKPDFView web_setContentProviderData:suggestedFilename:]):
     42        * UIProcess/ios/WKScrollView.mm:
     43        * UIProcess/mac/WKInspectorViewController.mm:
     44        * UIProcess/mac/WKInspectorWKWebView.mm:
     45        * WebKit.xcodeproj/project.pbxproj:
     46        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
     47
    1482018-05-22  Sihui Liu  <sihui_liu@apple.com>
    249
  • trunk/Source/WebKit/UIProcess/API/Cocoa/WKBrowsingContextController.mm

    r229926 r232082  
    5353#import "WKURLResponseNS.h"
    5454#import "WKViewInternal.h"
    55 #import "WeakObjCPtr.h"
    5655#import "WebCertificateInfo.h"
    5756#import "WebPageProxy.h"
     
    6059#import "_WKRemoteObjectRegistryInternal.h"
    6160#import <wtf/NeverDestroyed.h>
     61#import <wtf/WeakObjCPtr.h>
    6262
    6363using namespace WebCore;
  • trunk/Source/WebKit/UIProcess/API/Cocoa/WKBrowsingContextControllerInternal.h

    r162719 r232082  
    2828#if WK_API_ENABLED
    2929
    30 #import "WeakObjCPtr.h"
    3130#import "WebPageProxy.h"
     31#import <wtf/WeakObjCPtr.h>
    3232
    3333@interface WKBrowsingContextController () {
    3434@package
    35     WebKit::WeakObjCPtr<id <WKBrowsingContextHistoryDelegate>> _historyDelegate;
     35    WeakObjCPtr<id <WKBrowsingContextHistoryDelegate>> _historyDelegate;
    3636}
    3737
  • trunk/Source/WebKit/UIProcess/API/Cocoa/WKConnection.mm

    r224729 r232082  
    3333#import "WKSharedAPICast.h"
    3434#import "WKStringCF.h"
    35 #import "WeakObjCPtr.h"
    3635#import <wtf/RetainPtr.h>
     36#import <wtf/WeakObjCPtr.h>
    3737#import <wtf/text/WTFString.h>
    3838
  • trunk/Source/WebKit/UIProcess/API/Cocoa/WKHTTPCookieStore.mm

    r224619 r232082  
    3030
    3131#import "HTTPCookieAcceptPolicy.h"
    32 #import "WeakObjCPtr.h"
    3332#import <WebCore/Cookie.h>
    3433#import <WebCore/URL.h>
     
    3635#import <wtf/HashMap.h>
    3736#import <wtf/RetainPtr.h>
     37#import <wtf/WeakObjCPtr.h>
    3838
    3939static NSArray<NSHTTPCookie *> *coreCookiesToNSCookies(const Vector<WebCore::Cookie>& coreCookies)
     
    6060    }
    6161
    62     WebKit::WeakObjCPtr<id<WKHTTPCookieStoreObserver>> m_observer;
     62    WeakObjCPtr<id<WKHTTPCookieStoreObserver>> m_observer;
    6363};
    6464
  • trunk/Source/WebKit/UIProcess/API/Cocoa/WKProcessGroup.mm

    r220856 r232082  
    4141#import "WKRetainPtr.h"
    4242#import "WKStringCF.h"
    43 #import "WeakObjCPtr.h"
    4443#import "WebCertificateInfo.h"
    4544#import "WebFrameProxy.h"
    4645#import "WebProcessPool.h"
    4746#import <wtf/RetainPtr.h>
     47#import <wtf/WeakObjCPtr.h>
    4848
    4949#if PLATFORM(IOS)
  • trunk/Source/WebKit/UIProcess/API/Cocoa/WKProcessPool.mm

    r231321 r232082  
    3737#import "UIGamepadProvider.h"
    3838#import "WKObject.h"
    39 #import "WeakObjCPtr.h"
    4039#import "WebCertificateInfo.h"
    4140#import "WebCookieManagerProxy.h"
     
    5150#import <pal/spi/cocoa/NSKeyedArchiverSPI.h>
    5251#import <wtf/RetainPtr.h>
     52#import <wtf/WeakObjCPtr.h>
    5353
    5454#if PLATFORM(IOS)
     
    6060
    6161@implementation WKProcessPool {
    62     WebKit::WeakObjCPtr<id <_WKAutomationDelegate>> _automationDelegate;
    63     WebKit::WeakObjCPtr<id <_WKDownloadDelegate>> _downloadDelegate;
     62    WeakObjCPtr<id <_WKAutomationDelegate>> _automationDelegate;
     63    WeakObjCPtr<id <_WKDownloadDelegate>> _downloadDelegate;
    6464
    6565    RetainPtr<_WKAutomationSession> _automationSession;
  • trunk/Source/WebKit/UIProcess/API/Cocoa/WKScriptMessage.mm

    r172846 r232082  
    3030
    3131#import "WKFrameInfo.h"
    32 #import "WeakObjCPtr.h"
    3332#import <wtf/RetainPtr.h>
     33#import <wtf/WeakObjCPtr.h>
    3434
    3535@implementation WKScriptMessage {
    3636    RetainPtr<id> _body;
    37     WebKit::WeakObjCPtr<WKWebView> _webView;
     37    WeakObjCPtr<WKWebView> _webView;
    3838    RetainPtr<WKFrameInfo> _frameInfo;
    3939    RetainPtr<NSString> _name;
  • trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm

    r231979 r232082  
    267267    _WKRenderingProgressEvents _observedRenderingProgressEvents;
    268268
    269     WebKit::WeakObjCPtr<id <_WKInputDelegate>> _inputDelegate;
     269    WeakObjCPtr<id <_WKInputDelegate>> _inputDelegate;
    270270
    271271#if PLATFORM(IOS)
  • trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfiguration.mm

    r228712 r232082  
    3838#import "WKWebView.h"
    3939#import "WKWebViewContentProviderRegistry.h"
    40 #import "WeakObjCPtr.h"
    4140#import "WebKit2Initialize.h"
    4241#import "_WKVisitedLinkStore.h"
     
    4645#import <WebCore/URLParser.h>
    4746#import <wtf/RetainPtr.h>
     47#import <wtf/WeakObjCPtr.h>
    4848
    4949#if PLATFORM(IOS)
     
    110110    LazyInitialized<RetainPtr<_WKVisitedLinkStore>> _visitedLinkStore;
    111111    LazyInitialized<RetainPtr<WKWebsiteDataStore>> _websiteDataStore;
    112     WebKit::WeakObjCPtr<WKWebView> _relatedWebView;
    113     WebKit::WeakObjCPtr<WKWebView> _alternateWebViewForNavigationGestures;
     112    WeakObjCPtr<WKWebView> _relatedWebView;
     113    WeakObjCPtr<WKWebView> _alternateWebViewForNavigationGestures;
    114114    RetainPtr<NSString> _groupIdentifier;
    115115    LazyInitialized<RetainPtr<NSString>> _applicationNameForUserAgent;
  • trunk/Source/WebKit/UIProcess/API/Cocoa/_WKAutomationSession.mm

    r230675 r232082  
    3232#import "WKAPICast.h"
    3333#import "WKProcessPool.h"
    34 #import "WeakObjCPtr.h"
    3534#import "WebAutomationSession.h"
    3635#import "_WKAutomationSessionConfiguration.h"
    3736#import "_WKAutomationSessionDelegate.h"
     37#import <wtf/WeakObjCPtr.h>
    3838
    3939@implementation _WKAutomationSession {
    4040    RetainPtr<_WKAutomationSessionConfiguration> _configuration;
    41     WebKit::WeakObjCPtr<id <_WKAutomationSessionDelegate>> _delegate;
     41    WeakObjCPtr<id <_WKAutomationSessionDelegate>> _delegate;
    4242}
    4343
  • trunk/Source/WebKit/UIProcess/API/Cocoa/_WKDownload.mm

    r222468 r232082  
    3131#import "DownloadProxy.h"
    3232#import "WKWebViewInternal.h"
    33 #import "WeakObjCPtr.h"
     33#import <wtf/WeakObjCPtr.h>
    3434
    3535@implementation _WKDownload {
  • trunk/Source/WebKit/UIProcess/API/Cocoa/_WKElementAction.mm

    r219191 r232082  
    3434#import "WKActionSheetAssistant.h"
    3535#import "WKContentViewInteraction.h"
    36 #import "WeakObjCPtr.h"
    3736#import "_WKActivatedElementInfoInternal.h"
    3837#import <WebCore/LocalizedStrings.h>
    3938#import <wtf/RetainPtr.h>
    4039#import <wtf/SoftLinking.h>
     40#import <wtf/WeakObjCPtr.h>
    4141#import <wtf/text/WTFString.h>
    4242
     
    5353    WKElementActionHandlerInternal _actionHandler;
    5454    WKElementActionDismissalHandler _dismissalHandler;
    55     WebKit::WeakObjCPtr<WKActionSheetAssistant> _defaultActionSheetAssistant;
     55    WeakObjCPtr<WKActionSheetAssistant> _defaultActionSheetAssistant;
    5656}
    5757
  • trunk/Source/WebKit/UIProcess/ApplicationStateTracker.h

    r203371 r232082  
    2929#if PLATFORM(IOS)
    3030
    31 #import "WeakObjCPtr.h"
    3231#import <wtf/Forward.h>
     32#import <wtf/WeakObjCPtr.h>
    3333#import <wtf/WeakPtr.h>
    3434
  • trunk/Source/WebKit/UIProcess/Cocoa/AutomationClient.h

    r221204 r232082  
    3131
    3232#import "APIAutomationClient.h"
    33 #import "WeakObjCPtr.h"
    3433#import <JavaScriptCore/RemoteInspector.h>
     34#import <wtf/WeakObjCPtr.h>
    3535
    3636@class WKProcessPool;
  • trunk/Source/WebKit/UIProcess/Cocoa/AutomationSessionClient.h

    r229998 r232082  
    3232
    3333#import "APIAutomationSessionClient.h"
    34 #import "WeakObjCPtr.h"
     34#import <wtf/WeakObjCPtr.h>
    3535
    3636@protocol _WKAutomationSessionDelegate;
  • trunk/Source/WebKit/UIProcess/Cocoa/DiagnosticLoggingClient.h

    r211870 r232082  
    3232
    3333#import "APIDiagnosticLoggingClient.h"
    34 #import "WeakObjCPtr.h"
    3534#import <WebCore/DiagnosticLoggingResultType.h>
     35#import <wtf/WeakObjCPtr.h>
    3636
    3737@class WKWebView;
  • trunk/Source/WebKit/UIProcess/Cocoa/DownloadClient.h

    r231824 r232082  
    3232#import "APIDownloadClient.h"
    3333#import "ProcessThrottler.h"
    34 #import "WeakObjCPtr.h"
     34#import <wtf/WeakObjCPtr.h>
    3535
    3636@protocol _WKDownloadDelegate;
  • trunk/Source/WebKit/UIProcess/Cocoa/FindClient.h

    r214893 r232082  
    3232
    3333#import "APIFindClient.h"
    34 #import "WeakObjCPtr.h"
     34#import <wtf/WeakObjCPtr.h>
    3535
    3636@class WKWebView;
  • trunk/Source/WebKit/UIProcess/Cocoa/FullscreenClient.h

    r224558 r232082  
    3131
    3232#import "APIFullscreenClient.h"
    33 #import "WeakObjCPtr.h"
    3433#import <wtf/RetainPtr.h>
     34#import <wtf/WeakObjCPtr.h>
    3535
    3636#if PLATFORM(MAC)
  • trunk/Source/WebKit/UIProcess/Cocoa/IconLoadingDelegate.h

    r218457 r232082  
    3131
    3232#import "APIIconLoadingClient.h"
    33 #import "WeakObjCPtr.h"
    3433#import <wtf/RetainPtr.h>
     34#import <wtf/WeakObjCPtr.h>
    3535
    3636@class WKWebView;
  • trunk/Source/WebKit/UIProcess/Cocoa/NavigationState.h

    r231676 r232082  
    3535#import "ProcessTerminationReason.h"
    3636#import "ProcessThrottler.h"
    37 #import "WeakObjCPtr.h"
    3837#import <wtf/RetainPtr.h>
    3938#import <wtf/RunLoop.h>
     39#import <wtf/WeakObjCPtr.h>
    4040
    4141@class WKWebView;
  • trunk/Source/WebKit/UIProcess/Cocoa/SystemPreviewControllerCocoa.mm

    r231893 r232082  
    3030
    3131#import "APIUIClient.h"
    32 #import "WeakObjCPtr.h"
    3332#import "WebPageProxy.h"
    3433#import <MobileCoreServices/MobileCoreServices.h>
     
    3736#import <pal/spi/ios/QuickLookSPI.h>
    3837#import <wtf/SoftLinking.h>
     38#import <wtf/WeakObjCPtr.h>
    3939
    4040#if USE(APPLE_INTERNAL_SDK)
     
    8888    [_item setUseLoadingTimeout:NO];
    8989
    90     WebKit::WeakObjCPtr<_WKPreviewControllerDataSource> weakSelf { self };
     90    WeakObjCPtr<_WKPreviewControllerDataSource> weakSelf { self };
    9191    [_itemProvider registerItemForTypeIdentifier:contentType loadHandler:[weakSelf = WTFMove(weakSelf)] (NSItemProviderCompletionHandler completionHandler, Class expectedValueClass, NSDictionary * options) {
    9292        if (auto strongSelf = weakSelf.get())
  • trunk/Source/WebKit/UIProcess/Cocoa/UIDelegate.h

    r231457 r232082  
    3232#import "APIContextMenuClient.h"
    3333#import "APIUIClient.h"
    34 #import "WeakObjCPtr.h"
    3534#import <wtf/RetainPtr.h>
     35#import <wtf/WeakObjCPtr.h>
    3636
    3737@class _WKActivatedElementInfo;
  • trunk/Source/WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.mm

    r230269 r232082  
    3434#import "VideoFullscreenManagerMessages.h"
    3535#import "VideoFullscreenManagerProxyMessages.h"
    36 #import "WeakObjCPtr.h"
    3736#import "WebPageProxy.h"
    3837#import "WebProcessProxy.h"
     
    4241#import <pal/spi/cocoa/QuartzCoreSPI.h>
    4342#import <wtf/MachSendRight.h>
     43#import <wtf/WeakObjCPtr.h>
    4444
    4545#if PLATFORM(IOS)
  • trunk/Source/WebKit/UIProcess/Cocoa/WKReloadFrameErrorRecoveryAttempter.mm

    r222059 r232082  
    3232#import "_WKFrameHandleInternal.h"
    3333#import "WKWebViewInternal.h"
    34 #import "WeakObjCPtr.h"
    3534#import "WebFrameProxy.h"
    3635#import "WebPageProxy.h"
    3736#import "WebProcessProxy.h"
    3837#import <wtf/RetainPtr.h>
     38#import <wtf/WeakObjCPtr.h>
    3939
    4040@interface WKReloadFrameErrorRecoveryAttempter () <_WKErrorRecoveryAttempting>
     
    4242
    4343@implementation WKReloadFrameErrorRecoveryAttempter {
    44     WebKit::WeakObjCPtr<WKWebView> _webView;
     44    WeakObjCPtr<WKWebView> _webView;
    4545    RetainPtr<_WKFrameHandle> _frameHandle;
    4646    String _urlString;
  • trunk/Source/WebKit/UIProcess/Cocoa/WebViewImpl.h

    r231371 r232082  
    3131#include "WKDragDestinationAction.h"
    3232#include "WKLayoutMode.h"
    33 #include "WeakObjCPtr.h"
    3433#include "WebPageProxy.h"
    3534#include "_WKOverlayScrollbarStyle.h"
     
    3938#include <wtf/BlockPtr.h>
    4039#include <wtf/RetainPtr.h>
     40#include <wtf/WeakObjCPtr.h>
    4141#include <wtf/WeakPtr.h>
    4242#include <wtf/text/WTFString.h>
  • trunk/Source/WebKit/UIProcess/ios/ViewGestureControllerIOS.mm

    r229926 r232082  
    3636#import "WKBackForwardListItemInternal.h"
    3737#import "WKWebViewInternal.h"
    38 #import "WeakObjCPtr.h"
    3938#import "WebBackForwardList.h"
    4039#import "WebPageGroup.h"
     
    4544#import <WebCore/IOSurface.h>
    4645#import <pal/spi/cocoa/QuartzCoreSPI.h>
     46#import <wtf/WeakObjCPtr.h>
    4747
    4848using namespace WebCore;
     
    6464    RetainPtr<_UINavigationInteractiveTransitionBase> _backTransitionController;
    6565    RetainPtr<_UINavigationInteractiveTransitionBase> _forwardTransitionController;
    66     WebKit::WeakObjCPtr<UIView> _gestureRecognizerView;
     66    WeakObjCPtr<UIView> _gestureRecognizerView;
    6767}
    6868
  • trunk/Source/WebKit/UIProcess/ios/WKActionSheetAssistant.mm

    r224819 r232082  
    3636#import "WKContentViewInteraction.h"
    3737#import "WKNSURLExtras.h"
    38 #import "WeakObjCPtr.h"
    3938#import "WebPageProxy.h"
    4039#import "_WKActivatedElementInfoInternal.h"
     
    4645#import <WebCore/WebCoreNSURLExtras.h>
    4746#import <wtf/SoftLinking.h>
     47#import <wtf/WeakObjCPtr.h>
    4848#import <wtf/text/WTFString.h>
    4949
  • trunk/Source/WebKit/UIProcess/ios/WKApplicationStateTrackingView.mm

    r230383 r232082  
    3131#import "ApplicationStateTracker.h"
    3232#import "WKWebViewInternal.h"
    33 #import "WeakObjCPtr.h"
    3433#import "WebPageProxy.h"
    3534#import <wtf/RetainPtr.h>
     35#import <wtf/WeakObjCPtr.h>
    3636
    3737@implementation WKApplicationStateTrackingView {
    38     WebKit::WeakObjCPtr<WKWebView> _webView;
     38    WeakObjCPtr<WKWebView> _webView;
    3939    std::unique_ptr<WebKit::ApplicationStateTracker> _applicationStateTracker;
    4040}
  • trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm

    r232040 r232082  
    6161#import "WKWebViewInternal.h"
    6262#import "WKWebViewPrivate.h"
    63 #import "WeakObjCPtr.h"
    6463#import "WebEvent.h"
    6564#import "WebIOSEventFactory.h"
     
    9796#import <wtf/SetForScope.h>
    9897#import <wtf/SoftLinking.h>
     98#import <wtf/WeakObjCPtr.h>
    9999#import <wtf/text/TextStream.h>
    100100
  • trunk/Source/WebKit/UIProcess/ios/WKLegacyPDFView.mm

    r231729 r232082  
    3838#import "WKPasswordView.h"
    3939#import "WKWebViewInternal.h"
    40 #import "WeakObjCPtr.h"
    4140#import "WebPageProxy.h"
    4241#import "_WKFindDelegate.h"
     
    4948#import <wtf/RetainPtr.h>
    5049#import <wtf/Vector.h>
     50#import <wtf/WeakObjCPtr.h>
    5151
    5252// All of UIPDFPage* are deprecated, so just ignore deprecated declarations
  • trunk/Source/WebKit/UIProcess/ios/WKPDFView.mm

    r231729 r232082  
    3333#import "WKActionSheetAssistant.h"
    3434#import "WKWebViewInternal.h"
    35 #import "WeakObjCPtr.h"
    3635#import "WebPageProxy.h"
    3736#import "_WKWebViewPrintFormatterInternal.h"
     
    4140#import <wtf/MainThread.h>
    4241#import <wtf/RetainPtr.h>
     42#import <wtf/WeakObjCPtr.h>
    4343
    4444@interface WKPDFView () <PDFHostViewControllerDelegate, WKActionSheetAssistantDelegate>
     
    6262    WebKit::InteractionInformationAtPosition _positionInformation;
    6363    RetainPtr<NSString> _suggestedFilename;
    64     WebKit::WeakObjCPtr<WKWebView> _webView;
     64    WeakObjCPtr<WKWebView> _webView;
    6565}
    6666
     
    9797    _suggestedFilename = adoptNS([filename copy]);
    9898
    99     WebKit::WeakObjCPtr<WKPDFView> weakSelf = self;
     99    WeakObjCPtr<WKPDFView> weakSelf = self;
    100100    [PDFHostViewController createHostView:[self, weakSelf = WTFMove(weakSelf)](PDFHostViewController * _Nullable hostViewController) {
    101101        ASSERT(isMainThread());
  • trunk/Source/WebKit/UIProcess/ios/WKScrollView.mm

    r228253 r232082  
    3030
    3131#import "WKWebViewInternal.h"
    32 #import "WeakObjCPtr.h"
    3332#import <pal/spi/cg/CoreGraphicsSPI.h>
     33#import <wtf/WeakObjCPtr.h>
    3434
    3535using namespace WebKit;
  • trunk/Source/WebKit/UIProcess/mac/WKInspectorViewController.mm

    r229715 r232082  
    4040#import "WKWebViewConfigurationPrivate.h"
    4141#import "WKWebViewPrivate.h"
    42 #import "WeakObjCPtr.h"
    4342#import "WebInspectorProxy.h"
    4443#import "WebInspectorUtilities.h"
    4544#import "WebPageProxy.h"
     45#import <wtf/WeakObjCPtr.h>
    4646
    4747using namespace WebKit;
     
    5353    WebPageProxy* _inspectedPage;
    5454    RetainPtr<WKInspectorWKWebView> _webView;
    55     WebKit::WeakObjCPtr<id <WKInspectorViewControllerDelegate>> _delegate;
     55    WeakObjCPtr<id <WKInspectorViewControllerDelegate>> _delegate;
    5656}
    5757
  • trunk/Source/WebKit/UIProcess/mac/WKInspectorWKWebView.mm

    r225907 r232082  
    3030
    3131#import "WKInspectorPrivateMac.h"
    32 #import "WeakObjCPtr.h"
     32#import <wtf/WeakObjCPtr.h>
    3333
    3434@implementation WKInspectorWKWebView {
    35     WebKit::WeakObjCPtr<id <WKInspectorWKWebViewDelegate>> _inspectorWKWebViewDelegate;
     35    WeakObjCPtr<id <WKInspectorWKWebViewDelegate>> _inspectorWKWebViewDelegate;
    3636}
    3737
  • trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj

    r231916 r232082  
    364364                1AA83F6C1A5B63FF00026EC6 /* WebDatabaseProvider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AA83F6A1A5B63FF00026EC6 /* WebDatabaseProvider.cpp */; };
    365365                1AA83F6D1A5B63FF00026EC6 /* WebDatabaseProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AA83F6B1A5B63FF00026EC6 /* WebDatabaseProvider.h */; };
    366                 1AA9BAE1184FFAC7003B6BC6 /* WeakObjCPtr.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AA9BAE0184FFAC7003B6BC6 /* WeakObjCPtr.h */; settings = {ATTRIBUTES = (Private, ); }; };
    367366                1AAB0379185A7C6A00EDF501 /* MessageSender.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AAB0377185A7C6A00EDF501 /* MessageSender.cpp */; };
    368367                1AAB037A185A7C6A00EDF501 /* MessageSender.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AAB0378185A7C6A00EDF501 /* MessageSender.h */; };
     
    27022701                1AA83F6A1A5B63FF00026EC6 /* WebDatabaseProvider.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebDatabaseProvider.cpp; sourceTree = "<group>"; };
    27032702                1AA83F6B1A5B63FF00026EC6 /* WebDatabaseProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebDatabaseProvider.h; sourceTree = "<group>"; };
    2704                 1AA9BAE0184FFAC7003B6BC6 /* WeakObjCPtr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WeakObjCPtr.h; sourceTree = "<group>"; };
    27052703                1AAB0377185A7C6A00EDF501 /* MessageSender.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MessageSender.cpp; sourceTree = "<group>"; };
    27062704                1AAB0378185A7C6A00EDF501 /* MessageSender.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MessageSender.h; sourceTree = "<group>"; };
     
    76917689                                511F8A77138B460900A95F44 /* SecItemShimLibrary.h */,
    76927690                                511F8A78138B460900A95F44 /* SecItemShimLibrary.mm */,
    7693                                 1AA9BAE0184FFAC7003B6BC6 /* WeakObjCPtr.h */,
    76947691                                BCE23262122C6CF300D5C35A /* WebCoreArgumentCodersMac.mm */,
    76957692                                BC111B5B112F629800337BAB /* WebEventFactory.h */,
     
    92239220                                1AF4CEF018BC481800BC2D34 /* VisitedLinkTableController.h in Headers */,
    92249221                                1A8E7D3D18C15149005A702A /* VisitedLinkTableControllerMessages.h in Headers */,
    9225                                 1AA9BAE1184FFAC7003B6BC6 /* WeakObjCPtr.h in Headers */,
    92269222                                CEDA12E3152CD1B300D9E08D /* WebAlternativeTextClient.h in Headers */,
    92279223                                9955A6EC1C7980C200EB6A93 /* WebAutomationSession.h in Headers */,
  • trunk/Source/WebKit/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm

    r230211 r232082  
    5454#import "WKWebProcessPlugInRangeHandleInternal.h"
    5555#import "WKWebProcessPlugInScriptWorldInternal.h"
    56 #import "WeakObjCPtr.h"
    5756#import "WebPage.h"
    5857#import "WebProcess.h"
     
    6665#import <WebCore/HTMLInputElement.h>
    6766#import <pal/spi/cocoa/NSKeyedArchiverSPI.h>
     67#import <wtf/WeakObjCPtr.h>
    6868
    6969using namespace WebCore;
  • trunk/Source/WebKitLegacy/mac/ChangeLog

    r232069 r232082  
     12018-05-22  Chris Dumez  <cdumez@apple.com>
     2
     3        Regression(AsyncPolicyDelegates): Box.app login Window is blank
     4        https://bugs.webkit.org/show_bug.cgi?id=185832
     5        <rdar://problem/40307871>
     6
     7        Reviewed by Geoffrey Garen.
     8
     9        We used to have a bug where where we would fail to wait for the policy decision for
     10        the navigation response from the client and the load would keep going, racing with
     11        the client's policy decision. If the client did not respond in time, the behavior
     12        would be the same as "Use" policy action.
     13
     14        Box.app fails to make any policy decision in its decidePolicyForMIMEType delegate
     15        but the load happened to proceed anyway due to our bug. Now that we've fixed the
     16        WebKit bug, however, the load would hang because the completion handler for the
     17        decidePolicyForNavigationResponse would never get called.
     18
     19        To work around the issue, I made the policy listener weak on the WebFrameLoaderClient
     20        instead of retaining it. If the policy listener object gets destroyed because getting
     21        resolved, we now use "Use" policy action in its dealloc function to maintain previous
     22        behavior.
     23
     24        * WebCoreSupport/WebFrameLoaderClient.h:
     25        * WebCoreSupport/WebFrameLoaderClient.mm:
     26        (WebFrameLoaderClient::cancelPolicyCheck):
     27        (WebFrameLoaderClient::setUpPolicyListener):
     28        (-[WebFramePolicyListener dealloc]):
     29
    1302018-05-22  Ryan Haddad  <ryanhaddad@apple.com>
    231
  • trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.h

    r230721 r232082  
    3232#import <wtf/HashMap.h>
    3333#import <wtf/RetainPtr.h>
     34#import <wtf/WeakObjCPtr.h>
    3435
    3536@class WebDownload;
     
    261262    RetainPtr<WebFrame> m_webFrame;
    262263
    263     RetainPtr<WebFramePolicyListener> m_policyListener;
     264    WeakObjCPtr<WebFramePolicyListener> m_policyListener;
    264265};
  • trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.mm

    r230721 r232082  
    915915void WebFrameLoaderClient::cancelPolicyCheck()
    916916{
     917    if (!m_policyListener)
     918        return;
     919
    917920    [m_policyListener invalidate];
    918     m_policyListener = nullptr;
     921    m_policyListener = nil;
    919922}
    920923
     
    15251528    [m_policyListener invalidate];
    15261529
     1530    RetainPtr<WebFramePolicyListener> policyListener;
    15271531#if HAVE(APP_LINKS)
    15281532    if (appLinkURL)
    1529         m_policyListener = adoptNS([[WebFramePolicyListener alloc] initWithFrame:core(m_webFrame.get()) policyFunction:WTFMove(function) appLinkURL:appLinkURL]);
     1533        policyListener = adoptNS([[WebFramePolicyListener alloc] initWithFrame:core(m_webFrame.get()) policyFunction:WTFMove(function) appLinkURL:appLinkURL]);
    15301534    else
    15311535#endif
    1532         m_policyListener = adoptNS([[WebFramePolicyListener alloc] initWithFrame:core(m_webFrame.get()) policyFunction:WTFMove(function)]);
    1533 
    1534     return m_policyListener;
     1536        policyListener = adoptNS([[WebFramePolicyListener alloc] initWithFrame:core(m_webFrame.get()) policyFunction:WTFMove(function)]);
     1537
     1538    m_policyListener = policyListener.get();
     1539
     1540    return policyListener;
    15351541}
    15361542
     
    24272433        return;
    24282434
     2435    // If the app did not respond before the listener is destroyed, then we let the load
     2436    // proceed with policy "Use".
     2437    _frame = nullptr;
     2438    if (auto policyFunction = std::exchange(_policyFunction, nullptr)) {
     2439        RELEASE_LOG_ERROR(Loading, "Client application failed to make a policy decision via WebPolicyDecisionListener, letting the load proceed");
     2440        policyFunction(PolicyAction::Use);
     2441    }
     2442
    24292443    [super dealloc];
    24302444}
  • trunk/Tools/ChangeLog

    r232079 r232082  
     12018-05-22  Chris Dumez  <cdumez@apple.com>
     2
     3        Regression(AsyncPolicyDelegates): Box.app login Window is blank
     4        https://bugs.webkit.org/show_bug.cgi?id=185832
     5        <rdar://problem/40307871>
     6
     7        Reviewed by Geoffrey Garen.
     8
     9        Add API test coverage.
     10
     11        * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
     12        * TestWebKitAPI/Tests/WebKit/cocoa/WeakObjCPtr.mm:
     13        * TestWebKitAPI/Tests/mac/NoPolicyDelegateResponse.mm: Added.
     14        (-[NoPolicyDelegateDecisionDelegate webView:decidePolicyForNavigationAction:request:frame:decisionListener:]):
     15        (-[NoPolicyDelegateDecisionDelegate webView:decidePolicyForMIMEType:request:frame:decisionListener:]):
     16        (-[NoPolicyDelegateDecisionDelegate webView:didFinishLoadForFrame:]):
     17        (TestWebKitAPI::TEST):
     18        * TestWebKitAPI/cocoa/TestWKWebView.mm:
     19        (-[WKWebView _isBackground]):
     20
    1212018-05-22  Sihui Liu  <sihui_liu@apple.com>
    222
  • trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj

    r232079 r232082  
    566566                83DB79691EF63B3C00BFA5E5 /* Function.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 83DB79671EF63B3C00BFA5E5 /* Function.cpp */; };
    567567                83DE134D1EF1C50800C1B355 /* ResponsivenessTimer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 83DE134C1EF1C4FE00C1B355 /* ResponsivenessTimer.cpp */; };
     568                83F22C6420B355F80034277E /* NoPolicyDelegateResponse.mm in Sources */ = {isa = PBXBuildFile; fileRef = 83F22C6320B355EB0034277E /* NoPolicyDelegateResponse.mm */; };
    568569                8C10AF98206467920018FD90 /* localstorage-empty-string-value.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 8C10AF97206467830018FD90 /* localstorage-empty-string-value.html */; };
    569570                8C10AF99206467A90018FD90 /* LocalStoragePersistence.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8C10AF96206467770018FD90 /* LocalStoragePersistence.mm */; };
     
    16061607                83DB79671EF63B3C00BFA5E5 /* Function.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Function.cpp; sourceTree = "<group>"; };
    16071608                83DE134C1EF1C4FE00C1B355 /* ResponsivenessTimer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ResponsivenessTimer.cpp; sourceTree = "<group>"; };
     1609                83F22C6320B355EB0034277E /* NoPolicyDelegateResponse.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = NoPolicyDelegateResponse.mm; sourceTree = "<group>"; };
    16081610                86BD19971A2DB05B006DCF0A /* RefCounter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RefCounter.cpp; sourceTree = "<group>"; };
    16091611                8A2C750D16CED9550024F352 /* ResizeWindowAfterCrash.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ResizeWindowAfterCrash.cpp; sourceTree = "<group>"; };
     
    30453047                                7A99D9931AD4A29D00373141 /* MenuTypesForMouseEvents.mm */,
    30463048                                E19DB9781B32137C00DB38D4 /* NavigatorLanguage.mm */,
     3049                                83F22C6320B355EB0034277E /* NoPolicyDelegateResponse.mm */,
    30473050                                A57A34EF16AF677200C2501F /* PageVisibilityStateWithWindowChanges.mm */,
    30483051                                00BC16851680FE810065F1E5 /* PublicSuffix.mm */,
     
    36813684                                7CCE7F051A411AE600447C4C /* NewFirstVisuallyNonEmptyLayoutFrames.cpp in Sources */,
    36823685                                0F5651F71FCE4DDC00310FBC /* NoHistoryItemScrollToFragment.mm in Sources */,
     3686                                83F22C6420B355F80034277E /* NoPolicyDelegateResponse.mm in Sources */,
    36833687                                2ECFF5551D9B12F800B55394 /* NowPlayingControlsTests.mm in Sources */,
    36843688                                A10F047E1E3AD29C00C95E19 /* NSFileManagerExtras.mm in Sources */,
  • trunk/Tools/TestWebKitAPI/Tests/WebKit/cocoa/WeakObjCPtr.mm

    r194496 r232082  
    2626#import "config.h"
    2727
    28 #import <WebKit/WeakObjCPtr.h>
    29 
    30 using WebKit::WeakObjCPtr;
     28#import <wtf/WeakObjCPtr.h>
    3129
    3230TEST(WebKit2_WeakObjCPtr, Construction)
Note: See TracChangeset for help on using the changeset viewer.