Changeset 166466 in webkit
- Timestamp:
- Mar 30, 2014 3:33:51 PM (10 years ago)
- Location:
- trunk
- Files:
-
- 17 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r166459 r166466 1 2014-03-30 Andy Estes <aestes@apple.com> 2 3 [Cocoa] Add an originatingWebView property to _WKDownload 4 https://bugs.webkit.org/show_bug.cgi?id=130945 5 6 Reviewed by Anders Carlsson. 7 8 * UIProcess/API/Cocoa/WKWebView.mm: 9 (-[WKWebView initWithFrame:configuration:]): Passed self to WKView's initializer. 10 * UIProcess/API/Cocoa/_WKDownload.h: Declared originatingWebView as a weak, readonly property. 11 * UIProcess/API/Cocoa/_WKDownload.mm: 12 (-[_WKDownload originatingWebView]): 13 (-[_WKDownload setOriginatingWebView:]): 14 * UIProcess/API/Cocoa/_WKDownloadInternal.h: Re-declared originatingWebView as readwrite so that 15 PageClientImpl can call setOriginatingWebView:. Removed some dead code. 16 * UIProcess/API/mac/WKView.mm: 17 (-[WKView initWithFrame:context:configuration:webView:]): Updated to accept a webView parameter. 18 (-[WKView initWithFrame:contextRef:pageGroupRef:relatedToPage:]): Passed nil for the webView parameter. 19 * UIProcess/API/mac/WKViewInternal.h: 20 * UIProcess/Cocoa/DownloadClient.mm: 21 (WebKit::DownloadClient::decideDestinationWithSuggestedFilename): Ensured allowOverwrite is initialized. 22 * UIProcess/PageClient.h: Included handleDownloadRequest() on all platforms. 23 * UIProcess/WebPageProxy.cpp: 24 (WebKit::WebPageProxy::receivedPolicyDecision): Ditto. 25 (WebKit::WebPageProxy::handleDownloadRequest): Ditto. 26 * UIProcess/WebPageProxy.h: Ditto. 27 * UIProcess/ios/PageClientImplIOS.h: 28 * UIProcess/ios/PageClientImplIOS.mm: 29 (WebKit::PageClientImpl::handleDownloadRequest): Called -[_WKDownload setOriginatingWebView:]. 30 * UIProcess/mac/PageClientImpl.h: Added a m_webView member variable. 31 * UIProcess/mac/PageClientImpl.mm: 32 (WebKit::PageClientImpl::PageClientImpl): Asserted that m_webView is nil if WK API isn't enabled. 33 (WebKit::PageClientImpl::handleDownloadRequest): Called -[_WKDownload setOriginatingWebView:]. 34 1 35 2014-03-29 Commit Queue <commit-queue@webkit.org> 2 36 -
trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm
r166382 r166466 185 185 186 186 #if PLATFORM(MAC) 187 _wkView = [[WKView alloc] initWithFrame:bounds context:context configuration:std::move(webPageConfiguration) ];187 _wkView = [[WKView alloc] initWithFrame:bounds context:context configuration:std::move(webPageConfiguration) webView:self]; 188 188 [self addSubview:_wkView.get()]; 189 189 _page = WebKit::toImpl([_wkView pageRef]); -
trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKDownload.h
r166318 r166466 30 30 #import <Foundation/Foundation.h> 31 31 32 @class WKWebView; 33 32 34 WK_API_CLASS 33 35 @interface _WKDownload : NSObject … … 36 38 37 39 @property (nonatomic, readonly) NSURLRequest *request; 40 @property (nonatomic, readonly, weak) WKWebView *originatingWebView; 38 41 39 42 @end -
trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKDownload.mm
r166318 r166466 30 30 31 31 #import "DownloadProxy.h" 32 #import "WeakObjCPtr.h" 32 33 33 34 @implementation _WKDownload { 34 35 API::ObjectStorage<WebKit::DownloadProxy> _download; 36 WebKit::WeakObjCPtr<WKWebView> _originatingWebView; 35 37 } 36 38 … … 52 54 } 53 55 56 - (WKWebView *)originatingWebView 57 { 58 return _originatingWebView.getAutoreleased(); 59 } 60 61 - (void)setOriginatingWebView:(WKWebView *)originatingWebView 62 { 63 _originatingWebView = originatingWebView; 64 } 65 54 66 #pragma mark WKObject protocol implementation 55 67 -
trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKDownloadInternal.h
r166186 r166466 30 30 #import "WKObject.h" 31 31 32 @protocol _WKDownloadDelegate;33 34 namespace API {35 class DownloadClient;36 }37 38 namespace WebKit {39 std::unique_ptr<API::DownloadClient> createAPIDownloadClient(id <_WKDownloadDelegate>);40 }41 42 32 @interface _WKDownload () <WKObject> 33 @property (nonatomic, weak) WKWebView *originatingWebView; 43 34 @end 44 35 -
trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm
r166432 r166466 3388 3388 } 3389 3389 3390 - (instancetype)initWithFrame:(NSRect)frame context:(WebContext&)context configuration:(WebPageConfiguration)webPageConfiguration 3390 - (instancetype)initWithFrame:(NSRect)frame context:(WebContext&)context configuration:(WebPageConfiguration)webPageConfiguration webView:(WKWebView *)webView 3391 3391 { 3392 3392 self = [super initWithFrame:frame]; … … 3413 3413 3414 3414 _data = [[WKViewData alloc] init]; 3415 _data->_pageClient = std::make_unique<PageClientImpl>(self );3415 _data->_pageClient = std::make_unique<PageClientImpl>(self, webView); 3416 3416 _data->_page = context.createWebPage(*_data->_pageClient, std::move(webPageConfiguration)); 3417 3417 _data->_page->setIntrinsicDeviceScaleFactor([self _intrinsicDeviceScaleFactor]); … … 3506 3506 webPageConfiguration.relatedPage = toImpl(relatedPage); 3507 3507 3508 return [self initWithFrame:frame context:*toImpl(contextRef) configuration:webPageConfiguration ];3508 return [self initWithFrame:frame context:*toImpl(contextRef) configuration:webPageConfiguration webView:nil]; 3509 3509 } 3510 3510 -
trunk/Source/WebKit2/UIProcess/API/mac/WKViewInternal.h
r165972 r166466 55 55 56 56 @class WKFullScreenWindowController; 57 @class WKWebView; 57 58 #if WK_API_ENABLED 58 59 @class _WKThumbnailView; … … 61 62 @interface WKView () 62 63 #if WK_API_ENABLED 63 - (instancetype)initWithFrame:(CGRect)frame context:(WebKit::WebContext&)context configuration:(WebKit::WebPageConfiguration)webPageConfiguration ;64 - (instancetype)initWithFrame:(CGRect)frame context:(WebKit::WebContext&)context configuration:(WebKit::WebPageConfiguration)webPageConfiguration webView:(WKWebView *)webView; 64 65 #endif 65 66 -
trunk/Source/WebKit2/UIProcess/Cocoa/DownloadClient.mm
r166328 r166466 78 78 return String(); 79 79 80 BOOL allowOverwrite ;80 BOOL allowOverwrite = NO; 81 81 NSString *destination = [m_delegate.get() _download:wrapper(*downloadProxy) decideDestinationWithSuggestedFilename:filename allowOverwrite:&allowOverwrite]; 82 82 allowOverwriteParam = allowOverwrite; -
trunk/Source/WebKit2/UIProcess/PageClient.h
r166384 r166466 147 147 #endif // PLATFORM(EFL) || PLATOFRM(GTK) 148 148 149 #if PLATFORM(EFL) || PLATFORM(GTK)150 149 virtual void handleDownloadRequest(DownloadProxy*) = 0; 151 #endif // PLATFORM(EFL) || PLATFORM(GTK)152 150 153 151 #if PLATFORM(EFL) -
trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp
r166421 r166466 1531 1531 DownloadProxy* download = m_process->context().createDownloadProxy(); 1532 1532 downloadID = download->downloadID(); 1533 #if PLATFORM(EFL) || PLATFORM(GTK)1534 // Our design does not suppport downloads without a WebPage.1535 1533 handleDownloadRequest(download); 1536 #endif1537 1534 } 1538 1535 … … 2989 2986 } 2990 2987 2991 #if PLATFORM(EFL) || PLATFORM(GTK)2992 2988 void WebPageProxy::handleDownloadRequest(DownloadProxy* download) 2993 2989 { 2994 2990 m_pageClient.handleDownloadRequest(download); 2995 2991 } 2996 #endif // PLATFORM(EFL) || PLATFORM(GTK)2997 2992 2998 2993 #if PLATFORM(EFL) -
trunk/Source/WebKit2/UIProcess/WebPageProxy.h
r166431 r166466 921 921 #endif 922 922 923 #if PLATFORM(EFL) || PLATFORM(GTK)924 923 void handleDownloadRequest(DownloadProxy*); 925 #endif926 924 927 925 void advanceToNextMisspelling(bool startBeforeSelection); -
trunk/Source/WebKit2/UIProcess/ios/PageClientImplIOS.h
r166384 r166466 44 44 { 45 45 public: 46 explicitPageClientImpl(WKContentView *, WKWebView *);46 PageClientImpl(WKContentView *, WKWebView *); 47 47 virtual ~PageClientImpl(); 48 48 … … 66 66 virtual bool decidePolicyForGeolocationPermissionRequest(WebFrameProxy&, WebSecurityOrigin&, GeolocationPermissionRequestProxy&) override; 67 67 virtual void didCommitLoadForMainFrame(const String& mimeType, bool useCustomContentProvider) override; 68 virtual void handleDownloadRequest(DownloadProxy*) override; 68 69 virtual void setCursor(const WebCore::Cursor&) override; 69 70 virtual void setCursorHiddenUntilMouseMoves(bool) override; -
trunk/Source/WebKit2/UIProcess/ios/PageClientImplIOS.mm
r166384 r166466 29 29 #if PLATFORM(IOS) 30 30 31 #import "_WKDownloadInternal.h" 31 32 #import "DataReference.h" 33 #import "DownloadProxy.h" 32 34 #import "NativeWebKeyboardEvent.h" 33 35 #import "InteractionInformationAtPosition.h" … … 155 157 } 156 158 159 void PageClientImpl::handleDownloadRequest(DownloadProxy* download) 160 { 161 ASSERT_ARG(download, download); 162 ASSERT([download->wrapper() isKindOfClass:[_WKDownload class]]); 163 [static_cast<_WKDownload *>(download->wrapper()) setOriginatingWebView:m_webView]; 164 } 165 157 166 void PageClientImpl::setCursor(const Cursor&) 158 167 { -
trunk/Source/WebKit2/UIProcess/mac/PageClientImpl.h
r165356 r166466 36 36 @class WKEditorUndoTargetObjC; 37 37 @class WKView; 38 @class WKWebView; 38 39 39 40 namespace WebCore { … … 50 51 { 51 52 public: 52 explicit PageClientImpl(WKView *);53 PageClientImpl(WKView *, WKWebView *); 53 54 virtual ~PageClientImpl(); 54 55 … … 82 83 virtual void didCommitLoadForMainFrame(const String& mimeType, bool useCustomContentProvider) override; 83 84 virtual void didFinishLoadingDataForCustomContentProvider(const String& suggestedFilename, const IPC::DataReference&) override; 85 virtual void handleDownloadRequest(DownloadProxy*) override; 84 86 virtual void setCursor(const WebCore::Cursor&); 85 87 virtual void setCursorHiddenUntilMouseMoves(bool); … … 167 169 168 170 WKView *m_wkView; 171 WKWebView *m_webView; 169 172 RetainPtr<WKEditorUndoTargetObjC> m_undoTarget; 170 173 #if USE(AUTOCORRECTION_PANEL) -
trunk/Source/WebKit2/UIProcess/mac/PageClientImpl.mm
r165758 r166466 29 29 #if PLATFORM(MAC) 30 30 31 #import "_WKDownloadInternal.h" 31 32 #import "AttributedString.h" 32 33 #import "ColorSpaceData.h" 33 34 #import "DataReference.h" 34 35 #import "DictionaryPopupInfo.h" 36 #import "DownloadProxy.h" 35 37 #import "FindIndicator.h" 36 38 #import "NativeWebKeyboardEvent.h" … … 127 129 namespace WebKit { 128 130 129 PageClientImpl::PageClientImpl(WKView* wkView )131 PageClientImpl::PageClientImpl(WKView* wkView, WKWebView *webView) 130 132 : m_wkView(wkView) 133 , m_webView(webView) 131 134 , m_undoTarget(adoptNS([[WKEditorUndoTargetObjC alloc] init])) 132 135 #if USE(DICTATION_ALTERNATIVES) … … 134 137 #endif 135 138 { 139 #if !WK_API_ENABLED 140 ASSERT_UNUSED(m_webView, !m_webView); 141 #endif 136 142 } 137 143 … … 292 298 void PageClientImpl::didFinishLoadingDataForCustomContentProvider(const String& suggestedFilename, const IPC::DataReference& dataReference) 293 299 { 300 } 301 302 void PageClientImpl::handleDownloadRequest(DownloadProxy* download) 303 { 304 ASSERT_ARG(download, download); 305 #if WK_API_ENABLED 306 ASSERT([download->wrapper() isKindOfClass:[_WKDownload class]]); 307 [static_cast<_WKDownload *>(download->wrapper()) setOriginatingWebView:m_webView]; 308 #endif 294 309 } 295 310 -
trunk/Tools/ChangeLog
r166463 r166466 1 2014-03-30 Andy Estes <aestes@apple.com> 2 3 [Cocoa] Add an originatingWebView property to _WKDownload 4 https://bugs.webkit.org/show_bug.cgi?id=130945 5 6 Reviewed by Anders Carlsson. 7 8 * TestWebKitAPI/Tests/WebKit2Cocoa/Download.mm: 9 (-[DownloadDelegate _downloadDidStart:]): 10 (-[OriginatingWebViewDownloadDelegate initWithWebView:]): 11 (-[OriginatingWebViewDownloadDelegate _downloadDidStart:]): 12 (TEST): 13 1 14 2014-03-28 Filip Pizlo <fpizlo@apple.com> 2 15 -
trunk/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/Download.mm
r166328 r166466 32 32 #import "Test.h" 33 33 #import <WebCore/FileSystem.h> 34 #import <WebKit2/_WKDownload.h> 34 35 #import <WebKit2/_WKDownloadDelegate.h> 35 36 #import <WebKit2/WKNavigationDelegate.h> … … 57 58 EXPECT_NULL(_download); 58 59 EXPECT_NOT_NULL(download); 60 EXPECT_TRUE([[[download request] URL] isEqual:sourceURL]); 59 61 _download = download; 60 62 } … … 221 223 } 222 224 225 @interface OriginatingWebViewDownloadDelegate : NSObject <_WKDownloadDelegate> 226 - (instancetype)initWithWebView:(WKWebView *)webView; 227 @end 228 229 @implementation OriginatingWebViewDownloadDelegate { 230 RetainPtr<WKWebView> _webView; 231 } 232 233 - (instancetype)initWithWebView:(WKWebView *)webView 234 { 235 if (!(self = [super init])) 236 return nil; 237 238 _webView = webView; 239 return self; 240 } 241 242 - (void)_downloadDidStart:(_WKDownload *)download 243 { 244 @autoreleasepool { 245 EXPECT_EQ([download originatingWebView], _webView); 246 } 247 248 _webView = nullptr; 249 EXPECT_NULL([download originatingWebView]); 250 isDone = true; 251 } 252 253 @end 254 255 TEST(_WKDownload, OriginatingWebView) 256 { 257 RetainPtr<DownloadNavigationDelegate> navigationDelegate = adoptNS([[DownloadNavigationDelegate alloc] init]); 258 RetainPtr<OriginatingWebViewDownloadDelegate> downloadDelegate; 259 { 260 RetainPtr<WKWebView> webView = adoptNS([[WKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600)]); 261 [webView setNavigationDelegate:navigationDelegate.get()]; 262 downloadDelegate = adoptNS([[OriginatingWebViewDownloadDelegate alloc] initWithWebView:webView.get()]); 263 [[[webView configuration] processPool] _setDownloadDelegate:downloadDelegate.get()]; 264 [webView loadRequest:[NSURLRequest requestWithURL:sourceURL]]; 265 } 266 267 isDone = false; 268 TestWebKitAPI::Util::run(&isDone); 269 } 270 223 271 #endif
Note: See TracChangeset
for help on using the changeset viewer.