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

Side by Side Diff: trunk/src/content/browser/web_contents/web_contents_impl.cc

Issue 14362028: Speculative Revert 195108 "Changes to closing contents with beforeunload/unl..." (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 7 years, 8 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) 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/metrics/histogram.h" 10 #include "base/metrics/histogram.h"
(...skipping 329 matching lines...) Expand 10 before | Expand all | Expand 10 after
340 if (view_->GetNativeView()) { 340 if (view_->GetNativeView()) {
341 RenderViewHost* host = GetRenderViewHost(); 341 RenderViewHost* host = GetRenderViewHost();
342 if (host && host->GetView()) 342 if (host && host->GetView())
343 RenderWidgetHostViewPort::FromRWHV(host->GetView())->WillWmDestroy(); 343 RenderWidgetHostViewPort::FromRWHV(host->GetView())->WillWmDestroy();
344 } 344 }
345 #endif 345 #endif
346 346
347 // OnCloseStarted isn't called in unit tests. 347 // OnCloseStarted isn't called in unit tests.
348 if (!close_start_time_.is_null()) { 348 if (!close_start_time_.is_null()) {
349 base::TimeTicks now = base::TimeTicks::Now(); 349 base::TimeTicks now = base::TimeTicks::Now();
350 base::TimeDelta close_time = now - close_start_time_;
351 UMA_HISTOGRAM_TIMES("Tab.Close", close_time);
352
353 base::TimeTicks unload_start_time = close_start_time_; 350 base::TimeTicks unload_start_time = close_start_time_;
354 base::TimeTicks unload_end_time = now;
355 if (!before_unload_end_time_.is_null()) 351 if (!before_unload_end_time_.is_null())
356 unload_start_time = before_unload_end_time_; 352 unload_start_time = before_unload_end_time_;
357 if (!unload_detached_start_time_.is_null()) 353 UMA_HISTOGRAM_TIMES("Tab.Close", now - close_start_time_);
358 unload_end_time = unload_detached_start_time_; 354 UMA_HISTOGRAM_TIMES("Tab.Close.UnloadTime", now - unload_start_time);
359 base::TimeDelta unload_time = unload_end_time - unload_start_time;
360 UMA_HISTOGRAM_TIMES("Tab.Close.UnloadTime", unload_time);
361 } 355 }
362 356
363 FOR_EACH_OBSERVER(WebContentsObserver, 357 FOR_EACH_OBSERVER(WebContentsObserver,
364 observers_, 358 observers_,
365 WebContentsImplDestroyed()); 359 WebContentsImplDestroyed());
366 360
367 SetDelegate(NULL); 361 SetDelegate(NULL);
368 } 362 }
369 363
370 WebContentsImpl* WebContentsImpl::CreateWithOpener( 364 WebContentsImpl* WebContentsImpl::CreateWithOpener(
(...skipping 1451 matching lines...) Expand 10 before | Expand all | Expand 10 after
1822 1816
1823 void WebContentsImpl::Close() { 1817 void WebContentsImpl::Close() {
1824 Close(GetRenderViewHost()); 1818 Close(GetRenderViewHost());
1825 } 1819 }
1826 1820
1827 void WebContentsImpl::OnCloseStarted() { 1821 void WebContentsImpl::OnCloseStarted() {
1828 if (close_start_time_.is_null()) 1822 if (close_start_time_.is_null())
1829 close_start_time_ = base::TimeTicks::Now(); 1823 close_start_time_ = base::TimeTicks::Now();
1830 } 1824 }
1831 1825
1832 void WebContentsImpl::OnCloseCanceled() {
1833 close_start_time_ = base::TimeTicks();
1834 before_unload_end_time_ = base::TimeTicks();
1835 unload_detached_start_time_ = base::TimeTicks();
1836 }
1837
1838 void WebContentsImpl::OnUnloadStarted() {
1839 before_unload_end_time_ = base::TimeTicks::Now();
1840 }
1841
1842 void WebContentsImpl::OnUnloadDetachedStarted() {
1843 if (unload_detached_start_time_.is_null())
1844 unload_detached_start_time_ = base::TimeTicks::Now();
1845 }
1846
1847 void WebContentsImpl::SystemDragEnded() { 1826 void WebContentsImpl::SystemDragEnded() {
1848 if (GetRenderViewHost()) 1827 if (GetRenderViewHost())
1849 GetRenderViewHostImpl()->DragSourceSystemDragEnded(); 1828 GetRenderViewHostImpl()->DragSourceSystemDragEnded();
1850 if (delegate_) 1829 if (delegate_)
1851 delegate_->DragEnded(); 1830 delegate_->DragEnded();
1852 } 1831 }
1853 1832
1854 void WebContentsImpl::UserGestureDone() { 1833 void WebContentsImpl::UserGestureDone() {
1855 OnUserGesture(); 1834 OnUserGesture();
1856 } 1835 }
(...skipping 1509 matching lines...) Expand 10 before | Expand all | Expand 10 after
3366 3345
3367 void WebContentsImpl::OnDialogClosed(RenderViewHost* rvh, 3346 void WebContentsImpl::OnDialogClosed(RenderViewHost* rvh,
3368 IPC::Message* reply_msg, 3347 IPC::Message* reply_msg,
3369 bool success, 3348 bool success,
3370 const string16& user_input) { 3349 const string16& user_input) {
3371 if (is_showing_before_unload_dialog_ && !success) { 3350 if (is_showing_before_unload_dialog_ && !success) {
3372 // If a beforeunload dialog is canceled, we need to stop the throbber from 3351 // If a beforeunload dialog is canceled, we need to stop the throbber from
3373 // spinning, since we forced it to start spinning in Navigate. 3352 // spinning, since we forced it to start spinning in Navigate.
3374 DidStopLoading(rvh); 3353 DidStopLoading(rvh);
3375 controller_.DiscardNonCommittedEntries(); 3354 controller_.DiscardNonCommittedEntries();
3376 OnCloseCanceled(); 3355
3356 close_start_time_ = base::TimeTicks();
3357 before_unload_end_time_ = base::TimeTicks();
3377 } 3358 }
3378 is_showing_before_unload_dialog_ = false; 3359 is_showing_before_unload_dialog_ = false;
3379 static_cast<RenderViewHostImpl*>( 3360 static_cast<RenderViewHostImpl*>(
3380 rvh)->JavaScriptDialogClosed(reply_msg, success, user_input); 3361 rvh)->JavaScriptDialogClosed(reply_msg, success, user_input);
3381 } 3362 }
3382 3363
3383 void WebContentsImpl::SetEncoding(const std::string& encoding) { 3364 void WebContentsImpl::SetEncoding(const std::string& encoding) {
3384 encoding_ = GetContentClient()->browser()-> 3365 encoding_ = GetContentClient()->browser()->
3385 GetCanonicalEncodingNameByAliasName(encoding); 3366 GetCanonicalEncodingNameByAliasName(encoding);
3386 } 3367 }
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
3429 } 3410 }
3430 3411
3431 BrowserPluginGuestManager* 3412 BrowserPluginGuestManager*
3432 WebContentsImpl::GetBrowserPluginGuestManager() const { 3413 WebContentsImpl::GetBrowserPluginGuestManager() const {
3433 return static_cast<BrowserPluginGuestManager*>( 3414 return static_cast<BrowserPluginGuestManager*>(
3434 GetBrowserContext()->GetUserData( 3415 GetBrowserContext()->GetUserData(
3435 browser_plugin::kBrowserPluginGuestManagerKeyName)); 3416 browser_plugin::kBrowserPluginGuestManagerKeyName));
3436 } 3417 }
3437 3418
3438 } // namespace content 3419 } // namespace content
OLDNEW
« no previous file with comments | « trunk/src/content/browser/web_contents/web_contents_impl.h ('k') | trunk/src/content/public/browser/web_contents.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698