| Differences between
and this patch
- ChangeLog +9 lines
Lines 1-3 ChangeLog_sec1
1
2013-01-14  Nate Chapin  <japhet@chromium.org>
2
3
        Enable reuse of cached main resources
4
        https://bugs.webkit.org/show_bug.cgi?id=105667
5
6
        Reviewed by NOBODY (OOPS!).
7
8
        * Source/autotools/symbols.filter: Expose MemoryCache::resourceForURL().
9
1
2013-01-11  Carlos Garcia Campos  <cgarcia@igalia.com>
10
2013-01-11  Carlos Garcia Campos  <cgarcia@igalia.com>
2
11
3
        Unreviewed. Update NEWS and configure.ac for 1.11.4 release
12
        Unreviewed. Update NEWS and configure.ac for 1.11.4 release
- Source/WebKit/win/ChangeLog +9 lines
Lines 1-3 Source/WebKit/win/ChangeLog_sec1
1
2013-01-14  Nate Chapin  <japhet@chromium.org>
2
3
        Enable reuse of cached main resources
4
        https://bugs.webkit.org/show_bug.cgi?id=105667
5
6
        Reviewed by NOBODY (OOPS!).
7
8
        * WebKit.vcproj/WebKitExports.def.in: Expose some MemoryCache symbols for use in Internals.
9
1
2013-01-09  Hajime Morrita  <morrita@google.com>
10
2013-01-09  Hajime Morrita  <morrita@google.com>
2
11
3
        [Shadow DOM] Distribution related code on ElementShadow should be minimized.
12
        [Shadow DOM] Distribution related code on ElementShadow should be minimized.
- Source/WebKit/win/WebKit.vcproj/WebKitExports.def.in +3 lines
Lines 560-565 Source/WebKit/win/WebKit.vcproj/WebKitExports.def.in_sec1
560
        ?addSlowCase@AtomicString@WTF@@CA?AV?$PassRefPtr@VStringImpl@WTF@@@2@PAVStringImpl@2@@Z
560
        ?addSlowCase@AtomicString@WTF@@CA?AV?$PassRefPtr@VStringImpl@WTF@@@2@PAVStringImpl@2@@Z
561
        ?cacheDOMStructure@WebCore@@YAPAVStructure@JSC@@PAVJSDOMGlobalObject@1@PAV23@PBUClassInfo@3@@Z
561
        ?cacheDOMStructure@WebCore@@YAPAVStructure@JSC@@PAVJSDOMGlobalObject@1@PAV23@PBUClassInfo@3@@Z
562
        ?childItemWithTarget@HistoryItem@WebCore@@QBEPAV12@ABVString@WTF@@@Z
562
        ?childItemWithTarget@HistoryItem@WebCore@@QBEPAV12@ABVString@WTF@@@Z
563
        ?completeURL@Document@WebCore@@QBE?AVKURL@2@ABVString@WTF@@@Z
563
        ?create@Range@WebCore@@SA?AV?$PassRefPtr@VRange@WebCore@@@WTF@@V?$PassRefPtr@VDocument@WebCore@@@4@V?$PassRefPtr@VNode@WebCore@@@4@H1H@Z
564
        ?create@Range@WebCore@@SA?AV?$PassRefPtr@VRange@WebCore@@@WTF@@V?$PassRefPtr@VDocument@WebCore@@@4@V?$PassRefPtr@VNode@WebCore@@@4@H1H@Z
564
        ?create@SerializedScriptValue@WebCore@@SA?AV?$PassRefPtr@VSerializedScriptValue@WebCore@@@WTF@@ABVString@4@@Z
565
        ?create@SerializedScriptValue@WebCore@@SA?AV?$PassRefPtr@VSerializedScriptValue@WebCore@@@WTF@@ABVString@4@@Z
565
        ?create@SerializedScriptValue@WebCore@@SA?AV?$PassRefPtr@VSerializedScriptValue@WebCore@@@WTF@@PAVExecState@JSC@@VJSValue@6@PAV?$Vector@V?$RefPtr@VMessagePort@WebCore@@@WTF@@$00@4@PAV?$Vector@V?$RefPtr@VArrayBuffer@WTF@@@WTF@@$00@4@W4SerializationErrorMode@2@@Z
566
        ?create@SerializedScriptValue@WebCore@@SA?AV?$PassRefPtr@VSerializedScriptValue@WebCore@@@WTF@@PAVExecState@JSC@@VJSValue@6@PAV?$Vector@V?$RefPtr@VMessagePort@WebCore@@@WTF@@$00@4@PAV?$Vector@V?$RefPtr@VArrayBuffer@WTF@@@WTF@@$00@4@W4SerializationErrorMode@2@@Z
Lines 1390-1395 Source/WebKit/win/WebKit.vcproj/WebKitExports.def.in_sec2
1390
        ?lastChangeWasUserEdit@HTMLTextFormControlElement@WebCore@@QBE_NXZ
1391
        ?lastChangeWasUserEdit@HTMLTextFormControlElement@WebCore@@QBE_NXZ
1391
        ?mainThreadScrollingReasonsAsText@Page@WebCore@@QAE?AVString@WTF@@XZ
1392
        ?mainThreadScrollingReasonsAsText@Page@WebCore@@QAE?AVString@WTF@@XZ
1392
        ?markersFor@DocumentMarkerController@WebCore@@QAE?AV?$Vector@PAVDocumentMarker@WebCore@@$0A@@WTF@@PAVNode@2@VMarkerTypes@DocumentMarker@2@@Z
1393
        ?markersFor@DocumentMarkerController@WebCore@@QAE?AV?$Vector@PAVDocumentMarker@WebCore@@$0A@@WTF@@PAVNode@2@VMarkerTypes@DocumentMarker@2@@Z
1394
        ?memoryCache@WebCore@@YAPAVMemoryCache@1@XZ
1393
        ?nextSibling@ComposedShadowTreeWalker@WebCore@@QAEXXZ
1395
        ?nextSibling@ComposedShadowTreeWalker@WebCore@@QAEXXZ
1394
        ?firstChild@ComposedShadowTreeWalker@WebCore@@QAEXXZ
1396
        ?firstChild@ComposedShadowTreeWalker@WebCore@@QAEXXZ
1395
        ?lastChild@ComposedShadowTreeWalker@WebCore@@QAEXXZ
1397
        ?lastChild@ComposedShadowTreeWalker@WebCore@@QAEXXZ
Lines 1409-1414 Source/WebKit/win/WebKit.vcproj/WebKitExports.def.in_sec3
1409
        ?rangeFromLocationAndLength@TextIterator@WebCore@@SA?AV?$PassRefPtr@VRange@WebCore@@@WTF@@PAVContainerNode@2@HH_N@Z
1411
        ?rangeFromLocationAndLength@TextIterator@WebCore@@SA?AV?$PassRefPtr@VRange@WebCore@@@WTF@@PAVContainerNode@2@HH_N@Z
1410
        ?remove@String@WTF@@QAEXIH@Z
1412
        ?remove@String@WTF@@QAEXIH@Z
1411
        ?removedLastRef@Node@WebCore@@AAEXXZ
1413
        ?removedLastRef@Node@WebCore@@AAEXXZ
