Changeset 139000 in webkit


Ignore:
Timestamp:
Jan 7, 2013, 3:26:41 PM (12 years ago)
Author:
mitz@apple.com
Message:

[mac] WebKit1 clients can’t tell when a frame has been removed from the hierarchy
https://bugs.webkit.org/show_bug.cgi?id=106261

Reviewed by Simon Fraser.

Source/WebKit/mac:

Test: TestWebKitAPI/Tests/mac/WebViewDidRemoveFrameFromHierarchy.mm.

Added -[WebFrameLoadDelegate webView:didRemoveFrameFromHierarchy:].

  • WebCoreSupport/WebFrameLoaderClient.mm:

(WebFrameLoaderClient::detachedFromParent2): Added a call to the new frame load delegate
method.

  • WebView/WebDelegateImplementationCaching.h:

(WebFrameLoadDelegateImplementationCache): Added the new method to the cache.

  • WebView/WebFrameLoadDelegatePrivate.h: Declared the new delegate method.
  • WebView/WebView.mm:

(-[WebView _cacheFrameLoadDelegateImplementations]): Added the new method to the cache.

Tools:

Added a test for -[WebFrameLoadDelegate webView:didRemoveFrameFromHierarchy:].

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/mac/WebViewDidRemoveFrameFromHierarchy.mm: Added.

(-[DidRemoveFrameFromHierarchyFrameLoadDelegate webView:didFinishLoadForFrame:]):
(-[DidRemoveFrameFromHierarchyFrameLoadDelegate webView:didRemoveFrameFromHierarchy:]):
(TestWebKitAPI):
(TestWebKitAPI::TEST):

