summaryrefslogtreecommitdiff
path: root/chromium/cc/metrics/frame_sequence_metrics.h
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2020-10-12 14:27:29 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2020-10-13 09:35:20 +0000
commitc30a6232df03e1efbd9f3b226777b07e087a1122 (patch)
treee992f45784689f373bcc38d1b79a239ebe17ee23 /chromium/cc/metrics/frame_sequence_metrics.h
parent7b5b123ac58f58ffde0f4f6e488bcd09aa4decd3 (diff)
downloadqtwebengine-chromium-85-based.tar.gz
BASELINE: Update Chromium to 85.0.4183.14085-based
Change-Id: Iaa42f4680837c57725b1344f108c0196741f6057 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/cc/metrics/frame_sequence_metrics.h')
-rw-r--r--chromium/cc/metrics/frame_sequence_metrics.h33
1 files changed, 32 insertions, 1 deletions
diff --git a/chromium/cc/metrics/frame_sequence_metrics.h b/chromium/cc/metrics/frame_sequence_metrics.h
index 0417899c3a9..3a77fc57775 100644
--- a/chromium/cc/metrics/frame_sequence_metrics.h
+++ b/chromium/cc/metrics/frame_sequence_metrics.h
@@ -5,6 +5,8 @@
#ifndef CC_METRICS_FRAME_SEQUENCE_METRICS_H_
#define CC_METRICS_FRAME_SEQUENCE_METRICS_H_
+#include <memory>
+
#include "base/callback.h"
#include "base/optional.h"
#include "base/trace_event/traced_value.h"
@@ -44,7 +46,8 @@ class CC_EXPORT FrameSequenceMetrics {
struct ThroughputData {
static std::unique_ptr<base::trace_event::TracedValue> ToTracedValue(
const ThroughputData& impl,
- const ThroughputData& main);
+ const ThroughputData& main,
+ ThreadType effective_thred);
// Returns the throughput in percent, a return value of base::nullopt
// indicates that no throughput metric is reported.
@@ -62,6 +65,13 @@ class CC_EXPORT FrameSequenceMetrics {
#endif
}
+ int DroppedFramePercent() const {
+ if (frames_expected == 0)
+ return 0;
+ return std::ceil(100 * (frames_expected - frames_produced) /
+ static_cast<double>(frames_expected));
+ }
+
// Tracks the number of frames that were expected to be shown during this
// frame-sequence.
uint32_t frames_expected = 0;
@@ -113,10 +123,31 @@ class CC_EXPORT FrameSequenceMetrics {
return throughput_ukm_reporter_;
}
+ // Must be called before destructor.
+ void ReportLeftoverData();
+
+ void AdoptTrace(FrameSequenceMetrics* adopt_from);
+ void AdvanceTrace(base::TimeTicks timestamp);
+
private:
void ComputeAggregatedThroughput();
+
const FrameSequenceTrackerType type_;
+ // Tracks some data to generate useful trace events.
+ struct TraceData {
+ explicit TraceData(FrameSequenceMetrics* metrics);
+ ~TraceData();
+ FrameSequenceMetrics* metrics;
+ base::TimeTicks last_timestamp = base::TimeTicks::Now();
+ int frame_count = 0;
+ bool enabled = false;
+ void* trace_id = nullptr;
+
+ void Advance(base::TimeTicks new_timestamp);
+ void Terminate();
+ } trace_data_{this};
+
// Pointer to the reporter owned by the FrameSequenceTrackerCollection.
ThroughputUkmReporter* const throughput_ukm_reporter_;