Changeset 160191 in webkit


Ignore:
Timestamp:
Dec 5, 2013 1:38:09 PM (10 years ago)
Author:
andersca@apple.com
Message:

WebKit2 API should use weak ownership for delegate properties rather than assign
https://bugs.webkit.org/show_bug.cgi?id=125316
<rdar://problem/15560614>

Reviewed by Dan Bernstein.

Use WeakObjCPtr for the delegates.

  • UIProcess/API/Cocoa/WKBrowsingContextController.h:
  • UIProcess/API/Cocoa/WKBrowsingContextController.mm:

(didStartProvisionalLoadForFrame):
(didReceiveServerRedirectForProvisionalLoadForFrame):
(didFailProvisionalLoadWithErrorForFrame):
(didCommitLoadForFrame):
(didFinishLoadForFrame):
(didFailLoadWithErrorForFrame):
(didStartProgress):
(didChangeProgress):
(didFinishProgress):
(didChangeBackForwardList):
(setUpPagePolicyClient):
(-[WKBrowsingContextController loadDelegate]):
(-[WKBrowsingContextController setLoadDelegate:]):
(-[WKBrowsingContextController policyDelegate]):
(-[WKBrowsingContextController setPolicyDelegate:]):
(-[WKBrowsingContextController historyDelegate]):
(-[WKBrowsingContextController setHistoryDelegate:]):

  • UIProcess/API/Cocoa/WKBrowsingContextControllerInternal.h:
  • UIProcess/API/Cocoa/WKConnection.mm:

(didReceiveMessage):
(didClose):
(-[WKConnection delegate]):
(-[WKConnection setDelegate:]):

  • UIProcess/API/Cocoa/WKProcessGroup.mm:

(didCreateConnection):
(getInjectedBundleInitializationUserData):
(didNavigateWithNavigationData):
(didPerformClientRedirect):
(didPerformServerRedirect):
(didUpdateHistoryTitle):
(-[WKProcessGroup delegate]):
(-[WKProcessGroup setDelegate:]):

