Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(447)

Side by Side Diff: content/browser/web_contents/web_contents_impl.cc

Issue 304313003: Allow view-source of pages fully-blocked by Blink's XSS filter. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add xss_detected_ bool and use it. Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/web_contents/web_contents_impl.h" 5 #include "content/browser/web_contents/web_contents_impl.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/debug/trace_event.h" 10 #include "base/debug/trace_event.h"
(...skipping 491 matching lines...) Expand 10 before | Expand all | Expand 10 after
502 return true; 502 return true;
503 render_view_message_source_ = render_view_host; 503 render_view_message_source_ = render_view_host;
504 } 504 }
505 505
506 bool handled = true; 506 bool handled = true;
507 IPC_BEGIN_MESSAGE_MAP(WebContentsImpl, message) 507 IPC_BEGIN_MESSAGE_MAP(WebContentsImpl, message)
508 IPC_MESSAGE_HANDLER(FrameHostMsg_PepperPluginHung, OnPepperPluginHung) 508 IPC_MESSAGE_HANDLER(FrameHostMsg_PepperPluginHung, OnPepperPluginHung)
509 IPC_MESSAGE_HANDLER(FrameHostMsg_PluginCrashed, OnPluginCrashed) 509 IPC_MESSAGE_HANDLER(FrameHostMsg_PluginCrashed, OnPluginCrashed)
510 IPC_MESSAGE_HANDLER(FrameHostMsg_DomOperationResponse, 510 IPC_MESSAGE_HANDLER(FrameHostMsg_DomOperationResponse,
511 OnDomOperationResponse) 511 OnDomOperationResponse)
512 IPC_MESSAGE_HANDLER(FrameHostMsg_DidDetectXSS, OnDidDetectXSS)
512 IPC_MESSAGE_HANDLER(FrameHostMsg_DidFinishDocumentLoad, 513 IPC_MESSAGE_HANDLER(FrameHostMsg_DidFinishDocumentLoad,
513 OnDocumentLoadedInFrame) 514 OnDocumentLoadedInFrame)
514 IPC_MESSAGE_HANDLER(FrameHostMsg_DidFinishLoad, OnDidFinishLoad) 515 IPC_MESSAGE_HANDLER(FrameHostMsg_DidFinishLoad, OnDidFinishLoad)
515 IPC_MESSAGE_HANDLER(FrameHostMsg_DidStartLoading, OnDidStartLoading) 516 IPC_MESSAGE_HANDLER(FrameHostMsg_DidStartLoading, OnDidStartLoading)
516 IPC_MESSAGE_HANDLER(FrameHostMsg_DidStopLoading, OnDidStopLoading) 517 IPC_MESSAGE_HANDLER(FrameHostMsg_DidStopLoading, OnDidStopLoading)
517 IPC_MESSAGE_HANDLER(FrameHostMsg_DidChangeLoadProgress, 518 IPC_MESSAGE_HANDLER(FrameHostMsg_DidChangeLoadProgress,
518 OnDidChangeLoadProgress) 519 OnDidChangeLoadProgress)
519 IPC_MESSAGE_HANDLER(FrameHostMsg_OpenColorChooser, OnOpenColorChooser) 520 IPC_MESSAGE_HANDLER(FrameHostMsg_OpenColorChooser, OnOpenColorChooser)
520 IPC_MESSAGE_HANDLER(FrameHostMsg_EndColorChooser, OnEndColorChooser) 521 IPC_MESSAGE_HANDLER(FrameHostMsg_EndColorChooser, OnEndColorChooser)
521 IPC_MESSAGE_HANDLER(FrameHostMsg_SetSelectedColorInColorChooser, 522 IPC_MESSAGE_HANDLER(FrameHostMsg_SetSelectedColorInColorChooser,
(...skipping 2045 matching lines...) Expand 10 before | Expand all | Expand 10 after
2567 << target_url.possibly_invalid_spec(); 2568 << target_url.possibly_invalid_spec();
2568 RecordAction(base::UserMetricsAction("SSL.RanInsecureContent")); 2569 RecordAction(base::UserMetricsAction("SSL.RanInsecureContent"));
2569 if (EndsWith(security_origin, kDotGoogleDotCom, false)) 2570 if (EndsWith(security_origin, kDotGoogleDotCom, false))
2570 RecordAction(base::UserMetricsAction("SSL.RanInsecureContentGoogle")); 2571 RecordAction(base::UserMetricsAction("SSL.RanInsecureContentGoogle"));
2571 controller_.ssl_manager()->DidRunInsecureContent(security_origin); 2572 controller_.ssl_manager()->DidRunInsecureContent(security_origin);
2572 displayed_insecure_content_ = true; 2573 displayed_insecure_content_ = true;
2573 SSLManager::NotifySSLInternalStateChanged( 2574 SSLManager::NotifySSLInternalStateChanged(
2574 GetController().GetBrowserContext()); 2575 GetController().GetBrowserContext());
2575 } 2576 }
2576 2577
2578
2579 void WebContentsImpl::OnDidDetectXSS(int32 page_id,
2580 const GURL& url,
2581 bool blocked_entire_page) {
2582 if (!blocked_entire_page)
2583 return;
2584
2585 int entry_index = controller_.GetEntryIndexWithPageID(
2586 GetRenderViewHost()->GetSiteInstance(), page_id);
2587 if (entry_index < 0)
2588 return;
2589
2590 NavigationEntryImpl* entry = NavigationEntryImpl::FromNavigationEntry(
2591 controller_.GetEntryAtIndex(entry_index));
2592 if (!entry)
2593 return;
2594
2595 entry->set_xss_detected(true);
2596 }
2597
2577 void WebContentsImpl::OnDocumentLoadedInFrame() { 2598 void WebContentsImpl::OnDocumentLoadedInFrame() {
2578 CHECK(render_frame_message_source_); 2599 CHECK(render_frame_message_source_);
2579 CHECK(!render_view_message_source_); 2600 CHECK(!render_view_message_source_);
2580 RenderFrameHostImpl* rfh = 2601 RenderFrameHostImpl* rfh =
2581 static_cast<RenderFrameHostImpl*>(render_frame_message_source_); 2602 static_cast<RenderFrameHostImpl*>(render_frame_message_source_);
2582 2603
2583 int render_frame_id = rfh->GetRoutingID(); 2604 int render_frame_id = rfh->GetRoutingID();
2584 RenderViewHost* render_view_host = rfh->render_view_host(); 2605 RenderViewHost* render_view_host = rfh->render_view_host();
2585 FOR_EACH_OBSERVER(WebContentsObserver, 2606 FOR_EACH_OBSERVER(WebContentsObserver,
2586 observers_, 2607 observers_,
(...skipping 1485 matching lines...) Expand 10 before | Expand all | Expand 10 after
4072 4093
4073 void WebContentsImpl::OnPreferredSizeChanged(const gfx::Size& old_size) { 4094 void WebContentsImpl::OnPreferredSizeChanged(const gfx::Size& old_size) {
4074 if (!delegate_) 4095 if (!delegate_)
4075 return; 4096 return;
4076 const gfx::Size new_size = GetPreferredSize(); 4097 const gfx::Size new_size = GetPreferredSize();
4077 if (new_size != old_size) 4098 if (new_size != old_size)
4078 delegate_->UpdatePreferredSize(this, new_size); 4099 delegate_->UpdatePreferredSize(this, new_size);
4079 } 4100 }
4080 4101
4081 } // namespace content 4102 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698