1414
        ?resourceForURL@MemoryCache@WebCore@@QAEPAVCachedResource@2@ABVKURL@2@@Z
1412
        ?reverseFind@StringImpl@WTF@@QAEI_WI@Z
1415
        ?reverseFind@StringImpl@WTF@@QAEI_WI@Z
1413
        ?saveDocumentAndScrollState@HistoryController@WebCore@@QAEXXZ
1416
        ?saveDocumentAndScrollState@HistoryController@WebCore@@QAEXXZ
1414
        ?scriptExecutionContext@JSDOMGlobalObject@WebCore@@QBEPAVScriptExecutionContext@2@XZ
1417
        ?scriptExecutionContext@JSDOMGlobalObject@WebCore@@QBEPAVScriptExecutionContext@2@XZ
- Source/autotools/symbols.filter +1 lines
Lines 54-59 Source/autotools/symbols.filter_sec1
54
_ZN7WebCore11EventTarget8toStreamEv;
54
_ZN7WebCore11EventTarget8toStreamEv;
55
_ZN7WebCore11HistoryItem16setDocumentStateERKN3WTF6VectorINS1_6StringELj0EEE;
55
_ZN7WebCore11HistoryItem16setDocumentStateERKN3WTF6VectorINS1_6StringELj0EEE;
56
_ZN7WebCore11HistoryItem16setDocumentStateERKN3WTF6VectorINS1_6StringELm0EEE;
56
_ZN7WebCore11HistoryItem16setDocumentStateERKN3WTF6VectorINS1_6StringELm0EEE;
57
_ZN7WebCore11MemoryCache14resourceForURLERKNS_4KURLE;
57
_ZN7WebCore12TextIterator26rangeFromLocationAndLengthEPNS_13ContainerNodeEiib;
58
_ZN7WebCore12TextIterator26rangeFromLocationAndLengthEPNS_13ContainerNodeEiib;
58
_ZN7WebCore12TextIterator29getLocationAndLengthFromRangeEPNS_7ElementEPKNS_5RangeERjS6_;
59
_ZN7WebCore12TextIterator29getLocationAndLengthFromRangeEPNS_7ElementEPKNS_5RangeERjS6_;
59
_ZN7WebCore12TextIterator29getLocationAndLengthFromRangeEPNS_7ElementEPKNS_5RangeERmS6_;
60
_ZN7WebCore12TextIterator29getLocationAndLengthFromRangeEPNS_7ElementEPKNS_5RangeERmS6_;
- Source/WebCore/ChangeLog +50 lines
Lines 1-3 Source/WebCore/ChangeLog_sec1
1
2013-01-14  Nate Chapin  <japhet@chromium.org>
2
3
        Enable reuse of cached main resources
4
        https://bugs.webkit.org/show_bug.cgi?id=105667
5
6
        Reviewed by NOBODY (OOPS!).
7
8
        Test: http/tests/cache/cached-main-resource.html
9
10
        * WebCore.exp.in:
11
        * dom/Document.cpp:
12
        (WebCore::Document::hasManifest): Returns true if the <html> element has a non-empty manifest attribute.
13
        * dom/Document.h:
14
        (Document):
15
        * loader/FrameLoader.cpp:
16
        (WebCore::FrameLoader::loadedResourceFromMemoryCache): Don't send delegate callbacks for cache hit here, since
17
            MainResourceLoader will take care of it.
18
        * loader/MainResourceLoader.cpp:
19
        (WebCore::MainResourceLoader::MainResourceLoader):
20
        (WebCore::MainResourceLoader::receivedError):
21
        (WebCore::MainResourceLoader::willSendRequest):
22
        (WebCore::MainResourceLoader::responseReceived): Don't try to cache loads from the application cache.
23
        (WebCore::MainResourceLoader::didFinishLoading): Don't try to cache loads from the application cache.
24
        (WebCore::MainResourceLoader::load): Ensure we create a resource load identifier for cache hits. Also,
25
            ensure we correctly popualate fragment identifiers in the ResourceRequest reported to DocumentLoader.
26
        (WebCore::MainResourceLoader::identifier):
27
        * loader/MainResourceLoader.h: Rename m_substituteDataLoadIdentifier to m_identifierForLoadWithoutResourceLoader
28
            to better describe when it is used.
29
        * loader/cache/CachedRawResource.cpp:
30
        (WebCore::CachedRawResource::didAddClient): Synthesize redirect notifications for cache hits if necessary.
31
        (WebCore::CachedRawResource::willSendRequest): Note the redirects we received.
32
        (WebCore::CachedRawResource::canReuse): Don't reuse a resource if the redirect chain included a "Cache-control: no-store".
33
        * loader/cache/CachedRawResource.h:
34
        (CachedRawResource):
35
        (RedirectPair):
36
        (WebCore::CachedRawResource::RedirectPair::RedirectPair):
37
        * loader/cache/CachedResource.cpp:
38
        (WebCore::CachedResource::addClientToSet):: Don't return cached data for a main resource synchronously
39
        * loader/cache/CachedResource.h:
40
        (WebCore::CachedResource::canReuse):
41
        (CachedResource):
42
        * loader/cache/CachedResourceLoader.cpp:
43
        (WebCore::CachedResourceLoader::determineRevalidationPolicy): Permit cache reuse for main resources.
44
        * testing/Internals.cpp:
45
        (WebCore::Internals::isLoadingFromMemoryCache):
46
        (WebCore):
47
        * testing/Internals.h:
48
        (Internals):
49
        * testing/Internals.idl:
50
1
2013-01-14  Kentaro Hara  <haraken@chromium.org>
51
2013-01-14  Kentaro Hara  <haraken@chromium.org>
2
52
3
        [V8] Make an Isolate parameter mandatory in associateObjectWithWrapper()
53
        [V8] Make an Isolate parameter mandatory in associateObjectWithWrapper()
- Source/WebCore/loader/cache/CachedRawResource.h -1 / +15 lines
Lines 48-54 Source/WebCore/loader/cache/CachedRawResource.h_sec1
48
    SubresourceLoader* loader() const;
48
    SubresourceLoader* loader() const;
49
    void clear();
49
    void clear();
50
50
51
    bool canReuse(const ResourceRequest&) const;
51
    virtual bool canReuse(const ResourceRequest&) const;
52
52
53
    virtual void reportMemoryUsage(MemoryObjectInfo*) const OVERRIDE;
53
    virtual void reportMemoryUsage(MemoryObjectInfo*) const OVERRIDE;
54
54
Lines 67-72 Source/WebCore/loader/cache/CachedRawResource.h_sec2
67
#endif
67
#endif
68
68
69
    unsigned long m_identifier;
69
    unsigned long m_identifier;
70
71
    struct RedirectPair {
72
    public:
73
        explicit RedirectPair(const ResourceRequest& request, const ResourceResponse& redirectResponse)
74
            : m_request(request)
75
            , m_redirectResponse(redirectResponse)
76
        {
77
        }
78
79
        const ResourceRequest m_request;
80
        const ResourceResponse m_redirectResponse;
81
    };
82
83
    Vector<RedirectPair> m_redirectChain;