Location:
trunk/Source/WebKit2
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r160187 r160191  
     12013-12-05  Anders Carlsson  <andersca@apple.com>
     2
     3        WebKit2 API should use weak ownership for delegate properties rather than assign
     4        https://bugs.webkit.org/show_bug.cgi?id=125316
     5        <rdar://problem/15560614>
     6
     7        Reviewed by Dan Bernstein.
     8
     9        Use WeakObjCPtr for the delegates.
     10
     11        * UIProcess/API/Cocoa/WKBrowsingContextController.h:
     12        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
     13        (didStartProvisionalLoadForFrame):
     14        (didReceiveServerRedirectForProvisionalLoadForFrame):
     15        (didFailProvisionalLoadWithErrorForFrame):
     16        (didCommitLoadForFrame):
     17        (didFinishLoadForFrame):
     18        (didFailLoadWithErrorForFrame):
     19        (didStartProgress):
     20        (didChangeProgress):
     21        (didFinishProgress):
     22        (didChangeBackForwardList):
     23        (setUpPagePolicyClient):
     24        (-[WKBrowsingContextController loadDelegate]):
     25        (-[WKBrowsingContextController setLoadDelegate:]):
     26        (-[WKBrowsingContextController policyDelegate]):
     27        (-[WKBrowsingContextController setPolicyDelegate:]):
     28        (-[WKBrowsingContextController historyDelegate]):
     29        (-[WKBrowsingContextController setHistoryDelegate:]):
     30        * UIProcess/API/Cocoa/WKBrowsingContextControllerInternal.h:
     31        * UIProcess/API/Cocoa/WKConnection.mm:
     32        (didReceiveMessage):
     33        (didClose):
     34        (-[WKConnection delegate]):
     35        (-[WKConnection setDelegate:]):
     36        * UIProcess/API/Cocoa/WKProcessGroup.mm:
     37        (didCreateConnection):
     38        (getInjectedBundleInitializationUserData):
     39        (didNavigateWithNavigationData):
     40        (didPerformClientRedirect):
     41        (didPerformServerRedirect):
     42        (didUpdateHistoryTitle):
     43        (-[WKProcessGroup delegate]):
     44        (-[WKProcessGroup setDelegate:]):
     45
    1462013-12-05  Anders Carlsson  <andersca@apple.com>
    247
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKBrowsingContextController.h

    r160129 r160191  
    4545#pragma mark Delegates
    4646
    47 @property (assign) id <WKBrowsingContextLoadDelegate> loadDelegate;
    48 @property (assign) id <WKBrowsingContextPolicyDelegate> policyDelegate;
    49 @property (assign) id <WKBrowsingContextHistoryDelegate> historyDelegate;
     47@property (weak) id <WKBrowsingContextLoadDelegate> loadDelegate;
     48@property (weak) id <WKBrowsingContextPolicyDelegate> policyDelegate;
     49@property (weak) id <WKBrowsingContextHistoryDelegate> historyDelegate;
    5050
    5151#pragma mark Loading
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKBrowsingContextController.mm

    r160137 r160191  
    2929#if WK_API_ENABLED
    3030
     31#import "WeakObjCPtr.h"
    3132#import "ObjCObjectGraph.h"
    3233#import "WKBackForwardListInternal.h"
     
    113114    API::ObjectStorage<WebPageProxy> _page;
    114115    std::unique_ptr<PageLoadStateObserver> _pageLoadStateObserver;
    115 }
    116 
    117 @synthesize loadDelegate = _loadDelegate;
    118 @synthesize policyDelegate = _policyDelegate;
     116
     117    WeakObjCPtr<id <WKBrowsingContextLoadDelegate>> _loadDelegate;
     118    WeakObjCPtr<id <WKBrowsingContextPolicyDelegate>> _policyDelegate;
     119}
    119120
    120121- (void)dealloc
     
    369370
    370371    WKBrowsingContextController *browsingContext = (WKBrowsingContextController *)clientInfo;
    371     if ([browsingContext.loadDelegate respondsToSelector:@selector(browsingContextControllerDidStartProvisionalLoad:)])
    372         [browsingContext.loadDelegate browsingContextControllerDidStartProvisionalLoad:browsingContext];
     372    auto loadDelegate = browsingContext->_loadDelegate.get();
     373
     374    if ([loadDelegate respondsToSelector:@selector(browsingContextControllerDidStartProvisionalLoad:)])
     375        [loadDelegate browsingContextControllerDidStartProvisionalLoad:browsingContext];
    373376}
    374377
     
    379382
    380383    WKBrowsingContextController *browsingContext = (WKBrowsingContextController *)clientInfo;
    381     if ([browsingContext.loadDelegate respondsToSelector:@selector(browsingContextControllerDidReceiveServerRedirectForProvisionalLoad:)])
    382         [browsingContext.loadDelegate browsingContextControllerDidReceiveServerRedirectForProvisionalLoad:browsingContext];
     384    auto loadDelegate = browsingContext->_loadDelegate.get();
     385
     386    if ([loadDelegate respondsToSelector:@selector(browsingContextControllerDidReceiveServerRedirectForProvisionalLoad:)])
     387        [loadDelegate browsingContextControllerDidReceiveServerRedirectForProvisionalLoad:browsingContext];
    383388}
    384389
     
    389394
    390395    WKBrowsingContextController *browsingContext = (WKBrowsingContextController *)clientInfo;
    391     if ([browsingContext.loadDelegate respondsToSelector:@selector(browsingContextController:didFailProvisionalLoadWithError:)]) {
     396    auto loadDelegate = browsingContext->_loadDelegate.get();
     397
     398    if ([loadDelegate respondsToSelector:@selector(browsingContextController:didFailProvisionalLoadWithError:)]) {
    392399        RetainPtr<NSError> nsError = adoptNS(createErrorWithRecoveryAttempter(error, frame, browsingContext));
    393         [browsingContext.loadDelegate browsingContextController:browsingContext didFailProvisionalLoadWithError:nsError.get()];
     400        [loadDelegate browsingContextController:browsingContext didFailProvisionalLoadWithError:nsError.get()];
    394401    }
    395402}
     
    401408
    402409    WKBrowsingContextController *browsingContext = (WKBrowsingContextController *)clientInfo;
    403     if ([browsingContext.loadDelegate respondsToSelector:@selector(browsingContextControllerDidCommitLoad:)])
    404         [browsingContext.loadDelegate browsingContextControllerDidCommitLoad:browsingContext];
     410    auto loadDelegate = browsingContext->_loadDelegate.get();
     411
     412    if ([loadDelegate respondsToSelector:@selector(browsingContextControllerDidCommitLoad:)])
     413        [loadDelegate browsingContextControllerDidCommitLoad:browsingContext];
    405414}
    406415
     
    411420
    412421    WKBrowsingContextController *browsingContext = (WKBrowsingContextController *)clientInfo;
    413     if ([browsingContext.loadDelegate respondsToSelector:@selector(browsingContextControllerDidFinishLoad:)])
    414         [browsingContext.loadDelegate browsingContextControllerDidFinishLoad:browsingContext];
     422    auto loadDelegate = browsingContext->_loadDelegate.get();
     423
     424    if ([loadDelegate respondsToSelector:@selector(browsingContextControllerDidFinishLoad:)])
     425        [loadDelegate browsingContextControllerDidFinishLoad:browsingContext];
    415426}
    416427
     
    421432
    422433    WKBrowsingContextController *browsingContext = (WKBrowsingContextController *)clientInfo;
    423     if ([browsingContext.loadDelegate respondsToSelector:@selector(browsingContextController:didFailLoadWithError:)]) {
     434    auto loadDelegate = browsingContext->_loadDelegate.get();
     435
     436    if ([loadDelegate respondsToSelector:@selector(browsingContextController:didFailLoadWithError:)]) {
    424437        RetainPtr<NSError> nsError = adoptNS(createErrorWithRecoveryAttempter(error, frame, browsingContext));
    425         [browsingContext.loadDelegate browsingContextController:browsingContext didFailLoadWithError:nsError.get()];
     438        [loadDelegate browsingContextController:browsingContext didFailLoadWithError:nsError.get()];
    426439    }
    427440}
     
    430443{
    431444    WKBrowsingContextController *browsingContext = (WKBrowsingContextController *)clientInfo;
    432     if ([browsingContext.loadDelegate respondsToSelector:@selector(browsingContextControllerDidStartProgress:)])
    433         [browsingContext.loadDelegate browsingContextControllerDidStartProgress:browsingContext];
     445    auto loadDelegate = browsingContext->_loadDelegate.get();
     446
     447    if ([loadDelegate respondsToSelector:@selector(browsingContextControllerDidStartProgress:)])
     448        [loadDelegate browsingContextControllerDidStartProgress:browsingContext];
    434449}
    435450
     
    437452{
    438453    WKBrowsingContextController *browsingContext = (WKBrowsingContextController *)clientInfo;
    439     if ([browsingContext.loadDelegate respondsToSelector:@selector(browsingContextController:estimatedProgressChangedTo:)])
    440         [browsingContext.loadDelegate browsingContextController:browsingContext estimatedProgressChangedTo:toImpl(page)->estimatedProgress()];
     454    auto loadDelegate = browsingContext->_loadDelegate.get();
     455
     456    if ([loadDelegate respondsToSelector:@selector(browsingContextController:estimatedProgressChangedTo:)])
     457        [loadDelegate browsingContextController:browsingContext estimatedProgressChangedTo:toImpl(page)->estimatedProgress()];
    441458}
    442459
     
    444461{
    445462    WKBrowsingContextController *browsingContext = (WKBrowsingContextController *)clientInfo;
    446     if ([browsingContext.loadDelegate respondsToSelector:@selector(browsingContextControllerDidFinishProgress:)])
    447         [browsingContext.loadDelegate browsingContextControllerDidFinishProgress:browsingContext];
     463    auto loadDelegate = browsingContext->_loadDelegate.get();
     464
     465    if ([loadDelegate respondsToSelector:@selector(browsingContextControllerDidFinishProgress:)])
     466        [loadDelegate browsingContextControllerDidFinishProgress:browsingContext];
    448467}
    449468
     
    451470{
    452471    WKBrowsingContextController *browsingContext = (WKBrowsingContextController *)clientInfo;
    453     if (![browsingContext.loadDelegate respondsToSelector:@selector(browsingContextControllerDidChangeBackForwardList:addedItem:removedItems:)])
     472    auto loadDelegate = browsingContext->_loadDelegate.get();
     473
     474    if (![loadDelegate respondsToSelector:@selector(browsingContextControllerDidChangeBackForwardList:addedItem:removedItems:)])
    454475        return;
    455476
    456477    WKBackForwardListItem *added = addedItem ? wrapper(*toImpl(addedItem)) : nil;
    457478    NSArray *removed = removedItems ? wrapper(*toImpl(removedItems)) : nil;
    458     [browsingContext.loadDelegate browsingContextControllerDidChangeBackForwardList:browsingContext addedItem:added removedItems:removed];
     479    [loadDelegate browsingContextControllerDidChangeBackForwardList:browsingContext addedItem:added removedItems:removed];
    459480}
    460481
     
    515536    {
    516537        WKBrowsingContextController *browsingContext = (WKBrowsingContextController *)clientInfo;
    517         if ([browsingContext.policyDelegate respondsToSelector:@selector(browsingContextController:decidePolicyForNavigationAction:decisionHandler:)]) {
     538        auto policyDelegate = browsingContext->_policyDelegate.get();
     539
     540        if ([policyDelegate respondsToSelector:@selector(browsingContextController:decidePolicyForNavigationAction:decisionHandler:)]) {
    518541            NSDictionary *actionDictionary = @{
    519542                WKActionIsMainFrameKey: @(WKFrameIsMainFrame(frame)),
     
    529552            }
    530553           
    531             [browsingContext.policyDelegate browsingContextController:browsingContext decidePolicyForNavigationAction:actionDictionary decisionHandler:makePolicyDecisionBlock(listener)];
     554            [policyDelegate browsingContextController:browsingContext decidePolicyForNavigationAction:actionDictionary decisionHandler:makePolicyDecisionBlock(listener)];
    532555        } else
    533556            WKFramePolicyListenerUse(listener);
     
    537560    {
    538561        WKBrowsingContextController *browsingContext = (WKBrowsingContextController *)clientInfo;
    539         if ([browsingContext.policyDelegate respondsToSelector:@selector(browsingContextController:decidePolicyForNewWindowAction:decisionHandler:)]) {
     562        auto policyDelegate = browsingContext->_policyDelegate.get();
     563
     564        if ([policyDelegate respondsToSelector:@selector(browsingContextController:decidePolicyForNewWindowAction:decisionHandler:)]) {
    540565            NSDictionary *actionDictionary = @{
    541566                WKActionIsMainFrameKey: @(WKFrameIsMainFrame(frame)),
     
    547572            };
    548573           
    549             [browsingContext.policyDelegate browsingContextController:browsingContext decidePolicyForNewWindowAction:actionDictionary decisionHandler:makePolicyDecisionBlock(listener)];
     574            [policyDelegate browsingContextController:browsingContext decidePolicyForNewWindowAction:actionDictionary decisionHandler:makePolicyDecisionBlock(listener)];
    550575        } else
    551576            WKFramePolicyListenerUse(listener);
     
    555580    {
    556581        WKBrowsingContextController *browsingContext = (WKBrowsingContextController *)clientInfo;
    557         if ([browsingContext.policyDelegate respondsToSelector:@selector(browsingContextController:decidePolicyForResponseAction:decisionHandler:)]) {
     582        auto policyDelegate = browsingContext->_policyDelegate.get();
     583
     584        if ([policyDelegate respondsToSelector:@selector(browsingContextController:decidePolicyForResponseAction:decisionHandler:)]) {
    558585            NSDictionary *actionDictionary = @{
    559586                WKActionIsMainFrameKey: @(WKFrameIsMainFrame(frame)),
     
    563590            };
    564591
    565             [browsingContext.policyDelegate browsingContextController:browsingContext decidePolicyForResponseAction:actionDictionary decisionHandler:makePolicyDecisionBlock(listener)];
     592            [policyDelegate browsingContextController:browsingContext decidePolicyForResponseAction:actionDictionary decisionHandler:makePolicyDecisionBlock(listener)];
    566593        } else
    567594            WKFramePolicyListenerUse(listener);
     
    573600- (id <WKBrowsingContextLoadDelegate>)loadDelegate
    574601{
    575     return _loadDelegate;
     602    return _loadDelegate.getAutoreleased();
    576603}
    577604
     
    579606{
    580607    _loadDelegate = loadDelegate;
    581     if (_loadDelegate)
     608
     609    if (loadDelegate)
    582610        setUpPageLoaderClient(self, *_page);
    583611    else
     
    587615- (id <WKBrowsingContextPolicyDelegate>)policyDelegate
    588616{
    589     return _policyDelegate;
     617    return _policyDelegate.getAutoreleased();
    590618}
    591619
     
    593621{
    594622    _policyDelegate = policyDelegate;
    595     if (_policyDelegate)
     623
     624    if (policyDelegate)
    596625        setUpPagePolicyClient(self, *_page);
    597626    else
    598627        _page->initializePolicyClient(nullptr);
     628}
     629
     630- (id <WKBrowsingContextHistoryDelegate>)historyDelegate
     631{
     632    return _historyDelegate.getAutoreleased();
     633}
     634
     635- (void)setHistoryDelegate:(id <WKBrowsingContextHistoryDelegate>)historyDelegate
     636{
     637    _historyDelegate = historyDelegate;
    599638}
    600639
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKBrowsingContextControllerInternal.h

    r159877 r160191  
    2929
    3030#import "WKObject.h"
     31#import "WeakObjCPtr.h"
    3132#import "WebPageProxy.h"
    3233
     
    4142}
    4243
    43 @interface WKBrowsingContextController () <WKObject>
     44@interface WKBrowsingContextController () <WKObject> {
     45@package
     46    WebKit::WeakObjCPtr<id <WKBrowsingContextHistoryDelegate>> _historyDelegate;
     47}
    4448
    4549- (void)_finishInitialization;
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKConnection.mm

    r160148 r160191  
    3434#import "WKSharedAPICast.h"
    3535#import "WKStringCF.h"
     36#import "WeakObjCPtr.h"
    3637#import <wtf/RetainPtr.h>
    3738#import <wtf/text/WTFString.h>
     
    4243    API::ObjectStorage<WebConnection> _connection;
    4344    RetainPtr<WKRemoteObjectRegistry> _remoteObjectRegistry;
     45
     46    WeakObjCPtr<id <WKConnectionDelegate>> _delegate;
    4447}
    45 
    46 @synthesize delegate = _delegate;
    4748
    4849- (void)dealloc
     
    5960        return;
    6061
    61     if ([connection.delegate respondsToSelector:@selector(connection:didReceiveMessageWithName:body:)]) {
     62    auto delegate = connection->_delegate.get();
     63    if ([delegate respondsToSelector:@selector(connection:didReceiveMessageWithName:body:)]) {
    6264        RetainPtr<CFStringRef> nsMessageName = adoptCF(WKStringCopyCFString(kCFAllocatorDefault, messageName));
    6365        RetainPtr<id> nsMessageBody = ((ObjCObjectGraph*)messageBody)->rootObject();
    64         [connection.delegate connection:connection didReceiveMessageWithName:(NSString *)nsMessageName.get() body:nsMessageBody.get()];
     66        [delegate connection:connection didReceiveMessageWithName:(NSString *)nsMessageName.get() body:nsMessageBody.get()];
    6567    }
    6668}
     
    6971{
    7072    WKConnection *connection = (WKConnection *)clientInfo;
    71     if ([connection.delegate respondsToSelector:@selector(connectionDidClose:)])
    72         [connection.delegate connectionDidClose:connection];
     73    auto delegate = connection->_delegate.get();
     74
     75    if ([delegate respondsToSelector:@selector(connectionDidClose:)])
     76        [delegate connectionDidClose:connection];
    7377}
    7478
     
    8892- (id <WKConnectionDelegate>)delegate
    8993{
    90     return _delegate;
     94    return _delegate.getAutoreleased();
    9195}
    9296
     
    9498{
    9599    _delegate = delegate;
    96     if (_delegate)
     100    if (delegate)
    97101        setUpClient(self, *_connection);
    98102    else
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKProcessGroup.mm

    r160148 r160191  
    4141#import "WKRetainPtr.h"
    4242#import "WKStringCF.h"
     43#import "WeakObjCPtr.h"
    4344#import "WebFrameProxy.h"
    4445#import <wtf/RetainPtr.h>
     
    5556    API::ObjectStorage<WebContext> _context;
    5657
     58    WeakObjCPtr<id <WKProcessGroupDelegate>> _delegate;
     59
    5760#if PLATFORM(IOS)
    5861    RetainPtr<WKGeolocationProviderIOS> _geolocationProvider;
     
    7073{
    7174    WKProcessGroup *processGroup = (WKProcessGroup *)clientInfo;
    72     if ([processGroup.delegate respondsToSelector:@selector(processGroup:didCreateConnectionToWebProcessPlugIn:)])
    73         [processGroup.delegate processGroup:processGroup didCreateConnectionToWebProcessPlugIn:wrapper(*toImpl(connectionRef))];
     75    auto delegate = processGroup->_delegate.get();
     76
     77    if ([delegate respondsToSelector:@selector(processGroup:didCreateConnectionToWebProcessPlugIn:)])
     78        [delegate processGroup:processGroup didCreateConnectionToWebProcessPlugIn:wrapper(*toImpl(connectionRef))];
    7479}
    7580
     
    8994{
    9095    WKProcessGroup *processGroup = (WKProcessGroup *)clientInfo;
    91     if ([processGroup.delegate respondsToSelector:@selector(processGroupWillCreateConnectionToWebProcessPlugIn:)]) {
    92         RetainPtr<id> initializationUserData = [processGroup.delegate processGroupWillCreateConnectionToWebProcessPlugIn:processGroup];
     96    auto delegate = processGroup->_delegate.get();
     97
     98    if ([delegate respondsToSelector:@selector(processGroupWillCreateConnectionToWebProcessPlugIn:)]) {
     99        RetainPtr<id> initializationUserData = [delegate processGroupWillCreateConnectionToWebProcessPlugIn:processGroup];
    93100        RefPtr<WebKit::ObjCObjectGraph> wkMessageBody = WebKit::ObjCObjectGraph::create(initializationUserData.get());
    94101        return (WKTypeRef)wkMessageBody.release().leakRef();
     
    116123
    117124    WKBrowsingContextController *controller = wrapper(*toImpl(pageRef));
    118     if ([controller.historyDelegate respondsToSelector:@selector(browsingContextController:didNavigateWithNavigationData:)])
    119         [controller.historyDelegate browsingContextController:controller didNavigateWithNavigationData:wrapper(*toImpl(navigationDataRef))];
     125    auto historyDelegate = controller->_historyDelegate.get();
     126
     127    if ([historyDelegate respondsToSelector:@selector(browsingContextController:didNavigateWithNavigationData:)])
     128        [historyDelegate browsingContextController:controller didNavigateWithNavigationData:wrapper(*toImpl(navigationDataRef))];
    120129}
    121130
     
    126135
    127136    WKBrowsingContextController *controller = wrapper(*toImpl(pageRef));
    128     if ([controller.historyDelegate respondsToSelector:@selector(browsingContextController:didPerformClientRedirectFromURL:toURL:)])
    129         [controller.historyDelegate browsingContextController:controller didPerformClientRedirectFromURL:wrapper(*toImpl(sourceURLRef)) toURL:wrapper(*toImpl(destinationURLRef))];
     137    auto historyDelegate = controller->_historyDelegate.get();
     138
     139    if ([historyDelegate respondsToSelector:@selector(browsingContextController:didPerformClientRedirectFromURL:toURL:)])
     140        [historyDelegate browsingContextController:controller didPerformClientRedirectFromURL:wrapper(*toImpl(sourceURLRef)) toURL:wrapper(*toImpl(destinationURLRef))];
    130141}
    131142
     
    136147
    137148    WKBrowsingContextController *controller = wrapper(*toImpl(pageRef));
    138     if ([controller.historyDelegate respondsToSelector:@selector(browsingContextController:didPerformServerRedirectFromURL:toURL:)])
    139         [controller.historyDelegate browsingContextController:controller didPerformServerRedirectFromURL:wrapper(*toImpl(sourceURLRef)) toURL:wrapper(*toImpl(destinationURLRef))];
     149    auto historyDelegate = controller->_historyDelegate.get();
     150
     151    if ([historyDelegate respondsToSelector:@selector(browsingContextController:didPerformServerRedirectFromURL:toURL:)])
     152        [historyDelegate browsingContextController:controller didPerformServerRedirectFromURL:wrapper(*toImpl(sourceURLRef)) toURL:wrapper(*toImpl(destinationURLRef))];
    140153}
    141154
     
    146159
    147160    WKBrowsingContextController *controller = wrapper(*toImpl(pageRef));
    148     if ([controller.historyDelegate respondsToSelector:@selector(browsingContextController:didUpdateHistoryTitle:forURL:)])
    149         [controller.historyDelegate browsingContextController:controller didUpdateHistoryTitle:wrapper(*toImpl(titleRef)) forURL:wrapper(*toImpl(urlRef))];
     161    auto historyDelegate = controller->_historyDelegate.get();
     162
     163    if ([historyDelegate respondsToSelector:@selector(browsingContextController:didUpdateHistoryTitle:forURL:)])
     164        [historyDelegate browsingContextController:controller didUpdateHistoryTitle:wrapper(*toImpl(titleRef)) forURL:wrapper(*toImpl(urlRef))];
    150165}
    151166
     
    190205}
    191206
     207- (id <WKProcessGroupDelegate>)delegate
     208{
     209    return _delegate.getAutoreleased();
     210}
     211
     212- (void)setDelegate:(id <WKProcessGroupDelegate>)delegate
     213{
     214    _delegate = delegate;
     215}
     216
    192217#pragma mark WKObject protocol implementation
    193218
Note: See TracChangeset for help on using the changeset viewer.