| Index: Source/core/timing/Performance.cpp
|
| diff --git a/Source/core/timing/Performance.cpp b/Source/core/timing/Performance.cpp
|
| index e2e0928ed6a5cc13c40f8cd1b8007f74bd1545cb..66601edca2978e0d27e9743b1eba4f36cb305cf3 100644
|
| --- a/Source/core/timing/Performance.cpp
|
| +++ b/Source/core/timing/Performance.cpp
|
| @@ -157,7 +157,7 @@ void Performance::webkitSetResourceTimingBufferSize(unsigned size)
|
| 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"));
|
|
|
| @@ -165,7 +165,7 @@ static bool passesTimingAllowCheck(const ResourceResponse& response, Document* r
|
| 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;
|
|
|
| @@ -185,11 +185,11 @@ static bool passesTimingAllowCheck(const ResourceResponse& response, Document* r
|
|
|
| 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;
|
| }
|
|
|
| @@ -202,7 +202,7 @@ void Performance::addResourceTiming(const ResourceTimingInfo& info, Document* in
|
| 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()) {
|
|
|