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

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

Issue 253013002: Pass RenderFrameHost to WebContentObservers' message handlers (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 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 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
89 #include "net/url_request/url_request_context.h" 89 #include "net/url_request/url_request_context.h"
90 #include "net/url_request/url_request_context_getter.h" 90 #include "net/url_request/url_request_context_getter.h"
91 #include "ui/base/layout.h" 91 #include "ui/base/layout.h"
92 #include "ui/gfx/display.h" 92 #include "ui/gfx/display.h"
93 #include "ui/gfx/screen.h" 93 #include "ui/gfx/screen.h"
94 #include "ui/gl/gl_switches.h" 94 #include "ui/gl/gl_switches.h"
95 #include "webkit/common/webpreferences.h" 95 #include "webkit/common/webpreferences.h"
96 96
97 #if defined(OS_ANDROID) 97 #if defined(OS_ANDROID)
98 #include "content/browser/android/date_time_chooser_android.h" 98 #include "content/browser/android/date_time_chooser_android.h"
99 #include "content/browser/renderer_host/java/java_bridge_dispatcher_host_manager .h"
100 #include "content/browser/web_contents/web_contents_android.h" 99 #include "content/browser/web_contents/web_contents_android.h"
101 #include "content/common/java_bridge_messages.h"
102 #include "content/public/browser/android/content_view_core.h" 100 #include "content/public/browser/android/content_view_core.h"
103 #endif 101 #endif
104 102
105 #if defined(OS_MACOSX) 103 #if defined(OS_MACOSX)
106 #include "base/mac/foundation_util.h" 104 #include "base/mac/foundation_util.h"
107 #include "ui/gl/io_surface_support_mac.h" 105 #include "ui/gl/io_surface_support_mac.h"
108 #endif 106 #endif
109 107
110 // Cross-Site Navigations 108 // Cross-Site Navigations
111 // 109 //
(...skipping 353 matching lines...) Expand 10 before | Expand all | Expand 10 after
465 RenderFrameHost* render_frame_host, 463 RenderFrameHost* render_frame_host,
466 const IPC::Message& message) { 464 const IPC::Message& message) {
467 DCHECK(render_view_host || render_frame_host); 465 DCHECK(render_view_host || render_frame_host);
468 if (GetWebUI() && 466 if (GetWebUI() &&
469 static_cast<WebUIImpl*>(GetWebUI())->OnMessageReceived(message)) { 467 static_cast<WebUIImpl*>(GetWebUI())->OnMessageReceived(message)) {
470 return true; 468 return true;
471 } 469 }
472 470
473 ObserverListBase<WebContentsObserver>::Iterator it(observers_); 471 ObserverListBase<WebContentsObserver>::Iterator it(observers_);
474 WebContentsObserver* observer; 472 WebContentsObserver* observer;
475 while ((observer = it.GetNext()) != NULL) 473 if (render_frame_host) {
476 if (observer->OnMessageReceived(message)) 474 while ((observer = it.GetNext()) != NULL)
477 return true; 475 if (observer->OnMessageReceived(render_frame_host, message))
476 return true;
477 } else {
478 while ((observer = it.GetNext()) != NULL)
479 if (observer->OnMessageReceived(message))
480 return true;
481 }
478 482
479 // Message handlers should be aware of which 483 // Message handlers should be aware of which
480 // RenderViewHost/RenderFrameHost sent the message, which is temporarily 484 // RenderViewHost/RenderFrameHost sent the message, which is temporarily
481 // stored in render_(view|frame)_message_source_. 485 // stored in render_(view|frame)_message_source_.
482 if (render_frame_host) { 486 if (render_frame_host) {
483 if (RenderViewDevToolsAgentHost::DispatchIPCMessage( 487 if (RenderViewDevToolsAgentHost::DispatchIPCMessage(
484 render_frame_host->GetRenderViewHost(), message)) 488 render_frame_host->GetRenderViewHost(), message))
485 return true; 489 return true;
486 render_frame_message_source_ = render_frame_host; 490 render_frame_message_source_ = render_frame_host;
487 } else { 491 } else {
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
537 OnShowValidationMessage) 541 OnShowValidationMessage)
538 IPC_MESSAGE_HANDLER(ViewHostMsg_HideValidationMessage, 542 IPC_MESSAGE_HANDLER(ViewHostMsg_HideValidationMessage,
539 OnHideValidationMessage) 543 OnHideValidationMessage)
540 IPC_MESSAGE_HANDLER(ViewHostMsg_MoveValidationMessage, 544 IPC_MESSAGE_HANDLER(ViewHostMsg_MoveValidationMessage,
541 OnMoveValidationMessage) 545 OnMoveValidationMessage)
542 #if defined(OS_ANDROID) 546 #if defined(OS_ANDROID)
543 IPC_MESSAGE_HANDLER(ViewHostMsg_FindMatchRects_Reply, 547 IPC_MESSAGE_HANDLER(ViewHostMsg_FindMatchRects_Reply,
544 OnFindMatchRectsReply) 548 OnFindMatchRectsReply)
545 IPC_MESSAGE_HANDLER(ViewHostMsg_OpenDateTimeDialog, 549 IPC_MESSAGE_HANDLER(ViewHostMsg_OpenDateTimeDialog,
546 OnOpenDateTimeDialog) 550 OnOpenDateTimeDialog)
547 IPC_MESSAGE_HANDLER_DELAY_REPLY(JavaBridgeHostMsg_GetChannelHandle,
548 OnJavaBridgeGetChannelHandle)
549 #endif 551 #endif
550 IPC_MESSAGE_UNHANDLED(handled = false) 552 IPC_MESSAGE_UNHANDLED(handled = false)
551 IPC_END_MESSAGE_MAP_EX() 553 IPC_END_MESSAGE_MAP_EX()
552 render_view_message_source_ = NULL; 554 render_view_message_source_ = NULL;
553 render_frame_message_source_ = NULL; 555 render_frame_message_source_ = NULL;
554 556
555 if (!message_is_ok) { 557 if (!message_is_ok) {
556 RecordAction(base::UserMetricsAction("BadMessageTerminate_RVD")); 558 RecordAction(base::UserMetricsAction("BadMessageTerminate_RVD"));
557 GetRenderProcessHost()->ReceivedBadMessage(); 559 GetRenderProcessHost()->ReceivedBadMessage();
558 } 560 }
(...skipping 540 matching lines...) Expand 10 before | Expand all | Expand 10 after
1099 view_->CreateView(initial_size, params.context); 1101 view_->CreateView(initial_size, params.context);
1100 1102
1101 // Listen for whether our opener gets destroyed. 1103 // Listen for whether our opener gets destroyed.
1102 if (opener_) 1104 if (opener_)
1103 AddDestructionObserver(opener_); 1105 AddDestructionObserver(opener_);
1104 1106
1105 registrar_.Add(this, 1107 registrar_.Add(this,
1106 NOTIFICATION_RENDER_WIDGET_HOST_DESTROYED, 1108 NOTIFICATION_RENDER_WIDGET_HOST_DESTROYED,
1107 NotificationService::AllBrowserContextsAndSources()); 1109 NotificationService::AllBrowserContextsAndSources());
1108 #if defined(OS_ANDROID) 1110 #if defined(OS_ANDROID)
1109 java_bridge_dispatcher_host_manager_.reset(
1110 new JavaBridgeDispatcherHostManager(this));
1111 date_time_chooser_.reset(new DateTimeChooserAndroid()); 1111 date_time_chooser_.reset(new DateTimeChooserAndroid());
1112 #endif 1112 #endif
1113 } 1113 }
1114 1114
1115 void WebContentsImpl::OnWebContentsDestroyed(WebContentsImpl* web_contents) { 1115 void WebContentsImpl::OnWebContentsDestroyed(WebContentsImpl* web_contents) {
1116 RemoveDestructionObserver(web_contents); 1116 RemoveDestructionObserver(web_contents);
1117 1117
1118 // Clear the opener if it has been closed. 1118 // Clear the opener if it has been closed.
1119 if (web_contents == opener_) { 1119 if (web_contents == opener_) {
1120 opener_ = NULL; 1120 opener_ = NULL;
(...skipping 1526 matching lines...) Expand 10 before | Expand all | Expand 10 after
2647 date_time_chooser_->ShowDialog(ContentViewCore::FromWebContents(this), 2647 date_time_chooser_->ShowDialog(ContentViewCore::FromWebContents(this),
2648 GetRenderViewHost(), 2648 GetRenderViewHost(),
2649 value.dialog_type, 2649 value.dialog_type,
2650 value.dialog_value, 2650 value.dialog_value,
2651 value.minimum, 2651 value.minimum,
2652 value.maximum, 2652 value.maximum,
2653 value.step, 2653 value.step,
2654 value.suggestions); 2654 value.suggestions);
2655 } 2655 }
2656 2656
2657 void WebContentsImpl::OnJavaBridgeGetChannelHandle(IPC::Message* reply_msg) {
2658 java_bridge_dispatcher_host_manager_->OnGetChannelHandle(
2659 render_frame_message_source_, reply_msg);
2660 }
2661
2662 #endif 2657 #endif
2663 2658
2664 void WebContentsImpl::OnPepperPluginHung(int plugin_child_id, 2659 void WebContentsImpl::OnPepperPluginHung(int plugin_child_id,
2665 const base::FilePath& path, 2660 const base::FilePath& path,
2666 bool is_hung) { 2661 bool is_hung) {
2667 UMA_HISTOGRAM_COUNTS("Pepper.PluginHung", 1); 2662 UMA_HISTOGRAM_COUNTS("Pepper.PluginHung", 1);
2668 2663
2669 FOR_EACH_OBSERVER(WebContentsObserver, observers_, 2664 FOR_EACH_OBSERVER(WebContentsObserver, observers_,
2670 PluginHungStatusChanged(plugin_child_id, path, is_hung)); 2665 PluginHungStatusChanged(plugin_child_id, path, is_hung));
2671 } 2666 }
(...skipping 1221 matching lines...) Expand 10 before | Expand all | Expand 10 after
3893 3888
3894 void WebContentsImpl::OnPreferredSizeChanged(const gfx::Size& old_size) { 3889 void WebContentsImpl::OnPreferredSizeChanged(const gfx::Size& old_size) {
3895 if (!delegate_) 3890 if (!delegate_)
3896 return; 3891 return;
3897 const gfx::Size new_size = GetPreferredSize(); 3892 const gfx::Size new_size = GetPreferredSize();
3898 if (new_size != old_size) 3893 if (new_size != old_size)
3899 delegate_->UpdatePreferredSize(this, new_size); 3894 delegate_->UpdatePreferredSize(this, new_size);
3900 } 3895 }
3901 3896
3902 } // namespace content 3897 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698