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/metrics/histogram.h" | 10 #include "base/metrics/histogram.h" |
(...skipping 385 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
396 if (GetNativeView()) { | 396 if (GetNativeView()) { |
397 RenderViewHost* host = GetRenderViewHost(); | 397 RenderViewHost* host = GetRenderViewHost(); |
398 if (host && host->GetView()) | 398 if (host && host->GetView()) |
399 RenderWidgetHostViewPort::FromRWHV(host->GetView())->WillWmDestroy(); | 399 RenderWidgetHostViewPort::FromRWHV(host->GetView())->WillWmDestroy(); |
400 } | 400 } |
401 #endif | 401 #endif |
402 | 402 |
403 // OnCloseStarted isn't called in unit tests. | 403 // OnCloseStarted isn't called in unit tests. |
404 if (!close_start_time_.is_null()) { | 404 if (!close_start_time_.is_null()) { |
405 base::TimeTicks now = base::TimeTicks::Now(); | 405 base::TimeTicks now = base::TimeTicks::Now(); |
| 406 base::TimeDelta close_time = now - close_start_time_; |
| 407 UMA_HISTOGRAM_TIMES("Tab.Close", close_time); |
| 408 |
406 base::TimeTicks unload_start_time = close_start_time_; | 409 base::TimeTicks unload_start_time = close_start_time_; |
| 410 base::TimeTicks unload_end_time = now; |
407 if (!before_unload_end_time_.is_null()) | 411 if (!before_unload_end_time_.is_null()) |
408 unload_start_time = before_unload_end_time_; | 412 unload_start_time = before_unload_end_time_; |
409 UMA_HISTOGRAM_TIMES("Tab.Close", now - close_start_time_); | 413 if (!unload_detached_start_time_.is_null()) |
410 UMA_HISTOGRAM_TIMES("Tab.Close.UnloadTime", now - unload_start_time); | 414 unload_end_time = unload_detached_start_time_; |
| 415 base::TimeDelta unload_time = unload_end_time - unload_start_time; |
| 416 UMA_HISTOGRAM_TIMES("Tab.Close.UnloadTime", unload_time); |
411 } | 417 } |
412 | 418 |
413 FOR_EACH_OBSERVER(WebContentsObserver, | 419 FOR_EACH_OBSERVER(WebContentsObserver, |
414 observers_, | 420 observers_, |
415 WebContentsImplDestroyed()); | 421 WebContentsImplDestroyed()); |
416 | 422 |
417 SetDelegate(NULL); | 423 SetDelegate(NULL); |
418 } | 424 } |
419 | 425 |
420 WebContentsImpl* WebContentsImpl::Create( | 426 WebContentsImpl* WebContentsImpl::Create( |
(...skipping 1368 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1789 | 1795 |
1790 base::TimeTicks WebContentsImpl::GetNewTabStartTime() const { | 1796 base::TimeTicks WebContentsImpl::GetNewTabStartTime() const { |
1791 return new_tab_start_time_; | 1797 return new_tab_start_time_; |
1792 } | 1798 } |
1793 | 1799 |
1794 void WebContentsImpl::Close() { | 1800 void WebContentsImpl::Close() { |
1795 Close(GetRenderViewHost()); | 1801 Close(GetRenderViewHost()); |
1796 } | 1802 } |
1797 | 1803 |
1798 void WebContentsImpl::OnCloseStarted() { | 1804 void WebContentsImpl::OnCloseStarted() { |
1799 if (close_start_time_.is_null()) | 1805 if (close_start_time_.is_null()) { |
1800 close_start_time_ = base::TimeTicks::Now(); | 1806 close_start_time_ = base::TimeTicks::Now(); |
| 1807 } |
| 1808 } |
| 1809 |
| 1810 void WebContentsImpl::OnUnloadDetachedStarted() { |
| 1811 if (unload_detached_start_time_.is_null()) { |
| 1812 unload_detached_start_time_ = base::TimeTicks::Now(); |
| 1813 } |
1801 } | 1814 } |
1802 | 1815 |
1803 bool WebContentsImpl::ShouldAcceptDragAndDrop() const { | 1816 bool WebContentsImpl::ShouldAcceptDragAndDrop() const { |
1804 #if defined(OS_CHROMEOS) | 1817 #if defined(OS_CHROMEOS) |
1805 // ChromeOS panels (pop-ups) do not take drag-n-drop. | 1818 // ChromeOS panels (pop-ups) do not take drag-n-drop. |
1806 // See http://crosbug.com/2413 | 1819 // See http://crosbug.com/2413 |
1807 if (delegate_ && delegate_->IsPopupOrPanel(this)) | 1820 if (delegate_ && delegate_->IsPopupOrPanel(this)) |
1808 return false; | 1821 return false; |
1809 return true; | 1822 return true; |
1810 #else | 1823 #else |
(...skipping 1546 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3357 bool success, | 3370 bool success, |
3358 const string16& user_input) { | 3371 const string16& user_input) { |
3359 if (is_showing_before_unload_dialog_ && !success) { | 3372 if (is_showing_before_unload_dialog_ && !success) { |
3360 // If a beforeunload dialog is canceled, we need to stop the throbber from | 3373 // If a beforeunload dialog is canceled, we need to stop the throbber from |
3361 // spinning, since we forced it to start spinning in Navigate. | 3374 // spinning, since we forced it to start spinning in Navigate. |
3362 DidStopLoading(rvh); | 3375 DidStopLoading(rvh); |
3363 controller_.DiscardNonCommittedEntries(); | 3376 controller_.DiscardNonCommittedEntries(); |
3364 | 3377 |
3365 close_start_time_ = base::TimeTicks(); | 3378 close_start_time_ = base::TimeTicks(); |
3366 before_unload_end_time_ = base::TimeTicks(); | 3379 before_unload_end_time_ = base::TimeTicks(); |
| 3380 unload_detached_start_time_ = base::TimeTicks(); |
3367 } | 3381 } |
3368 is_showing_before_unload_dialog_ = false; | 3382 is_showing_before_unload_dialog_ = false; |
3369 static_cast<RenderViewHostImpl*>( | 3383 static_cast<RenderViewHostImpl*>( |
3370 rvh)->JavaScriptDialogClosed(reply_msg, success, user_input); | 3384 rvh)->JavaScriptDialogClosed(reply_msg, success, user_input); |
3371 } | 3385 } |
3372 | 3386 |
3373 void WebContentsImpl::SetEncoding(const std::string& encoding) { | 3387 void WebContentsImpl::SetEncoding(const std::string& encoding) { |
3374 encoding_ = content::GetContentClient()->browser()-> | 3388 encoding_ = content::GetContentClient()->browser()-> |
3375 GetCanonicalEncodingNameByAliasName(encoding); | 3389 GetCanonicalEncodingNameByAliasName(encoding); |
3376 } | 3390 } |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3428 } | 3442 } |
3429 } | 3443 } |
3430 | 3444 |
3431 content::BrowserPluginGuest* WebContentsImpl::GetBrowserPluginGuest() { | 3445 content::BrowserPluginGuest* WebContentsImpl::GetBrowserPluginGuest() { |
3432 return browser_plugin_guest_.get(); | 3446 return browser_plugin_guest_.get(); |
3433 } | 3447 } |
3434 | 3448 |
3435 content::BrowserPluginEmbedder* WebContentsImpl::GetBrowserPluginEmbedder() { | 3449 content::BrowserPluginEmbedder* WebContentsImpl::GetBrowserPluginEmbedder() { |
3436 return browser_plugin_embedder_.get(); | 3450 return browser_plugin_embedder_.get(); |
3437 } | 3451 } |
OLD | NEW |