70
};
84
};
71
85
72
86
- Source/WebCore/loader/cache/CachedResource.cpp -2 / +2 lines
Lines 497-504 Source/WebCore/loader/cache/CachedResource.cpp_sec1
497
    if (!hasClients() && inCache())
497
    if (!hasClients() && inCache())
498
        memoryCache()->addToLiveResourcesSize(this);
498
        memoryCache()->addToLiveResourcesSize(this);
499
499
500
    if (m_type == RawResource && !m_response.isNull() && !m_proxyResource) {
500
    if ((m_type == RawResource || m_type == MainResource) && !m_response.isNull() && !m_proxyResource) {
501
        // Certain resources (especially XHRs) do crazy things if an asynchronous load returns
501
        // Certain resources (especially XHRs and main resources) do crazy things if an asynchronous load returns
502
        // synchronously (e.g., scripts may not have set all the state they need to handle the load).
502
        // synchronously (e.g., scripts may not have set all the state they need to handle the load).
503
        // Therefore, rather than immediately sending callbacks on a cache hit like other CachedResources,
503
        // Therefore, rather than immediately sending callbacks on a cache hit like other CachedResources,
504
        // we schedule the callbacks and ensure we never finish synchronously.
504
        // we schedule the callbacks and ensure we never finish synchronously.
- Source/WebCore/loader/cache/CachedResourceLoader.cpp -4 / +1 lines
Lines 540-551 Source/WebCore/loader/cache/CachedResourceLoader.cpp_sec1
540
        return Reload;
540
        return Reload;
541
    }
541
    }
542
542
543
    if (existingResource->type() == CachedResource::MainResource)
543
    if (!existingResource->canReuse(request))
544
        return Reload;
544
        return Reload;
545
545
546
    if (existingResource->type() == CachedResource::RawResource && !static_cast<CachedRawResource*>(existingResource)->canReuse(request))
547
        return Reload;
548
549
    // Certain requests (e.g., XHRs) might have manually set headers that require revalidation.
546
    // Certain requests (e.g., XHRs) might have manually set headers that require revalidation.
550
    // FIXME: In theory, this should be a Revalidate case. In practice, the MemoryCache revalidation path assumes a whole bunch
547
    // FIXME: In theory, this should be a Revalidate case. In practice, the MemoryCache revalidation path assumes a whole bunch
551
    // of things about how revalidation works that manual headers violate, so punt to Reload instead.
548
    // of things about how revalidation works that manual headers violate, so punt to Reload instead.
- Source/WebCore/loader/cache/CachedResource.h +2 lines
Lines 258-263 Source/WebCore/loader/cache/CachedResource.h_sec1
258
258
259
    virtual void reportMemoryUsage(MemoryObjectInfo*) const;
259
    virtual void reportMemoryUsage(MemoryObjectInfo*) const;
260
260
261
    virtual bool canReuse(const ResourceRequest&) const { return true; }
262
261
protected:
263
protected:
262
    virtual void checkNotify();
264
    virtual void checkNotify();
263
265
- Source/WebCore/loader/cache/CachedRawResource.cpp -2 / +20 lines
Lines 80-93 Source/WebCore/loader/cache/CachedRawResource.cpp_sec1
80
80
81
void CachedRawResource::didAddClient(CachedResourceClient* c)
81
void CachedRawResource::didAddClient(CachedResourceClient* c)
82
{
82
{
83
    if (m_response.isNull() || !hasClient(c))
83
    if (!hasClient(c))
84
        return;
84
        return;
85
    // The calls to the client can result in events running, potentially causing
85
    // The calls to the client can result in events running, potentially causing
86
    // this resource to be evicted from the cache and all clients to be removed,
86
    // this resource to be evicted from the cache and all clients to be removed,
87
    // so a protector is necessary.
87
    // so a protector is necessary.
88
    CachedResourceHandle<CachedRawResource> protect(this);
88
    CachedResourceHandle<CachedRawResource> protect(this);
89
    CachedRawResourceClient* client = static_cast<CachedRawResourceClient*>(c);
89
    CachedRawResourceClient* client = static_cast<CachedRawResourceClient*>(c);
90
    client->responseReceived(this, m_response);
90
    size_t redirectCount = m_redirectChain.size();
91
    for (size_t i = 0; i < redirectCount; i++) {
92
        RedirectPair redirect = m_redirectChain[i];
93
        ResourceRequest request(redirect.m_request);
94
        client->redirectReceived(this, request, redirect.m_redirectResponse);
95
        if (!hasClient(c))
96
            return;
97
    }
98
    ASSERT(redirectCount == m_redirectChain.size());
99
100
    if (!m_response.isNull())
101
        client->responseReceived(this, m_response);
91
    if (!hasClient(c))
102
    if (!hasClient(c))
92
        return;
103
        return;
93
    if (m_data)
104
    if (m_data)
Lines 110-115 Source/WebCore/loader/cache/CachedRawResource.cpp_sec2
110
        CachedResourceClientWalker<CachedRawResourceClient> w(m_clients);
121
        CachedResourceClientWalker<CachedRawResourceClient> w(m_clients);
111
        while (CachedRawResourceClient* c = w.next())
122
        while (CachedRawResourceClient* c = w.next())
112
            c->redirectReceived(this, request, response);
123
            c->redirectReceived(this, request, response);
124
        m_redirectChain.append(RedirectPair(request, response));
113
    }
125
    }
114
    CachedResource::willSendRequest(request, response);
126
    CachedResource::willSendRequest(request, response);
115
}
127
}
Lines 194-199 Source/WebCore/loader/cache/CachedRawResource.cpp_sec3
194
        if (!shouldIgnoreHeaderForCacheReuse(headerName) && i->value != newHeaders.get(headerName))
206
        if (!shouldIgnoreHeaderForCacheReuse(headerName) && i->value != newHeaders.get(headerName))
195
            return false;
207
            return false;
196
    }
208
    }
209
210
    for (size_t i = 0; i < m_redirectChain.size(); i++) {
211
        if (m_redirectChain[i].m_redirectResponse.cacheControlContainsNoStore())
212
            return false;
213
    }
214
197
    return true;
215
    return true;
198
}
216
}
199
217
- Source/WebCore/loader/MainResourceLoader.cpp -15 / +44 lines
Lines 46-51 Source/WebCore/loader/MainResourceLoader.cpp_sec1
46
#include "HTMLFormElement.h"
46
#include "HTMLFormElement.h"
47
#include "HistoryItem.h"
47
#include "HistoryItem.h"
48
#include "InspectorInstrumentation.h"
48
#include "InspectorInstrumentation.h"
49
#include "MemoryCache.h"
49
#include "Page.h"
50
#include "Page.h"
50
#include "ProgressTracker.h"
51
#include "ProgressTracker.h"
51
#include "ResourceBuffer.h"
52
#include "ResourceBuffer.h"
Lines 73-79 Source/WebCore/loader/MainResourceLoader.cpp_sec2
73
    , m_loadingMultipartContent(false)
74
    , m_loadingMultipartContent(false)
74
    , m_waitingForContentPolicy(false)
75
    , m_waitingForContentPolicy(false)
75
    , m_timeOfLastDataReceived(0.0)
76
    , m_timeOfLastDataReceived(0.0)
76
    , m_substituteDataLoadIdentifier(0)
