Fix ResourceTiming multiple entries per resource and test initiator
https://bugs.webkit.org/show_bug.cgi?id=158094
Reviewed by Alex Christensen.
Make sure that CachedResource that was needed by two different elements only adds one entry, with the right (first) initiatorType.
Source/WebCore:
Tests: http/tests/performance/performance-resource-timing-initiator-css.html
http/tests/performance/performance-resource-timing-initiator-no-override.html
* loader/ResourceTimingInformation.cpp:
(WebCore::ResourceTimingInformation::addResourceTiming): Don't remove CachedResource when entry is added, but
mark it as added. Only add new entries for non-added resources.
(WebCore::ResourceTimingInformation::storeResourceTimingInitiatorInformation): Initialize initiator info as NotYetAdded.
* loader/ResourceTimingInformation.h:
LayoutTests:
* http/tests/performance/performance-resource-timing-initiator-css.html: Added. Makes sure css has the right initiator type.
* http/tests/performance/performance-resource-timing-initiator-css-expected.txt: Added.
* http/tests/performance/performance-resource-timing-initiator-no-override.html: Added. Makes sure that only one entry is added and
that its initiator info doesn't get overriden.
* http/tests/performance/performance-resource-timing-initiator-no-override-expected.txt: Added.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@201415 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/WebCore/loader/ResourceTimingInformation.h b/Source/WebCore/loader/ResourceTimingInformation.h
index 8d0b716..bf62042 100644
--- a/Source/WebCore/loader/ResourceTimingInformation.h
+++ b/Source/WebCore/loader/ResourceTimingInformation.h
@@ -45,9 +45,11 @@
void storeResourceTimingInitiatorInformation(const CachedResourceHandle<CachedResource>&, const CachedResourceRequest&, Frame*);
private:
+ enum AlreadyAdded { NotYetAdded, Added };
struct InitiatorInfo {
AtomicString name;
double startTime;
+ AlreadyAdded added;
};
HashMap<CachedResource*, InitiatorInfo> m_initiatorMap;
};