Changeset 162719 in webkit


Ignore:
Timestamp:
Jan 24, 2014 1:25:23 PM (10 years ago)
Author:
andersca@apple.com
Message:

Use a side table to map WebPageProxy objects to WKBrowsingContextController objects
https://bugs.webkit.org/show_bug.cgi?id=127577

Reviewed by Tim Horton.

  • UIProcess/API/Cocoa/WKBrowsingContextController.mm:

(browsingContextControllerMap):
(-[WKBrowsingContextController dealloc]):
(-[WKBrowsingContextController _initWithPageRef:]):
(+[WKBrowsingContextController _browsingContextControllerForPageRef:]):

  • UIProcess/API/Cocoa/WKBrowsingContextControllerInternal.h:
  • UIProcess/WebPageProxy.h:
Location:
trunk/Source/WebKit2
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r162715 r162719  
     12014-01-24  Anders Carlsson  <andersca@apple.com>
     2
     3        Use a side table to map WebPageProxy objects to WKBrowsingContextController objects
     4        https://bugs.webkit.org/show_bug.cgi?id=127577
     5
     6        Reviewed by Tim Horton.
     7
     8        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
     9        (browsingContextControllerMap):
     10        (-[WKBrowsingContextController dealloc]):
     11        (-[WKBrowsingContextController _initWithPageRef:]):
     12        (+[WKBrowsingContextController _browsingContextControllerForPageRef:]):
     13        * UIProcess/API/Cocoa/WKBrowsingContextControllerInternal.h:
     14        * UIProcess/WebPageProxy.h:
     15
    1162014-01-24  Tim Horton  <timothy_horton@apple.com>
    217
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKBrowsingContextController.mm

    r162675 r162719  
    5959#import "WebContext.h"
    6060#import "WebPageProxy.h"
     61#import <wtf/NeverDestroyed.h>
    6162
    6263using namespace WebCore;
     
    150151}
    151152
     153static HashMap<WebPageProxy*, WKBrowsingContextController *>& browsingContextControllerMap()
     154{
     155    static NeverDestroyed<HashMap<WebPageProxy*, WKBrowsingContextController *>> browsingContextControllerMap;
     156    return browsingContextControllerMap;
     157}
     158
    152159- (void)dealloc
    153160{
     161    ASSERT(browsingContextControllerMap().get(_page.get()) == self);
     162    browsingContextControllerMap().remove(_page.get());
     163
    154164    _page->pageLoadState().removeObserver(*_pageLoadStateObserver);
    155     _page->~WebPageProxy();
    156165
    157166    [_remoteObjectRegistry _invalidate];
     
    786795}
    787796
    788 #pragma mark WKObject protocol implementation
    789 
    790 - (API::Object&)_apiObject
    791 {
    792     return *reinterpret_cast<API::Object*>(&_page);
    793 }
    794797
    795798- (instancetype)_initWithPageRef:(WKPageRef)pageRef
     
    803806    _page->pageLoadState().addObserver(*_pageLoadStateObserver);
    804807
     808    ASSERT(!browsingContextControllerMap().contains(_page.get()));
     809    browsingContextControllerMap().set(_page.get(), self);
     810
    805811    return self;
    806812}
     
    808814+ (WKBrowsingContextController *)_browsingContextControllerForPageRef:(WKPageRef)pageRef
    809815{
    810     return (WKBrowsingContextController *)static_cast<const WebLoaderClient*>(WebKit::toImpl(pageRef)->loaderClient())->client().base.clientInfo;
     816    return browsingContextControllerMap().get(toImpl(pageRef));
    811817}
    812818
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKBrowsingContextControllerInternal.h

    r162580 r162719  
    2828#if WK_API_ENABLED
    2929
    30 #import "WKObject.h"
    3130#import "WeakObjCPtr.h"
    3231#import "WebPageProxy.h"
    3332
    34 @interface WKBrowsingContextController () <WKObject> {
     33@interface WKBrowsingContextController () {
    3534@package
    3635    WebKit::WeakObjCPtr<id <WKBrowsingContextHistoryDelegate>> _historyDelegate;
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.h

    r162710 r162719  
    835835#endif
    836836
    837     const API::LoaderClient* loaderClient() { return m_loaderClient.get(); }
    838 
    839837    WebCore::IntSize minimumLayoutSize() const { return m_minimumLayoutSize; }
    840838    void setMinimumLayoutSize(const WebCore::IntSize&);
Note: See TracChangeset for help on using the changeset viewer.