| Index: third_party/WebKit/Source/core/loader/DocumentLoader.cpp | 
| diff --git a/third_party/WebKit/Source/core/loader/DocumentLoader.cpp b/third_party/WebKit/Source/core/loader/DocumentLoader.cpp | 
| index 20cc631f83d3df36e97abbc90e1d8b872ee382f6..d393122b2c8f9f9091f11e79e3abbdf46024eb06 100644 | 
| --- a/third_party/WebKit/Source/core/loader/DocumentLoader.cpp | 
| +++ b/third_party/WebKit/Source/core/loader/DocumentLoader.cpp | 
| @@ -107,7 +107,7 @@ DocumentLoader::DocumentLoader(LocalFrame* frame, const ResourceRequest& req, co | 
| , m_documentLoadTiming(*this) | 
| , m_timeOfLastDataReceived(0.0) | 
| , m_applicationCacheHost(ApplicationCacheHost::create(this)) | 
| -    , m_wasBlockedAfterXFrameOptionsOrCSP(false) | 
| +    , m_wasBlockedAfterCSP(false) | 
| , m_state(NotStarted) | 
| , m_inDataReceived(false) | 
| , m_dataBuffer(SharedBuffer::create()) | 
| @@ -257,6 +257,11 @@ void DocumentLoader::notifyFinished(Resource* resource) | 
| if (m_applicationCacheHost) | 
| m_applicationCacheHost->failedLoadingMainResource(); | 
| m_state = MainResourceDone; | 
| + | 
| +    // TODO(mkwst): Magic numbers bad. | 
| +    if (m_mainResource->resourceError().errorCode() == -27) | 
| +        InspectorInstrumentation::canceledAfterReceivedResourceResponse(m_frame, this, mainResourceIdentifier(), resource->response()); | 
| + | 
| frameLoader()->loadFailed(this, m_mainResource->resourceError()); | 
| clearMainResourceHandle(); | 
| } | 
| @@ -350,11 +355,11 @@ bool DocumentLoader::shouldContinueForResponse() const | 
| return true; | 
| } | 
|  | 
| -void DocumentLoader::cancelLoadAfterXFrameOptionsOrCSPDenied(const ResourceResponse& response) | 
| +void DocumentLoader::cancelLoadAfterCSPDenied(const ResourceResponse& response) | 
| { | 
| -    InspectorInstrumentation::continueAfterXFrameOptionsDenied(m_frame, this, mainResourceIdentifier(), response); | 
| +    InspectorInstrumentation::canceledAfterReceivedResourceResponse(m_frame, this, mainResourceIdentifier(), response); | 
|  | 
| -    setWasBlockedAfterXFrameOptionsOrCSP(); | 
| +    setWasBlockedAfterCSP(); | 
|  | 
| // Pretend that this was an empty HTTP 200 response. | 
| clearMainResourceHandle(); | 
| @@ -382,27 +387,10 @@ void DocumentLoader::responseReceived(Resource* resource, const ResourceResponse | 
| m_contentSecurityPolicy->setOverrideURLForSelf(response.url()); | 
| m_contentSecurityPolicy->didReceiveHeaders(ContentSecurityPolicyResponseHeaders(response)); | 
| if (!m_contentSecurityPolicy->allowAncestors(m_frame, response.url())) { | 
| -        cancelLoadAfterXFrameOptionsOrCSPDenied(response); | 
| +        cancelLoadAfterCSPDenied(response); | 
| return; | 
| } | 
|  | 
| -    // 'frame-ancestors' obviates 'x-frame-options': https://w3c.github.io/webappsec/specs/content-security-policy/#frame-ancestors-and-frame-options | 
| -    if (!m_contentSecurityPolicy->isFrameAncestorsEnforced()) { | 
| -        HTTPHeaderMap::const_iterator it = response.httpHeaderFields().find(HTTPNames::X_Frame_Options); | 
| -        if (it != response.httpHeaderFields().end()) { | 
| -            String content = it->value; | 
| -            if (frameLoader()->shouldInterruptLoadForXFrameOptions(content, response.url(), mainResourceIdentifier())) { | 
| -                String message = "Refused to display '" + response.url().elidedString() + "' in a frame because it set 'X-Frame-Options' to '" + content + "'."; | 
| -                ConsoleMessage* consoleMessage = ConsoleMessage::create(SecurityMessageSource, ErrorMessageLevel, message); | 
| -                consoleMessage->setRequestIdentifier(mainResourceIdentifier()); | 
| -                frame()->document()->addConsoleMessage(consoleMessage); | 
| - | 
| -                cancelLoadAfterXFrameOptionsOrCSPDenied(response); | 
| -                return; | 
| -            } | 
| -        } | 
| -    } | 
| - | 
| ASSERT(!m_frame->page()->defersLoading()); | 
|  | 
| m_response = response; | 
|  |