#include "platform/weborigin/SecurityOrigin.h"
#include "wtf/CurrentTime.h"
-namespace WebCore {
+namespace blink {
static const size_t defaultResourceTimingBufferSize = 150;
PassRefPtrWillBeRawPtr<MemoryInfo> Performance::memory() const
{
- return MemoryInfo::create(m_frame);
+ return MemoryInfo::create();
}
PerformanceNavigation* Performance::navigation() const
dispatchEvent(Event::create(EventTypeNames::webkitresourcetimingbufferfull));
}
-static bool passesTimingAllowCheck(const ResourceResponse& response, Document* requestingDocument)
+static bool passesTimingAllowCheck(const ResourceResponse& response, Document* requestingDocument, const AtomicString& originalTimingAllowOrigin)
{
AtomicallyInitializedStatic(AtomicString&, timingAllowOrigin = *new AtomicString("timing-allow-origin"));
if (resourceOrigin->isSameSchemeHostPort(requestingDocument->securityOrigin()))
return true;
- const AtomicString& timingAllowOriginString = response.httpHeaderField(timingAllowOrigin);
+ const AtomicString& timingAllowOriginString = originalTimingAllowOrigin.isEmpty() ? response.httpHeaderField(timingAllowOrigin) : originalTimingAllowOrigin;
if (timingAllowOriginString.isEmpty() || equalIgnoringCase(timingAllowOriginString, "null"))
return false;
const String& securityOrigin = requestingDocument->securityOrigin()->toString();
Vector<String> timingAllowOrigins;
- timingAllowOriginString.string().split(" ", timingAllowOrigins);
+ timingAllowOriginString.string().split(' ', timingAllowOrigins);
for (size_t i = 0; i < timingAllowOrigins.size(); ++i) {
if (timingAllowOrigins[i] == securityOrigin)
return true;
static bool allowsTimingRedirect(const Vector<ResourceResponse>& redirectChain, const ResourceResponse& finalResponse, Document* initiatorDocument)
{
- if (!passesTimingAllowCheck(finalResponse, initiatorDocument))
+ if (!passesTimingAllowCheck(finalResponse, initiatorDocument, emptyAtom))
return false;
for (size_t i = 0; i < redirectChain.size(); i++) {
- if (!passesTimingAllowCheck(redirectChain[i], initiatorDocument))
+ if (!passesTimingAllowCheck(redirectChain[i], initiatorDocument, emptyAtom))
return false;
}
return;
const ResourceResponse& finalResponse = info.finalResponse();
- bool allowTimingDetails = passesTimingAllowCheck(finalResponse, initiatorDocument);
+ bool allowTimingDetails = passesTimingAllowCheck(finalResponse, initiatorDocument, info.originalTimingAllowOrigin());
double startTime = info.initialTime();
if (info.redirectChain().isEmpty()) {
const Vector<ResourceResponse>& redirectChain = info.redirectChain();
bool allowRedirectDetails = allowsTimingRedirect(redirectChain, finalResponse, initiatorDocument);
- if (!allowRedirectDetails) {
+ // ServiceWorker doesn't support TimingInfo.
+ // FIXME: Implement ServiceWorkerURLRequestJob::GetLoadTimingInfo().
+ if (!allowRedirectDetails && !finalResponse.wasFetchedViaServiceWorker()) {
ResourceLoadTiming* finalTiming = finalResponse.resourceLoadTiming();
ASSERT(finalTiming);
if (finalTiming)
visitor->trace(m_timing);
visitor->trace(m_resourceTimingBuffer);
visitor->trace(m_userTiming);
+ EventTargetWithInlineData::trace(visitor);
}
-} // namespace WebCore
+} // namespace blink