blob: aee26562d312667094a658e0352d07f06677b417 [file] [log] [blame]
// Copyright 2015 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.
// Changes to analytics reporting structures can have disruptive effects on the
// analytics history of the Files app (e.g. making it hard or impossible to
// detect trending).
//
// In general, treat changes to analytics like histogram changes, i.e. make
// additive changes, don't remove or rename existing Dimensions, Events, Labels,
// etc.
//
// Changes to this file will need to be reviewed by someone familiar with the
// analytics system.
// namespace
var metrics = metrics || metricsBase;
/** @enum {string} */
metrics.Categories = {
ACQUISITION: 'Acquisition',
MANAGEMENT: 'Management',
INTERNALS: 'Internals'
};
/**
* The values of these enums come from the analytics console.
* @private @enum {number}
*/
metrics.Dimension_ = {
CONSUMER_TYPE: 1,
SESSION_TYPE: 2,
MACHINE_USE: 3
};
/**
* Enumeration of known FSPs used to qualify "providers"
* "screens" on analytics. All FSPs NOT present in this list
* will be reported to analytics as 'provided-unknown'.
*
* NOTE: When an unknown provider is encountered, a separate event will be
* sent to analytics with the id. Consulation of that event will provided
* an indication when a provider is popular enough to be added to the
* whitelist.
*
* These look like extension ids, but are actually provider ids which may
* but don't have to be extension ids.
*
* @enum {string}
*/
metrics.FileSystemProviders = {
oedeeodfidgoollimchfdnbmhcpnklnd: 'ZipUnpacker',
hlffpaajmfllggclnjppbblobdhokjhe: 'File System for Dropbox (YT)',
jbfdfcehgafdbfpniaimfbfomafoadgo: 'File System for OneDrive (YT)',
gbheifiifcfekkamhepkeogobihicgmn: 'SFTP File System (YT)',
dikonaebkejmpbpcnnmfaeopkaenicgf: 'Box for Chrome OS',
iibcngmpkgghccnakicfmgajlkhnohep: 'TED Talks (FB)',
hmckflbfniicjijmdoffagjkpnjgbieh: 'WebDAV File System (YT)',
ibfbhbegfkamboeglpnianlggahglbfi: 'Cloud Storage (FB)',
pmnllmkmjilbojkpgplbdmckghmaocjh: 'Scan (FB)',
mfhnnfciefdpolbelmfkpmhhmlkehbdf: 'File System for SMB/CIFS (YT)',
plmanjiaoflhcilcfdnjeffklbgejmje: 'Add MY Documents (KA)',
mljpablpddhocfbnokacjggdbmafjnon: 'Wicked Good Unarchiver (MF)',
ndjpildffkeodjdaeebdhnncfhopkajk: 'Network File Share for Chrome OS',
gmhmnhjihabohahcllfgjooaoecglhpi: 'LanFolder',
dmboannefpncccogfdikhmhpmdnddgoe: 'ZipArchiver',
/**
* Native Providers.
*/
'@smb': 'Native Network File Share (SMB)',
};
/**
* Returns a new "screen" name for a provided file system type. Returns
* 'unknown' for unknown providers.
* @param {string|undefined} providerId The FSP provider ID.
* @return {string} Name or 'unknown' if extension is unrecognized.
*/
metrics.getFileSystemProviderName = function(providerId) {
return metrics.FileSystemProviders[providerId] || 'unknown';
};
/**
* @enum {!analytics.EventBuilder.Dimension}
*/
metrics.Dimensions = {
CONSUMER_TYPE_MANAGER: {
index: metrics.Dimension_.CONSUMER_TYPE,
value: 'Manage'
},
CONSUMER_TYPE_IMPORTER: {
index: metrics.Dimension_.CONSUMER_TYPE,
value: 'Import'
},
SESSION_TYPE_MANAGE: {
index: metrics.Dimension_.SESSION_TYPE,
value: 'Manage'
},
SESSION_TYPE_IMPORT: {
index: metrics.Dimension_.SESSION_TYPE,
value: 'Import'
},
MACHINE_USE_SINGLE: {
index: metrics.Dimension_.MACHINE_USE,
value: 'Single'
},
MACHINE_USE_MULTIPLE: {
index: metrics.Dimension_.MACHINE_USE,
value: 'Multiple'
}
};
// namespace
metrics.event = metrics.event || {};
/**
* Base event builders for files app.
* @private @enum {!analytics.EventBuilder}
*/
metrics.event.Builders_ = {
IMPORT: analytics.EventBuilder.builder()
.category(metrics.Categories.ACQUISITION),
INTERNALS: analytics.EventBuilder.builder()
.category(metrics.Categories.INTERNALS),
MANAGE: analytics.EventBuilder.builder()
.category(metrics.Categories.MANAGEMENT)
};
/** @enum {!analytics.EventBuilder} */
metrics.Management = {
WINDOW_CREATED: metrics.event.Builders_.MANAGE
.action('Window Created')
.dimension(metrics.Dimensions.SESSION_TYPE_MANAGE)
.dimension(metrics.Dimensions.CONSUMER_TYPE_MANAGER)
};
/** @enum {!analytics.EventBuilder} */
metrics.ImportEvents = {
DEVICE_YANKED: metrics.event.Builders_.IMPORT
.action('Device Yanked'),
ERRORS: metrics.event.Builders_.IMPORT
.action('Import Error Count'),
FILES_DEDUPLICATED: metrics.event.Builders_.IMPORT
.action('Files Deduplicated'),
FILES_IMPORTED: metrics.event.Builders_.IMPORT
.action('Files Imported'),
HISTORY_LOADED: metrics.event.Builders_.IMPORT
.action('History Loaded'),
IMPORT_CANCELLED: metrics.event.Builders_.IMPORT
.action('Import Cancelled'),
MEGABYTES_IMPORTED: metrics.event.Builders_.IMPORT
.action('Megabytes Imported'),
STARTED: metrics.event.Builders_.IMPORT
.action('Import Started')
.dimension(metrics.Dimensions.SESSION_TYPE_IMPORT)
.dimension(metrics.Dimensions.CONSUMER_TYPE_IMPORTER)
};
/** @enum {!analytics.EventBuilder} */
metrics.Internals = {
UNRECOGNIZED_FILE_SYSTEM_PROVIDER: metrics.event.Builders_.INTERNALS
.action('Unrecognized File System Provider')
};
// namespace
metrics.timing = metrics.timing || {};
/** @enum {string} */
metrics.timing.Variables = {
COMPUTE_HASH: 'Compute Content Hash',
SEARCH_BY_HASH: 'Search By Hash',
HISTORY_LOAD: 'History Load',
EXTRACT_THUMBNAIL_FROM_RAW: 'Extract Thumbnail From RAW'
};