summaryrefslogtreecommitdiffstats
path: root/content/browser/web_contents/web_contents_impl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'content/browser/web_contents/web_contents_impl.cc')
-rw-r--r--content/browser/web_contents/web_contents_impl.cc32
1 files changed, 26 insertions, 6 deletions
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
index 7a4e607..ee3eaa4 100644
--- a/content/browser/web_contents/web_contents_impl.cc
+++ b/content/browser/web_contents/web_contents_impl.cc
@@ -9,7 +9,6 @@
#include "base/command_line.h"
#include "base/debug/trace_event.h"
#include "base/lazy_instance.h"
-#include "base/logging.h"
#include "base/metrics/histogram.h"
#include "base/metrics/stats_counters.h"
#include "base/strings/string16.h"
@@ -399,6 +398,16 @@ WebContentsImpl::~WebContentsImpl() {
}
#endif
+ // OnCloseStarted isn't called in unit tests.
+ if (!close_start_time_.is_null()) {
+ base::TimeTicks now = base::TimeTicks::Now();
+ base::TimeTicks unload_start_time = close_start_time_;
+ if (!before_unload_end_time_.is_null())
+ unload_start_time = before_unload_end_time_;
+ UMA_HISTOGRAM_TIMES("Tab.Close", now - close_start_time_);
+ UMA_HISTOGRAM_TIMES("Tab.Close.UnloadTime", now - unload_start_time);
+ }
+
FOR_EACH_OBSERVER(WebContentsObserver,
observers_,
WebContentsImplDestroyed());
@@ -1939,10 +1948,23 @@ RendererPreferences* WebContentsImpl::GetMutableRendererPrefs() {
return &renderer_preferences_;
}
+void WebContentsImpl::SetNewTabStartTime(const base::TimeTicks& time) {
+ new_tab_start_time_ = time;
+}
+
+base::TimeTicks WebContentsImpl::GetNewTabStartTime() const {
+ return new_tab_start_time_;
+}
+
void WebContentsImpl::Close() {
Close(GetRenderViewHost());
}
+void WebContentsImpl::OnCloseStarted() {
+ if (close_start_time_.is_null())
+ close_start_time_ = base::TimeTicks::Now();
+}
+
void WebContentsImpl::DragSourceEndedAt(int client_x, int client_y,
int screen_x, int screen_y, WebKit::WebDragOperation operation) {
if (browser_plugin_embedder_.get())
@@ -3476,11 +3498,9 @@ void WebContentsImpl::WorkerCrashed() {
void WebContentsImpl::BeforeUnloadFiredFromRenderManager(
bool proceed, const base::TimeTicks& proceed_time,
bool* proceed_to_fire_unload) {
- FOR_EACH_OBSERVER(WebContentsObserver, observers_,
- BeforeUnloadFired(proceed_time));
+ before_unload_end_time_ = proceed_time;
if (delegate_)
delegate_->BeforeUnloadFired(this, proceed, proceed_to_fire_unload);
- // Note: |this| can be deleted at this point.
}
void WebContentsImpl::RenderViewGoneFromRenderManager(
@@ -3621,8 +3641,8 @@ void WebContentsImpl::OnDialogClosed(RenderViewHost* rvh,
DidStopLoading(rvh);
controller_.DiscardNonCommittedEntries();
- FOR_EACH_OBSERVER(WebContentsObserver, observers_,
- BeforeUnloadDialogCancelled());
+ close_start_time_ = base::TimeTicks();
+ before_unload_end_time_ = base::TimeTicks();
}
is_showing_before_unload_dialog_ = false;
static_cast<RenderViewHostImpl*>(