Changeset 254409 in webkit


Ignore:
Timestamp:
Jan 11, 2020 5:46:52 PM (4 years ago)
Author:
achristensen@apple.com
Message:

Expose frame information on _WKResourceLoadInfo
https://bugs.webkit.org/show_bug.cgi?id=206104
<rdar://problem/57132290>

Reviewed by Dean Jackson.

Source/WebCore:

Covered by API tests.

  • page/FrameIdentifier.h:

(WebCore::frameIdentifierFromID): Deleted.

Source/WebKit:

  • NetworkProcess/NetworkResourceLoadParameters.cpp:

(WebKit::NetworkResourceLoadParameters::encode const):
(WebKit::NetworkResourceLoadParameters::decode):

  • NetworkProcess/NetworkResourceLoadParameters.h:
  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::resourceLoadInfo):

  • Shared/API/Cocoa/_WKFrameHandle.h:
  • Shared/API/Cocoa/_WKFrameHandle.mm:

(-[_WKFrameHandle frameID]):
(-[_WKFrameHandle initWithCoder:]):
(-[_WKFrameHandle encodeWithCoder:]):
(-[_WKFrameHandle _frameID]): Deleted.

  • Shared/API/Cocoa/_WKFrameHandleInternal.h:
  • Shared/ResourceLoadInfo.h:

(WebKit::ResourceLoadInfo::encode const):
(WebKit::ResourceLoadInfo::decode):

  • UIProcess/API/APIResourceLoadInfo.h:
  • UIProcess/API/Cocoa/_WKInspector.mm:

(-[_WKInspector showMainResourceForFrame:]):

  • UIProcess/API/Cocoa/_WKResourceLoadInfo.h:
  • UIProcess/API/Cocoa/_WKResourceLoadInfo.mm:

(-[_WKResourceLoadInfo frame]):
(-[_WKResourceLoadInfo parentFrame]):

  • UIProcess/API/mac/WKWebViewMac.mm:

(-[WKWebView _canChangeFrameLayout:]):
(-[WKWebView _printOperationWithPrintInfo:forFrame:]):

  • UIProcess/Cocoa/WKReloadFrameErrorRecoveryAttempter.mm:

(-[WKReloadFrameErrorRecoveryAttempter attemptRecovery]):

  • UIProcess/ios/WKContentView.mm:

(-[WKContentView _wk_pageCountForPrintFormatter:]):

  • WebProcess/Automation/WebAutomationSessionProxy.cpp:

(WebKit::evaluateJavaScriptCallback):

  • WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.mm:

(+[WKWebProcessPlugInFrame lookUpFrameFromHandle:]):

  • WebProcess/Network/WebLoaderStrategy.cpp:

(WebKit::addParametersFromFrame):
(WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess):
(WebKit::WebLoaderStrategy::loadResourceSynchronously):
(WebKit::WebLoaderStrategy::startPingLoad):

  • WebProcess/Storage/WebSWContextManagerConnection.cpp:

(WebKit::WebSWContextManagerConnection::installServiceWorker):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/ResourceLoadDelegate.mm:

(TEST):