77
    , m_identifierForLoadWithoutResourceLoader(0)
77
#if PLATFORM(MAC) && !PLATFORM(IOS) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 1080
78
#if PLATFORM(MAC) && !PLATFORM(IOS) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 1080
78
    , m_filter(0)
79
    , m_filter(0)
79
#endif
80
#endif
Lines 99-107 Source/WebCore/loader/MainResourceLoader.cpp_sec3
99
    RefPtr<MainResourceLoader> protect(this);
100
    RefPtr<MainResourceLoader> protect(this);
100
    RefPtr<Frame> protectFrame(m_documentLoader->frame());
101
    RefPtr<Frame> protectFrame(m_documentLoader->frame());
101
102
102
    if (m_substituteDataLoadIdentifier) {
103
    if (m_identifierForLoadWithoutResourceLoader) {
103
        ASSERT(!loader());
104
        ASSERT(!loader());
104
        frameLoader()->client()->dispatchDidFailLoading(documentLoader(), m_substituteDataLoadIdentifier, error);
105
        frameLoader()->client()->dispatchDidFailLoading(documentLoader(), m_identifierForLoadWithoutResourceLoader, error);
105
    }
106
    }
106
107
107
    // It is important that we call DocumentLoader::mainReceivedError before calling 
108
    // It is important that we call DocumentLoader::mainReceivedError before calling 
Lines 286-292 Source/WebCore/loader/MainResourceLoader.cpp_sec4
286
        ASSERT(!m_substituteData.isValid());
287
        ASSERT(!m_substituteData.isValid());
287
        documentLoader()->applicationCacheHost()->maybeLoadMainResourceForRedirect(newRequest, m_substituteData);
288
        documentLoader()->applicationCacheHost()->maybeLoadMainResourceForRedirect(newRequest, m_substituteData);
288
        if (m_substituteData.isValid())
289
        if (m_substituteData.isValid())
289
            m_substituteDataLoadIdentifier = identifier();
290
            m_identifierForLoadWithoutResourceLoader = identifier();
290
    }
291
    }
291
292
292
    // FIXME: Ideally we'd stop the I/O until we hear back from the navigation policy delegate
293
    // FIXME: Ideally we'd stop the I/O until we hear back from the navigation policy delegate
Lines 392-398 Source/WebCore/loader/MainResourceLoader.cpp_sec5
392
void MainResourceLoader::responseReceived(CachedResource* resource, const ResourceResponse& r)
393
void MainResourceLoader::responseReceived(CachedResource* resource, const ResourceResponse& r)
393
{
394
{
394
    ASSERT_UNUSED(resource, m_resource == resource);
395
    ASSERT_UNUSED(resource, m_resource == resource);
395
    if (documentLoader()->applicationCacheHost()->maybeLoadFallbackForMainResponse(request(), r))
396
    bool willLoadFallback = documentLoader()->applicationCacheHost()->maybeLoadFallbackForMainResponse(request(), r);
397
398
    // The memory cache doesn't understand the application cache or its caching rules. So if a main resource is served
399
    // from the application cache, ensure we don't save the result for future use.
400
    bool shouldRemoveResourceFromCache = willLoadFallback;
401
#if PLATFORM(CHROMIUM)
402
    // chromium's ApplicationCacheHost implementation always returns true for maybeLoadFallbackForMainResponse(). However, all responses loaded
403
    // from appcache will have a non-zero appCacheID().
404
    if (r.appCacheID())
405
        shouldRemoveResourceFromCache = true;
406
#endif
407
    if (shouldRemoveResourceFromCache)
408
        memoryCache()->remove(m_resource.get());
409
410
    if (willLoadFallback)
396
        return;
411
        return;
397
412
398
    DEFINE_STATIC_LOCAL(AtomicString, xFrameOptionHeader, ("x-frame-options", AtomicString::ConstructFromLiteral));
413
    DEFINE_STATIC_LOCAL(AtomicString, xFrameOptionHeader, ("x-frame-options", AtomicString::ConstructFromLiteral));
Lines 540-546 Source/WebCore/loader/MainResourceLoader.cpp_sec6
540
555
541
    if (!loader()) {
556
    if (!loader()) {
542
        frameLoader()->notifier()->dispatchDidFinishLoading(documentLoader(), identifier(), finishTime);
557
        frameLoader()->notifier()->dispatchDidFinishLoading(documentLoader(), identifier(), finishTime);
543
        m_substituteDataLoadIdentifier = 0;
558
        m_identifierForLoadWithoutResourceLoader = 0;
544
    }
559
    }
545
560
546
#if PLATFORM(MAC) && !PLATFORM(IOS) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 1080
561
#if PLATFORM(MAC) && !PLATFORM(IOS) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 1080
Lines 562-567 Source/WebCore/loader/MainResourceLoader.cpp_sec7
562
    documentLoader()->timing()->setResponseEnd(finishTime ? finishTime : (m_timeOfLastDataReceived ? m_timeOfLastDataReceived : monotonicallyIncreasingTime()));
577
    documentLoader()->timing()->setResponseEnd(finishTime ? finishTime : (m_timeOfLastDataReceived ? m_timeOfLastDataReceived : monotonicallyIncreasingTime()));
563
    documentLoader()->finishedLoading();
578
    documentLoader()->finishedLoading();
564
579
580
    // If the document specified an application cache manifest, it violates the author's intent if we store it in the memory cache
581
    // and deny the appcache the chance to intercept it in the future, so remove from the memory cache.
582
    if (Frame* frame = documentLoader()->frame()) {
583
        if (m_resource && frame->document()->hasManifest())
584
            memoryCache()->remove(m_resource.get());
585
    }
586
565
    dl->applicationCacheHost()->finishedLoadingMainResource();
587
    dl->applicationCacheHost()->finishedLoadingMainResource();
566
}
588
}
567
589
Lines 671-679 Source/WebCore/loader/MainResourceLoader.cpp_sec8
671
    documentLoader()->applicationCacheHost()->maybeLoadMainResource(request, m_substituteData);
693
    documentLoader()->applicationCacheHost()->maybeLoadMainResource(request, m_substituteData);
672
694
673
    if (m_substituteData.isValid()) {
695
    if (m_substituteData.isValid()) {
674
        m_substituteDataLoadIdentifier = m_documentLoader->frame()->page()->progress()->createUniqueIdentifier();
696
        m_identifierForLoadWithoutResourceLoader = m_documentLoader->frame()->page()->progress()->createUniqueIdentifier();
675
        frameLoader()->notifier()->assignIdentifierToInitialRequest(m_substituteDataLoadIdentifier, documentLoader(), request);
697
        frameLoader()->notifier()->assignIdentifierToInitialRequest(m_identifierForLoadWithoutResourceLoader, documentLoader(), request);
676
        frameLoader()->notifier()->dispatchWillSendRequest(documentLoader(), m_substituteDataLoadIdentifier, request, ResourceResponse());
698
        frameLoader()->notifier()->dispatchWillSendRequest(documentLoader(), m_identifierForLoadWithoutResourceLoader, request, ResourceResponse());
677
        handleSubstituteDataLoadSoon(request);
699
        handleSubstituteDataLoadSoon(request);
678
        return;
700
        return;
679
    }
701
    }
