Changeset 160616 in webkit
- Timestamp:
- Dec 14, 2013 10:32:27 PM (10 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 4 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r160609 r160616 1 2013-12-14 Yongjun Zhang <yongjun_zhang@apple.com> 2 3 Add page load delegate for WebProcessPlugInBrowsingContextController. 4 https://bugs.webkit.org/show_bug.cgi?id=125697 5 6 Add page load delegate for WebProcessPlugInBrowsingContextController so that a 7 WebProcess injected bundle can listen to page load events. 8 9 Reviewed by Sam Weinig. 10 11 * WebKit2.xcodeproj/project.pbxproj: 12 * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInLoadDelegate.h: Added. 13 * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.h: 14 * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm: 15 (didStartProvisionalLoadForFrame): 16 (didFinishLoadForFrame): 17 (globalObjectIsAvailableForFrame): 18 (setUpPageLoaderClient): 19 (-[WKWebProcessPlugInBrowserContextController loadDelegate]): 20 (-[WKWebProcessPlugInBrowserContextController setLoadDelegate:]): 21 1 22 2013-12-14 Dan Bernstein <mitz@apple.com> 2 23 -
trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj
r160608 r160616 333 333 1CB75C941701E880009F809F /* DockRight.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 1CB75C931701E880009F809F /* DockRight.pdf */; }; 334 334 1CBC945E16515ED200D68AAE /* DockBottom.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 1CBC945D16515ED200D68AAE /* DockBottom.pdf */; }; 335 1F335BC0185B84F0001A201A /* WKWebProcessPlugInLoadDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F335BBF185B84D8001A201A /* WKWebProcessPlugInLoadDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; 335 336 1F7506AD1859161C00EC0FF7 /* WKWebProcessPlugInFrame.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1F01816A1858DC1500F92884 /* WKWebProcessPlugInFrame.mm */; }; 336 337 1F7506AE1859162200EC0FF7 /* WKWebProcessPlugInHitTestResult.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1F01816D1858DC1600F92884 /* WKWebProcessPlugInHitTestResult.mm */; }; … … 1903 1904 1F0181731858DC1600F92884 /* WKWebProcessPlugInScriptWorld.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKWebProcessPlugInScriptWorld.mm; sourceTree = "<group>"; }; 1904 1905 1F0181741858DC1600F92884 /* WKWebProcessPlugInScriptWorldInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKWebProcessPlugInScriptWorldInternal.h; sourceTree = "<group>"; }; 1906 1F335BBF185B84D8001A201A /* WKWebProcessPlugInLoadDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKWebProcessPlugInLoadDelegate.h; sourceTree = "<group>"; }; 1905 1907 290F4271172A0C7400939FF0 /* ChildProcessSupplement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ChildProcessSupplement.h; sourceTree = "<group>"; }; 1906 1908 293EBEA91627D9C9005F89F1 /* WKDOMText.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKDOMText.h; sourceTree = "<group>"; }; … … 3748 3750 1F01816D1858DC1600F92884 /* WKWebProcessPlugInHitTestResult.mm */, 3749 3751 1F01816E1858DC1600F92884 /* WKWebProcessPlugInHitTestResultInternal.h */, 3752 1F335BBF185B84D8001A201A /* WKWebProcessPlugInLoadDelegate.h */, 3750 3753 1F01816F1858DC1600F92884 /* WKWebProcessPlugInNodeHandle.h */, 3751 3754 1F0181701858DC1600F92884 /* WKWebProcessPlugInNodeHandle.mm */, … … 5782 5785 512935E41288D97800A4B695 /* InjectedBundlePageContextMenuClient.h in Headers */, 5783 5786 E1EE53E311F8CFC000CCBEE4 /* InjectedBundlePageEditorClient.h in Headers */, 5787 1F335BC0185B84F0001A201A /* WKWebProcessPlugInLoadDelegate.h in Headers */, 5784 5788 BC14E10A120B905E00826C0C /* InjectedBundlePageFormClient.h in Headers */, 5785 5789 1A445BA5184D5FDA004B3414 /* WKContextConnectionClient.h in Headers */, -
trunk/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInLoadDelegate.h
r160615 r160616 1 1 /* 2 * Copyright (C) 201 2Apple Inc. All rights reserved.2 * Copyright (C) 2013 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 23 23 * THE POSSIBILITY OF SUCH DAMAGE. 24 24 */ 25 26 #import <WebKit2/WKFoundation.h>27 28 #if WK_API_ENABLED29 30 25 #import <Foundation/Foundation.h> 31 26 32 @class WKDOMDocument; 33 @class WKDOMRange; 27 @class WKWebProcessPlugInBrowsingContextController; 28 @class WKWebProcessPlugInFrame; 29 @class WKWebProcessPlugInScriptWorld; 34 30 35 WK_API_CLASS 36 @interface WKWebProcessPlugInBrowserContextController : NSObject 37 38 @property(readonly) WKDOMDocument *mainFrameDocument; 39 40 @property(readonly) WKDOMRange *selectedRange; 41 31 @protocol WKWebProcessPlugInLoadDelegate <NSObject> 32 @optional 33 - (void)webProcessPlugInBrowserContextController:(WKWebProcessPlugInBrowserContextController*)controller didStartProvisionalLoadForFrame:(WKWebProcessPlugInFrame *)frame; 34 - (void)webProcessPlugInBrowserContextController:(WKWebProcessPlugInBrowserContextController*)controller didFinishLoadForFrame:(WKWebProcessPlugInFrame *)frame; 35 - (void)webProcessPlugInBrowserContextController:(WKWebProcessPlugInBrowserContextController*)controller globalObjectIsAvailableForFrame:(WKWebProcessPlugInFrame *)frame inScriptWorld:(WKWebProcessPlugInScriptWorld *)scriptWorld; 42 36 @end 43 44 #endif // WK_API_ENABLED -
trunk/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.h
r159760 r160616 32 32 @class WKDOMDocument; 33 33 @class WKDOMRange; 34 @protocol WKWebProcessPlugInLoadDelegate; 34 35 35 36 WK_API_CLASS … … 40 41 @property(readonly) WKDOMRange *selectedRange; 41 42 43 @property (weak) id <WKWebProcessPlugInLoadDelegate> loadDelegate; 44 42 45 @end 43 46 -
trunk/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm
r160277 r160616 35 35 #import "WKDOMInternals.h" 36 36 #import "WKRetainPtr.h" 37 #import "WKWebProcessPluginFrameInternal.h" 37 38 #import "WKWebProcessPlugInInternal.h" 39 #import "WKWebProcessPlugInLoadDelegate.h" 40 #import "WKWebProcessPlugInScriptWorldInternal.h" 41 #import "WeakObjCPtr.h" 38 42 #import "WebPage.h" 39 43 #import "WebProcess.h" … … 46 50 @implementation WKWebProcessPlugInBrowserContextController { 47 51 API::ObjectStorage<WebPage> _page; 52 WeakObjCPtr<id <WKWebProcessPlugInLoadDelegate>> _loadDelegate; 53 } 54 55 static void didStartProvisionalLoadForFrame(WKBundlePageRef page, WKBundleFrameRef frame, WKTypeRef* userDataRef, const void *clientInfo) 56 { 57 WKWebProcessPlugInBrowserContextController *pluginContextController = (WKWebProcessPlugInBrowserContextController *)clientInfo; 58 auto loadDelegate = pluginContextController->_loadDelegate.get(); 59 60 if ([loadDelegate respondsToSelector:@selector(webProcessPlugInBrowserContextController:didStartProvisionalLoadForFrame:)]) 61 [loadDelegate webProcessPlugInBrowserContextController:pluginContextController didStartProvisionalLoadForFrame:wrapper(*toImpl(frame))]; 62 } 63 64 static void didFinishLoadForFrame(WKBundlePageRef page, WKBundleFrameRef frame, WKTypeRef* userData, const void *clientInfo) 65 { 66 WKWebProcessPlugInBrowserContextController *pluginContextController = (WKWebProcessPlugInBrowserContextController *)clientInfo; 67 auto loadDelegate = pluginContextController->_loadDelegate.get(); 68 69 if ([loadDelegate respondsToSelector:@selector(webProcessPlugInBrowserContextController:didFinishLoadForFrame:)]) 70 [loadDelegate webProcessPlugInBrowserContextController:pluginContextController didFinishLoadForFrame:wrapper(*toImpl(frame))]; 71 } 72 73 static void globalObjectIsAvailableForFrame(WKBundlePageRef page, WKBundleFrameRef frame, WKBundleScriptWorldRef scriptWorld, const void* clientInfo) 74 { 75 WKWebProcessPlugInBrowserContextController *pluginContextController = (WKWebProcessPlugInBrowserContextController *)clientInfo; 76 auto loadDelegate = pluginContextController->_loadDelegate.get(); 77 78 if ([loadDelegate respondsToSelector:@selector(webProcessPlugInBrowserContextController:globalObjectIsAvailableForFrame:inScriptWorld:)]) 79 [loadDelegate webProcessPlugInBrowserContextController:pluginContextController globalObjectIsAvailableForFrame:wrapper(*toImpl(frame)) inScriptWorld:wrapper(*toImpl(scriptWorld))]; 80 } 81 82 static void setUpPageLoaderClient(WKWebProcessPlugInBrowserContextController *contextController, WebPage& page) 83 { 84 WKBundlePageLoaderClientV7 client; 85 memset(&client, 0, sizeof(client)); 86 87 client.base.version = 7; 88 client.base.clientInfo = contextController; 89 client.didStartProvisionalLoadForFrame = didStartProvisionalLoadForFrame; 90 client.didFinishLoadForFrame = didFinishLoadForFrame; 91 client.globalObjectIsAvailableForFrame = globalObjectIsAvailableForFrame; 92 93 page.initializeInjectedBundleLoaderClient(&client.base); 94 } 95 96 - (id <WKWebProcessPlugInLoadDelegate>)loadDelegate 97 { 98 return _loadDelegate.getAutoreleased(); 99 } 100 101 - (void)setLoadDelegate:(id <WKWebProcessPlugInLoadDelegate>)loadDelegate 102 { 103 _loadDelegate = loadDelegate; 104 105 if (loadDelegate) 106 setUpPageLoaderClient(self, *_page); 107 else 108 _page->initializeInjectedBundleLoaderClient(nullptr); 48 109 } 49 110
Note: See TracChangeset
for help on using the changeset viewer.