Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright 2017 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #include "chrome/browser/ui/views/frame/browser_view_histogram_helper.h" | |
| 6 | |
| 7 #include "components/startup_metric_utils/browser/startup_metric_utils.h" | |
| 8 #include "ui/compositor/compositor.h" | |
| 9 | |
| 10 BrowserViewHistogramHelper::BrowserViewHistogramHelper() {} | |
| 11 | |
| 12 BrowserViewHistogramHelper::~BrowserViewHistogramHelper() { | |
| 13 RemoveCompositorObserver(); | |
| 14 } | |
| 15 | |
| 16 void BrowserViewHistogramHelper::OnDidPaintChildren( | |
| 17 ui::Compositor* compositor) { | |
| 18 if (!did_first_paint_) { | |
| 19 did_first_paint_ = true; | |
| 20 | |
| 21 startup_metric_utils::RecordBrowserViewFirstPaint(base::TimeTicks::Now()); | |
| 22 | |
| 23 compositor->AddObserver(this); | |
|
Peter Kasting
2017/03/24 22:39:17
Nit: Prefer a ScopedObserver to manual add/remove
themblsha
2017/03/31 14:32:31
Done.
| |
| 24 compositor_ = compositor; | |
| 25 } | |
| 26 } | |
| 27 | |
| 28 void BrowserViewHistogramHelper::RemoveCompositorObserver() { | |
| 29 if (compositor_) { | |
| 30 compositor_->RemoveObserver(this); | |
| 31 compositor_ = nullptr; | |
| 32 } | |
| 33 } | |
| 34 | |
| 35 void BrowserViewHistogramHelper::OnCompositingEnded( | |
| 36 ui::Compositor* compositor) { | |
| 37 DCHECK_EQ(compositor_, compositor); | |
| 38 | |
| 39 startup_metric_utils::RecordBrowserViewFirstPaintCompositingEnded( | |
| 40 base::TimeTicks::Now()); | |
| 41 | |
| 42 RemoveCompositorObserver(); | |
| 43 } | |
| 44 | |
| 45 void BrowserViewHistogramHelper::OnCompositingShuttingDown( | |
| 46 ui::Compositor* compositor) { | |
| 47 DCHECK_EQ(compositor_, compositor); | |
| 48 RemoveCompositorObserver(); | |
| 49 } | |
| OLD | NEW |