Lines 686-698 Source/WebCore/loader/MainResourceLoader.cpp_sec9
686
        documentLoader()->setRequest(ResourceRequest());
708
        documentLoader()->setRequest(ResourceRequest());
687
        return;
709
        return;
688
    }
710
    }
711
    if (!loader()) {
712
        m_identifierForLoadWithoutResourceLoader = m_documentLoader->frame()->page()->progress()->createUniqueIdentifier();
713
        frameLoader()->notifier()->assignIdentifierToInitialRequest(m_identifierForLoadWithoutResourceLoader, documentLoader(), request);
714
        frameLoader()->notifier()->dispatchWillSendRequest(documentLoader(), m_identifierForLoadWithoutResourceLoader, request, ResourceResponse());
715
    }
689
    m_resource->addClient(this);
716
    m_resource->addClient(this);
690
717
691
    // We need to wait until after requestMainResource() is called to setRequest(), because there are a bunch of headers set when
718
    // A bunch of headers are set when the underlying ResourceLoader is created, and DocumentLoader::m_request needs to include those.
692
    // the underlying ResourceLoader is created, and DocumentLoader::m_request needs to include those. However, the cache will
693
    // strip the fragment identifier (which DocumentLoader::m_request should also include), so add that back in.
694
    if (loader())
719
    if (loader())
695
        request = loader()->originalRequest();
720
        request = loader()->originalRequest();
721
    // If there was a fragment identifier on initialRequest, the cache will have stripped it. DocumentLoader::m_request should include
722
    // the fragment identifier, so add that back in.
723
    if (equalIgnoringFragmentIdentifier(initialRequest.url(), request.url()))
724
        request.setURL(initialRequest.url());
696
    documentLoader()->setRequest(request);
725
    documentLoader()->setRequest(request);
