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" |
99 #include "content/browser/web_contents/web_contents_android.h" | 100 #include "content/browser/web_contents/web_contents_android.h" |
| 101 #include "content/common/java_bridge_messages.h" |
100 #include "content/public/browser/android/content_view_core.h" | 102 #include "content/public/browser/android/content_view_core.h" |
101 #endif | 103 #endif |
102 | 104 |
103 #if defined(OS_MACOSX) | 105 #if defined(OS_MACOSX) |
104 #include "base/mac/foundation_util.h" | 106 #include "base/mac/foundation_util.h" |
105 #include "ui/gl/io_surface_support_mac.h" | 107 #include "ui/gl/io_surface_support_mac.h" |
106 #endif | 108 #endif |
107 | 109 |
108 // Cross-Site Navigations | 110 // Cross-Site Navigations |
109 // | 111 // |
(...skipping 362 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
472 RenderFrameHost* render_frame_host, | 474 RenderFrameHost* render_frame_host, |
473 const IPC::Message& message) { | 475 const IPC::Message& message) { |
474 DCHECK(render_view_host || render_frame_host); | 476 DCHECK(render_view_host || render_frame_host); |
475 if (GetWebUI() && | 477 if (GetWebUI() && |
476 static_cast<WebUIImpl*>(GetWebUI())->OnMessageReceived(message)) { | 478 static_cast<WebUIImpl*>(GetWebUI())->OnMessageReceived(message)) { |
477 return true; | 479 return true; |
478 } | 480 } |
479 | 481 |
480 ObserverListBase<WebContentsObserver>::Iterator it(observers_); | 482 ObserverListBase<WebContentsObserver>::Iterator it(observers_); |
481 WebContentsObserver* observer; | 483 WebContentsObserver* observer; |
482 if (render_frame_host) { | 484 while ((observer = it.GetNext()) != NULL) |
483 while ((observer = it.GetNext()) != NULL) | 485 if (observer->OnMessageReceived(message)) |
484 if (observer->OnMessageReceived(message, render_frame_host)) | 486 return true; |
485 return true; | |
486 } else { | |
487 while ((observer = it.GetNext()) != NULL) | |
488 if (observer->OnMessageReceived(message)) | |
489 return true; | |
490 } | |
491 | 487 |
492 // Message handlers should be aware of which | 488 // Message handlers should be aware of which |
493 // RenderViewHost/RenderFrameHost sent the message, which is temporarily | 489 // RenderViewHost/RenderFrameHost sent the message, which is temporarily |
494 // stored in render_(view|frame)_message_source_. | 490 // stored in render_(view|frame)_message_source_. |
495 if (render_frame_host) { | 491 if (render_frame_host) { |
496 if (RenderViewDevToolsAgentHost::DispatchIPCMessage( | 492 if (RenderViewDevToolsAgentHost::DispatchIPCMessage( |
497 render_frame_host->GetRenderViewHost(), message)) | 493 render_frame_host->GetRenderViewHost(), message)) |
498 return true; | 494 return true; |
499 render_frame_message_source_ = render_frame_host; | 495 render_frame_message_source_ = render_frame_host; |
500 } else { | 496 } else { |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
550 OnShowValidationMessage) | 546 OnShowValidationMessage) |
551 IPC_MESSAGE_HANDLER(ViewHostMsg_HideValidationMessage, | 547 IPC_MESSAGE_HANDLER(ViewHostMsg_HideValidationMessage, |
552 OnHideValidationMessage) | 548 OnHideValidationMessage) |
553 IPC_MESSAGE_HANDLER(ViewHostMsg_MoveValidationMessage, | 549 IPC_MESSAGE_HANDLER(ViewHostMsg_MoveValidationMessage, |
554 OnMoveValidationMessage) | 550 OnMoveValidationMessage) |
555 #if defined(OS_ANDROID) | 551 #if defined(OS_ANDROID) |
556 IPC_MESSAGE_HANDLER(ViewHostMsg_FindMatchRects_Reply, | 552 IPC_MESSAGE_HANDLER(ViewHostMsg_FindMatchRects_Reply, |
557 OnFindMatchRectsReply) | 553 OnFindMatchRectsReply) |
558 IPC_MESSAGE_HANDLER(ViewHostMsg_OpenDateTimeDialog, | 554 IPC_MESSAGE_HANDLER(ViewHostMsg_OpenDateTimeDialog, |
559 OnOpenDateTimeDialog) | 555 OnOpenDateTimeDialog) |
| 556 IPC_MESSAGE_HANDLER_DELAY_REPLY(JavaBridgeHostMsg_GetChannelHandle, |
| 557 OnJavaBridgeGetChannelHandle) |
560 #endif | 558 #endif |
561 IPC_MESSAGE_UNHANDLED(handled = false) | 559 IPC_MESSAGE_UNHANDLED(handled = false) |
562 IPC_END_MESSAGE_MAP_EX() | 560 IPC_END_MESSAGE_MAP_EX() |
563 render_view_message_source_ = NULL; | 561 render_view_message_source_ = NULL; |
564 render_frame_message_source_ = NULL; | 562 render_frame_message_source_ = NULL; |
565 | 563 |
566 if (!message_is_ok) { | 564 if (!message_is_ok) { |
567 RecordAction(base::UserMetricsAction("BadMessageTerminate_RVD")); | 565 RecordAction(base::UserMetricsAction("BadMessageTerminate_RVD")); |
568 GetRenderProcessHost()->ReceivedBadMessage(); | 566 GetRenderProcessHost()->ReceivedBadMessage(); |
569 } | 567 } |
(...skipping 524 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1094 view_->CreateView(initial_size, params.context); | 1092 view_->CreateView(initial_size, params.context); |
1095 | 1093 |
1096 // Listen for whether our opener gets destroyed. | 1094 // Listen for whether our opener gets destroyed. |
1097 if (opener_) | 1095 if (opener_) |
1098 AddDestructionObserver(opener_); | 1096 AddDestructionObserver(opener_); |
1099 | 1097 |
1100 registrar_.Add(this, | 1098 registrar_.Add(this, |
1101 NOTIFICATION_RENDER_WIDGET_HOST_DESTROYED, | 1099 NOTIFICATION_RENDER_WIDGET_HOST_DESTROYED, |
1102 NotificationService::AllBrowserContextsAndSources()); | 1100 NotificationService::AllBrowserContextsAndSources()); |
1103 #if defined(OS_ANDROID) | 1101 #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 |
2708 #endif | 2713 #endif |
2709 | 2714 |
2710 void WebContentsImpl::OnPepperPluginHung(int plugin_child_id, | 2715 void WebContentsImpl::OnPepperPluginHung(int plugin_child_id, |
2711 const base::FilePath& path, | 2716 const base::FilePath& path, |
2712 bool is_hung) { | 2717 bool is_hung) { |
2713 UMA_HISTOGRAM_COUNTS("Pepper.PluginHung", 1); | 2718 UMA_HISTOGRAM_COUNTS("Pepper.PluginHung", 1); |
2714 | 2719 |
2715 FOR_EACH_OBSERVER(WebContentsObserver, observers_, | 2720 FOR_EACH_OBSERVER(WebContentsObserver, observers_, |
2716 PluginHungStatusChanged(plugin_child_id, path, is_hung)); | 2721 PluginHungStatusChanged(plugin_child_id, path, is_hung)); |
2717 } | 2722 } |
(...skipping 1257 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3975 | 3980 |
3976 void WebContentsImpl::OnPreferredSizeChanged(const gfx::Size& old_size) { | 3981 void WebContentsImpl::OnPreferredSizeChanged(const gfx::Size& old_size) { |
3977 if (!delegate_) | 3982 if (!delegate_) |
3978 return; | 3983 return; |
3979 const gfx::Size new_size = GetPreferredSize(); | 3984 const gfx::Size new_size = GetPreferredSize(); |
3980 if (new_size != old_size) | 3985 if (new_size != old_size) |
3981 delegate_->UpdatePreferredSize(this, new_size); | 3986 delegate_->UpdatePreferredSize(this, new_size); |
3982 } | 3987 } |
3983 | 3988 |
3984 } // namespace content | 3989 } // namespace content |
OLD | NEW |