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 |