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

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

Issue 2563233002: WebContentsImpl: IPC_BEGIN_MESSAGE_MAP_WITH_PARAM everywhere (Closed)
Patch Set: Fix typo Created 4 years 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
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 <stddef.h> 7 #include <stddef.h>
8 8
9 #include <cmath> 9 #include <cmath>
10 #include <utility> 10 #include <utility>
(...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after
345 int identifier) 345 int identifier)
346 : render_process_id(render_process_id), 346 : render_process_id(render_process_id),
347 render_frame_id(render_frame_id), 347 render_frame_id(render_frame_id),
348 chooser(chooser), 348 chooser(chooser),
349 identifier(identifier) { 349 identifier(identifier) {
350 } 350 }
351 351
352 WebContentsImpl::ColorChooserInfo::~ColorChooserInfo() { 352 WebContentsImpl::ColorChooserInfo::~ColorChooserInfo() {
353 } 353 }
354 354
355 bool WebContentsImpl::ColorChooserInfo::Matches(
356 RenderFrameHostImpl* render_frame_host,
357 int color_chooser_id) {
358 return this->render_process_id == render_frame_host->GetProcess()->GetID() &&
359 this->render_frame_id == render_frame_host->GetRoutingID() &&
360 this->identifier == color_chooser_id;
361 }
362
355 // WebContentsImpl::WebContentsTreeNode ---------------------------------------- 363 // WebContentsImpl::WebContentsTreeNode ----------------------------------------
356 WebContentsImpl::WebContentsTreeNode::WebContentsTreeNode() 364 WebContentsImpl::WebContentsTreeNode::WebContentsTreeNode()
357 : outer_web_contents_(nullptr), 365 : outer_web_contents_(nullptr),
358 outer_contents_frame_tree_node_id_( 366 outer_contents_frame_tree_node_id_(
359 FrameTreeNode::kFrameTreeNodeInvalidId), 367 FrameTreeNode::kFrameTreeNodeInvalidId),
360 focused_web_contents_(nullptr) {} 368 focused_web_contents_(nullptr) {}
361 369
362 WebContentsImpl::WebContentsTreeNode::~WebContentsTreeNode() { 370 WebContentsImpl::WebContentsTreeNode::~WebContentsTreeNode() {
363 // Remove child pointer from our parent. 371 // Remove child pointer from our parent.
364 if (outer_web_contents_) { 372 if (outer_web_contents_) {
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
431 did_first_set_visible_(false), 439 did_first_set_visible_(false),
432 is_being_destroyed_(false), 440 is_being_destroyed_(false),
433 notify_disconnection_(false), 441 notify_disconnection_(false),
434 dialog_manager_(NULL), 442 dialog_manager_(NULL),
435 is_showing_before_unload_dialog_(false), 443 is_showing_before_unload_dialog_(false),
436 last_active_time_(base::TimeTicks::Now()), 444 last_active_time_(base::TimeTicks::Now()),
437 closed_by_user_gesture_(false), 445 closed_by_user_gesture_(false),
438 minimum_zoom_percent_(static_cast<int>(kMinimumZoomFactor * 100)), 446 minimum_zoom_percent_(static_cast<int>(kMinimumZoomFactor * 100)),
439 maximum_zoom_percent_(static_cast<int>(kMaximumZoomFactor * 100)), 447 maximum_zoom_percent_(static_cast<int>(kMaximumZoomFactor * 100)),
440 zoom_scroll_remainder_(0), 448 zoom_scroll_remainder_(0),
441 render_view_message_source_(NULL),
442 render_frame_message_source_(NULL),
443 fullscreen_widget_process_id_(ChildProcessHost::kInvalidUniqueID), 449 fullscreen_widget_process_id_(ChildProcessHost::kInvalidUniqueID),
444 fullscreen_widget_routing_id_(MSG_ROUTING_NONE), 450 fullscreen_widget_routing_id_(MSG_ROUTING_NONE),
445 fullscreen_widget_had_focus_at_shutdown_(false), 451 fullscreen_widget_had_focus_at_shutdown_(false),
446 is_subframe_(false), 452 is_subframe_(false),
447 force_disable_overscroll_content_(false), 453 force_disable_overscroll_content_(false),
448 last_dialog_suppressed_(false), 454 last_dialog_suppressed_(false),
449 geolocation_service_context_(new device::GeolocationServiceContext()), 455 geolocation_service_context_(new device::GeolocationServiceContext()),
450 accessibility_mode_( 456 accessibility_mode_(
451 BrowserAccessibilityStateImpl::GetInstance()->accessibility_mode()), 457 BrowserAccessibilityStateImpl::GetInstance()->accessibility_mode()),
452 audio_stream_monitor_(this), 458 audio_stream_monitor_(this),
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
658 if (!render_frame_host) 664 if (!render_frame_host)
659 return nullptr; 665 return nullptr;
660 666
661 return WebContents::FromRenderFrameHost(render_frame_host); 667 return WebContents::FromRenderFrameHost(render_frame_host);
662 } 668 }
663 669
664 RenderFrameHostManager* WebContentsImpl::GetRenderManagerForTesting() { 670 RenderFrameHostManager* WebContentsImpl::GetRenderManagerForTesting() {
665 return GetRenderManager(); 671 return GetRenderManager();
666 } 672 }
667 673
668 bool WebContentsImpl::OnMessageReceived(RenderViewHost* render_view_host, 674 bool WebContentsImpl::OnMessageReceived(RenderViewHostImpl* render_view_host,
669 const IPC::Message& message) { 675 const IPC::Message& message) {
670 return OnMessageReceived(render_view_host, NULL, message); 676 RenderFrameHost* main_frame = render_view_host->GetMainFrame();
677 if (main_frame) {
678 WebUIImpl* web_ui = static_cast<RenderFrameHostImpl*>(main_frame)->web_ui();
679 if (web_ui && web_ui->OnMessageReceived(message))
680 return true;
681 }
682
683 for (auto& observer : observers_) {
684 if (observer.OnMessageReceived(message))
Charlie Reis 2016/12/13 19:03:56 Presumably this should be changed or removed somed
ncarter (slow) 2016/12/14 18:36:47 Added a TODO
685 return true;
686 }
687
688 bool handled = true;
689 IPC_BEGIN_MESSAGE_MAP_WITH_PARAM(WebContentsImpl, message, render_view_host)
690 IPC_MESSAGE_HANDLER(ViewHostMsg_DidFirstVisuallyNonEmptyPaint,
691 OnFirstVisuallyNonEmptyPaint)
692 IPC_MESSAGE_HANDLER(ViewHostMsg_GoToEntryAtOffset, OnGoToEntryAtOffset)
693 IPC_MESSAGE_HANDLER(ViewHostMsg_UpdateZoomLimits, OnUpdateZoomLimits)
694 IPC_MESSAGE_HANDLER(ViewHostMsg_PageScaleFactorChanged,
695 OnPageScaleFactorChanged)
696 IPC_MESSAGE_HANDLER(ViewHostMsg_EnumerateDirectory, OnEnumerateDirectory)
697 IPC_MESSAGE_HANDLER(ViewHostMsg_AppCacheAccessed, OnAppCacheAccessed)
698 IPC_MESSAGE_HANDLER(ViewHostMsg_WebUISend, OnWebUISend)
699 #if BUILDFLAG(ENABLE_PLUGINS)
700 IPC_MESSAGE_HANDLER(ViewHostMsg_RequestPpapiBrokerPermission,
701 OnRequestPpapiBrokerPermission)
702 #endif
703 IPC_MESSAGE_HANDLER(ViewHostMsg_UpdateFaviconURL, OnUpdateFaviconURL)
704 IPC_MESSAGE_HANDLER(ViewHostMsg_ShowValidationMessage,
705 OnShowValidationMessage)
706 IPC_MESSAGE_HANDLER(ViewHostMsg_HideValidationMessage,
707 OnHideValidationMessage)
708 IPC_MESSAGE_HANDLER(ViewHostMsg_MoveValidationMessage,
709 OnMoveValidationMessage)
710 #if defined(OS_ANDROID)
711 IPC_MESSAGE_HANDLER(ViewHostMsg_OpenDateTimeDialog, OnOpenDateTimeDialog)
712 #endif
713 IPC_MESSAGE_UNHANDLED(handled = false)
714 IPC_END_MESSAGE_MAP()
715
716 return handled;
671 } 717 }
672 718
673 bool WebContentsImpl::OnMessageReceived(RenderViewHost* render_view_host, 719 bool WebContentsImpl::OnMessageReceived(RenderFrameHostImpl* render_frame_host,
674 RenderFrameHost* render_frame_host,
675 const IPC::Message& message) { 720 const IPC::Message& message) {
676 DCHECK(render_view_host || render_frame_host); 721 for (auto& observer : observers_) {
677 722 if (observer.OnMessageReceived(message, render_frame_host))
678 if (render_view_host) { 723 return true;
679 RenderFrameHost* main_frame = render_view_host->GetMainFrame();
680 if (main_frame) {
681 WebUIImpl* web_ui =
682 static_cast<RenderFrameHostImpl*>(main_frame)->web_ui();
683 if (web_ui && web_ui->OnMessageReceived(message))
684 return true;
685 }
686 } 724 }
687 725
688 if (render_frame_host) {
689 for (auto& observer : observers_) {
690 if (observer.OnMessageReceived(message, render_frame_host))
691 return true;
692 }
693 } else {
694 for (auto& observer : observers_) {
695 if (observer.OnMessageReceived(message))
696 return true;
697 }
698 }
699
700 // Message handlers should be aware of which
701 // RenderViewHost/RenderFrameHost sent the message, which is temporarily
702 // stored in render_(view|frame)_message_source_.
703 if (render_frame_host)
704 render_frame_message_source_ = render_frame_host;
705 else
706 render_view_message_source_ = render_view_host;
707
708 bool handled = true; 726 bool handled = true;
709 IPC_BEGIN_MESSAGE_MAP(WebContentsImpl, message) 727 IPC_BEGIN_MESSAGE_MAP_WITH_PARAM(WebContentsImpl, message, render_frame_host)
710 IPC_MESSAGE_HANDLER(FrameHostMsg_DomOperationResponse, 728 IPC_MESSAGE_HANDLER(FrameHostMsg_DomOperationResponse,
711 OnDomOperationResponse) 729 OnDomOperationResponse)
712 IPC_MESSAGE_HANDLER(FrameHostMsg_DidChangeThemeColor, 730 IPC_MESSAGE_HANDLER(FrameHostMsg_DidChangeThemeColor,
713 OnThemeColorChanged) 731 OnThemeColorChanged)
714 IPC_MESSAGE_HANDLER(FrameHostMsg_DidFinishDocumentLoad, 732 IPC_MESSAGE_HANDLER(FrameHostMsg_DidFinishDocumentLoad,
715 OnDocumentLoadedInFrame) 733 OnDocumentLoadedInFrame)
716 IPC_MESSAGE_HANDLER(FrameHostMsg_DidFinishLoad, OnDidFinishLoad) 734 IPC_MESSAGE_HANDLER(FrameHostMsg_DidFinishLoad, OnDidFinishLoad)
717 IPC_MESSAGE_HANDLER(FrameHostMsg_OpenColorChooser, OnOpenColorChooser) 735 IPC_MESSAGE_HANDLER(FrameHostMsg_OpenColorChooser, OnOpenColorChooser)
718 IPC_MESSAGE_HANDLER(FrameHostMsg_EndColorChooser, OnEndColorChooser) 736 IPC_MESSAGE_HANDLER(FrameHostMsg_EndColorChooser, OnEndColorChooser)
719 IPC_MESSAGE_HANDLER(FrameHostMsg_SetSelectedColorInColorChooser, 737 IPC_MESSAGE_HANDLER(FrameHostMsg_SetSelectedColorInColorChooser,
720 OnSetSelectedColorInColorChooser) 738 OnSetSelectedColorInColorChooser)
721 IPC_MESSAGE_HANDLER(ViewHostMsg_DidFirstVisuallyNonEmptyPaint,
722 OnFirstVisuallyNonEmptyPaint)
723 IPC_MESSAGE_HANDLER(FrameHostMsg_DidLoadResourceFromMemoryCache, 739 IPC_MESSAGE_HANDLER(FrameHostMsg_DidLoadResourceFromMemoryCache,
724 OnDidLoadResourceFromMemoryCache) 740 OnDidLoadResourceFromMemoryCache)
725 IPC_MESSAGE_HANDLER(FrameHostMsg_DidDisplayInsecureContent, 741 IPC_MESSAGE_HANDLER(FrameHostMsg_DidDisplayInsecureContent,
726 OnDidDisplayInsecureContent) 742 OnDidDisplayInsecureContent)
727 IPC_MESSAGE_HANDLER(FrameHostMsg_DidRunInsecureContent, 743 IPC_MESSAGE_HANDLER(FrameHostMsg_DidRunInsecureContent,
728 OnDidRunInsecureContent) 744 OnDidRunInsecureContent)
729 IPC_MESSAGE_HANDLER(FrameHostMsg_DidDisplayContentWithCertificateErrors, 745 IPC_MESSAGE_HANDLER(FrameHostMsg_DidDisplayContentWithCertificateErrors,
730 OnDidDisplayContentWithCertificateErrors) 746 OnDidDisplayContentWithCertificateErrors)
731 IPC_MESSAGE_HANDLER(FrameHostMsg_DidRunContentWithCertificateErrors, 747 IPC_MESSAGE_HANDLER(FrameHostMsg_DidRunContentWithCertificateErrors,
732 OnDidRunContentWithCertificateErrors) 748 OnDidRunContentWithCertificateErrors)
733 IPC_MESSAGE_HANDLER(ViewHostMsg_GoToEntryAtOffset, OnGoToEntryAtOffset)
734 IPC_MESSAGE_HANDLER(ViewHostMsg_UpdateZoomLimits, OnUpdateZoomLimits)
735 IPC_MESSAGE_HANDLER(ViewHostMsg_PageScaleFactorChanged,
736 OnPageScaleFactorChanged)
737 IPC_MESSAGE_HANDLER(ViewHostMsg_EnumerateDirectory, OnEnumerateDirectory)
738 IPC_MESSAGE_HANDLER(FrameHostMsg_RegisterProtocolHandler, 749 IPC_MESSAGE_HANDLER(FrameHostMsg_RegisterProtocolHandler,
739 OnRegisterProtocolHandler) 750 OnRegisterProtocolHandler)
740 IPC_MESSAGE_HANDLER(FrameHostMsg_UnregisterProtocolHandler, 751 IPC_MESSAGE_HANDLER(FrameHostMsg_UnregisterProtocolHandler,
741 OnUnregisterProtocolHandler) 752 OnUnregisterProtocolHandler)
742 IPC_MESSAGE_HANDLER(FrameHostMsg_UpdatePageImportanceSignals, 753 IPC_MESSAGE_HANDLER(FrameHostMsg_UpdatePageImportanceSignals,
743 OnUpdatePageImportanceSignals) 754 OnUpdatePageImportanceSignals)
744 IPC_MESSAGE_HANDLER(FrameHostMsg_Find_Reply, OnFindReply) 755 IPC_MESSAGE_HANDLER(FrameHostMsg_Find_Reply, OnFindReply)
745 IPC_MESSAGE_HANDLER(ViewHostMsg_AppCacheAccessed, OnAppCacheAccessed)
746 IPC_MESSAGE_HANDLER(ViewHostMsg_WebUISend, OnWebUISend)
747 #if BUILDFLAG(ENABLE_PLUGINS) 756 #if BUILDFLAG(ENABLE_PLUGINS)
748 IPC_MESSAGE_HANDLER(FrameHostMsg_PepperInstanceCreated, 757 IPC_MESSAGE_HANDLER(FrameHostMsg_PepperInstanceCreated,
749 OnPepperInstanceCreated) 758 OnPepperInstanceCreated)
750 IPC_MESSAGE_HANDLER(FrameHostMsg_PepperInstanceDeleted, 759 IPC_MESSAGE_HANDLER(FrameHostMsg_PepperInstanceDeleted,
751 OnPepperInstanceDeleted) 760 OnPepperInstanceDeleted)
752 IPC_MESSAGE_HANDLER(FrameHostMsg_PepperPluginHung, OnPepperPluginHung) 761 IPC_MESSAGE_HANDLER(FrameHostMsg_PepperPluginHung, OnPepperPluginHung)
753 IPC_MESSAGE_HANDLER(FrameHostMsg_PepperStartsPlayback, 762 IPC_MESSAGE_HANDLER(FrameHostMsg_PepperStartsPlayback,
754 OnPepperStartsPlayback) 763 OnPepperStartsPlayback)
755 IPC_MESSAGE_HANDLER(FrameHostMsg_PepperStopsPlayback, 764 IPC_MESSAGE_HANDLER(FrameHostMsg_PepperStopsPlayback,
756 OnPepperStopsPlayback) 765 OnPepperStopsPlayback)
757 IPC_MESSAGE_HANDLER(FrameHostMsg_PluginCrashed, OnPluginCrashed) 766 IPC_MESSAGE_HANDLER(FrameHostMsg_PluginCrashed, OnPluginCrashed)
758 IPC_MESSAGE_HANDLER(ViewHostMsg_RequestPpapiBrokerPermission,
759 OnRequestPpapiBrokerPermission)
760 IPC_MESSAGE_HANDLER_GENERIC(BrowserPluginHostMsg_Attach, 767 IPC_MESSAGE_HANDLER_GENERIC(BrowserPluginHostMsg_Attach,
761 OnBrowserPluginMessage(render_frame_host, 768 OnBrowserPluginMessage(render_frame_host,
762 message)) 769 message))
763 #endif 770 #endif
764 IPC_MESSAGE_HANDLER(ViewHostMsg_UpdateFaviconURL, OnUpdateFaviconURL)
765 IPC_MESSAGE_HANDLER(ViewHostMsg_ShowValidationMessage,
766 OnShowValidationMessage)
767 IPC_MESSAGE_HANDLER(ViewHostMsg_HideValidationMessage,
768 OnHideValidationMessage)
769 IPC_MESSAGE_HANDLER(ViewHostMsg_MoveValidationMessage,
770 OnMoveValidationMessage)
771 #if defined(OS_ANDROID) 771 #if defined(OS_ANDROID)
772 IPC_MESSAGE_HANDLER(FrameHostMsg_FindMatchRects_Reply, 772 IPC_MESSAGE_HANDLER(FrameHostMsg_FindMatchRects_Reply,
773 OnFindMatchRectsReply) 773 OnFindMatchRectsReply)
774 IPC_MESSAGE_HANDLER(FrameHostMsg_GetNearestFindResult_Reply, 774 IPC_MESSAGE_HANDLER(FrameHostMsg_GetNearestFindResult_Reply,
775 OnGetNearestFindResultReply) 775 OnGetNearestFindResultReply)
776 IPC_MESSAGE_HANDLER(ViewHostMsg_OpenDateTimeDialog,
777 OnOpenDateTimeDialog)
778 #endif 776 #endif
779 IPC_MESSAGE_UNHANDLED(handled = false) 777 IPC_MESSAGE_UNHANDLED(handled = false)
780 IPC_END_MESSAGE_MAP() 778 IPC_END_MESSAGE_MAP()
781 render_view_message_source_ = NULL;
782 render_frame_message_source_ = NULL;
783 779
784 return handled; 780 return handled;
785 } 781 }
786 782
787 bool WebContentsImpl::HasValidFrameSource() {
788 if (!render_frame_message_source_) {
789 DCHECK(render_view_message_source_);
790 bad_message::ReceivedBadMessage(GetRenderProcessHost(),
791 bad_message::WC_INVALID_FRAME_SOURCE);
792 return false;
793 }
794
795 return true;
796 }
797
798 NavigationControllerImpl& WebContentsImpl::GetController() { 783 NavigationControllerImpl& WebContentsImpl::GetController() {
799 return controller_; 784 return controller_;
800 } 785 }
801 786
802 const NavigationControllerImpl& WebContentsImpl::GetController() const { 787 const NavigationControllerImpl& WebContentsImpl::GetController() const {
803 return controller_; 788 return controller_;
804 } 789 }
805 790
806 BrowserContext* WebContentsImpl::GetBrowserContext() const { 791 BrowserContext* WebContentsImpl::GetBrowserContext() const {
807 return controller_.GetBrowserContext(); 792 return controller_.GetBrowserContext();
(...skipping 1632 matching lines...) Expand 10 before | Expand all | Expand 10 after
2440 2425
2441 device::WakeLockServiceContext* WebContentsImpl::GetWakeLockServiceContext() { 2426 device::WakeLockServiceContext* WebContentsImpl::GetWakeLockServiceContext() {
2442 return wake_lock_service_context_.get(); 2427 return wake_lock_service_context_.get();
2443 } 2428 }
2444 2429
2445 ScreenOrientationProvider* WebContentsImpl::GetScreenOrientationProvider() { 2430 ScreenOrientationProvider* WebContentsImpl::GetScreenOrientationProvider() {
2446 return screen_orientation_.get()->GetScreenOrientationProvider(); 2431 return screen_orientation_.get()->GetScreenOrientationProvider();
2447 } 2432 }
2448 2433
2449 void WebContentsImpl::OnShowValidationMessage( 2434 void WebContentsImpl::OnShowValidationMessage(
2435 RenderViewHostImpl* source,
2450 const gfx::Rect& anchor_in_root_view, 2436 const gfx::Rect& anchor_in_root_view,
2451 const base::string16& main_text, 2437 const base::string16& main_text,
2452 const base::string16& sub_text) { 2438 const base::string16& sub_text) {
2439 // TODO(nick): |source|?
Charlie Reis 2016/12/13 19:03:56 I'm with you, but maybe this TODO should be a litt
ncarter (slow) 2016/12/14 18:36:47 Done.
2453 if (delegate_) 2440 if (delegate_)
2454 delegate_->ShowValidationMessage( 2441 delegate_->ShowValidationMessage(
2455 this, anchor_in_root_view, main_text, sub_text); 2442 this, anchor_in_root_view, main_text, sub_text);
2456 } 2443 }
2457 2444
2458 void WebContentsImpl::OnHideValidationMessage() { 2445 void WebContentsImpl::OnHideValidationMessage(RenderViewHostImpl* source) {
2459 if (delegate_) 2446 if (delegate_)
2460 delegate_->HideValidationMessage(this); 2447 delegate_->HideValidationMessage(this);
2461 } 2448 }
2462 2449
2463 void WebContentsImpl::OnMoveValidationMessage( 2450 void WebContentsImpl::OnMoveValidationMessage(
2451 RenderViewHostImpl* source,
2464 const gfx::Rect& anchor_in_root_view) { 2452 const gfx::Rect& anchor_in_root_view) {
2453 // TODO(nick): |source|?
2465 if (delegate_) 2454 if (delegate_)
2466 delegate_->MoveValidationMessage(this, anchor_in_root_view); 2455 delegate_->MoveValidationMessage(this, anchor_in_root_view);
2467 } 2456 }
2468 2457
2469 void WebContentsImpl::SendScreenRects() { 2458 void WebContentsImpl::SendScreenRects() {
2470 for (FrameTreeNode* node : frame_tree_.Nodes()) { 2459 for (FrameTreeNode* node : frame_tree_.Nodes()) {
2471 if (node->current_frame_host()->is_local_root()) 2460 if (node->current_frame_host()->is_local_root())
2472 node->current_frame_host()->GetRenderWidgetHost()->SendScreenRects(); 2461 node->current_frame_host()->GetRenderWidgetHost()->SendScreenRects();
2473 } 2462 }
2474 2463
(...skipping 1005 matching lines...) Expand 10 before | Expand all | Expand 10 after
3480 // Disable overscroll when touch emulation is on. See crbug.com/369938. 3469 // Disable overscroll when touch emulation is on. See crbug.com/369938.
3481 if (force_disable_overscroll_content_) 3470 if (force_disable_overscroll_content_)
3482 return false; 3471 return false;
3483 3472
3484 if (delegate_) 3473 if (delegate_)
3485 return delegate_->CanOverscrollContent(); 3474 return delegate_->CanOverscrollContent();
3486 3475
3487 return false; 3476 return false;
3488 } 3477 }
3489 3478
3490 void WebContentsImpl::OnThemeColorChanged(SkColor theme_color) { 3479 void WebContentsImpl::OnThemeColorChanged(RenderFrameHostImpl* source,
Charlie Reis 2016/12/13 19:03:56 A bunch of these methods don't check |source| eith
ncarter (slow) 2016/12/14 18:36:47 I was adding TODOs as I saw obvious problems, but
3480 SkColor theme_color) {
3491 // Update the theme color. This is to be published to observers after the 3481 // Update the theme color. This is to be published to observers after the
3492 // first visually non-empty paint. 3482 // first visually non-empty paint.
3493 theme_color_ = theme_color; 3483 theme_color_ = theme_color;
3494 3484
3495 if (did_first_visually_non_empty_paint_ && 3485 if (did_first_visually_non_empty_paint_ &&
3496 last_sent_theme_color_ != theme_color_) { 3486 last_sent_theme_color_ != theme_color_) {
3497 for (auto& observer : observers_) 3487 for (auto& observer : observers_)
3498 observer.DidChangeThemeColor(theme_color_); 3488 observer.DidChangeThemeColor(theme_color_);
3499 last_sent_theme_color_ = theme_color_; 3489 last_sent_theme_color_ = theme_color_;
3500 } 3490 }
3501 } 3491 }
3502 3492
3503 void WebContentsImpl::OnDidLoadResourceFromMemoryCache( 3493 void WebContentsImpl::OnDidLoadResourceFromMemoryCache(
3494 RenderFrameHostImpl* source,
3504 const GURL& url, 3495 const GURL& url,
3505 const std::string& http_method, 3496 const std::string& http_method,
3506 const std::string& mime_type, 3497 const std::string& mime_type,
3507 ResourceType resource_type) { 3498 ResourceType resource_type) {
3508 for (auto& observer : observers_) 3499 for (auto& observer : observers_)
3509 observer.DidLoadResourceFromMemoryCache(url, mime_type, resource_type); 3500 observer.DidLoadResourceFromMemoryCache(url, mime_type, resource_type);
3510 3501
3511 if (url.is_valid() && url.SchemeIsHTTPOrHTTPS()) { 3502 if (url.is_valid() && url.SchemeIsHTTPOrHTTPS()) {
3512 scoped_refptr<net::URLRequestContextGetter> request_context( 3503 scoped_refptr<net::URLRequestContextGetter> request_context(
3513 resource_type == RESOURCE_TYPE_MEDIA ? 3504 resource_type == RESOURCE_TYPE_MEDIA ?
3514 GetRenderProcessHost()->GetStoragePartition()-> 3505 GetRenderProcessHost()->GetStoragePartition()->
3515 GetMediaURLRequestContext() : 3506 GetMediaURLRequestContext() :
3516 GetRenderProcessHost()->GetStoragePartition()-> 3507 GetRenderProcessHost()->GetStoragePartition()->
3517 GetURLRequestContext()); 3508 GetURLRequestContext());
3518 BrowserThread::PostTask( 3509 BrowserThread::PostTask(
3519 BrowserThread::IO, 3510 BrowserThread::IO,
3520 FROM_HERE, 3511 FROM_HERE,
3521 base::Bind(&NotifyCacheOnIO, request_context, url, http_method)); 3512 base::Bind(&NotifyCacheOnIO, request_context, url, http_method));
3522 } 3513 }
3523 } 3514 }
3524 3515
3525 void WebContentsImpl::OnDidDisplayInsecureContent() { 3516 void WebContentsImpl::OnDidDisplayInsecureContent(RenderFrameHostImpl* source) {
3526 RecordAction(base::UserMetricsAction("SSL.DisplayedInsecureContent")); 3517 RecordAction(base::UserMetricsAction("SSL.DisplayedInsecureContent"));
3527 controller_.ssl_manager()->DidDisplayMixedContent(); 3518 controller_.ssl_manager()->DidDisplayMixedContent();
3528 } 3519 }
3529 3520
3530 void WebContentsImpl::OnDidRunInsecureContent(const GURL& security_origin, 3521 void WebContentsImpl::OnDidRunInsecureContent(RenderFrameHostImpl* source,
3522 const GURL& security_origin,
3531 const GURL& target_url) { 3523 const GURL& target_url) {
3532 LOG(WARNING) << security_origin << " ran insecure content from " 3524 LOG(WARNING) << security_origin << " ran insecure content from "
3533 << target_url.possibly_invalid_spec(); 3525 << target_url.possibly_invalid_spec();
3534 RecordAction(base::UserMetricsAction("SSL.RanInsecureContent")); 3526 RecordAction(base::UserMetricsAction("SSL.RanInsecureContent"));
3535 if (base::EndsWith(security_origin.spec(), kDotGoogleDotCom, 3527 if (base::EndsWith(security_origin.spec(), kDotGoogleDotCom,
3536 base::CompareCase::INSENSITIVE_ASCII)) 3528 base::CompareCase::INSENSITIVE_ASCII))
3537 RecordAction(base::UserMetricsAction("SSL.RanInsecureContentGoogle")); 3529 RecordAction(base::UserMetricsAction("SSL.RanInsecureContentGoogle"));
3538 controller_.ssl_manager()->DidRunMixedContent(security_origin); 3530 controller_.ssl_manager()->DidRunMixedContent(security_origin);
3539 } 3531 }
3540 3532
3541 void WebContentsImpl::OnDidDisplayContentWithCertificateErrors( 3533 void WebContentsImpl::OnDidDisplayContentWithCertificateErrors(
3534 RenderFrameHostImpl* source,
3542 const GURL& url) { 3535 const GURL& url) {
3543 controller_.ssl_manager()->DidDisplayContentWithCertErrors(); 3536 controller_.ssl_manager()->DidDisplayContentWithCertErrors();
3544 } 3537 }
3545 3538
3546 void WebContentsImpl::OnDidRunContentWithCertificateErrors( 3539 void WebContentsImpl::OnDidRunContentWithCertificateErrors(
3540 RenderFrameHostImpl* source,
3547 const GURL& url) { 3541 const GURL& url) {
3548 NavigationEntry* entry = controller_.GetVisibleEntry(); 3542 NavigationEntry* entry = controller_.GetVisibleEntry();
3549 if (!entry) 3543 if (!entry)
3550 return; 3544 return;
3551 3545
3552 // TODO(estark): check that this does something reasonable for 3546 // TODO(estark): check that this does something reasonable for
3553 // about:blank and sandboxed origins. https://crbug.com/609527 3547 // about:blank and sandboxed origins. https://crbug.com/609527
3554 controller_.ssl_manager()->DidRunContentWithCertErrors( 3548 controller_.ssl_manager()->DidRunContentWithCertErrors(
3555 entry->GetURL().GetOrigin()); 3549 entry->GetURL().GetOrigin());
3556 } 3550 }
3557 3551
3558 void WebContentsImpl::OnDocumentLoadedInFrame() { 3552 void WebContentsImpl::OnDocumentLoadedInFrame(RenderFrameHostImpl* source) {
3559 if (!HasValidFrameSource())
3560 return;
3561
3562 RenderFrameHostImpl* rfh =
3563 static_cast<RenderFrameHostImpl*>(render_frame_message_source_);
3564 for (auto& observer : observers_) 3553 for (auto& observer : observers_)
3565 observer.DocumentLoadedInFrame(rfh); 3554 observer.DocumentLoadedInFrame(source);
3566 } 3555 }
3567 3556
3568 void WebContentsImpl::OnDidFinishLoad(const GURL& url) { 3557 void WebContentsImpl::OnDidFinishLoad(RenderFrameHostImpl* source,
3569 if (!HasValidFrameSource()) 3558 const GURL& url) {
3570 return; 3559 GURL validated_url(url);
3560 source->GetProcess()->FilterURL(false, &validated_url);
3571 3561
3572 GURL validated_url(url);
3573 RenderProcessHost* render_process_host =
3574 render_frame_message_source_->GetProcess();
3575 render_process_host->FilterURL(false, &validated_url);
3576
3577 RenderFrameHostImpl* rfh =
3578 static_cast<RenderFrameHostImpl*>(render_frame_message_source_);
3579 for (auto& observer : observers_) 3562 for (auto& observer : observers_)
3580 observer.DidFinishLoad(rfh, validated_url); 3563 observer.DidFinishLoad(source, validated_url);
3581 } 3564 }
3582 3565
3583 void WebContentsImpl::OnGoToEntryAtOffset(int offset) { 3566 void WebContentsImpl::OnGoToEntryAtOffset(RenderViewHostImpl* source,
3567 int offset) {
3568 // All frames are allowed to navigate the global history.
3584 if (!delegate_ || delegate_->OnGoToEntryOffset(offset)) 3569 if (!delegate_ || delegate_->OnGoToEntryOffset(offset))
3585 controller_.GoToOffset(offset); 3570 controller_.GoToOffset(offset);
3586 } 3571 }
3587 3572
3588 void WebContentsImpl::OnUpdateZoomLimits(int minimum_percent, 3573 void WebContentsImpl::OnUpdateZoomLimits(RenderViewHostImpl* source,
3574 int minimum_percent,
3589 int maximum_percent) { 3575 int maximum_percent) {
3590 minimum_zoom_percent_ = minimum_percent; 3576 minimum_zoom_percent_ = minimum_percent;
3591 maximum_zoom_percent_ = maximum_percent; 3577 maximum_zoom_percent_ = maximum_percent;
3592 } 3578 }
3593 3579
3594 void WebContentsImpl::OnPageScaleFactorChanged(float page_scale_factor) { 3580 void WebContentsImpl::OnPageScaleFactorChanged(RenderViewHostImpl* source,
3581 float page_scale_factor) {
3595 bool is_one = page_scale_factor == 1.f; 3582 bool is_one = page_scale_factor == 1.f;
3596 if (is_one != page_scale_factor_is_one_) { 3583 if (is_one != page_scale_factor_is_one_) {
3597 page_scale_factor_is_one_ = is_one; 3584 page_scale_factor_is_one_ = is_one;
3598 3585
3599 HostZoomMapImpl* host_zoom_map = 3586 HostZoomMapImpl* host_zoom_map =
3600 static_cast<HostZoomMapImpl*>(HostZoomMap::GetForWebContents(this)); 3587 static_cast<HostZoomMapImpl*>(HostZoomMap::GetForWebContents(this));
3601 3588
3589 // TODO(nick): Explain why we use GetRenderViewHost() here instead of
3590 // |source|.
Charlie Reis 2016/12/13 19:03:56 This seems like something we should resolve before
ncarter (slow) 2016/12/14 18:36:47 I fixed up this one, but will add wjmaclean to the
3602 if (host_zoom_map && GetRenderProcessHost()) { 3591 if (host_zoom_map && GetRenderProcessHost()) {
3603 host_zoom_map->SetPageScaleFactorIsOneForView( 3592 host_zoom_map->SetPageScaleFactorIsOneForView(
3604 GetRenderProcessHost()->GetID(), GetRenderViewHost()->GetRoutingID(), 3593 GetRenderProcessHost()->GetID(), GetRenderViewHost()->GetRoutingID(),
3605 page_scale_factor_is_one_); 3594 page_scale_factor_is_one_);
3606 } 3595 }
3607 } 3596 }
3608 3597
3609 for (auto& observer : observers_) 3598 for (auto& observer : observers_)
3610 observer.OnPageScaleFactorChanged(page_scale_factor); 3599 observer.OnPageScaleFactorChanged(page_scale_factor);
3611 } 3600 }
3612 3601
3613 void WebContentsImpl::OnEnumerateDirectory(int request_id, 3602 void WebContentsImpl::OnEnumerateDirectory(RenderViewHostImpl* source,
3603 int request_id,
3614 const base::FilePath& path) { 3604 const base::FilePath& path) {
3615 if (!delegate_) 3605 if (!delegate_)
3616 return; 3606 return;
3617 3607
3618 ChildProcessSecurityPolicyImpl* policy = 3608 ChildProcessSecurityPolicyImpl* policy =
3619 ChildProcessSecurityPolicyImpl::GetInstance(); 3609 ChildProcessSecurityPolicyImpl::GetInstance();
3620 if (policy->CanReadFile(GetRenderProcessHost()->GetID(), path)) 3610 if (policy->CanReadFile(source->GetProcess()->GetID(), path)) {
3611 // TODO(nick): |this| param in the call below ought to be a RenderFrameHost.
3621 delegate_->EnumerateDirectory(this, request_id, path); 3612 delegate_->EnumerateDirectory(this, request_id, path);
3613 }
3622 } 3614 }
3623 3615
3624 void WebContentsImpl::OnRegisterProtocolHandler(const std::string& protocol, 3616 void WebContentsImpl::OnRegisterProtocolHandler(RenderFrameHostImpl* source,
3617 const std::string& protocol,
3625 const GURL& url, 3618 const GURL& url,
3626 const base::string16& title, 3619 const base::string16& title,
3627 bool user_gesture) { 3620 bool user_gesture) {
3628 if (!delegate_) 3621 if (!delegate_)
3629 return; 3622 return;
3630 3623
3631 ChildProcessSecurityPolicyImpl* policy = 3624 ChildProcessSecurityPolicyImpl* policy =
3632 ChildProcessSecurityPolicyImpl::GetInstance(); 3625 ChildProcessSecurityPolicyImpl::GetInstance();
3633 if (policy->IsPseudoScheme(protocol)) 3626 if (policy->IsPseudoScheme(protocol))
3634 return; 3627 return;
3635 3628
3629 // TODO(nick): |source|? FilterURL?
3636 delegate_->RegisterProtocolHandler(this, protocol, url, user_gesture); 3630 delegate_->RegisterProtocolHandler(this, protocol, url, user_gesture);
3637 } 3631 }
3638 3632
3639 void WebContentsImpl::OnUnregisterProtocolHandler(const std::string& protocol, 3633 void WebContentsImpl::OnUnregisterProtocolHandler(RenderFrameHostImpl* source,
3634 const std::string& protocol,
3640 const GURL& url, 3635 const GURL& url,
3641 bool user_gesture) { 3636 bool user_gesture) {
3642 if (!delegate_) 3637 if (!delegate_)
3643 return; 3638 return;
3644 3639
3645 ChildProcessSecurityPolicyImpl* policy = 3640 ChildProcessSecurityPolicyImpl* policy =
3646 ChildProcessSecurityPolicyImpl::GetInstance(); 3641 ChildProcessSecurityPolicyImpl::GetInstance();
3647 if (policy->IsPseudoScheme(protocol)) 3642 if (policy->IsPseudoScheme(protocol))
3648 return; 3643 return;
3649 3644
3645 // TODO(nick): |source|? FilterURL?
3650 delegate_->UnregisterProtocolHandler(this, protocol, url, user_gesture); 3646 delegate_->UnregisterProtocolHandler(this, protocol, url, user_gesture);
3651 } 3647 }
3652 3648
3653 void WebContentsImpl::OnUpdatePageImportanceSignals( 3649 void WebContentsImpl::OnUpdatePageImportanceSignals(
3650 RenderFrameHostImpl* source,
3654 const PageImportanceSignals& signals) { 3651 const PageImportanceSignals& signals) {
3655 page_importance_signals_ = signals; 3652 page_importance_signals_ = signals;
3656 } 3653 }
3657 3654
3658 void WebContentsImpl::OnFindReply(int request_id, 3655 void WebContentsImpl::OnFindReply(RenderFrameHostImpl* source,
3656 int request_id,
3659 int number_of_matches, 3657 int number_of_matches,
3660 const gfx::Rect& selection_rect, 3658 const gfx::Rect& selection_rect,
3661 int active_match_ordinal, 3659 int active_match_ordinal,
3662 bool final_update) { 3660 bool final_update) {
3663 // Forward the find reply to the FindRequestManager, along with the 3661 // Forward the find reply to the FindRequestManager, along with the
3664 // RenderFrameHost associated with the frame that the reply came from. 3662 // RenderFrameHost associated with the frame that the reply came from.
3665 GetOrCreateFindRequestManager()->OnFindReply(render_frame_message_source_, 3663 GetOrCreateFindRequestManager()->OnFindReply(
3666 request_id, 3664 source, request_id, number_of_matches, selection_rect,
3667 number_of_matches, 3665 active_match_ordinal, final_update);
3668 selection_rect,
3669 active_match_ordinal,
3670 final_update);
3671 } 3666 }
3672 3667
3673 #if defined(OS_ANDROID) 3668 #if defined(OS_ANDROID)
3674 void WebContentsImpl::OnFindMatchRectsReply( 3669 void WebContentsImpl::OnFindMatchRectsReply(
3670 RenderFrameHostImpl* source,
3675 int version, 3671 int version,
3676 const std::vector<gfx::RectF>& rects, 3672 const std::vector<gfx::RectF>& rects,
3677 const gfx::RectF& active_rect) { 3673 const gfx::RectF& active_rect) {
3678 GetOrCreateFindRequestManager()->OnFindMatchRectsReply( 3674 GetOrCreateFindRequestManager()->OnFindMatchRectsReply(source, version, rects,
3679 render_frame_message_source_, version, rects, active_rect); 3675 active_rect);
3680 } 3676 }
3681 3677
3682 void WebContentsImpl::OnGetNearestFindResultReply(int request_id, 3678 void WebContentsImpl::OnGetNearestFindResultReply(RenderFrameHostImpl* source,
3679 int request_id,
3683 float distance) { 3680 float distance) {
3684 GetOrCreateFindRequestManager()->OnGetNearestFindResultReply( 3681 GetOrCreateFindRequestManager()->OnGetNearestFindResultReply(
3685 render_frame_message_source_, request_id, distance); 3682 source, request_id, distance);
3686 } 3683 }
3687 3684
3688 void WebContentsImpl::OnOpenDateTimeDialog( 3685 void WebContentsImpl::OnOpenDateTimeDialog(
3686 RenderViewHostImpl* source,
3689 const ViewHostMsg_DateTimeDialogValue_Params& value) { 3687 const ViewHostMsg_DateTimeDialogValue_Params& value) {
3690 date_time_chooser_->ShowDialog(GetTopLevelNativeWindow(), 3688 date_time_chooser_->ShowDialog(
3691 GetRenderViewHost(), 3689 GetTopLevelNativeWindow(), source, value.dialog_type, value.dialog_value,
3692 value.dialog_type, 3690 value.minimum, value.maximum, value.step, value.suggestions);
3693 value.dialog_value,
3694 value.minimum,
3695 value.maximum,
3696 value.step,
3697 value.suggestions);
3698 } 3691 }
3699 #endif 3692 #endif
3700 3693
3701 void WebContentsImpl::OnDomOperationResponse(const std::string& json_string) { 3694 void WebContentsImpl::OnDomOperationResponse(RenderFrameHostImpl* source,
3695 const std::string& json_string) {
3702 std::string json = json_string; 3696 std::string json = json_string;
3703 NotificationService::current()->Notify(NOTIFICATION_DOM_OPERATION_RESPONSE, 3697 NotificationService::current()->Notify(NOTIFICATION_DOM_OPERATION_RESPONSE,
3704 Source<WebContents>(this), 3698 Source<WebContents>(this),
3705 Details<std::string>(&json)); 3699 Details<std::string>(&json));
3706 } 3700 }
3707 3701
3708 void WebContentsImpl::OnAppCacheAccessed(const GURL& manifest_url, 3702 void WebContentsImpl::OnAppCacheAccessed(RenderViewHostImpl* source,
3703 const GURL& manifest_url,
3709 bool blocked_by_policy) { 3704 bool blocked_by_policy) {
3705 // TODO(nick): |source|? FilterURL?
3710 // Notify observers about navigation. 3706 // Notify observers about navigation.
3711 for (auto& observer : observers_) 3707 for (auto& observer : observers_)
3712 observer.AppCacheAccessed(manifest_url, blocked_by_policy); 3708 observer.AppCacheAccessed(manifest_url, blocked_by_policy);
3713 } 3709 }
3714 3710
3715 void WebContentsImpl::OnOpenColorChooser( 3711 void WebContentsImpl::OnOpenColorChooser(
3712 RenderFrameHostImpl* source,
3716 int color_chooser_id, 3713 int color_chooser_id,
3717 SkColor color, 3714 SkColor color,
3718 const std::vector<ColorSuggestion>& suggestions) { 3715 const std::vector<ColorSuggestion>& suggestions) {
3719 if (!HasValidFrameSource())
3720 return;
3721
3722 ColorChooser* new_color_chooser = delegate_ ? 3716 ColorChooser* new_color_chooser = delegate_ ?
3723 delegate_->OpenColorChooser(this, color, suggestions) : 3717 delegate_->OpenColorChooser(this, color, suggestions) :
3724 NULL; 3718 NULL;
3725 if (!new_color_chooser) 3719 if (!new_color_chooser)
3726 return; 3720 return;
3727 if (color_chooser_info_.get()) 3721 if (color_chooser_info_.get())
3728 color_chooser_info_->chooser->End(); 3722 color_chooser_info_->chooser->End();
3729 3723
3730 color_chooser_info_.reset(new ColorChooserInfo( 3724 color_chooser_info_.reset(new ColorChooserInfo(
3731 render_frame_message_source_->GetProcess()->GetID(), 3725 source->GetProcess()->GetID(), source->GetRoutingID(), new_color_chooser,
3732 render_frame_message_source_->GetRoutingID(),
3733 new_color_chooser,
3734 color_chooser_id)); 3726 color_chooser_id));
3735 } 3727 }
3736 3728
3737 void WebContentsImpl::OnEndColorChooser(int color_chooser_id) { 3729 void WebContentsImpl::OnEndColorChooser(RenderFrameHostImpl* source,
3730 int color_chooser_id) {
3738 if (color_chooser_info_ && 3731 if (color_chooser_info_ &&
3739 color_chooser_id == color_chooser_info_->identifier) 3732 color_chooser_info_->Matches(source, color_chooser_id))
3740 color_chooser_info_->chooser->End(); 3733 color_chooser_info_->chooser->End();
3741 } 3734 }
3742 3735
3743 void WebContentsImpl::OnSetSelectedColorInColorChooser(int color_chooser_id, 3736 void WebContentsImpl::OnSetSelectedColorInColorChooser(
3744 SkColor color) { 3737 RenderFrameHostImpl* source,
3738 int color_chooser_id,
3739 SkColor color) {
3745 if (color_chooser_info_ && 3740 if (color_chooser_info_ &&
3746 color_chooser_id == color_chooser_info_->identifier) 3741 color_chooser_info_->Matches(source, color_chooser_id))
3747 color_chooser_info_->chooser->SetSelectedColor(color); 3742 color_chooser_info_->chooser->SetSelectedColor(color);
3748 } 3743 }
3749 3744
3750 // This exists for render views that don't have a WebUI, but do have WebUI 3745 // This exists for render views that don't have a WebUI, but do have WebUI
3751 // bindings enabled. 3746 // bindings enabled.
3752 void WebContentsImpl::OnWebUISend(const GURL& source_url, 3747 void WebContentsImpl::OnWebUISend(RenderViewHostImpl* source,
3748 const GURL& source_url,
3753 const std::string& name, 3749 const std::string& name,
3754 const base::ListValue& args) { 3750 const base::ListValue& args) {
3751 // TODO(nick): |source|? FilterURL?
3755 if (delegate_) 3752 if (delegate_)
3756 delegate_->WebUISend(this, source_url, name, args); 3753 delegate_->WebUISend(this, source_url, name, args);
3757 } 3754 }
3758 3755
3759 #if BUILDFLAG(ENABLE_PLUGINS) 3756 #if BUILDFLAG(ENABLE_PLUGINS)
3760 void WebContentsImpl::OnPepperInstanceCreated(int32_t pp_instance) { 3757 void WebContentsImpl::OnPepperInstanceCreated(RenderFrameHostImpl* source,
3758 int32_t pp_instance) {
3761 for (auto& observer : observers_) 3759 for (auto& observer : observers_)
3762 observer.PepperInstanceCreated(); 3760 observer.PepperInstanceCreated();
3763 pepper_playback_observer_->PepperInstanceCreated( 3761 pepper_playback_observer_->PepperInstanceCreated(source, pp_instance);
3764 render_frame_message_source_, pp_instance);
3765 } 3762 }
3766 3763
3767 void WebContentsImpl::OnPepperInstanceDeleted(int32_t pp_instance) { 3764 void WebContentsImpl::OnPepperInstanceDeleted(RenderFrameHostImpl* source,
3765 int32_t pp_instance) {
3768 for (auto& observer : observers_) 3766 for (auto& observer : observers_)
3769 observer.PepperInstanceDeleted(); 3767 observer.PepperInstanceDeleted();
3770 pepper_playback_observer_->PepperInstanceDeleted( 3768 pepper_playback_observer_->PepperInstanceDeleted(source, pp_instance);
3771 render_frame_message_source_, pp_instance);
3772 } 3769 }
3773 3770
3774 void WebContentsImpl::OnPepperPluginHung(int plugin_child_id, 3771 void WebContentsImpl::OnPepperPluginHung(RenderFrameHostImpl* source,
3772 int plugin_child_id,
3775 const base::FilePath& path, 3773 const base::FilePath& path,
3776 bool is_hung) { 3774 bool is_hung) {
3777 UMA_HISTOGRAM_COUNTS("Pepper.PluginHung", 1); 3775 UMA_HISTOGRAM_COUNTS("Pepper.PluginHung", 1);
3778 3776
3779 for (auto& observer : observers_) 3777 for (auto& observer : observers_)
3780 observer.PluginHungStatusChanged(plugin_child_id, path, is_hung); 3778 observer.PluginHungStatusChanged(plugin_child_id, path, is_hung);
3781 } 3779 }
3782 3780
3783 void WebContentsImpl::OnPepperStartsPlayback(int32_t pp_instance) { 3781 void WebContentsImpl::OnPepperStartsPlayback(RenderFrameHostImpl* source,
3784 pepper_playback_observer_->PepperStartsPlayback( 3782 int32_t pp_instance) {
3785 render_frame_message_source_, pp_instance); 3783 pepper_playback_observer_->PepperStartsPlayback(source, pp_instance);
3786 } 3784 }
3787 3785
3788 void WebContentsImpl::OnPepperStopsPlayback(int32_t pp_instance) { 3786 void WebContentsImpl::OnPepperStopsPlayback(RenderFrameHostImpl* source,
3789 pepper_playback_observer_->PepperStopsPlayback( 3787 int32_t pp_instance) {
3790 render_frame_message_source_, pp_instance); 3788 pepper_playback_observer_->PepperStopsPlayback(source, pp_instance);
3791 } 3789 }
3792 3790
3793 void WebContentsImpl::OnPluginCrashed(const base::FilePath& plugin_path, 3791 void WebContentsImpl::OnPluginCrashed(RenderFrameHostImpl* source,
3792 const base::FilePath& plugin_path,
3794 base::ProcessId plugin_pid) { 3793 base::ProcessId plugin_pid) {
3795 for (auto& observer : observers_) 3794 for (auto& observer : observers_)
3796 observer.PluginCrashed(plugin_path, plugin_pid); 3795 observer.PluginCrashed(plugin_path, plugin_pid);
3797 } 3796 }
3798 3797
3799 void WebContentsImpl::OnRequestPpapiBrokerPermission( 3798 void WebContentsImpl::OnRequestPpapiBrokerPermission(
3800 int routing_id, 3799 RenderViewHostImpl* source,
3800 int ppb_broker_route_id,
3801 const GURL& url, 3801 const GURL& url,
3802 const base::FilePath& plugin_path) { 3802 const base::FilePath& plugin_path) {
3803 base::Callback<void(bool)> permission_result_callback = base::Bind(
3804 &WebContentsImpl::SendPpapiBrokerPermissionResult, base::Unretained(this),
3805 source->GetProcess()->GetID(), ppb_broker_route_id);
3803 if (!delegate_) { 3806 if (!delegate_) {
3804 OnPpapiBrokerPermissionResult(routing_id, false); 3807 permission_result_callback.Run(false);
3805 return; 3808 return;
3806 } 3809 }
3807 3810
3808 if (!delegate_->RequestPpapiBrokerPermission( 3811 if (!delegate_->RequestPpapiBrokerPermission(this, url, plugin_path,
3809 this, url, plugin_path, 3812 permission_result_callback)) {
3810 base::Bind(&WebContentsImpl::OnPpapiBrokerPermissionResult,
3811 base::Unretained(this), routing_id))) {
3812 NOTIMPLEMENTED(); 3813 NOTIMPLEMENTED();
3813 OnPpapiBrokerPermissionResult(routing_id, false); 3814 permission_result_callback.Run(false);
3814 } 3815 }
3815 } 3816 }
3816 3817
3817 void WebContentsImpl::OnPpapiBrokerPermissionResult(int routing_id, 3818 void WebContentsImpl::SendPpapiBrokerPermissionResult(int process_id,
3818 bool result) { 3819 int ppb_broker_route_id,
3819 Send(new ViewMsg_PpapiBrokerPermissionResult(routing_id, result)); 3820 bool result) {
3821 RenderProcessHost* rph = RenderProcessHost::FromID(process_id);
3822 if (rph) {
3823 // Note that this is ViewMsg_, but it's actually sent to a PPB_Broker_Impl.
3824 rph->Send(
3825 new ViewMsg_PpapiBrokerPermissionResult(ppb_broker_route_id, result));
Charlie Reis 2016/12/13 19:03:56 Nice. Let's include a TODO for your idea to move
ncarter (slow) 2016/12/14 18:36:47 The CL to fix this is already complete; I'll send
3826 }
3820 } 3827 }
3821 3828
3822 void WebContentsImpl::OnBrowserPluginMessage(RenderFrameHost* render_frame_host, 3829 void WebContentsImpl::OnBrowserPluginMessage(RenderFrameHost* render_frame_host,
3823 const IPC::Message& message) { 3830 const IPC::Message& message) {
3824 CHECK(!browser_plugin_embedder_.get()); 3831 CHECK(!browser_plugin_embedder_.get());
3825 CreateBrowserPluginEmbedderIfNecessary(); 3832 CreateBrowserPluginEmbedderIfNecessary();
3826 browser_plugin_embedder_->OnMessageReceived(message, render_frame_host); 3833 browser_plugin_embedder_->OnMessageReceived(message, render_frame_host);
3827 } 3834 }
3828 #endif // BUILDFLAG(ENABLE_PLUGINS) 3835 #endif // BUILDFLAG(ENABLE_PLUGINS)
3829 3836
3830 void WebContentsImpl::OnUpdateFaviconURL( 3837 void WebContentsImpl::OnUpdateFaviconURL(
3838 RenderViewHostImpl* source,
3831 const std::vector<FaviconURL>& candidates) { 3839 const std::vector<FaviconURL>& candidates) {
3832 // We get updated favicon URLs after the page stops loading. If a cross-site 3840 // We get updated favicon URLs after the page stops loading. If a cross-site
3833 // navigation occurs while a page is still loading, the initial page 3841 // navigation occurs while a page is still loading, the initial page
3834 // may stop loading and send us updated favicon URLs after the navigation 3842 // may stop loading and send us updated favicon URLs after the navigation
3835 // for the new page has committed. 3843 // for the new page has committed.
3836 RenderViewHostImpl* rvhi = 3844 if (!source->is_active())
3837 static_cast<RenderViewHostImpl*>(render_view_message_source_);
3838 if (!rvhi->is_active())
3839 return; 3845 return;
3840 3846
3841 for (auto& observer : observers_) 3847 for (auto& observer : observers_)
3842 observer.DidUpdateFaviconURL(candidates); 3848 observer.DidUpdateFaviconURL(candidates);
3843 } 3849 }
3844 3850
3845 void WebContentsImpl::OnPasswordInputShownOnHttp() { 3851 void WebContentsImpl::OnPasswordInputShownOnHttp() {
3846 controller_.ssl_manager()->DidShowPasswordInputOnHttp(); 3852 controller_.ssl_manager()->DidShowPasswordInputOnHttp();
3847 } 3853 }
3848 3854
3849 void WebContentsImpl::OnAllPasswordInputsHiddenOnHttp() { 3855 void WebContentsImpl::OnAllPasswordInputsHiddenOnHttp() {
3850 controller_.ssl_manager()->DidHideAllPasswordInputsOnHttp(); 3856 controller_.ssl_manager()->DidHideAllPasswordInputsOnHttp();
3851 } 3857 }
3852 3858
3853 void WebContentsImpl::OnCreditCardInputShownOnHttp() { 3859 void WebContentsImpl::OnCreditCardInputShownOnHttp() {
3854 controller_.ssl_manager()->DidShowCreditCardInputOnHttp(); 3860 controller_.ssl_manager()->DidShowCreditCardInputOnHttp();
3855 } 3861 }
3856 3862
3857 void WebContentsImpl::SetIsOverlayContent(bool is_overlay_content) { 3863 void WebContentsImpl::SetIsOverlayContent(bool is_overlay_content) {
3858 is_overlay_content_ = is_overlay_content; 3864 is_overlay_content_ = is_overlay_content;
3859 } 3865 }
3860 3866
3861 void WebContentsImpl::OnFirstVisuallyNonEmptyPaint() { 3867 void WebContentsImpl::OnFirstVisuallyNonEmptyPaint(RenderViewHostImpl* source) {
3862 for (auto& observer : observers_) 3868 for (auto& observer : observers_)
3863 observer.DidFirstVisuallyNonEmptyPaint(); 3869 observer.DidFirstVisuallyNonEmptyPaint();
3864 3870
3865 did_first_visually_non_empty_paint_ = true; 3871 did_first_visually_non_empty_paint_ = true;
3866 3872
3867 if (theme_color_ != last_sent_theme_color_) { 3873 if (theme_color_ != last_sent_theme_color_) {
3868 // Theme color should have updated by now if there was one. 3874 // Theme color should have updated by now if there was one.
3869 for (auto& observer : observers_) 3875 for (auto& observer : observers_)
3870 observer.DidChangeThemeColor(theme_color_); 3876 observer.DidChangeThemeColor(theme_color_);
3871 last_sent_theme_color_ = theme_color_; 3877 last_sent_theme_color_ = theme_color_;
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
4040 Source<WebContents>(this), 4046 Source<WebContents>(this),
4041 NotificationService::NoDetails()); 4047 NotificationService::NoDetails());
4042 } 4048 }
4043 4049
4044 void WebContentsImpl::NotifyNavigationEntryCommitted( 4050 void WebContentsImpl::NotifyNavigationEntryCommitted(
4045 const LoadCommittedDetails& load_details) { 4051 const LoadCommittedDetails& load_details) {
4046 for (auto& observer : observers_) 4052 for (auto& observer : observers_)
4047 observer.NavigationEntryCommitted(load_details); 4053 observer.NavigationEntryCommitted(load_details);
4048 } 4054 }
4049 4055
4050 bool WebContentsImpl::OnMessageReceived(RenderFrameHost* render_frame_host,
4051 const IPC::Message& message) {
4052 return OnMessageReceived(NULL, render_frame_host, message);
4053 }
4054
4055 void WebContentsImpl::OnAssociatedInterfaceRequest( 4056 void WebContentsImpl::OnAssociatedInterfaceRequest(
4056 RenderFrameHost* render_frame_host, 4057 RenderFrameHost* render_frame_host,
4057 const std::string& interface_name, 4058 const std::string& interface_name,
4058 mojo::ScopedInterfaceEndpointHandle handle) { 4059 mojo::ScopedInterfaceEndpointHandle handle) {
4059 auto it = binding_sets_.find(interface_name); 4060 auto it = binding_sets_.find(interface_name);
4060 if (it != binding_sets_.end()) 4061 if (it != binding_sets_.end())
4061 it->second->OnRequestForFrame(render_frame_host, std::move(handle)); 4062 it->second->OnRequestForFrame(render_frame_host, std::move(handle));
4062 } 4063 }
4063 4064
4064 const GURL& WebContentsImpl::GetMainFrameLastCommittedURL() const { 4065 const GURL& WebContentsImpl::GetMainFrameLastCommittedURL() const {
(...skipping 1256 matching lines...) Expand 10 before | Expand all | Expand 10 after
5321 GetMainFrame()->AddMessageToConsole( 5322 GetMainFrame()->AddMessageToConsole(
5322 content::CONSOLE_MESSAGE_LEVEL_WARNING, 5323 content::CONSOLE_MESSAGE_LEVEL_WARNING,
5323 base::StringPrintf("This site does not have a valid SSL " 5324 base::StringPrintf("This site does not have a valid SSL "
5324 "certificate! Without SSL, your site's and " 5325 "certificate! Without SSL, your site's and "
5325 "visitors' data is vulnerable to theft and " 5326 "visitors' data is vulnerable to theft and "
5326 "tampering. Get a valid SSL certificate before" 5327 "tampering. Get a valid SSL certificate before"
5327 " releasing your website to the public.")); 5328 " releasing your website to the public."));
5328 } 5329 }
5329 5330
5330 } // namespace content 5331 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698