Location:
trunk
Files:
1 added
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/mac/ChangeLog

    r138983 r139000  
     12013-01-07  Dan Bernstein  <mitz@apple.com>
     2
     3        [mac] WebKit1 clients can’t tell when a frame has been removed from the hierarchy
     4        https://bugs.webkit.org/show_bug.cgi?id=106261
     5
     6        Reviewed by Simon Fraser.
     7
     8        Test: TestWebKitAPI/Tests/mac/WebViewDidRemoveFrameFromHierarchy.mm.
     9
     10        Added -[WebFrameLoadDelegate webView:didRemoveFrameFromHierarchy:].
     11
     12        * WebCoreSupport/WebFrameLoaderClient.mm:
     13        (WebFrameLoaderClient::detachedFromParent2): Added a call to the new frame load delegate
     14        method.
     15        * WebView/WebDelegateImplementationCaching.h:
     16        (WebFrameLoadDelegateImplementationCache): Added the new method to the cache.
     17        * WebView/WebFrameLoadDelegatePrivate.h: Declared the new delegate method.
     18        * WebView/WebView.mm:
     19        (-[WebView _cacheFrameLoadDelegateImplementations]): Added the new method to the cache.
     20
    1212013-01-07  Mike West  <mkwst@chromium.org>
    222
  • trunk/Source/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.mm

    r138413 r139000  
    260260    [webView removePluginInstanceViewsFor:(m_webFrame.get())];
    261261    [m_webFrame->_private->webFrameView _setWebFrame:nil]; // needed for now to be compatible w/ old behavior
     262
     263    WebFrameLoadDelegateImplementationCache* implementations = WebViewGetFrameLoadDelegateImplementations(webView);
     264    if (implementations->didRemoveFrameFromHierarchyFunc)
     265        CallFrameLoadDelegate(implementations->didRemoveFrameFromHierarchyFunc, webView, @selector(webView:didRemoveFrameFromHierarchy:), m_webFrame.get());
    262266}
    263267
  • trunk/Source/WebKit/mac/WebView/WebDelegateImplementationCaching.h

    r129545 r139000  
    8080    IMP didRunInsecureContentFunc;
    8181    IMP didDetectXSSFunc;
     82    IMP didRemoveFrameFromHierarchyFunc;
    8283};
    8384
  • trunk/Source/WebKit/mac/WebView/WebFrameLoadDelegatePrivate.h

    r99096 r139000  
    4141- (void)webView:(WebView *)webView didReplaceStateWithinPageForFrame:(WebFrame *)frame;
    4242- (void)webView:(WebView *)webView didPopStateWithinPageForFrame:(WebFrame *)frame;
     43- (void)webView:(WebView *)webView didRemoveFrameFromHierarchy:(WebFrame *)frame;
    4344
    4445@end
  • trunk/Source/WebKit/mac/WebView/WebView.mm

    r138983 r139000  
    16601660    cache->didRunInsecureContentFunc = getMethod(delegate, @selector(webView:didRunInsecureContent:));
    16611661    cache->didDetectXSSFunc = getMethod(delegate, @selector(webView:didDetectXSS:));
     1662    cache->didRemoveFrameFromHierarchyFunc = getMethod(delegate, @selector(webView:didRemoveFrameFromHierarchy:));
    16621663
    16631664    // It would be nice to get rid of this code and transition all clients to using didLayout instead of
  • trunk/Tools/ChangeLog

    r138995 r139000  
     12013-01-07  Dan Bernstein  <mitz@apple.com>
     2
     3        [mac] WebKit1 clients can’t tell when a frame has been removed from the hierarchy
     4        https://bugs.webkit.org/show_bug.cgi?id=106261
     5
     6        Reviewed by Simon Fraser.
     7
     8        Added a test for -[WebFrameLoadDelegate webView:didRemoveFrameFromHierarchy:].
     9
     10        * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
     11        * TestWebKitAPI/Tests/mac/WebViewDidRemoveFrameFromHierarchy.mm: Added.
     12        (-[DidRemoveFrameFromHierarchyFrameLoadDelegate webView:didFinishLoadForFrame:]):
     13        (-[DidRemoveFrameFromHierarchyFrameLoadDelegate webView:didRemoveFrameFromHierarchy:]):
     14        (TestWebKitAPI):
     15        (TestWebKitAPI::TEST):
     16
    1172013-01-07  Ojan Vafai  <ojan@chromium.org>
    218
  • trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj

    r138851 r139000  
    5959                37E1064C1697681800B78BD0 /* DOMHTMLTableCellElementCellAbove.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 37E1064B169767F700B78BD0 /* DOMHTMLTableCellElementCellAbove.html */; };
    6060                37E1064D16976C8500B78BD0 /* DOMHTMLTableCellCellAbove.mm in Sources */ = {isa = PBXBuildFile; fileRef = 37E1064A1697676400B78BD0 /* DOMHTMLTableCellCellAbove.mm */; };
     61                37E38C34169B7D010084C28C /* WebViewDidRemoveFrameFromHierarchy.mm in Sources */ = {isa = PBXBuildFile; fileRef = 37E38C33169B7D010084C28C /* WebViewDidRemoveFrameFromHierarchy.mm */; };
    6162                440A1D3914A0103A008A66F2 /* KURL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 440A1D3814A0103A008A66F2 /* KURL.cpp */; };
    6263                4BB4160216815B2600824238 /* JSWrapperForNodeInWebFrame.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4BB4160116815B2600824238 /* JSWrapperForNodeInWebFrame.mm */; };
     
    312313                37E1064A1697676400B78BD0 /* DOMHTMLTableCellCellAbove.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLTableCellCellAbove.mm; sourceTree = "<group>"; };
    313314                37E1064B169767F700B78BD0 /* DOMHTMLTableCellElementCellAbove.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = DOMHTMLTableCellElementCellAbove.html; sourceTree = "<group>"; };
     315                37E38C33169B7D010084C28C /* WebViewDidRemoveFrameFromHierarchy.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebViewDidRemoveFrameFromHierarchy.mm; sourceTree = "<group>"; };
    314316                440A1D3814A0103A008A66F2 /* KURL.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = KURL.cpp; sourceTree = "<group>"; };
    315317                44A622C114A0E2B60048515B /* WTFStringUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WTFStringUtilities.h; sourceTree = "<group>"; };
     
    786788                                E490296714E2E3A4002BEDD1 /* TypingStyleCrash.mm */,
    787789                                51FBBB4C1513D4E900822738 /* WebViewCanPasteURL.mm */,
     790                                37E38C33169B7D010084C28C /* WebViewDidRemoveFrameFromHierarchy.mm */,
    788791                                A5E2027215B2181900C13E14 /* WindowlessWebViewWithMedia.mm */,
    789792                                00CD9F6215BE312C002DA2CE /* BackForwardList.mm */,
     
    10551058                                3751AF7C169518F800764319 /* DOMNodeFromJSObject.mm in Sources */,
    10561059                                37E1064D16976C8500B78BD0 /* DOMHTMLTableCellCellAbove.mm in Sources */,
     1060                                37E38C34169B7D010084C28C /* WebViewDidRemoveFrameFromHierarchy.mm in Sources */,
    10571061                        );
    10581062                        runOnlyForDeploymentPostprocessing = 0;
Note: See TracChangeset for help on using the changeset viewer.