Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2110)

Unified Diff: chrome/installer/util/experiment_metrics.h

Issue 2889323004: Win 10 Inactive toast experiment metrics and storage modifications. (Closed)
Patch Set: Apply some comments and try bots errors Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/installer/util/experiment.cc ('k') | chrome/installer/util/experiment_metrics.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/installer/util/experiment_metrics.h
diff --git a/chrome/installer/util/experiment_metrics.h b/chrome/installer/util/experiment_metrics.h
new file mode 100644
index 0000000000000000000000000000000000000000..fae5263664ccdbdf83fece90d28dc8192f8626cf
--- /dev/null
+++ b/chrome/installer/util/experiment_metrics.h
@@ -0,0 +1,169 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_INSTALLER_UTIL_EXPERIMENT_METRICS_H_
+#define CHROME_INSTALLER_UTIL_EXPERIMENT_METRICS_H_
+
+#include <stdint.h>
+
+namespace installer {
+
+// The various metrics reported for the status of the inactive user toast. This
+// struct contains the information necessary to evaluate the efficacy of the
+// toast on Chrome usage.
+struct ExperimentMetrics {
+ public:
+ // The state of this install's participation in the experiment.
+ enum State {
+ kUninitialized = -1,
+
+ // Relaunching setup.exe for a per-user install failed. Will retry on next
+ // update.
+ kRelaunchFailed = 0,
+
+ // No user on console for per-machine install; waiting for invocation at
+ // next logon via Active Setup.
+ kWaitingForUserLogon = 1,
+
+ // Waiting in user context for the setup singleton.
+ kWaitingForSingleton = 2,
+
+ // Timed out waiting for the setup singleton. Will retry on next update.
+ kSingletonWaitTimeout = 3,
+
+ // A group has been assigned. The experiment has moved out of the initial
+ // state at this point. This state is reached under the setup singleton.
+ kGroupAssigned = 4,
+
+ // The user is not participating on account of using a tablet-like device.
+ kIsTabletDevice = 5,
+
+ // Chrome has been run within the last 28 days.
+ kIsActive = 6,
+
+ // The user has not been active on the machine much in the last 28 days.
+ kIsDormant = 7,
+
+ // Deferring presentation until it's okay to show the toast.
+ kDeferringPresentation = 8,
+
+ // Deferral was aborted on account of another process requiring the setup
+ // singleton.
+ kDeferredPresentationAborted = 9,
+
+ // Launching Chrome for presentation.
+ kLaunchingChrome = 10,
+
+ // User selected 'No Thanks' button from UI after toast was shown.
+ kSelectedNoThanks = 11,
+
+ // User selected 'Open Chrome' button from UI after toast was shown but
+ // Chrome crashed after opening.
+ kSelectedOpenChromeAndCrash = 12,
+
+ // User selected 'Open Chrome' button from UI after toast was shown and
+ // user successfully opened chrome.
+ kSelectedOpenChromeAndNoCrash = 13,
+
+ // User selected [x] button from display.
+ kSelectedClose = 14,
+
+ // User logged off (gracefully) without interacting with toast.
+ kUserLogOff = 15,
+
+ NUM_STATES
+ };
+
+ // The location of the toast for those clients for which it was presented.
+ enum ToastLocation {
+ // The toast was shown positioned over Chrome's taskbar pin.
+ kOverTaskbarPin = 0,
+
+ // The toast was shown over the notification area.
+ kOverNotificationArea = 1,
+ };
+
+ // Returns true if the install is in any of the states that precede group
+ // assignment.
+ bool InInitialState() const;
+
+ // Returns true if the install is in a terminal state and should no longer
+ // participate in the experiment.
+ bool InTerminalState() const;
+
+ bool operator==(const ExperimentMetrics& other) const;
+
+ // The number of experiment groups (including the holdback group).
+ static constexpr int kNumGroups = 16;
+
+ // Unix epoch of time from when time bucket for experiment is started.
+ // This will be subtracted from the day the toast was shown to bucket user
+ // into cohorts for analysing retention. (13 Jun 2017 00:00:00 PST)
+ static constexpr int64_t kExperimentStartSeconds = 1497337200;
+
+ // Maximum number of time toast should be displayed (3 bits).
+ static constexpr int kMaxToastCount = 7;
+
+ // Maximum value of first toast offset. (10 bits).
+ static constexpr int kMaxFirstToastOffsetDays = 1023;
+
+ // Maximum value of last used bucket. (7 bits, in days and log scale).
+ static constexpr int kMaxLastUsed = 1825; // 5 yr in days.
+
+ // Maximum value of user session length. (6 bits, in minutes and log scale).
+ static constexpr int kMaxSessionLength = 40320; // 28 days in minutes.
+
+ // Maximum value of user session length. (5 bits, in seconds and log scale).
+ static constexpr int kMaxActionDelay = 604800; // 7 days in seconds.
+
+ static constexpr int kSessionLengthBucketBits = 6;
+
+ static constexpr int kActionDelayBucketBits = 5;
+
+ static constexpr int kLastUsedBucketBits = 7;
+
+ static constexpr int kToastHourBits = 5;
+
+ static constexpr int kFirstToastOffsetBits = 10;
+
+ static constexpr int kToastCountBits = 3;
+
+ static constexpr int kToastLocationBits = 1;
+
+ static constexpr int kStateBits = 4;
+
+ static constexpr int kGroupBits = 4;
+
+ // The group to which this install has been assigned.
+ int group = 0;
+
+ State state = kUninitialized;
+ ToastLocation toast_location = kOverTaskbarPin;
+
+ // The number of times the toast has been presented.
+ int toast_count = 0;
+
+ // The number of days that have passed since (13 Jun 2017 00:00:00 PST) on
+ // the first day the toast was presented.
+ int first_toast_offset_days = 0;
+
+ // The local (wall clock) hour in which the toast was presented.
+ int toast_hour = 0;
+
+ // Days since the last time Chrome was used in the range [1-1825) in a
+ // 128-bucket log scale.
+ int last_used_bucket = 0;
+
+ // Time delta (in seconds) between presentation and action in the range
+ // [1-604800) in a 32-bucket log scale.
+ int action_delay_bucket = 0;
+
+ // Time delta (in minutes) between user session start and presentation in the
+ // range [1-40320) in a 64-bucket log scale.
+ int session_length_bucket = 0;
+};
+
+} // namespace installer
+
+#endif // CHROME_INSTALLER_UTIL_EXPERIMENT_METRICS_H_
« no previous file with comments | « chrome/installer/util/experiment.cc ('k') | chrome/installer/util/experiment_metrics.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698