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

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

Issue 274057: Add histogram for how tab closing time. Did some cleanup along the way. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 2 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) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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 "app/gfx/native_widget_types.h" 10 #include "app/gfx/native_widget_types.h"
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 int routing_id) 106 int routing_id)
107 : RenderWidgetHost(instance->GetProcess(), routing_id), 107 : RenderWidgetHost(instance->GetProcess(), routing_id),
108 instance_(instance), 108 instance_(instance),
109 delegate_(delegate), 109 delegate_(delegate),
110 waiting_for_drag_context_response_(false), 110 waiting_for_drag_context_response_(false),
111 enabled_bindings_(0), 111 enabled_bindings_(0),
112 pending_request_id_(0), 112 pending_request_id_(0),
113 navigations_suspended_(false), 113 navigations_suspended_(false),
114 suspended_nav_message_(NULL), 114 suspended_nav_message_(NULL),
115 run_modal_reply_msg_(NULL), 115 run_modal_reply_msg_(NULL),
116 is_showing_before_unload_dialog_(false),
117 is_waiting_for_unload_ack_(false), 116 is_waiting_for_unload_ack_(false),
118 unload_ack_is_for_cross_site_transition_(false), 117 unload_ack_is_for_cross_site_transition_(false),
119 are_javascript_messages_suppressed_(false), 118 are_javascript_messages_suppressed_(false),
120 sudden_termination_allowed_(false), 119 sudden_termination_allowed_(false),
121 in_inspect_element_mode_(false) { 120 in_inspect_element_mode_(false) {
122 DCHECK(instance_); 121 DCHECK(instance_);
123 DCHECK(delegate_); 122 DCHECK(delegate_);
124 123
125 // TODO(mpcomplete): remove this notification (and registrar) when we figure 124 // TODO(mpcomplete): remove this notification (and registrar) when we figure
126 // out why we're crashing on process()->Init(). 125 // out why we're crashing on process()->Init().
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
256 // browser. But we want to keep the throbber in sync with what's happening 255 // browser. But we want to keep the throbber in sync with what's happening
257 // in the UI. For example, we want to start throbbing immediately when the 256 // in the UI. For example, we want to start throbbing immediately when the
258 // user naivgates even if the renderer is delayed. There is also an issue 257 // user naivgates even if the renderer is delayed. There is also an issue
259 // with the throbber starting because the DOMUI (which controls whether the 258 // with the throbber starting because the DOMUI (which controls whether the
260 // favicon is displayed) happens synchronously. If the start loading 259 // favicon is displayed) happens synchronously. If the start loading
261 // messages was asynchronous, then the default favicon would flash in. 260 // messages was asynchronous, then the default favicon would flash in.
262 // 261 //
263 // WebKit doesn't send throb notifications for JavaScript URLs, so we 262 // WebKit doesn't send throb notifications for JavaScript URLs, so we
264 // don't want to either. 263 // don't want to either.
265 if (!params.url.SchemeIs(chrome::kJavaScriptScheme)) 264 if (!params.url.SchemeIs(chrome::kJavaScriptScheme))
266 delegate_->DidStartLoading(this); 265 delegate_->DidStartLoading();
267 } 266 }
268 } 267 }
269 268
270 void RenderViewHost::NavigateToURL(const GURL& url) { 269 void RenderViewHost::NavigateToURL(const GURL& url) {
271 ViewMsg_Navigate_Params params; 270 ViewMsg_Navigate_Params params;
272 params.page_id = -1; 271 params.page_id = -1;
273 params.url = url; 272 params.url = url;
274 params.transition = PageTransition::LINK; 273 params.transition = PageTransition::LINK;
275 params.reload = false; 274 params.reload = false;
276 Navigate(params); 275 Navigate(params);
(...skipping 303 matching lines...) Expand 10 before | Expand all | Expand 10 after
580 process()->set_ignore_input_events(false); 579 process()->set_ignore_input_events(false);
581 if (is_waiting_for_unload_ack_) { 580 if (is_waiting_for_unload_ack_) {
582 if (are_javascript_messages_suppressed_) { 581 if (are_javascript_messages_suppressed_) {
583 delegate_->RendererUnresponsive(this, is_waiting_for_unload_ack_); 582 delegate_->RendererUnresponsive(this, is_waiting_for_unload_ack_);
584 return; 583 return;
585 } 584 }
586 585
587 StartHangMonitorTimeout(TimeDelta::FromMilliseconds(kUnloadTimeoutMS)); 586 StartHangMonitorTimeout(TimeDelta::FromMilliseconds(kUnloadTimeoutMS));
588 } 587 }
589 588
590 if (is_showing_before_unload_dialog_ && !success) {
591 // If a beforeunload dialog is canceled, we need to stop the throbber from
592 // spinning, since we forced it to start spinning in Navigate.
593 delegate_->DidStopLoading(this);
594 }
595 is_showing_before_unload_dialog_ = false;
596
597 ViewHostMsg_RunJavaScriptMessage::WriteReplyParams(reply_msg, 589 ViewHostMsg_RunJavaScriptMessage::WriteReplyParams(reply_msg,
598 success, prompt); 590 success, prompt);
599 Send(reply_msg); 591 Send(reply_msg);
600 } 592 }
601 593
602 void RenderViewHost::ModalHTMLDialogClosed(IPC::Message* reply_msg, 594 void RenderViewHost::ModalHTMLDialogClosed(IPC::Message* reply_msg,
603 const std::string& json_retval) { 595 const std::string& json_retval) {
604 if (is_waiting_for_unload_ack_) 596 if (is_waiting_for_unload_ack_)
605 StartHangMonitorTimeout(TimeDelta::FromMilliseconds(kUnloadTimeoutMS)); 597 StartHangMonitorTimeout(TimeDelta::FromMilliseconds(kUnloadTimeoutMS));
606 598
(...skipping 412 matching lines...) Expand 10 before | Expand all | Expand 10 after
1019 const GURL& target_url) { 1011 const GURL& target_url) {
1020 RenderViewHostDelegate::Resource* resource_delegate = 1012 RenderViewHostDelegate::Resource* resource_delegate =
1021 delegate_->GetResourceDelegate(); 1013 delegate_->GetResourceDelegate();
1022 if (resource_delegate) { 1014 if (resource_delegate) {
1023 resource_delegate->DidRedirectProvisionalLoad(page_id, 1015 resource_delegate->DidRedirectProvisionalLoad(page_id,
1024 source_url, target_url); 1016 source_url, target_url);
1025 } 1017 }
1026 } 1018 }
1027 1019
1028 void RenderViewHost::OnMsgDidStartLoading() { 1020 void RenderViewHost::OnMsgDidStartLoading() {
1029 delegate_->DidStartLoading(this); 1021 delegate_->DidStartLoading();
1030 } 1022 }
1031 1023
1032 void RenderViewHost::OnMsgDidStopLoading() { 1024 void RenderViewHost::OnMsgDidStopLoading() {
1033 delegate_->DidStopLoading(this); 1025 delegate_->DidStopLoading();
1034 } 1026 }
1035 1027
1036 void RenderViewHost::OnMsgDocumentAvailableInMainFrame() { 1028 void RenderViewHost::OnMsgDocumentAvailableInMainFrame() {
1037 delegate_->DocumentAvailableInMainFrame(this); 1029 delegate_->DocumentAvailableInMainFrame(this);
1038 } 1030 }
1039 1031
1040 void RenderViewHost::OnMsgDidLoadResourceFromMemoryCache( 1032 void RenderViewHost::OnMsgDidLoadResourceFromMemoryCache(
1041 const GURL& url, 1033 const GURL& url,
1042 const std::string& frame_origin, 1034 const std::string& frame_origin,
1043 const std::string& main_frame_origin, 1035 const std::string& main_frame_origin,
(...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after
1329 &are_javascript_messages_suppressed_); 1321 &are_javascript_messages_suppressed_);
1330 } 1322 }
1331 1323
1332 void RenderViewHost::OnMsgRunBeforeUnloadConfirm(const GURL& frame_url, 1324 void RenderViewHost::OnMsgRunBeforeUnloadConfirm(const GURL& frame_url,
1333 const std::wstring& message, 1325 const std::wstring& message,
1334 IPC::Message* reply_msg) { 1326 IPC::Message* reply_msg) {
1335 // While a JS before unload dialog is showing, tabs in the same process 1327 // While a JS before unload dialog is showing, tabs in the same process
1336 // shouldn't process input events. 1328 // shouldn't process input events.
1337 process()->set_ignore_input_events(true); 1329 process()->set_ignore_input_events(true);
1338 StopHangMonitorTimeout(); 1330 StopHangMonitorTimeout();
1339 is_showing_before_unload_dialog_ = true;
1340 delegate_->RunBeforeUnloadConfirm(message, reply_msg); 1331 delegate_->RunBeforeUnloadConfirm(message, reply_msg);
1341 } 1332 }
1342 1333
1343 void RenderViewHost::OnMsgShowModalHTMLDialog( 1334 void RenderViewHost::OnMsgShowModalHTMLDialog(
1344 const GURL& url, int width, int height, const std::string& json_arguments, 1335 const GURL& url, int width, int height, const std::string& json_arguments,
1345 IPC::Message* reply_msg) { 1336 IPC::Message* reply_msg) {
1346 StopHangMonitorTimeout(); 1337 StopHangMonitorTimeout();
1347 delegate_->ShowModalHTMLDialog(url, width, height, json_arguments, reply_msg); 1338 delegate_->ShowModalHTMLDialog(url, width, height, json_arguments, reply_msg);
1348 } 1339 }
1349 1340
(...skipping 386 matching lines...) Expand 10 before | Expand all | Expand 10 after
1736 #endif 1727 #endif
1737 } 1728 }
1738 1729
1739 void RenderViewHost::OnCSSInserted() { 1730 void RenderViewHost::OnCSSInserted() {
1740 delegate_->DidInsertCSS(); 1731 delegate_->DidInsertCSS();
1741 } 1732 }
1742 1733
1743 void RenderViewHost::UpdateBrowserWindowId(int window_id) { 1734 void RenderViewHost::UpdateBrowserWindowId(int window_id) {
1744 Send(new ViewMsg_UpdateBrowserWindowId(routing_id(), window_id)); 1735 Send(new ViewMsg_UpdateBrowserWindowId(routing_id(), window_id));
1745 } 1736 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698