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

Side by Side Diff: chrome/browser/renderer_host/render_view_host.cc

Issue 18768: POSIX: gfx::NativeViewId and CrossProcessEvent (Closed)
Patch Set: Addressing Brett's comments Created 11 years, 11 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
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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 "chrome/browser/renderer_host/render_view_host.h" 5 #include "chrome/browser/renderer_host/render_view_host.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/gfx/native_widget_types.h"
10 #include "base/string_util.h" 11 #include "base/string_util.h"
11 #include "base/waitable_event.h" 12 #include "base/waitable_event.h"
12 #include "chrome/app/result_codes.h" 13 #include "chrome/app/result_codes.h"
13 #include "chrome/browser/browser_process.h" 14 #include "chrome/browser/browser_process.h"
14 #include "chrome/browser/cross_site_request_manager.h" 15 #include "chrome/browser/cross_site_request_manager.h"
15 #include "chrome/browser/debugger/debugger_wrapper.h" 16 #include "chrome/browser/debugger/debugger_wrapper.h"
16 #include "chrome/browser/profile.h" 17 #include "chrome/browser/profile.h"
17 #include "chrome/browser/metrics/user_metrics.h" 18 #include "chrome/browser/metrics/user_metrics.h"
18 #include "chrome/browser/renderer_host/render_process_host.h" 19 #include "chrome/browser/renderer_host/render_process_host.h"
19 #include "chrome/browser/renderer_host/render_view_host_delegate.h" 20 #include "chrome/browser/renderer_host/render_view_host_delegate.h"
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
122 // initialized it) or may not (we have our own process or the old process 123 // initialized it) or may not (we have our own process or the old process
123 // crashed) have been initialized. Calling Init multiple times will be 124 // crashed) have been initialized. Calling Init multiple times will be
124 // ignored, so this is safe. 125 // ignored, so this is safe.
125 if (!process()->Init()) 126 if (!process()->Init())
126 return false; 127 return false;
127 DCHECK(process()->channel()); 128 DCHECK(process()->channel());
128 DCHECK(process()->profile()); 129 DCHECK(process()->profile());
129 130
130 renderer_initialized_ = true; 131 renderer_initialized_ = true;
131 132
132 HANDLE modal_dialog_event; 133 #if defined(OS_WIN)
134 HANDLE modal_dialog_event_handle;
133 HANDLE renderer_process_handle = process()->process().handle(); 135 HANDLE renderer_process_handle = process()->process().handle();
134 if (renderer_process_handle == NULL) 136 if (renderer_process_handle == NULL)
135 renderer_process_handle = GetCurrentProcess(); 137 renderer_process_handle = GetCurrentProcess();
136 138
137 BOOL result = DuplicateHandle(GetCurrentProcess(), 139 BOOL result = DuplicateHandle(GetCurrentProcess(),
138 modal_dialog_event_->handle(), 140 modal_dialog_event_->handle(),
139 renderer_process_handle, 141 renderer_process_handle,
140 &modal_dialog_event, 142 &modal_dialog_event_handle,
141 SYNCHRONIZE, 143 SYNCHRONIZE,
142 FALSE, 144 FALSE,
143 0); 145 0);
144 DCHECK(result) << "Couldn't duplicate the modal dialog handle for the renderer ."; 146 DCHECK(result) << "Couldn't duplicate the modal dialog handle for the renderer .";
147 #endif
145 148
146 DCHECK(view()); 149 DCHECK(view());
147 Send(new ViewMsg_New(view()->GetPluginHWND(), 150
151 ModalDialogEvent modal_dialog_event;
152 #if defined(OS_WIN)
153 modal_dialog_event.event = modal_dialog_event_handle;
154 #endif
155
156 Send(new ViewMsg_New(gfx::IdFromNativeView(view()->GetPluginHWND()),
148 modal_dialog_event, 157 modal_dialog_event,
149 delegate_->GetWebkitPrefs(), 158 delegate_->GetWebkitPrefs(),
150 routing_id())); 159 routing_id()));
151 160
152 // Set the alternate error page, which is profile specific, in the renderer. 161 // Set the alternate error page, which is profile specific, in the renderer.
153 GURL url = delegate_->GetAlternateErrorPageURL(); 162 GURL url = delegate_->GetAlternateErrorPageURL();
154 SetAlternateErrorPageURL(url); 163 SetAlternateErrorPageURL(url);
155 164
156 // If it's enabled, tell the renderer to set up the Javascript bindings for 165 // If it's enabled, tell the renderer to set up the Javascript bindings for
157 // sending messages back to the browser. 166 // sending messages back to the browser.
(...skipping 586 matching lines...) Expand 10 before | Expand all | Expand 10 after
744 if (run_modal_reply_msg_) { 753 if (run_modal_reply_msg_) {
745 if (--modal_dialog_count_ == 0) 754 if (--modal_dialog_count_ == 0)
746 modal_dialog_event_->Reset(); 755 modal_dialog_event_->Reset();
747 Send(run_modal_reply_msg_); 756 Send(run_modal_reply_msg_);
748 run_modal_reply_msg_ = NULL; 757 run_modal_reply_msg_ = NULL;
749 } 758 }
750 RenderWidgetHost::Shutdown(); 759 RenderWidgetHost::Shutdown();
751 } 760 }
752 761
753 void RenderViewHost::OnMsgCreateWindow(int route_id, 762 void RenderViewHost::OnMsgCreateWindow(int route_id,
754 HANDLE modal_dialog_event) { 763 ModalDialogEvent modal_dialog_event) {
755 RenderViewHostDelegate::View* view = delegate_->GetViewDelegate(); 764 RenderViewHostDelegate::View* view = delegate_->GetViewDelegate();
765 base::WaitableEvent* waitable_event = new base::WaitableEvent(
766 #if defined(OS_WIN)
767 modal_dialog_event.event);
768 #else
769 true, false);
770 #endif
771
756 if (view) 772 if (view)
757 view->CreateNewWindow(route_id, 773 view->CreateNewWindow(route_id, waitable_event);
758 new base::WaitableEvent(modal_dialog_event));
759 } 774 }
760 775
761 void RenderViewHost::OnMsgCreateWidget(int route_id, bool activatable) { 776 void RenderViewHost::OnMsgCreateWidget(int route_id, bool activatable) {
762 RenderViewHostDelegate::View* view = delegate_->GetViewDelegate(); 777 RenderViewHostDelegate::View* view = delegate_->GetViewDelegate();
763 if (view) 778 if (view)
764 view->CreateNewWidget(route_id, activatable); 779 view->CreateNewWidget(route_id, activatable);
765 } 780 }
766 781
767 void RenderViewHost::OnMsgShowView(int route_id, 782 void RenderViewHost::OnMsgShowView(int route_id,
768 WindowOpenDisposition disposition, 783 WindowOpenDisposition disposition,
(...skipping 510 matching lines...) Expand 10 before | Expand all | Expand 10 after
1279 std::string event_arg) { 1294 std::string event_arg) {
1280 Send(new ViewMsg_PersonalizationEvent(routing_id(), event_name, event_arg)); 1295 Send(new ViewMsg_PersonalizationEvent(routing_id(), event_name, event_arg));
1281 } 1296 }
1282 #endif 1297 #endif
1283 1298
1284 void RenderViewHost::ForwardMessageFromExternalHost( 1299 void RenderViewHost::ForwardMessageFromExternalHost(
1285 const std::string& target, const std::string& message) { 1300 const std::string& target, const std::string& message) {
1286 Send(new ViewMsg_HandleMessageFromExternalHost(routing_id(), target, 1301 Send(new ViewMsg_HandleMessageFromExternalHost(routing_id(), target,
1287 message)); 1302 message));
1288 } 1303 }
OLDNEW
« no previous file with comments | « chrome/browser/renderer_host/render_view_host.h ('k') | chrome/browser/renderer_host/render_widget_helper.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698