From 11ba553ab876da3fc79c25bcf00d2e6a48f5c1aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20B=C3=BCchele?= Date: Thu, 16 Aug 2018 04:58:54 -0700 Subject: [PATCH] tracking for large frame drops Summary: `largeFrameDrops` are added to the usage tracking. Similar to our other apps, we are considering a drop of 4 or more frames as a large frame drop. While a single frame drop might not be relevant to the user, large frame drops are a more relevant number to optimize for. Reviewed By: passy Differential Revision: D9358795 fbshipit-source-id: d9354695c816ba6c40676df6f3c6f3f070e28269 --- src/dispatcher/tracking.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/dispatcher/tracking.js b/src/dispatcher/tracking.js index ad4575b2d..e75adda2b 100644 --- a/src/dispatcher/tracking.js +++ b/src/dispatcher/tracking.js @@ -12,6 +12,7 @@ import type Logger from '../fb-stubs/Logger.js'; export default (store: Store, logger: Logger) => { let droppedFrames: number = 0; + let largeFrameDrops: number = 0; function droppedFrameDetection( past: DOMHighResTimeStamp, isWindowFocused: () => boolean, @@ -19,8 +20,12 @@ export default (store: Store, logger: Logger) => { const now = performance.now(); requestAnimationFrame(() => droppedFrameDetection(now, isWindowFocused)); const dropped = Math.round((now - past) / (1000 / 60) - 1); - if (dropped > 0 && isWindowFocused()) { - droppedFrames += dropped; + if (!isWindowFocused() || dropped < 1) { + return; + } + droppedFrames += dropped; + if (dropped > 3) { + largeFrameDrops++; } } @@ -42,12 +47,14 @@ export default (store: Store, logger: Logger) => { } const info = { droppedFrames, + largeFrameDrops, os: selectedDevice.os, device: selectedDevice.title, plugin: selectedPlugin, }; // reset dropped frames counter droppedFrames = 0; + largeFrameDrops = 0; if (selectedApp) { const client = clients.find((c: Client) => c.id === selectedApp);