Index: content/browser/web_contents/web_contents_impl.cc |
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc |
index b76a165fd9077689a1cc15ed9c035d3a99c775bc..6e0e191f3adc58b0e5fd38ce40f7056d1b6e3f3d 100644 |
--- a/content/browser/web_contents/web_contents_impl.cc |
+++ b/content/browser/web_contents/web_contents_impl.cc |
@@ -509,6 +509,7 @@ bool WebContentsImpl::OnMessageReceived(RenderViewHost* render_view_host, |
IPC_MESSAGE_HANDLER(FrameHostMsg_PluginCrashed, OnPluginCrashed) |
IPC_MESSAGE_HANDLER(FrameHostMsg_DomOperationResponse, |
OnDomOperationResponse) |
+ IPC_MESSAGE_HANDLER(FrameHostMsg_DidDetectXSS, OnDidDetectXSS) |
IPC_MESSAGE_HANDLER(FrameHostMsg_DidFinishDocumentLoad, |
OnDocumentLoadedInFrame) |
IPC_MESSAGE_HANDLER(FrameHostMsg_DidFinishLoad, OnDidFinishLoad) |
@@ -2574,6 +2575,26 @@ void WebContentsImpl::OnDidRunInsecureContent( |
GetController().GetBrowserContext()); |
} |
+ |
+void WebContentsImpl::OnDidDetectXSS(int32 page_id, |
+ const GURL& url, |
+ bool blocked_entire_page) { |
+ if (!blocked_entire_page) |
+ return; |
+ |
+ int entry_index = controller_.GetEntryIndexWithPageID( |
+ GetRenderViewHost()->GetSiteInstance(), page_id); |
+ if (entry_index < 0) |
+ return; |
+ |
+ NavigationEntryImpl* entry = NavigationEntryImpl::FromNavigationEntry( |
+ controller_.GetEntryAtIndex(entry_index)); |
+ if (!entry) |
+ return; |
+ |
+ entry->set_xss_detected(true); |
+} |
+ |
void WebContentsImpl::OnDocumentLoadedInFrame() { |
CHECK(render_frame_message_source_); |
CHECK(!render_view_message_source_); |