Index: chrome/browser/ui/webui/extensions/extensions_ui.cc |
diff --git a/chrome/browser/ui/webui/extensions/extensions_ui.cc b/chrome/browser/ui/webui/extensions/extensions_ui.cc |
index e12444139d8881f8c7d4fce262c77d2fdf1720e7..fad560c61c532a7bb4cdb63d533f7063b9ea121f 100644 |
--- a/chrome/browser/ui/webui/extensions/extensions_ui.cc |
+++ b/chrome/browser/ui/webui/extensions/extensions_ui.cc |
@@ -56,8 +56,10 @@ class ExtensionWebUiTimer : public content::WebContentsObserver { |
void DocumentLoadedInFrame( |
content::RenderFrameHost* render_frame_host) override { |
- if (render_frame_host != web_contents()->GetMainFrame()) |
+ if (render_frame_host != web_contents()->GetMainFrame() || |
+ !timer_) { // See comment in DocumentOnLoadCompletedInMainFrame() |
return; |
+ } |
if (is_md_) { |
UMA_HISTOGRAM_TIMES("Extensions.WebUi.DocumentLoadedInMainFrameTime.MD", |
timer_->Elapsed()); |
@@ -68,6 +70,12 @@ class ExtensionWebUiTimer : public content::WebContentsObserver { |
} |
void DocumentOnLoadCompletedInMainFrame() override { |
+ // Sometimes*, DidStartProvisionalLoadForFrame() isn't called before this |
+ // or DocumentLoadedInFrame(). Don't log anything in those cases. |
+ // *This appears to be for in-page navigations like hash changes. |
+ // TODO(devlin): The usefulness of these metrics remains to be seen. |
+ if (!timer_) |
+ return; |
if (is_md_) { |
UMA_HISTOGRAM_TIMES("Extensions.WebUi.LoadCompletedInMainFrame.MD", |
timer_->Elapsed()); |
@@ -75,6 +83,7 @@ class ExtensionWebUiTimer : public content::WebContentsObserver { |
UMA_HISTOGRAM_TIMES("Extensions.WebUi.LoadCompletedInMainFrame.Uber", |
timer_->Elapsed()); |
} |
+ timer_.reset(); |
} |
void WebContentsDestroyed() override { delete this; } |