OLD | NEW |
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 Loading... |
89 #include "net/url_request/url_request_context_getter.h" | 89 #include "net/url_request/url_request_context_getter.h" |
90 #include "ui/base/layout.h" | 90 #include "ui/base/layout.h" |
91 #include "ui/gfx/display.h" | 91 #include "ui/gfx/display.h" |
92 #include "ui/gfx/screen.h" | 92 #include "ui/gfx/screen.h" |
93 #include "ui/gl/gl_switches.h" | 93 #include "ui/gl/gl_switches.h" |
94 #include "webkit/common/webpreferences.h" | 94 #include "webkit/common/webpreferences.h" |
95 | 95 |
96 #if defined(OS_ANDROID) | 96 #if defined(OS_ANDROID) |
97 #include "content/browser/android/date_time_chooser_android.h" | 97 #include "content/browser/android/date_time_chooser_android.h" |
98 #include "content/browser/media/android/browser_media_player_manager.h" | 98 #include "content/browser/media/android/browser_media_player_manager.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 362 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
474 RenderFrameHost* render_frame_host, | 472 RenderFrameHost* render_frame_host, |
475 const IPC::Message& message) { | 473 const IPC::Message& message) { |
476 DCHECK(render_view_host || render_frame_host); | 474 DCHECK(render_view_host || render_frame_host); |
477 if (GetWebUI() && | 475 if (GetWebUI() && |
478 static_cast<WebUIImpl*>(GetWebUI())->OnMessageReceived(message)) { | 476 static_cast<WebUIImpl*>(GetWebUI())->OnMessageReceived(message)) { |
479 return true; | 477 return true; |
480 } | 478 } |
481 | 479 |
482 ObserverListBase<WebContentsObserver>::Iterator it(observers_); | 480 ObserverListBase<WebContentsObserver>::Iterator it(observers_); |
483 WebContentsObserver* observer; | 481 WebContentsObserver* observer; |
484 while ((observer = it.GetNext()) != NULL) | 482 if (render_frame_host) { |
485 if (observer->OnMessageReceived(message)) | 483 while ((observer = it.GetNext()) != NULL) |
486 return true; | 484 if (observer->OnMessageReceived(message, render_frame_host)) |
| 485 return true; |
| 486 } else { |
| 487 while ((observer = it.GetNext()) != NULL) |
| 488 if (observer->OnMessageReceived(message)) |
| 489 return true; |
| 490 } |
487 | 491 |
488 // Message handlers should be aware of which | 492 // Message handlers should be aware of which |
489 // RenderViewHost/RenderFrameHost sent the message, which is temporarily | 493 // RenderViewHost/RenderFrameHost sent the message, which is temporarily |
490 // stored in render_(view|frame)_message_source_. | 494 // stored in render_(view|frame)_message_source_. |
491 if (render_frame_host) { | 495 if (render_frame_host) { |
492 if (RenderViewDevToolsAgentHost::DispatchIPCMessage( | 496 if (RenderViewDevToolsAgentHost::DispatchIPCMessage( |
493 render_frame_host->GetRenderViewHost(), message)) | 497 render_frame_host->GetRenderViewHost(), message)) |
494 return true; | 498 return true; |
495 render_frame_message_source_ = render_frame_host; | 499 render_frame_message_source_ = render_frame_host; |
496 } else { | 500 } else { |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
546 OnShowValidationMessage) | 550 OnShowValidationMessage) |
547 IPC_MESSAGE_HANDLER(ViewHostMsg_HideValidationMessage, | 551 IPC_MESSAGE_HANDLER(ViewHostMsg_HideValidationMessage, |
548 OnHideValidationMessage) | 552 OnHideValidationMessage) |
549 IPC_MESSAGE_HANDLER(ViewHostMsg_MoveValidationMessage, | 553 IPC_MESSAGE_HANDLER(ViewHostMsg_MoveValidationMessage, |
550 OnMoveValidationMessage) | 554 OnMoveValidationMessage) |
551 #if defined(OS_ANDROID) | 555 #if defined(OS_ANDROID) |
552 IPC_MESSAGE_HANDLER(ViewHostMsg_FindMatchRects_Reply, | 556 IPC_MESSAGE_HANDLER(ViewHostMsg_FindMatchRects_Reply, |
553 OnFindMatchRectsReply) | 557 OnFindMatchRectsReply) |
554 IPC_MESSAGE_HANDLER(ViewHostMsg_OpenDateTimeDialog, | 558 IPC_MESSAGE_HANDLER(ViewHostMsg_OpenDateTimeDialog, |
555 OnOpenDateTimeDialog) | 559 OnOpenDateTimeDialog) |
556 IPC_MESSAGE_HANDLER_DELAY_REPLY(JavaBridgeHostMsg_GetChannelHandle, | |
557 OnJavaBridgeGetChannelHandle) | |
558 #endif | 560 #endif |
559 IPC_MESSAGE_UNHANDLED(handled = false) | 561 IPC_MESSAGE_UNHANDLED(handled = false) |
560 IPC_END_MESSAGE_MAP_EX() | 562 IPC_END_MESSAGE_MAP_EX() |
561 render_view_message_source_ = NULL; | 563 render_view_message_source_ = NULL; |
562 render_frame_message_source_ = NULL; | 564 render_frame_message_source_ = NULL; |
563 | 565 |
564 if (!message_is_ok) { | 566 if (!message_is_ok) { |
565 RecordAction(base::UserMetricsAction("BadMessageTerminate_RVD")); | 567 RecordAction(base::UserMetricsAction("BadMessageTerminate_RVD")); |
566 GetRenderProcessHost()->ReceivedBadMessage(); | 568 GetRenderProcessHost()->ReceivedBadMessage(); |
567 } | 569 } |
(...skipping 524 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1092 view_->CreateView(initial_size, params.context); | 1094 view_->CreateView(initial_size, params.context); |
1093 | 1095 |
1094 // Listen for whether our opener gets destroyed. | 1096 // Listen for whether our opener gets destroyed. |
1095 if (opener_) | 1097 if (opener_) |
1096 AddDestructionObserver(opener_); | 1098 AddDestructionObserver(opener_); |
1097 | 1099 |
1098 registrar_.Add(this, | 1100 registrar_.Add(this, |
1099 NOTIFICATION_RENDER_WIDGET_HOST_DESTROYED, | 1101 NOTIFICATION_RENDER_WIDGET_HOST_DESTROYED, |
1100 NotificationService::AllBrowserContextsAndSources()); | 1102 NotificationService::AllBrowserContextsAndSources()); |
1101 #if defined(OS_ANDROID) | 1103 #if defined(OS_ANDROID) |
1102 java_bridge_dispatcher_host_manager_.reset( | |
1103 new JavaBridgeDispatcherHostManager(this)); | |
1104 date_time_chooser_.reset(new DateTimeChooserAndroid()); | 1104 date_time_chooser_.reset(new DateTimeChooserAndroid()); |
1105 #endif | 1105 #endif |
1106 } | 1106 } |
1107 | 1107 |
1108 void WebContentsImpl::OnWebContentsDestroyed(WebContentsImpl* web_contents) { | 1108 void WebContentsImpl::OnWebContentsDestroyed(WebContentsImpl* web_contents) { |
1109 RemoveDestructionObserver(web_contents); | 1109 RemoveDestructionObserver(web_contents); |
1110 | 1110 |
1111 // Clear the opener if it has been closed. | 1111 // Clear the opener if it has been closed. |
1112 if (web_contents == opener_) { | 1112 if (web_contents == opener_) { |
1113 opener_ = NULL; | 1113 opener_ = NULL; |
(...skipping 1584 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2698 date_time_chooser_->ShowDialog(ContentViewCore::FromWebContents(this), | 2698 date_time_chooser_->ShowDialog(ContentViewCore::FromWebContents(this), |
2699 GetRenderViewHost(), | 2699 GetRenderViewHost(), |
2700 value.dialog_type, | 2700 value.dialog_type, |
2701 value.dialog_value, | 2701 value.dialog_value, |
2702 value.minimum, | 2702 value.minimum, |
2703 value.maximum, | 2703 value.maximum, |
2704 value.step, | 2704 value.step, |
2705 value.suggestions); | 2705 value.suggestions); |
2706 } | 2706 } |
2707 | 2707 |
2708 void WebContentsImpl::OnJavaBridgeGetChannelHandle(IPC::Message* reply_msg) { | |
2709 java_bridge_dispatcher_host_manager_->OnGetChannelHandle( | |
2710 render_frame_message_source_, reply_msg); | |
2711 } | |
2712 | |
2713 #endif | 2708 #endif |
2714 | 2709 |
2715 void WebContentsImpl::OnPepperPluginHung(int plugin_child_id, | 2710 void WebContentsImpl::OnPepperPluginHung(int plugin_child_id, |
2716 const base::FilePath& path, | 2711 const base::FilePath& path, |
2717 bool is_hung) { | 2712 bool is_hung) { |
2718 UMA_HISTOGRAM_COUNTS("Pepper.PluginHung", 1); | 2713 UMA_HISTOGRAM_COUNTS("Pepper.PluginHung", 1); |
2719 | 2714 |
2720 FOR_EACH_OBSERVER(WebContentsObserver, observers_, | 2715 FOR_EACH_OBSERVER(WebContentsObserver, observers_, |
2721 PluginHungStatusChanged(plugin_child_id, path, is_hung)); | 2716 PluginHungStatusChanged(plugin_child_id, path, is_hung)); |
2722 } | 2717 } |
(...skipping 1257 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3980 | 3975 |
3981 void WebContentsImpl::OnPreferredSizeChanged(const gfx::Size& old_size) { | 3976 void WebContentsImpl::OnPreferredSizeChanged(const gfx::Size& old_size) { |
3982 if (!delegate_) | 3977 if (!delegate_) |
3983 return; | 3978 return; |
3984 const gfx::Size new_size = GetPreferredSize(); | 3979 const gfx::Size new_size = GetPreferredSize(); |
3985 if (new_size != old_size) | 3980 if (new_size != old_size) |
3986 delegate_->UpdatePreferredSize(this, new_size); | 3981 delegate_->UpdatePreferredSize(this, new_size); |
3987 } | 3982 } |
3988 | 3983 |
3989 } // namespace content | 3984 } // namespace content |
OLD | NEW |