Changeset 254409 in webkit
- Timestamp:
- Jan 11, 2020 5:46:52 PM (4 years ago)
- Location:
- trunk
- Files:
-
- 23 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r254408 r254409 1 2020-01-11 Alex Christensen <achristensen@webkit.org> 2 3 Expose frame information on _WKResourceLoadInfo 4 https://bugs.webkit.org/show_bug.cgi?id=206104 5 <rdar://problem/57132290> 6 7 Reviewed by Dean Jackson. 8 9 Covered by API tests. 10 11 * page/FrameIdentifier.h: 12 (WebCore::frameIdentifierFromID): Deleted. 13 1 14 2020-01-10 Yusuke Suzuki <ysuzuki@apple.com> 2 15 -
trunk/Source/WebCore/page/FrameIdentifier.h
r248713 r254409 33 33 using FrameIdentifier = ObjectIdentifier<FrameIdentifierType>; 34 34 35 inline FrameIdentifier frameIdentifierFromID(uint64_t frameID)36 {37 return makeObjectIdentifier<FrameIdentifierType>(frameID);38 35 } 39 40 } -
trunk/Source/WebKit/ChangeLog
r254397 r254409 1 2020-01-11 Alex Christensen <achristensen@webkit.org> 2 3 Expose frame information on _WKResourceLoadInfo 4 https://bugs.webkit.org/show_bug.cgi?id=206104 5 <rdar://problem/57132290> 6 7 Reviewed by Dean Jackson. 8 9 * NetworkProcess/NetworkResourceLoadParameters.cpp: 10 (WebKit::NetworkResourceLoadParameters::encode const): 11 (WebKit::NetworkResourceLoadParameters::decode): 12 * NetworkProcess/NetworkResourceLoadParameters.h: 13 * NetworkProcess/NetworkResourceLoader.cpp: 14 (WebKit::NetworkResourceLoader::resourceLoadInfo): 15 * Shared/API/Cocoa/_WKFrameHandle.h: 16 * Shared/API/Cocoa/_WKFrameHandle.mm: 17 (-[_WKFrameHandle frameID]): 18 (-[_WKFrameHandle initWithCoder:]): 19 (-[_WKFrameHandle encodeWithCoder:]): 20 (-[_WKFrameHandle _frameID]): Deleted. 21 * Shared/API/Cocoa/_WKFrameHandleInternal.h: 22 * Shared/ResourceLoadInfo.h: 23 (WebKit::ResourceLoadInfo::encode const): 24 (WebKit::ResourceLoadInfo::decode): 25 * UIProcess/API/APIResourceLoadInfo.h: 26 * UIProcess/API/Cocoa/_WKInspector.mm: 27 (-[_WKInspector showMainResourceForFrame:]): 28 * UIProcess/API/Cocoa/_WKResourceLoadInfo.h: 29 * UIProcess/API/Cocoa/_WKResourceLoadInfo.mm: 30 (-[_WKResourceLoadInfo frame]): 31 (-[_WKResourceLoadInfo parentFrame]): 32 * UIProcess/API/mac/WKWebViewMac.mm: 33 (-[WKWebView _canChangeFrameLayout:]): 34 (-[WKWebView _printOperationWithPrintInfo:forFrame:]): 35 * UIProcess/Cocoa/WKReloadFrameErrorRecoveryAttempter.mm: 36 (-[WKReloadFrameErrorRecoveryAttempter attemptRecovery]): 37 * UIProcess/ios/WKContentView.mm: 38 (-[WKContentView _wk_pageCountForPrintFormatter:]): 39 * WebProcess/Automation/WebAutomationSessionProxy.cpp: 40 (WebKit::evaluateJavaScriptCallback): 41 * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.mm: 42 (+[WKWebProcessPlugInFrame lookUpFrameFromHandle:]): 43 * WebProcess/Network/WebLoaderStrategy.cpp: 44 (WebKit::addParametersFromFrame): 45 (WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess): 46 (WebKit::WebLoaderStrategy::loadResourceSynchronously): 47 (WebKit::WebLoaderStrategy::startPingLoad): 48 * WebProcess/Storage/WebSWContextManagerConnection.cpp: 49 (WebKit::WebSWContextManagerConnection::installServiceWorker): 50 1 51 2020-01-11 Kate Cheney <katherine_cheney@apple.com> 2 52 -
trunk/Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.cpp
r254183 r254409 108 108 encoder << isHTTPSUpgradeEnabled; 109 109 encoder << pageHasResourceLoadClient; 110 encoder << parentFrameID; 110 111 111 112 #if ENABLE(SERVICE_WORKER) … … 256 257 return WTF::nullopt; 257 258 result.pageHasResourceLoadClient = *pageHasResourceLoadClient; 259 260 Optional<Optional<FrameIdentifier>> parentFrameID; 261 decoder >> parentFrameID; 262 if (!parentFrameID) 263 return WTF::nullopt; 264 result.parentFrameID = WTFMove(*parentFrameID); 258 265 259 266 #if ENABLE(SERVICE_WORKER) -
trunk/Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.h
r254183 r254409 62 62 bool isHTTPSUpgradeEnabled { false }; 63 63 bool pageHasResourceLoadClient { false }; 64 Optional<WebCore::FrameIdentifier> parentFrameID; 64 65 65 66 #if ENABLE(SERVICE_WORKER) -
trunk/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp
r254345 r254409 337 337 { 338 338 return { 339 m_resourceLoadID 339 m_resourceLoadID, 340 m_parameters.webFrameID, 341 m_parameters.parentFrameID, 340 342 }; 341 343 } -
trunk/Source/WebKit/Shared/API/Cocoa/_WKFrameHandle.h
r243376 r254409 31 31 @interface _WKFrameHandle : NSObject <NSCopying, NSSecureCoding> 32 32 33 @property (nonatomic, readonly) uint64_t frameID WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA)); 34 33 35 @end -
trunk/Source/WebKit/Shared/API/Cocoa/_WKFrameHandle.mm
r248713 r254409 29 29 #import <WebCore/FrameIdentifier.h> 30 30 31 @implementation _WKFrameHandle { 32 API::ObjectStorage<API::FrameHandle> _frameHandle; 33 } 31 @implementation _WKFrameHandle 34 32 35 33 - (void)dealloc … … 56 54 } 57 55 58 - (uint64_t) _frameID56 - (uint64_t)frameID 59 57 { 60 58 return _frameHandle->frameID().toUInt64(); … … 86 84 } 87 85 88 API::Object::constructInWrapper<API::FrameHandle>(self, WebCore::frameIdentifierFromID(frameID.unsignedLongLongValue), false);86 API::Object::constructInWrapper<API::FrameHandle>(self, makeObjectIdentifier<WebCore::FrameIdentifierType>(frameID.unsignedLongLongValue), false); 89 87 90 88 return self; … … 93 91 - (void)encodeWithCoder:(NSCoder *)coder 94 92 { 95 [coder encodeObject:@( [self _frameID]) forKey:@"frameID"];93 [coder encodeObject:@(self.frameID) forKey:@"frameID"]; 96 94 } 97 95 -
trunk/Source/WebKit/Shared/API/Cocoa/_WKFrameHandleInternal.h
r242339 r254409 37 37 } 38 38 39 @interface _WKFrameHandle () <WKObject> 40 41 @property (nonatomic, readonly) uint64_t _frameID;42 39 @interface _WKFrameHandle () <WKObject> { 40 @package 41 API::ObjectStorage<API::FrameHandle> _frameHandle; 42 } 43 43 @end -
trunk/Source/WebKit/Shared/ResourceLoadInfo.h
r254345 r254409 28 28 #include "ArgumentCoders.h" 29 29 #include "NetworkResourceLoadIdentifier.h" 30 #include <WebCore/FrameIdentifier.h> 30 31 31 32 namespace WebKit { … … 34 35 35 36 NetworkResourceLoadIdentifier resourceLoadID; 37 Optional<WebCore::FrameIdentifier> frameID; 38 Optional<WebCore::FrameIdentifier> parentFrameID; 36 39 37 40 void encode(IPC::Encoder& encoder) const 38 41 { 39 42 encoder << resourceLoadID; 43 encoder << frameID; 44 encoder << parentFrameID; 40 45 } 41 46 … … 47 52 return WTF::nullopt; 48 53 54 Optional<Optional<WebCore::FrameIdentifier>> frameID; 55 decoder >> frameID; 56 if (!frameID) 57 return WTF::nullopt; 58 59 Optional<Optional<WebCore::FrameIdentifier>> parentFrameID; 60 decoder >> parentFrameID; 61 if (!parentFrameID) 62 return WTF::nullopt; 63 49 64 return {{ 50 65 WTFMove(*resourceLoadID), 66 WTFMove(*frameID), 67 WTFMove(*parentFrameID), 51 68 }}; 52 69 } -
trunk/Source/WebKit/UIProcess/API/APIResourceLoadInfo.h
r254345 r254409 39 39 40 40 WebKit::NetworkResourceLoadIdentifier resourceLoadID() const { return m_info.resourceLoadID; } 41 Optional<WebCore::FrameIdentifier> frameID() const { return m_info.frameID; } 42 Optional<WebCore::FrameIdentifier> parentFrameID() const { return m_info.parentFrameID; } 41 43 42 44 private: -
trunk/Source/WebKit/UIProcess/API/Cocoa/_WKInspector.mm
r253189 r254409 110 110 { 111 111 if (auto* page = _inspector->inspectedPage()) 112 _inspector->showMainResourceForFrame(page->process().webFrame( WebCore::frameIdentifierFromID(frame._frameID)));112 _inspector->showMainResourceForFrame(page->process().webFrame(frame->_frameHandle->frameID())); 113 113 } 114 114 -
trunk/Source/WebKit/UIProcess/API/Cocoa/_WKResourceLoadInfo.h
r254345 r254409 24 24 */ 25 25 26 #import <WebKit/WKFoundation.h> 27 28 @class _WKFrameHandle; 29 26 30 NS_ASSUME_NONNULL_BEGIN 27 31 … … 33 37 34 38 @property (nonatomic, readonly) uint64_t resourceLoadID; 39 @property (nonatomic, readonly) _WKFrameHandle* frame; 40 @property (nonatomic, readonly, nullable) _WKFrameHandle* parentFrame; 35 41 36 42 @end -
trunk/Source/WebKit/UIProcess/API/Cocoa/_WKResourceLoadInfo.mm
r254345 r254409 27 27 #import "_WKResourceLoadInfo.h" 28 28 29 #import "APIFrameHandle.h" 29 30 #import "APIResourceLoadInfo.h" 31 #import "_WKFrameHandleInternal.h" 30 32 #import "_WKResourceLoadInfoInternal.h" 31 33 … … 43 45 } 44 46 47 - (_WKFrameHandle *)frame 48 { 49 if (auto frameID = _info->frameID()) 50 return wrapper(API::FrameHandle::create(*frameID)); 51 return nil; 52 } 53 54 - (_WKFrameHandle *)parentFrame 55 { 56 if (auto parentFrameID = _info->parentFrameID()) 57 return wrapper(API::FrameHandle::create(*parentFrameID)); 58 return nil; 59 } 60 45 61 - (API::Object&)_apiObject 46 62 { -
trunk/Source/WebKit/UIProcess/API/mac/WKWebViewMac.mm
r254360 r254409 1492 1492 - (BOOL)_canChangeFrameLayout:(_WKFrameHandle *)frameHandle 1493 1493 { 1494 if (auto* webFrameProxy = _page->process().webFrame( WebCore::frameIdentifierFromID(frameHandle._frameID)))1494 if (auto* webFrameProxy = _page->process().webFrame(frameHandle->_frameHandle->frameID())) 1495 1495 return _impl->canChangeFrameLayout(*webFrameProxy); 1496 1496 return false; … … 1579 1579 - (NSPrintOperation *)_printOperationWithPrintInfo:(NSPrintInfo *)printInfo forFrame:(_WKFrameHandle *)frameHandle 1580 1580 { 1581 if (auto* webFrameProxy = _page->process().webFrame( WebCore::frameIdentifierFromID(frameHandle._frameID)))1581 if (auto* webFrameProxy = _page->process().webFrame(frameHandle->_frameHandle->frameID())) 1582 1582 return _impl->printOperationWithPrintInfo(printInfo, *webFrameProxy); 1583 1583 return nil; -
trunk/Source/WebKit/UIProcess/Cocoa/WKReloadFrameErrorRecoveryAttempter.mm
r248713 r254409 64 64 return NO; 65 65 66 WebKit::WebFrameProxy* webFrameProxy = webView->_page->process().webFrame( WebCore::frameIdentifierFromID([_frameHandle _frameID]));66 WebKit::WebFrameProxy* webFrameProxy = webView->_page->process().webFrame(_frameHandle->_frameHandle->frameID()); 67 67 if (!webFrameProxy) 68 68 return NO; -
trunk/Source/WebKit/UIProcess/ios/WKContentView.mm
r254387 r254409 749 749 WebCore::FrameIdentifier frameID; 750 750 if (_WKFrameHandle *handle = printFormatter.frameToPrint) 751 frameID = WebCore::frameIdentifierFromID(handle._frameID);751 frameID = handle->_frameHandle->frameID(); 752 752 else if (auto mainFrame = _page->mainFrame()) 753 753 frameID = mainFrame->frameID(); -
trunk/Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp
r254330 r254409 191 191 return JSValueMakeUndefined(context); 192 192 193 WebCore::FrameIdentifier frameID = WebCore::frameIdentifierFromID(JSValueToNumber(context, arguments[0], exception));193 WebCore::FrameIdentifier frameID = makeObjectIdentifier<WebCore::FrameIdentifierType>(JSValueToNumber(context, arguments[0], exception)); 194 194 uint64_t callbackID = JSValueToNumber(context, arguments[1], exception); 195 195 if (JSValueIsString(context, arguments[2])) { -
trunk/Source/WebKit/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.mm
r253723 r254409 49 49 + (instancetype)lookUpFrameFromHandle:(_WKFrameHandle *)handle 50 50 { 51 return wrapper(WebKit::WebProcess::singleton().webFrame( WebCore::frameIdentifierFromID(handle._frameID)));51 return wrapper(WebKit::WebProcess::singleton().webFrame(handle->_frameHandle->frameID())); 52 52 } 53 53 -
trunk/Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp
r254345 r254409 58 58 #include <WebCore/Frame.h> 59 59 #include <WebCore/FrameLoader.h> 60 #include <WebCore/HTMLFrameOwnerElement.h> 60 61 #include <WebCore/NetscapePlugInStreamLoader.h> 61 62 #include <WebCore/NetworkLoadInformation.h> … … 254 255 } 255 256 257 static void addParametersFromFrame(const Frame* frame, NetworkResourceLoadParameters& parameters) 258 { 259 if (!frame) 260 return; 261 262 parameters.isHTTPSUpgradeEnabled = frame->settings().HTTPSUpgradeEnabled(); 263 264 if (auto* page = frame->page()) 265 parameters.pageHasResourceLoadClient = page->hasResourceLoadClient(); 266 267 if (auto* ownerElement = frame->ownerElement()) { 268 if (auto* parentFrame = ownerElement->document().frame()) 269 parameters.parentFrameID = parentFrame->loader().client().frameID(); 270 } 271 } 272 256 273 void WebLoaderStrategy::scheduleLoadFromNetworkProcess(ResourceLoader& resourceLoader, const ResourceRequest& request, const WebResourceLoader::TrackingParameters& trackingParameters, bool shouldClearReferrerOnHTTPSToHTTPRedirect, Seconds maximumBufferingTime) 257 274 { … … 287 304 loadParameters.options = resourceLoader.options(); 288 305 loadParameters.preflightPolicy = resourceLoader.options().preflightPolicy; 289 if (frame) { 290 loadParameters.isHTTPSUpgradeEnabled = frame->settings().HTTPSUpgradeEnabled(); 291 if (auto* page = frame->page()) 292 loadParameters.pageHasResourceLoadClient = page->hasResourceLoadClient(); 293 } 306 addParametersFromFrame(frame, loadParameters); 294 307 295 308 #if ENABLE(SERVICE_WORKER) … … 581 594 } 582 595 loadParameters.originalRequestHeaders = originalRequestHeaders; 583 if (page) 584 loadParameters.pageHasResourceLoadClient = page->hasResourceLoadClient(); 596 addParametersFromFrame(webFrame->coreFrame(), loadParameters); 585 597 586 598 data.shrink(0); … … 648 660 loadParameters.cspResponseHeaders = contentSecurityPolicy->responseHeaders(); 649 661 } 650 if (auto* page = document->page()) 651 loadParameters.pageHasResourceLoadClient = page->hasResourceLoadClient(); 662 addParametersFromFrame(&frame, loadParameters); 652 663 653 664 #if ENABLE(CONTENT_EXTENSIONS) -
trunk/Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.cpp
r254191 r254409 149 149 // If it weren't for ServiceWorkerFrameLoaderClient's dependence on WebDocumentLoader, this could already happen. 150 150 // FIXME: Weird to pass m_previousServiceWorkerID as a FrameIdentifier. 151 auto frameLoaderClient = makeUnique<ServiceWorkerFrameLoaderClient>(*this, m_webPageProxyID, m_pageID, frameIdentifierFromID(++m_previousServiceWorkerID), effectiveUserAgent);151 auto frameLoaderClient = makeUnique<ServiceWorkerFrameLoaderClient>(*this, m_webPageProxyID, m_pageID, makeObjectIdentifier<WebCore::FrameIdentifierType>(++m_previousServiceWorkerID), effectiveUserAgent); 152 152 pageConfiguration.loaderClientForMainFrame = frameLoaderClient.get(); 153 153 m_loaders.add(WTFMove(frameLoaderClient)); -
trunk/Tools/ChangeLog
r254397 r254409 1 2020-01-11 Alex Christensen <achristensen@webkit.org> 2 3 Expose frame information on _WKResourceLoadInfo 4 https://bugs.webkit.org/show_bug.cgi?id=206104 5 <rdar://problem/57132290> 6 7 Reviewed by Dean Jackson. 8 9 * TestWebKitAPI/Tests/WebKitCocoa/ResourceLoadDelegate.mm: 10 (TEST): 11 1 12 2020-01-11 Kate Cheney <katherine_cheney@apple.com> 2 13 -
trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/ResourceLoadDelegate.mm
r254367 r254409 33 33 #import <WebKit/WKWebViewPrivate.h> 34 34 #import <WebKit/WebKit.h> 35 #import <WebKit/_WKFrameHandle.h> 35 36 #import <WebKit/_WKResourceLoadDelegate.h> 36 37 #import <WebKit/_WKResourceLoadInfo.h> … … 130 131 TestWebKitAPI::HTTPServer server({ 131 132 { "/", { "hello" } }, 132 { "/xhrTarget", { "hi" } },133 { "/xhrTarget", { {{ "Content-Type", "text/html" }}, "hi" } }, 133 134 { "/beaconTarget", { "hi" } }, 134 135 }); … … 141 142 auto resourceLoadDelegate = adoptNS([TestResourceLoadDelegate new]); 142 143 [webView _setResourceLoadDelegate:resourceLoadDelegate.get()]; 143 [resourceLoadDelegate setDidSendRequest:^(WKWebView *, _WKResourceLoadInfo * , NSURLRequest *request) {144 [resourceLoadDelegate setDidSendRequest:^(WKWebView *, _WKResourceLoadInfo *info, NSURLRequest *request) { 144 145 requestFromDelegate = request; 145 146 receivedCallback = true; 147 EXPECT_TRUE(!!info.frame); 148 EXPECT_FALSE(!!info.parentFrame); 146 149 }]; 147 150 … … 265 268 EXPECT_EQ(loadInfos[6].get().resourceLoadID, loadInfos[8].get().resourceLoadID); 266 269 EXPECT_NE(loadInfos[6].get().resourceLoadID, loadInfos[0].get().resourceLoadID); 270 auto checkFrames = ^(size_t index, _WKFrameHandle *expectedFrame, _WKFrameHandle *expectedParent) { 271 _WKResourceLoadInfo *info = loadInfos[index].get(); 272 EXPECT_EQ(!!info.frame, !!expectedFrame); 273 EXPECT_EQ(!!info.parentFrame, !!expectedParent); 274 EXPECT_EQ(info.frame.frameID, expectedFrame.frameID); 275 EXPECT_EQ(info.parentFrame.frameID, expectedParent.frameID); 276 }; 277 _WKFrameHandle *main = loadInfos[0].get().frame; 278 _WKFrameHandle *sub = loadInfos[8].get().frame; 279 EXPECT_TRUE(!!main); 280 EXPECT_TRUE(!!sub); 281 EXPECT_TRUE(main.frameID != sub.frameID); 282 checkFrames(0, main, nil); 283 checkFrames(1, main, nil); 284 checkFrames(2, main, nil); 285 checkFrames(3, sub, main); 286 checkFrames(4, sub, main); 287 checkFrames(5, sub, main); 288 checkFrames(6, sub, main); 289 checkFrames(7, sub, main); 290 checkFrames(8, sub, main); 267 291 268 292 EXPECT_EQ(otherParameters.size(), 9ull);
Note: See TracChangeset
for help on using the changeset viewer.