697
}
726
}
698
727
Lines 720-728 Source/WebCore/loader/MainResourceLoader.cpp_sec10
720
749
721
unsigned long MainResourceLoader::identifier() const
750
unsigned long MainResourceLoader::identifier() const
722
{
751
{
723
    ASSERT(!m_substituteDataLoadIdentifier || !loader() || !loader()->identifier());
752
    ASSERT(!m_identifierForLoadWithoutResourceLoader || !loader() || !loader()->identifier());
724
    if (m_substituteDataLoadIdentifier)
753
    if (m_identifierForLoadWithoutResourceLoader)
725
        return m_substituteDataLoadIdentifier;
754
        return m_identifierForLoadWithoutResourceLoader;
726
    if (ResourceLoader* resourceLoader = loader())
755
    if (ResourceLoader* resourceLoader = loader())
727
        return resourceLoader->identifier();
756
        return resourceLoader->identifier();
728
    return 0;
757
    return 0;
- Source/WebCore/loader/MainResourceLoader.h -1 / +1 lines
Lines 128-134 Source/WebCore/loader/MainResourceLoader.h_sec1
128
    bool m_loadingMultipartContent;
128
    bool m_loadingMultipartContent;
129
    bool m_waitingForContentPolicy;
129
    bool m_waitingForContentPolicy;
130
    double m_timeOfLastDataReceived;
130
    double m_timeOfLastDataReceived;
131
    unsigned long m_substituteDataLoadIdentifier;
131
    unsigned long m_identifierForLoadWithoutResourceLoader;
132
132
133
#if PLATFORM(MAC) && !PLATFORM(IOS) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 1080
133
#if PLATFORM(MAC) && !PLATFORM(IOS) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 1080
134
    WebFilterEvaluator *m_filter;
134
    WebFilterEvaluator *m_filter;
- Source/WebCore/loader/FrameLoader.cpp +4 lines
Lines 2887-2892 Source/WebCore/loader/FrameLoader.cpp_sec1
2887
    if (!resource->shouldSendResourceLoadCallbacks() || m_documentLoader->haveToldClientAboutLoad(resource->url()))
2887
    if (!resource->shouldSendResourceLoadCallbacks() || m_documentLoader->haveToldClientAboutLoad(resource->url()))
2888
        return;
2888
        return;
2889
2889
2890
    // Main resource delegate messages are synthesized in MainResourceLoader, so we must not send them here.
2891
    if (resource->type() == CachedResource::MainResource)
2892
        return;
2893
2890
    if (!page->areMemoryCacheClientCallsEnabled()) {
2894
    if (!page->areMemoryCacheClientCallsEnabled()) {
2891
        InspectorInstrumentation::didLoadResourceFromMemoryCache(page, m_documentLoader.get(), resource);
2895
        InspectorInstrumentation::didLoadResourceFromMemoryCache(page, m_documentLoader.get(), resource);
2892
        m_documentLoader->recordMemoryCacheLoadForFutureClientNotification(resource->url());
2896
        m_documentLoader->recordMemoryCacheLoadForFutureClientNotification(resource->url());
- Source/WebCore/testing/Internals.idl +1 lines
Lines 30-35 Source/WebCore/testing/Internals.idl_sec1
30
30
31
    DOMString elementRenderTreeAsText(in Element element) raises(DOMException);
31
    DOMString elementRenderTreeAsText(in Element element) raises(DOMException);
32
    boolean isPreloaded(in Document document, in DOMString url);
32
    boolean isPreloaded(in Document document, in DOMString url);
33
    boolean isLoadingFromMemoryCache(in DOMString url);
33
34
34
    unsigned long numberOfScopedHTMLStyleChildren(in Node scope) raises(DOMException);
35
    unsigned long numberOfScopedHTMLStyleChildren(in Node scope) raises(DOMException);
35
36
- Source/WebCore/testing/Internals.cpp +9 lines
Lines 65-70 Source/WebCore/testing/Internals.cpp_sec1
65
#include "IntRect.h"
65
#include "IntRect.h"
66
#include "Language.h"
66
#include "Language.h"
67
#include "MallocStatistics.h"
67
#include "MallocStatistics.h"
68
#include "MemoryCache.h"
68
#include "MockPagePopupDriver.h"
69
#include "MockPagePopupDriver.h"
69
#include "NodeRenderingContext.h"
70
#include "NodeRenderingContext.h"
70
#include "Page.h"
71
#include "Page.h"
Lines 293-298 Source/WebCore/testing/Internals.cpp_sec2
293
    return document->cachedResourceLoader()->isPreloaded(url);
294
    return document->cachedResourceLoader()->isPreloaded(url);
294
}
295
}
295
296
297
bool Internals::isLoadingFromMemoryCache(const String& url)
298
{
299
    if (!contextDocument())
300
        return false;
301
    CachedResource* resource = memoryCache()->resourceForURL(contextDocument()->completeURL(url));
302
    return resource && resource->status() == CachedResource::Cached;
303
}
304
296
PassRefPtr<Element> Internals::createContentElement(Document* document, ExceptionCode& ec)
305
PassRefPtr<Element> Internals::createContentElement(Document* document, ExceptionCode& ec)
297
{
306
{
298
    if (!document) {
307
    if (!document) {
- Source/WebCore/testing/Internals.h +1 lines
Lines 72-77 Source/WebCore/testing/Internals.h_sec1
72
    String address(Node*);
72
    String address(Node*);
73
73
74
    bool isPreloaded(Document*, const String& url);
74
    bool isPreloaded(Document*, const String& url);
75
    bool isLoadingFromMemoryCache(const String& url);
75
76
76
    size_t numberOfScopedHTMLStyleChildren(const Node*, ExceptionCode&) const;
77
    size_t numberOfScopedHTMLStyleChildren(const Node*, ExceptionCode&) const;
77
78
- Source/WebCore/dom/Document.cpp +5 lines
Lines 845-850 Source/WebCore/dom/Document.cpp_sec1
845
    return m_implementation.get();
845
    return m_implementation.get();
846
}
846
}
847
847
848
bool Document::hasManifest() const
849
{
850
    return documentElement() && documentElement()->hasTagName(htmlTag) && documentElement()->hasAttribute(manifestAttr);
851
}
852
848
void Document::childrenChanged(bool changedByParser, Node* beforeChange, Node* afterChange, int childCountDelta)
853
void Document::childrenChanged(bool changedByParser, Node* beforeChange, Node* afterChange, int childCountDelta)
849
{
854
{
850
    ContainerNode::childrenChanged(changedByParser, beforeChange, afterChange, childCountDelta);
855
    ContainerNode::childrenChanged(changedByParser, beforeChange, afterChange, childCountDelta);
- Source/WebCore/dom/Document.h +2 lines
Lines 340-345 Source/WebCore/dom/Document.h_sec1
340
    {
340
    {
341
        return m_documentElement.get();
341
        return m_documentElement.get();
342
    }
342
    }
343
344
    bool hasManifest() const;
343
    
345
    
344
    virtual PassRefPtr<Element> createElement(const AtomicString& tagName, ExceptionCode&);
346
    virtual PassRefPtr<Element> createElement(const AtomicString& tagName, ExceptionCode&);
345
    PassRefPtr<DocumentFragment> createDocumentFragment();
347
    PassRefPtr<DocumentFragment> createDocumentFragment();
- Source/WebCore/WebCore.exp.in +1 lines
Lines 145-150 Source/WebCore/WebCore.exp.in_sec1
145
__ZN7WebCore11MemoryCache13getStatisticsEv
145
__ZN7WebCore11MemoryCache13getStatisticsEv
146
__ZN7WebCore11MemoryCache13setCapacitiesEjjj
146
__ZN7WebCore11MemoryCache13setCapacitiesEjjj
147
__ZN7WebCore11MemoryCache14evictResourcesEv
147
__ZN7WebCore11MemoryCache14evictResourcesEv
148
__ZN7WebCore11MemoryCache14resourceForURLERKNS_4KURLE
148
__ZN7WebCore11MemoryCache19getOriginsWithCacheERN3WTF7HashSetINS1_6RefPtrINS_14SecurityOriginEEENS_18SecurityOriginHashENS1_10HashTraitsIS5_EEEE
149
__ZN7WebCore11MemoryCache19getOriginsWithCacheERN3WTF7HashSetINS1_6RefPtrINS_14SecurityOriginEEENS_18SecurityOriginHashENS1_10HashTraitsIS5_EEEE
149
__ZN7WebCore11MemoryCache25removeResourcesWithOriginEPNS_14SecurityOriginE
150
__ZN7WebCore11MemoryCache25removeResourcesWithOriginEPNS_14SecurityOriginE
150
__ZN7WebCore11URLWithDataEP6NSDataP5NSURL
151
__ZN7WebCore11URLWithDataEP6NSDataP5NSURL
- LayoutTests/ChangeLog +15 lines
Lines 1-3 LayoutTests/ChangeLog_sec1
1
2013-01-14  Nate Chapin  <japhet@chromium.org>
2
3
        Enable reuse of cached main resources
4
        https://bugs.webkit.org/show_bug.cgi?id=105667.
5
6
        Reviewed by NOBODY (OOPS!).
7
8
        * http/tests/cache/cached-main-resource-expected.txt: Added.
9
        * http/tests/cache/cached-main-resource.html: Added.
10
        * http/tests/cache/resources/cacheable-iframe.php: Added.
11
        * http/tests/inspector/resource-har-pages-expected.txt:
12
        * http/tests/loading/redirect-methods-expected.txt:
13
        * http/tests/misc/favicon-loads-with-images-disabled-expected.txt:
14
        * http/tests/misc/link-rel-icon-beforeload-expected.txt:
15
1
2013-01-14  Levi Weintraub  <leviw@chromium.org>
16
2013-01-14  Levi Weintraub  <leviw@chromium.org>
2
17
3
        Unreviewed gardening. Marking fast/dom/HTMLTemplateElement/inertContents.html
18
        Unreviewed gardening. Marking fast/dom/HTMLTemplateElement/inertContents.html
- LayoutTests/http/tests/inspector/resource-har-pages-expected.txt -1 / +1 lines
Lines 1-6 LayoutTests/http/tests/inspector/resource-har-pages-expected.txt_sec1
1
Tests conversion of Inspector's resource representation into HAR format.
1
Tests conversion of Inspector's resource representation into HAR format.
2
2
3
Page reloaded.
4
{
3
{
5
    0 : {
4
    0 : {
6
        id : <string>
5
        id : <string>
Lines 28-31 LayoutTests/http/tests/inspector/resource-har-pages-expected.txt_sec2
28
page: page_1 url: http://127.0.0.1:8000/inspector/resources/har-pages-navigation-target.html
27
page: page_1 url: http://127.0.0.1:8000/inspector/resources/har-pages-navigation-target.html
29
page: page_1 url: http://127.0.0.1:8000/inspector/resources/source1.js
28
page: page_1 url: http://127.0.0.1:8000/inspector/resources/source1.js
30
page: page_1 url: http://127.0.0.1:8000/resources/redirect.php?url=/inspector/resources/har-pages-navigation-target.html
29
page: page_1 url: http://127.0.0.1:8000/resources/redirect.php?url=/inspector/resources/har-pages-navigation-target.html
30
Page reloaded.
31
31
- LayoutTests/http/tests/misc/favicon-loads-with-images-disabled-expected.txt +1 lines
Lines 1-6 LayoutTests/http/tests/misc/favicon-loads-with-images-disabled-expected.txt_sec1
1
<unknown> - didFinishLoading
1
<unknown> - didFinishLoading
2
http://127.0.0.1:8000/misc/favicon-loads-with-images-disabled.html - willSendRequest <NSURLRequest URL http://127.0.0.1:8000/misc/favicon-loads-with-images-disabled.html, main document URL http://127.0.0.1:8000/misc/favicon-loads-with-images-disabled.html, http method GET> redirectResponse (null)
2
http://127.0.0.1:8000/misc/favicon-loads-with-images-disabled.html - willSendRequest <NSURLRequest URL http://127.0.0.1:8000/misc/favicon-loads-with-images-disabled.html, main document URL http://127.0.0.1:8000/misc/favicon-loads-with-images-disabled.html, http method GET> redirectResponse (null)
3
http://127.0.0.1:8000/misc/favicon-loads-with-images-disabled.html - didReceiveResponse <NSURLResponse http://127.0.0.1:8000/misc/favicon-loads-with-images-disabled.html, http status code 200>
3
http://127.0.0.1:8000/misc/favicon-loads-with-images-disabled.html - didReceiveResponse <NSURLResponse http://127.0.0.1:8000/misc/favicon-loads-with-images-disabled.html, http status code 200>
4
http://127.0.0.1:8000/misc/favicon-loads-with-images-disabled.html - didFinishLoading
4
Radar 6973106 and https://bugs.webkit.org/show_bug.cgi?id=27896 - Favicons still load when automatic image loading is disabled.
5
Radar 6973106 and https://bugs.webkit.org/show_bug.cgi?id=27896 - Favicons still load when automatic image loading is disabled.
5
This test uses DRT's resource load delegate callback mode to see if the favicon is loaded even when image loading is off.
6
This test uses DRT's resource load delegate callback mode to see if the favicon is loaded even when image loading is off.
6
7
- LayoutTests/http/tests/misc/link-rel-icon-beforeload-expected.txt +1 lines
Lines 1-5 LayoutTests/http/tests/misc/link-rel-icon-beforeload-expected.txt_sec1
1
<unknown> - didFinishLoading
1
<unknown> - didFinishLoading
2
http://127.0.0.1:8000/misc/link-rel-icon-beforeload.html - willSendRequest <NSURLRequest URL http://127.0.0.1:8000/misc/link-rel-icon-beforeload.html, main document URL http://127.0.0.1:8000/misc/link-rel-icon-beforeload.html, http method GET> redirectResponse (null)
2
http://127.0.0.1:8000/misc/link-rel-icon-beforeload.html - willSendRequest <NSURLRequest URL http://127.0.0.1:8000/misc/link-rel-icon-beforeload.html, main document URL http://127.0.0.1:8000/misc/link-rel-icon-beforeload.html, http method GET> redirectResponse (null)
3
http://127.0.0.1:8000/misc/link-rel-icon-beforeload.html - didReceiveResponse <NSURLResponse http://127.0.0.1:8000/misc/link-rel-icon-beforeload.html, http status code 200>
3
http://127.0.0.1:8000/misc/link-rel-icon-beforeload.html - didReceiveResponse <NSURLResponse http://127.0.0.1:8000/misc/link-rel-icon-beforeload.html, http status code 200>
4
http://127.0.0.1:8000/misc/link-rel-icon-beforeload.html - didFinishLoading
4
http://127.0.0.1:8000/favicon.ico - willSendRequest <NSURLRequest URL http://127.0.0.1:8000/favicon.ico, main document URL http://127.0.0.1:8000/misc/link-rel-icon-beforeload.html, http method GET> redirectResponse (null)
5
http://127.0.0.1:8000/favicon.ico - willSendRequest <NSURLRequest URL http://127.0.0.1:8000/favicon.ico, main document URL http://127.0.0.1:8000/misc/link-rel-icon-beforeload.html, http method GET> redirectResponse (null)
5
This test should not show a request for the favicon dont-load-this.ico, since the beforeload handler on the favicon link returns false. Therefore, if the resource request list below shows a request for dont-load-this.ico, then this test has failed.
6
This test should not show a request for the favicon dont-load-this.ico, since the beforeload handler on the favicon link returns false. Therefore, if the resource request list below shows a request for dont-load-this.ico, then this test has failed.
- LayoutTests/http/tests/cache/cached-main-resource-expected.txt +2 lines
Line 0 LayoutTests/http/tests/cache/cached-main-resource-expected.txt_sec1
1
PASS
2
 
- LayoutTests/http/tests/cache/cached-main-resource.html +24 lines
Line 0 LayoutTests/http/tests/cache/cached-main-resource.html_sec1
1
<html>
2
<body onload="setTimeout(removeAndReload, 0);">
3
<div id="result"></div>
4
<script>
5
if (window.testRunner) {
6
    testRunner.dumpAsText();
7
    testRunner.waitUntilDone();
8
}
9
10
function removeAndReload()
11
{
12
    document.body.removeChild(document.getElementById("iframe"));
13
    var newIframe = document.createElement("iframe");
14
    newIframe.src = "resources/cacheable-iframe.php";
15
    document.body.appendChild(newIframe);
16
    var fromCache = internals.isLoadingFromMemoryCache(newIframe.src);
17
    document.getElementById("result").appendChild(document.createTextNode(fromCache ? "PASS" : "FAIL"));
18
    if (window.testRunner)
19
        testRunner.notifyDone();
20
}
21
</script>
22
<iframe id="iframe" src="resources/cacheable-iframe.php"></iframe>
23
</body>
24
</html>
- LayoutTests/http/tests/cache/resources/cacheable-iframe.php +11 lines
Line 0 LayoutTests/http/tests/cache/resources/cacheable-iframe.php_sec1
1
<?php
2
require_once '../../resources/portabilityLayer.php';
3
4
$max_age = 12 * 31 * 24 * 60 * 60; //one year
5
$expires = gmdate(DATE_RFC1123, time() + $max_age);
6
7
header('Cache-Control: public, max-age=' . $max_age);
8
header('Expires: ' . $expires);
9
header('Content-Type: text/html');
10
exit();
11
?>
- LayoutTests/http/tests/loading/redirect-methods-expected.txt -3 / +3 lines
Lines 42-52 LayoutTests/http/tests/loading/redirect-methods-expected.txt_sec1
42
http://127.0.0.1:8000/loading/resources/redirect-methods-form.html - didReceiveResponse <NSURLResponse http://127.0.0.1:8000/loading/resources/redirect-methods-form.html, http status code 200>
42
http://127.0.0.1:8000/loading/resources/redirect-methods-form.html - didReceiveResponse <NSURLResponse http://127.0.0.1:8000/loading/resources/redirect-methods-form.html, http status code 200>
43
frame "1" - didCancelClientRedirectForFrame
43
frame "1" - didCancelClientRedirectForFrame
44
frame "1" - didCommitLoadForFrame
44
frame "1" - didCommitLoadForFrame
45
http://127.0.0.1:8000/loading/resources/redirect-methods-form.html - didFinishLoading
45
frame "1" - didFinishDocumentLoadForFrame
46
frame "1" - didFinishDocumentLoadForFrame
46
frame "1" - willPerformClientRedirectToURL: http://127.0.0.1:8000/loading/resources/redirect-methods-result.php 
47
frame "1" - willPerformClientRedirectToURL: http://127.0.0.1:8000/loading/resources/redirect-methods-result.php 
47
frame "1" - didHandleOnloadEventsForFrame
48
frame "1" - didHandleOnloadEventsForFrame
48
frame "1" - didFinishLoadForFrame
49
frame "1" - didFinishLoadForFrame
49
http://127.0.0.1:8000/loading/resources/redirect-methods-form.html - didFinishLoading
50
frame "1" - didStartProvisionalLoadForFrame
50
frame "1" - didStartProvisionalLoadForFrame
51
http://127.0.0.1:8000/loading/resources/redirect-methods-result.php - willSendRequest <NSURLRequest URL http://127.0.0.1:8000/loading/resources/redirect-methods-result.php, main document URL http://127.0.0.1:8000/loading/redirect-methods.html, http method POST> redirectResponse (null)
51
http://127.0.0.1:8000/loading/resources/redirect-methods-result.php - willSendRequest <NSURLRequest URL http://127.0.0.1:8000/loading/resources/redirect-methods-result.php, main document URL http://127.0.0.1:8000/loading/redirect-methods.html, http method POST> redirectResponse (null)
52
http://127.0.0.1:8000/loading/resources/redirect-methods-result.php - willSendRequest <NSURLRequest URL http://127.0.0.1:8000/loading/resources/redirect-methods-result.php?redirected=true, main document URL http://127.0.0.1:8000/loading/redirect-methods.html, http method GET> redirectResponse <NSURLResponse http://127.0.0.1:8000/loading/resources/redirect-methods-result.php, http status code 302>
52
http://127.0.0.1:8000/loading/resources/redirect-methods-result.php - willSendRequest <NSURLRequest URL http://127.0.0.1:8000/loading/resources/redirect-methods-result.php?redirected=true, main document URL http://127.0.0.1:8000/loading/redirect-methods.html, http method GET> redirectResponse <NSURLResponse http://127.0.0.1:8000/loading/resources/redirect-methods-result.php, http status code 302>
Lines 69-79 LayoutTests/http/tests/loading/redirect-methods-expected.txt_sec2
69
http://127.0.0.1:8000/loading/resources/redirect-methods-form.html - didReceiveResponse <NSURLResponse http://127.0.0.1:8000/loading/resources/redirect-methods-form.html, http status code 200>
69
http://127.0.0.1:8000/loading/resources/redirect-methods-form.html - didReceiveResponse <NSURLResponse http://127.0.0.1:8000/loading/resources/redirect-methods-form.html, http status code 200>
70
frame "2" - didCancelClientRedirectForFrame
70
frame "2" - didCancelClientRedirectForFrame
71
frame "2" - didCommitLoadForFrame
71
frame "2" - didCommitLoadForFrame
72
http://127.0.0.1:8000/loading/resources/redirect-methods-form.html - didFinishLoading
72
frame "2" - didFinishDocumentLoadForFrame
73
frame "2" - didFinishDocumentLoadForFrame
73
frame "2" - willPerformClientRedirectToURL: http://127.0.0.1:8000/loading/resources/redirect-methods-result.php 
74
frame "2" - willPerformClientRedirectToURL: http://127.0.0.1:8000/loading/resources/redirect-methods-result.php 
74
frame "2" - didHandleOnloadEventsForFrame
75
frame "2" - didHandleOnloadEventsForFrame
75
frame "2" - didFinishLoadForFrame
76
frame "2" - didFinishLoadForFrame
76
http://127.0.0.1:8000/loading/resources/redirect-methods-form.html - didFinishLoading
77
frame "2" - didStartProvisionalLoadForFrame
77
frame "2" - didStartProvisionalLoadForFrame
78
http://127.0.0.1:8000/loading/resources/redirect-methods-result.php - willSendRequest <NSURLRequest URL http://127.0.0.1:8000/loading/resources/redirect-methods-result.php, main document URL http://127.0.0.1:8000/loading/redirect-methods.html, http method POST> redirectResponse (null)
78
http://127.0.0.1:8000/loading/resources/redirect-methods-result.php - willSendRequest <NSURLRequest URL http://127.0.0.1:8000/loading/resources/redirect-methods-result.php, main document URL http://127.0.0.1:8000/loading/redirect-methods.html, http method POST> redirectResponse (null)
79
http://127.0.0.1:8000/loading/resources/redirect-methods-result.php - willSendRequest <NSURLRequest URL http://127.0.0.1:8000/loading/resources/redirect-methods-result.php?redirected=true, main document URL http://127.0.0.1:8000/loading/redirect-methods.html, http method GET> redirectResponse <NSURLResponse http://127.0.0.1:8000/loading/resources/redirect-methods-result.php, http status code 303>
79
http://127.0.0.1:8000/loading/resources/redirect-methods-result.php - willSendRequest <NSURLRequest URL http://127.0.0.1:8000/loading/resources/redirect-methods-result.php?redirected=true, main document URL http://127.0.0.1:8000/loading/redirect-methods.html, http method GET> redirectResponse <NSURLResponse http://127.0.0.1:8000/loading/resources/redirect-methods-result.php, http status code 303>
Lines 96-106 LayoutTests/http/tests/loading/redirect-methods-expected.txt_sec3
96
http://127.0.0.1:8000/loading/resources/redirect-methods-form.html - didReceiveResponse <NSURLResponse http://127.0.0.1:8000/loading/resources/redirect-methods-form.html, http status code 200>
96
http://127.0.0.1:8000/loading/resources/redirect-methods-form.html - didReceiveResponse <NSURLResponse http://127.0.0.1:8000/loading/resources/redirect-methods-form.html, http status code 200>
97
frame "3" - didCancelClientRedirectForFrame
97
frame "3" - didCancelClientRedirectForFrame
98
frame "3" - didCommitLoadForFrame
98
frame "3" - didCommitLoadForFrame
99
http://127.0.0.1:8000/loading/resources/redirect-methods-form.html - didFinishLoading
99
frame "3" - didFinishDocumentLoadForFrame
100
frame "3" - didFinishDocumentLoadForFrame
100
frame "3" - willPerformClientRedirectToURL: http://127.0.0.1:8000/loading/resources/redirect-methods-result.php 
101
frame "3" - willPerformClientRedirectToURL: http://127.0.0.1:8000/loading/resources/redirect-methods-result.php 
101
frame "3" - didHandleOnloadEventsForFrame
102
frame "3" - didHandleOnloadEventsForFrame
102
frame "3" - didFinishLoadForFrame
103
frame "3" - didFinishLoadForFrame
103
http://127.0.0.1:8000/loading/resources/redirect-methods-form.html - didFinishLoading
104
frame "3" - didStartProvisionalLoadForFrame
104
frame "3" - didStartProvisionalLoadForFrame
105
http://127.0.0.1:8000/loading/resources/redirect-methods-result.php - willSendRequest <NSURLRequest URL http://127.0.0.1:8000/loading/resources/redirect-methods-result.php, main document URL http://127.0.0.1:8000/loading/redirect-methods.html, http method POST> redirectResponse (null)
105
http://127.0.0.1:8000/loading/resources/redirect-methods-result.php - willSendRequest <NSURLRequest URL http://127.0.0.1:8000/loading/resources/redirect-methods-result.php, main document URL http://127.0.0.1:8000/loading/redirect-methods.html, http method POST> redirectResponse (null)
106
http://127.0.0.1:8000/loading/resources/redirect-methods-result.php - willSendRequest <NSURLRequest URL http://127.0.0.1:8000/loading/resources/redirect-methods-result.php?redirected=true, main document URL http://127.0.0.1:8000/loading/redirect-methods.html, http method POST> redirectResponse <NSURLResponse http://127.0.0.1:8000/loading/resources/redirect-methods-result.php, http status code 307>
106
http://127.0.0.1:8000/loading/resources/redirect-methods-result.php - willSendRequest <NSURLRequest URL http://127.0.0.1:8000/loading/resources/redirect-methods-result.php?redirected=true, main document URL http://127.0.0.1:8000/loading/redirect-methods.html, http method POST> redirectResponse <NSURLResponse http://127.0.0.1:8000/loading/resources/redirect-methods-result.php, http status code 307>

Return to Bug 105667