| 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()) { | 
|  |