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

Side by Side Diff: chrome/renderer/render_view.cc

Issue 16554: WaitableEvent (Closed)
Patch Set: Addresssing darin's comments (round 2) 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
« no previous file with comments | « chrome/renderer/render_view.h ('k') | chrome/renderer/webplugin_delegate_proxy.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/renderer/render_view.h" 5 #include "chrome/renderer/render_view.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
190 #ifdef CHROME_PERSONALIZATION 190 #ifdef CHROME_PERSONALIZATION
191 Personalization::CleanupRendererPersonalization(personalization_); 191 Personalization::CleanupRendererPersonalization(personalization_);
192 personalization_ = NULL; 192 personalization_ = NULL;
193 #endif 193 #endif
194 } 194 }
195 195
196 /*static*/ 196 /*static*/
197 RenderView* RenderView::Create( 197 RenderView* RenderView::Create(
198 RenderThreadBase* render_thread, 198 RenderThreadBase* render_thread,
199 HWND parent_hwnd, 199 HWND parent_hwnd,
200 HANDLE modal_dialog_event, 200 base::WaitableEvent* modal_dialog_event,
201 int32 opener_id, 201 int32 opener_id,
202 const WebPreferences& webkit_prefs, 202 const WebPreferences& webkit_prefs,
203 SharedRenderViewCounter* counter, 203 SharedRenderViewCounter* counter,
204 int32 routing_id) { 204 int32 routing_id) {
205 DCHECK(routing_id != MSG_ROUTING_NONE); 205 DCHECK(routing_id != MSG_ROUTING_NONE);
206 scoped_refptr<RenderView> view = new RenderView(render_thread); 206 scoped_refptr<RenderView> view = new RenderView(render_thread);
207 view->Init(parent_hwnd, 207 view->Init(parent_hwnd,
208 modal_dialog_event, 208 modal_dialog_event,
209 opener_id, 209 opener_id,
210 webkit_prefs, 210 webkit_prefs,
(...skipping 27 matching lines...) Expand all
238 void RenderView::PluginCrashed(const FilePath& plugin_path) { 238 void RenderView::PluginCrashed(const FilePath& plugin_path) {
239 Send(new ViewHostMsg_CrashedPlugin(routing_id_, plugin_path)); 239 Send(new ViewHostMsg_CrashedPlugin(routing_id_, plugin_path));
240 } 240 }
241 241
242 242
243 void RenderView::JSOutOfMemory() { 243 void RenderView::JSOutOfMemory() {
244 Send(new ViewHostMsg_JSOutOfMemory(routing_id_)); 244 Send(new ViewHostMsg_JSOutOfMemory(routing_id_));
245 } 245 }
246 246
247 void RenderView::Init(HWND parent_hwnd, 247 void RenderView::Init(HWND parent_hwnd,
248 HANDLE modal_dialog_event, 248 base::WaitableEvent* modal_dialog_event,
249 int32 opener_id, 249 int32 opener_id,
250 const WebPreferences& webkit_prefs, 250 const WebPreferences& webkit_prefs,
251 SharedRenderViewCounter* counter, 251 SharedRenderViewCounter* counter,
252 int32 routing_id) { 252 int32 routing_id) {
253 DCHECK(!webview()); 253 DCHECK(!webview());
254 254
255 if (opener_id != MSG_ROUTING_NONE) 255 if (opener_id != MSG_ROUTING_NONE)
256 opener_id_ = opener_id; 256 opener_id_ = opener_id;
257 257
258 if (counter) { 258 if (counter) {
(...skipping 21 matching lines...) Expand all
280 AddRef(); 280 AddRef();
281 281
282 // If this is a popup, we must wait for the CreatingNew_ACK message before 282 // If this is a popup, we must wait for the CreatingNew_ACK message before
283 // completing initialization. Otherwise, we can finish it now. 283 // completing initialization. Otherwise, we can finish it now.
284 if (opener_id == MSG_ROUTING_NONE) { 284 if (opener_id == MSG_ROUTING_NONE) {
285 did_show_ = true; 285 did_show_ = true;
286 CompleteInit(parent_hwnd); 286 CompleteInit(parent_hwnd);
287 } 287 }
288 288
289 host_window_ = parent_hwnd; 289 host_window_ = parent_hwnd;
290 modal_dialog_event_.Set(modal_dialog_event); 290 modal_dialog_event_.reset(modal_dialog_event);
291 291
292 CommandLine command_line; 292 CommandLine command_line;
293 enable_dom_automation_ = 293 enable_dom_automation_ =
294 command_line.HasSwitch(switches::kDomAutomationController); 294 command_line.HasSwitch(switches::kDomAutomationController);
295 disable_popup_blocking_ = 295 disable_popup_blocking_ =
296 command_line.HasSwitch(switches::kDisablePopupBlocking); 296 command_line.HasSwitch(switches::kDisablePopupBlocking);
297 user_scripts_enabled_ = 297 user_scripts_enabled_ =
298 command_line.HasSwitch(switches::kEnableUserScripts); 298 command_line.HasSwitch(switches::kEnableUserScripts);
299 299
300 debug_message_handler_ = new DebugMessageHandler(this); 300 debug_message_handler_ = new DebugMessageHandler(this);
(...skipping 1340 matching lines...) Expand 10 before | Expand all | Expand 10 after
1641 const std::wstring& message, 1641 const std::wstring& message,
1642 const std::wstring& default_value, 1642 const std::wstring& default_value,
1643 std::wstring* result) { 1643 std::wstring* result) {
1644 bool success = false; 1644 bool success = false;
1645 std::wstring result_temp; 1645 std::wstring result_temp;
1646 if (!result) 1646 if (!result)
1647 result = &result_temp; 1647 result = &result_temp;
1648 IPC::SyncMessage* msg = new ViewHostMsg_RunJavaScriptMessage( 1648 IPC::SyncMessage* msg = new ViewHostMsg_RunJavaScriptMessage(
1649 routing_id_, message, default_value, type, &success, result); 1649 routing_id_, message, default_value, type, &success, result);
1650 1650
1651 msg->set_pump_messages_event(modal_dialog_event_); 1651 msg->set_pump_messages_event(modal_dialog_event_.get());
1652 Send(msg); 1652 Send(msg);
1653 1653
1654 return success; 1654 return success;
1655 } 1655 }
1656 1656
1657 void RenderView::AddGURLSearchProvider(const GURL& osd_url, bool autodetected) { 1657 void RenderView::AddGURLSearchProvider(const GURL& osd_url, bool autodetected) {
1658 if (!osd_url.is_empty()) 1658 if (!osd_url.is_empty())
1659 Send(new ViewHostMsg_PageHasOSDD(routing_id_, page_id_, osd_url, 1659 Send(new ViewHostMsg_PageHasOSDD(routing_id_, page_id_, osd_url,
1660 autodetected)); 1660 autodetected));
1661 } 1661 }
1662 1662
1663 bool RenderView::RunBeforeUnloadConfirm(WebView* webview, 1663 bool RenderView::RunBeforeUnloadConfirm(WebView* webview,
1664 const std::wstring& message) { 1664 const std::wstring& message) {
1665 bool success = false; 1665 bool success = false;
1666 // This is an ignored return value, but is included so we can accept the same 1666 // This is an ignored return value, but is included so we can accept the same
1667 // response as RunJavaScriptMessage. 1667 // response as RunJavaScriptMessage.
1668 std::wstring ignored_result; 1668 std::wstring ignored_result;
1669 IPC::SyncMessage* msg = new ViewHostMsg_RunBeforeUnloadConfirm( 1669 IPC::SyncMessage* msg = new ViewHostMsg_RunBeforeUnloadConfirm(
1670 routing_id_, message, &success, &ignored_result); 1670 routing_id_, message, &success, &ignored_result);
1671 1671
1672 msg->set_pump_messages_event(modal_dialog_event_); 1672 msg->set_pump_messages_event(modal_dialog_event_.get());
1673 Send(msg); 1673 Send(msg);
1674 1674
1675 return success; 1675 return success;
1676 } 1676 }
1677 1677
1678 void RenderView::EnableSuddenTermination() { 1678 void RenderView::EnableSuddenTermination() {
1679 Send(new ViewHostMsg_UnloadListenerChanged(routing_id_, false)); 1679 Send(new ViewHostMsg_UnloadListenerChanged(routing_id_, false));
1680 } 1680 }
1681 1681
1682 void RenderView::DisableSuddenTermination() { 1682 void RenderView::DisableSuddenTermination() {
(...skipping 26 matching lines...) Expand all
1709 void RenderView::OnPopupNotificationVisiblityChanged(bool visible) { 1709 void RenderView::OnPopupNotificationVisiblityChanged(bool visible) {
1710 popup_notification_visible_ = visible; 1710 popup_notification_visible_ = visible;
1711 } 1711 }
1712 1712
1713 void RenderView::ShowModalHTMLDialog(const GURL& url, int width, int height, 1713 void RenderView::ShowModalHTMLDialog(const GURL& url, int width, int height,
1714 const std::string& json_arguments, 1714 const std::string& json_arguments,
1715 std::string* json_retval) { 1715 std::string* json_retval) {
1716 IPC::SyncMessage* msg = new ViewHostMsg_ShowModalHTMLDialog( 1716 IPC::SyncMessage* msg = new ViewHostMsg_ShowModalHTMLDialog(
1717 routing_id_, url, width, height, json_arguments, json_retval); 1717 routing_id_, url, width, height, json_arguments, json_retval);
1718 1718
1719 msg->set_pump_messages_event(modal_dialog_event_); 1719 msg->set_pump_messages_event(modal_dialog_event_.get());
1720 Send(msg); 1720 Send(msg);
1721 } 1721 }
1722 1722
1723 uint32 RenderView::GetCPBrowsingContext() { 1723 uint32 RenderView::GetCPBrowsingContext() {
1724 uint32 context = 0; 1724 uint32 context = 0;
1725 Send(new ViewHostMsg_GetCPBrowsingContext(&context)); 1725 Send(new ViewHostMsg_GetCPBrowsingContext(&context));
1726 return context; 1726 return context;
1727 } 1727 }
1728 1728
1729 // Tell the browser to display a destination link. 1729 // Tell the browser to display a destination link.
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
1796 bool result = render_thread_->Send( 1796 bool result = render_thread_->Send(
1797 new ViewHostMsg_CreateWindow(routing_id_, user_gesture, &routing_id, 1797 new ViewHostMsg_CreateWindow(routing_id_, user_gesture, &routing_id,
1798 &modal_dialog_event)); 1798 &modal_dialog_event));
1799 if (routing_id == MSG_ROUTING_NONE) { 1799 if (routing_id == MSG_ROUTING_NONE) {
1800 DCHECK(modal_dialog_event == NULL); 1800 DCHECK(modal_dialog_event == NULL);
1801 return NULL; 1801 return NULL;
1802 } 1802 }
1803 1803
1804 // The WebView holds a reference to this new RenderView 1804 // The WebView holds a reference to this new RenderView
1805 const WebPreferences& prefs = webview->GetPreferences(); 1805 const WebPreferences& prefs = webview->GetPreferences();
1806 base::WaitableEvent* waitable_event =
1807 new base::WaitableEvent(modal_dialog_event);
1806 RenderView* view = RenderView::Create(render_thread_, 1808 RenderView* view = RenderView::Create(render_thread_,
1807 NULL, modal_dialog_event, routing_id_, 1809 NULL, waitable_event, routing_id_,
1808 prefs, shared_popup_counter_, 1810 prefs, shared_popup_counter_,
1809 routing_id); 1811 routing_id);
1810 view->set_opened_by_user_gesture(user_gesture); 1812 view->set_opened_by_user_gesture(user_gesture);
1811 view->set_waiting_for_create_window_ack(true); 1813 view->set_waiting_for_create_window_ack(true);
1812 1814
1813 // Copy over the alternate error page URL so we can have alt error pages in 1815 // Copy over the alternate error page URL so we can have alt error pages in
1814 // the new render view (we don't need the browser to send the URL back down). 1816 // the new render view (we don't need the browser to send the URL back down).
1815 view->alternate_error_page_url_ = alternate_error_page_url_; 1817 view->alternate_error_page_url_ = alternate_error_page_url_;
1816 1818
1817 return view->webview(); 1819 return view->webview();
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
1931 void RenderView::CloseWidgetSoon(WebWidget* webwidget) { 1933 void RenderView::CloseWidgetSoon(WebWidget* webwidget) {
1932 if (popup_notification_visible_ == false) 1934 if (popup_notification_visible_ == false)
1933 RenderWidget::CloseWidgetSoon(webwidget); 1935 RenderWidget::CloseWidgetSoon(webwidget);
1934 } 1936 }
1935 1937
1936 void RenderView::RunModal(WebWidget* webwidget) { 1938 void RenderView::RunModal(WebWidget* webwidget) {
1937 DCHECK(did_show_) << "should already have shown the view"; 1939 DCHECK(did_show_) << "should already have shown the view";
1938 1940
1939 IPC::SyncMessage* msg = new ViewHostMsg_RunModal(routing_id_); 1941 IPC::SyncMessage* msg = new ViewHostMsg_RunModal(routing_id_);
1940 1942
1941 msg->set_pump_messages_event(modal_dialog_event_); 1943 msg->set_pump_messages_event(modal_dialog_event_.get());
1942 Send(msg); 1944 Send(msg);
1943 } 1945 }
1944 1946
1945 void RenderView::SyncNavigationState() { 1947 void RenderView::SyncNavigationState() {
1946 if (!webview()) 1948 if (!webview())
1947 return; 1949 return;
1948 1950
1949 std::string state; 1951 std::string state;
1950 if (!webview()->GetMainFrame()->GetCurrentHistoryState(&state)) 1952 if (!webview()->GetMainFrame()->GetCurrentHistoryState(&state))
1951 return; 1953 return;
(...skipping 815 matching lines...) Expand 10 before | Expand all | Expand 10 after
2767 template_resource_id)); 2769 template_resource_id));
2768 2770
2769 if (template_html.empty()) { 2771 if (template_html.empty()) {
2770 NOTREACHED() << "unable to load template. ID: " << template_resource_id; 2772 NOTREACHED() << "unable to load template. ID: " << template_resource_id;
2771 return ""; 2773 return "";
2772 } 2774 }
2773 // "t" is the id of the templates root node. 2775 // "t" is the id of the templates root node.
2774 return jstemplate_builder::GetTemplateHtml( 2776 return jstemplate_builder::GetTemplateHtml(
2775 template_html, &error_strings, "t"); 2777 template_html, &error_strings, "t");
2776 } 2778 }
OLDNEW
« no previous file with comments | « chrome/renderer/render_view.h ('k') | chrome/renderer/webplugin_delegate_proxy.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698