Location:
trunk
Files:
23 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r254408 r254409  
     12020-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
    1142020-01-10  Yusuke Suzuki  <ysuzuki@apple.com>
    215
  • trunk/Source/WebCore/page/FrameIdentifier.h

    r248713 r254409  
    3333using FrameIdentifier = ObjectIdentifier<FrameIdentifierType>;
    3434
    35 inline FrameIdentifier frameIdentifierFromID(uint64_t frameID)
    36 {
    37     return makeObjectIdentifier<FrameIdentifierType>(frameID);
    3835}
    39 
    40 }
  • trunk/Source/WebKit/ChangeLog

    r254397 r254409  
     12020-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
    1512020-01-11  Kate Cheney  <katherine_cheney@apple.com>
    252
  • trunk/Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.cpp

    r254183 r254409  
    108108    encoder << isHTTPSUpgradeEnabled;
    109109    encoder << pageHasResourceLoadClient;
     110    encoder << parentFrameID;
    110111
    111112#if ENABLE(SERVICE_WORKER)
     
    256257        return WTF::nullopt;
    257258    result.pageHasResourceLoadClient = *pageHasResourceLoadClient;
     259   
     260    Optional<Optional<FrameIdentifier>> parentFrameID;
     261    decoder >> parentFrameID;
     262    if (!parentFrameID)
     263        return WTF::nullopt;
     264    result.parentFrameID = WTFMove(*parentFrameID);
    258265
    259266#if ENABLE(SERVICE_WORKER)
  • trunk/Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.h

    r254183 r254409  
    6262    bool isHTTPSUpgradeEnabled { false };
    6363    bool pageHasResourceLoadClient { false };
     64    Optional<WebCore::FrameIdentifier> parentFrameID;
    6465
    6566#if ENABLE(SERVICE_WORKER)
  • trunk/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp

    r254345 r254409  
    337337{
    338338    return {
    339         m_resourceLoadID
     339        m_resourceLoadID,
     340        m_parameters.webFrameID,
     341        m_parameters.parentFrameID,
    340342    };
    341343}
  • trunk/Source/WebKit/Shared/API/Cocoa/_WKFrameHandle.h

    r243376 r254409  
    3131@interface _WKFrameHandle : NSObject <NSCopying, NSSecureCoding>
    3232
     33@property (nonatomic, readonly) uint64_t frameID WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
     34
    3335@end
  • trunk/Source/WebKit/Shared/API/Cocoa/_WKFrameHandle.mm

    r248713 r254409  
    2929#import <WebCore/FrameIdentifier.h>
    3030
    31 @implementation _WKFrameHandle {
    32     API::ObjectStorage<API::FrameHandle> _frameHandle;
    33 }
     31@implementation _WKFrameHandle
    3432
    3533- (void)dealloc
     
    5654}
    5755
    58 - (uint64_t)_frameID
     56- (uint64_t)frameID
    5957{
    6058    return _frameHandle->frameID().toUInt64();
     
    8684    }
    8785
    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);
    8987
    9088    return self;
     
    9391- (void)encodeWithCoder:(NSCoder *)coder
    9492{
    95     [coder encodeObject:@([self _frameID]) forKey:@"frameID"];
     93    [coder encodeObject:@(self.frameID) forKey:@"frameID"];
    9694}
    9795
  • trunk/Source/WebKit/Shared/API/Cocoa/_WKFrameHandleInternal.h

    r242339 r254409  
    3737}
    3838
    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}
    4343@end
  • trunk/Source/WebKit/Shared/ResourceLoadInfo.h

    r254345 r254409  
    2828#include "ArgumentCoders.h"
    2929#include "NetworkResourceLoadIdentifier.h"
     30#include <WebCore/FrameIdentifier.h>
    3031
    3132namespace WebKit {
     
    3435
    3536    NetworkResourceLoadIdentifier resourceLoadID;
     37    Optional<WebCore::FrameIdentifier> frameID;
     38    Optional<WebCore::FrameIdentifier> parentFrameID;
    3639   
    3740    void encode(IPC::Encoder& encoder) const
    3841    {
    3942        encoder << resourceLoadID;
     43        encoder << frameID;
     44        encoder << parentFrameID;
    4045    }
    4146
     
    4752            return WTF::nullopt;
    4853
     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
    4964        return {{
    5065            WTFMove(*resourceLoadID),
     66            WTFMove(*frameID),
     67            WTFMove(*parentFrameID),
    5168        }};
    5269    }
  • trunk/Source/WebKit/UIProcess/API/APIResourceLoadInfo.h

    r254345 r254409  
    3939
    4040    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; }
    4143
    4244private:
  • trunk/Source/WebKit/UIProcess/API/Cocoa/_WKInspector.mm

    r253189 r254409  
    110110{
    111111    if (auto* page = _inspector->inspectedPage())
    112         _inspector->showMainResourceForFrame(page->process().webFrame(WebCore::frameIdentifierFromID(frame._frameID)));
     112        _inspector->showMainResourceForFrame(page->process().webFrame(frame->_frameHandle->frameID()));
    113113}
    114114
  • trunk/Source/WebKit/UIProcess/API/Cocoa/_WKResourceLoadInfo.h

    r254345 r254409  
    2424 */
    2525
     26#import <WebKit/WKFoundation.h>
     27
     28@class _WKFrameHandle;
     29
    2630NS_ASSUME_NONNULL_BEGIN
    2731
     
    3337
    3438@property (nonatomic, readonly) uint64_t resourceLoadID;
     39@property (nonatomic, readonly) _WKFrameHandle* frame;
     40@property (nonatomic, readonly, nullable) _WKFrameHandle* parentFrame;
    3541
    3642@end
  • trunk/Source/WebKit/UIProcess/API/Cocoa/_WKResourceLoadInfo.mm

    r254345 r254409  
    2727#import "_WKResourceLoadInfo.h"
    2828
     29#import "APIFrameHandle.h"
    2930#import "APIResourceLoadInfo.h"
     31#import "_WKFrameHandleInternal.h"
    3032#import "_WKResourceLoadInfoInternal.h"
    3133
     
    4345}
    4446
     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
    4561- (API::Object&)_apiObject
    4662{
  • trunk/Source/WebKit/UIProcess/API/mac/WKWebViewMac.mm

    r254360 r254409  
    14921492- (BOOL)_canChangeFrameLayout:(_WKFrameHandle *)frameHandle
    14931493{
    1494     if (auto* webFrameProxy = _page->process().webFrame(WebCore::frameIdentifierFromID(frameHandle._frameID)))
     1494    if (auto* webFrameProxy = _page->process().webFrame(frameHandle->_frameHandle->frameID()))
    14951495        return _impl->canChangeFrameLayout(*webFrameProxy);
    14961496    return false;
     
    15791579- (NSPrintOperation *)_printOperationWithPrintInfo:(NSPrintInfo *)printInfo forFrame:(_WKFrameHandle *)frameHandle
    15801580{
    1581     if (auto* webFrameProxy = _page->process().webFrame(WebCore::frameIdentifierFromID(frameHandle._frameID)))
     1581    if (auto* webFrameProxy = _page->process().webFrame(frameHandle->_frameHandle->frameID()))
    15821582        return _impl->printOperationWithPrintInfo(printInfo, *webFrameProxy);
    15831583    return nil;
  • trunk/Source/WebKit/UIProcess/Cocoa/WKReloadFrameErrorRecoveryAttempter.mm

    r248713 r254409  
    6464        return NO;
    6565
    66     WebKit::WebFrameProxy* webFrameProxy = webView->_page->process().webFrame(WebCore::frameIdentifierFromID([_frameHandle _frameID]));
     66    WebKit::WebFrameProxy* webFrameProxy = webView->_page->process().webFrame(_frameHandle->_frameHandle->frameID());
    6767    if (!webFrameProxy)
    6868        return NO;
  • trunk/Source/WebKit/UIProcess/ios/WKContentView.mm

    r254387 r254409  
    749749    WebCore::FrameIdentifier frameID;
    750750    if (_WKFrameHandle *handle = printFormatter.frameToPrint)
    751         frameID = WebCore::frameIdentifierFromID(handle._frameID);
     751        frameID = handle->_frameHandle->frameID();
    752752    else if (auto mainFrame = _page->mainFrame())
    753753        frameID = mainFrame->frameID();
  • trunk/Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp

    r254330 r254409  
    191191        return JSValueMakeUndefined(context);
    192192
    193     WebCore::FrameIdentifier frameID = WebCore::frameIdentifierFromID(JSValueToNumber(context, arguments[0], exception));
     193    WebCore::FrameIdentifier frameID = makeObjectIdentifier<WebCore::FrameIdentifierType>(JSValueToNumber(context, arguments[0], exception));
    194194    uint64_t callbackID = JSValueToNumber(context, arguments[1], exception);
    195195    if (JSValueIsString(context, arguments[2])) {
  • trunk/Source/WebKit/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.mm

    r253723 r254409  
    4949+ (instancetype)lookUpFrameFromHandle:(_WKFrameHandle *)handle
    5050{
    51     return wrapper(WebKit::WebProcess::singleton().webFrame(WebCore::frameIdentifierFromID(handle._frameID)));
     51    return wrapper(WebKit::WebProcess::singleton().webFrame(handle->_frameHandle->frameID()));
    5252}
    5353
  • trunk/Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp

    r254345 r254409  
    5858#include <WebCore/Frame.h>
    5959#include <WebCore/FrameLoader.h>
     60#include <WebCore/HTMLFrameOwnerElement.h>
    6061#include <WebCore/NetscapePlugInStreamLoader.h>
    6162#include <WebCore/NetworkLoadInformation.h>
     
    254255}
    255256
     257static 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
    256273void WebLoaderStrategy::scheduleLoadFromNetworkProcess(ResourceLoader& resourceLoader, const ResourceRequest& request, const WebResourceLoader::TrackingParameters& trackingParameters, bool shouldClearReferrerOnHTTPSToHTTPRedirect, Seconds maximumBufferingTime)
    257274{
     
    287304    loadParameters.options = resourceLoader.options();
    288305    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);
    294307
    295308#if ENABLE(SERVICE_WORKER)
     
    581594    }
    582595    loadParameters.originalRequestHeaders = originalRequestHeaders;
    583     if (page)
    584         loadParameters.pageHasResourceLoadClient = page->hasResourceLoadClient();
     596    addParametersFromFrame(webFrame->coreFrame(), loadParameters);
    585597
    586598    data.shrink(0);
     
    648660            loadParameters.cspResponseHeaders = contentSecurityPolicy->responseHeaders();
    649661    }
    650     if (auto* page = document->page())
    651         loadParameters.pageHasResourceLoadClient = page->hasResourceLoadClient();
     662    addParametersFromFrame(&frame, loadParameters);
    652663
    653664#if ENABLE(CONTENT_EXTENSIONS)
  • trunk/Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.cpp

    r254191 r254409  
    149149    // If it weren't for ServiceWorkerFrameLoaderClient's dependence on WebDocumentLoader, this could already happen.
    150150    // 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);
    152152    pageConfiguration.loaderClientForMainFrame = frameLoaderClient.get();
    153153    m_loaders.add(WTFMove(frameLoaderClient));
  • trunk/Tools/ChangeLog

    r254397 r254409  
     12020-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
    1122020-01-11  Kate Cheney  <katherine_cheney@apple.com>
    213
  • trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/ResourceLoadDelegate.mm

    r254367 r254409  
    3333#import <WebKit/WKWebViewPrivate.h>
    3434#import <WebKit/WebKit.h>
     35#import <WebKit/_WKFrameHandle.h>
    3536#import <WebKit/_WKResourceLoadDelegate.h>
    3637#import <WebKit/_WKResourceLoadInfo.h>
     
    130131    TestWebKitAPI::HTTPServer server({
    131132        { "/", { "hello" } },
    132         { "/xhrTarget", { "hi" } },
     133        { "/xhrTarget", { {{ "Content-Type", "text/html" }},  "hi" } },
    133134        { "/beaconTarget", { "hi" } },
    134135    });
     
    141142    auto resourceLoadDelegate = adoptNS([TestResourceLoadDelegate new]);
    142143    [webView _setResourceLoadDelegate:resourceLoadDelegate.get()];
    143     [resourceLoadDelegate setDidSendRequest:^(WKWebView *, _WKResourceLoadInfo *, NSURLRequest *request) {
     144    [resourceLoadDelegate setDidSendRequest:^(WKWebView *, _WKResourceLoadInfo *info, NSURLRequest *request) {
    144145        requestFromDelegate = request;
    145146        receivedCallback = true;
     147        EXPECT_TRUE(!!info.frame);
     148        EXPECT_FALSE(!!info.parentFrame);
    146149    }];
    147150   
     
    265268    EXPECT_EQ(loadInfos[6].get().resourceLoadID, loadInfos[8].get().resourceLoadID);
    266269    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);
    267291
    268292    EXPECT_EQ(otherParameters.size(), 9ull);
Note: See TracChangeset for help on using the changeset viewer.