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

Unified Diff: tools/perf/metrics/keychain_metric.py

Issue 714273004: mac: Expose keychain access frequency to Telemetry. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@mock_keychain_sleep
Patch Set: Respond to offline comments from tonyg. Created 6 years, 1 month 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
Index: tools/perf/metrics/keychain_metric.py
diff --git a/tools/perf/metrics/keychain_metric.py b/tools/perf/metrics/keychain_metric.py
new file mode 100644
index 0000000000000000000000000000000000000000..1d754567f1617338673d2f7fa3ee8d1f3d9bb251
--- /dev/null
+++ b/tools/perf/metrics/keychain_metric.py
@@ -0,0 +1,57 @@
+# Copyright 2014 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.
+
+import json
+import sys
+
+from metrics import Metric
+from telemetry.page import page_test
+from telemetry.value import scalar
+
+
+class KeychainMetric(Metric):
+ """KeychainMetric gathers keychain statistics from the browser object.
+
+ This includes the number of times that the keychain was accessed.
+ """
+
+ DISPLAY_NAME = 'OSX_Keychain_Access'
+ HISTOGRAM_NAME = 'OSX.Keychain.Access'
+ MAX_KEYCHAIN_ACCESS_COUNT = 10
+
+ @classmethod
+ def CustomizeBrowserOptions(cls, options):
+ """Adds a browser argument that allows for the collection of keychain
+ metrics."""
+ options.AppendExtraBrowserArgs(['--enable-stats-collection-bindings'])
+
+ @staticmethod
+ def GetKeychainAccessCount(tab):
dtu 2014/12/05 01:12:54 telemetry.value.histogram_util.GetHistogramSum
erikchen 2014/12/08 23:41:25 Done.
+ """Retrieves the number of times that the keychain was accessed since the
+ browser was started."""
+ get_histogram_js = 'statsCollectionController.getBrowserHistogram("%s")'
+
+ result = tab.EvaluateJavaScript(get_histogram_js %
+ KeychainMetric.HISTOGRAM_NAME)
+ result = json.loads(result)
+
+ access_count = 0
+ if result:
+ access_count = result['sum']
+ return access_count
+
+ def AddResults(self, tab, results):
+ """Adds the number of times that the keychain was accessed to |results|."""
+ access_count = KeychainMetric.GetKeychainAccessCount(tab)
+ results.AddValue(scalar.ScalarValue(
+ results.current_page, KeychainMetric.DISPLAY_NAME, 'count',
+ access_count))
+ if access_count > KeychainMetric.MAX_KEYCHAIN_ACCESS_COUNT:
tonyg 2014/12/05 03:12:03 Correct me if I'm mistaken, but didn't we land on
erikchen 2014/12/08 23:41:25 Yup, removed this line.
+ raise page_test.Failure('Keychain accessed too many times ({0}).'.
+ format(KeychainMetric.MAX_KEYCHAIN_ACCESS_COUNT))
+
+ @staticmethod
+ def ShouldCollectKeychainMetrics():
dtu 2014/12/05 01:12:54 Since all callers are going to check ShouldCollect
erikchen 2014/12/08 23:41:25 Hm. You're right. I moved the logic into this fil
dtu 2014/12/09 00:25:03 Makes sense.
+ """Whether Chrome collects Keychain metrics on the OS."""
+ return sys.platform == 'darwin'
« tools/perf/measurements/page_cycler_unittest.py ('K') | « tools/perf/measurements/tab_switching.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698