1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 cr.define('print_preview', function() { 6 'use strict'; 7 8 /** 9 * Object used to measure usage statistics. 10 * @constructor 11 */ 12 function Metrics() {}; 13 14 /** 15 * Enumeration of metrics bucket groups. Each group describes a set of events 16 * that can happen in order. This implies that an event cannot occur twice and 17 * an event that occurs semantically before another event, should not occur 18 * after. 19 * @enum {number} 20 */ 21 Metrics.BucketGroup = { 22 DESTINATION_SEARCH: 0, 23 GCP_PROMO: 1 24 }; 25 26 /** 27 * Enumeration of buckets that a user can enter while using the destination 28 * search widget. 29 * @enum {number} 30 */ 31 Metrics.DestinationSearchBucket = { 32 // Used when the print destination search widget is shown. 33 SHOWN: 0, 34 // Used when the user selects a print destination. 35 DESTINATION_SELECTED: 1, 36 // Used when the print destination search widget is closed without selecting 37 // a print destination. 38 CANCELED: 2, 39 // Used when the Google Cloud Print promotion (shown in the destination 40 // search widget) is shown to the user. 41 CLOUDPRINT_PROMO_SHOWN: 3, 42 // Used when the user chooses to sign-in to their Google account. 43 SIGNIN_TRIGGERED: 4 44 }; 45 46 /** 47 * Enumeration of buckets that a user can enter while using the Google Cloud 48 * Print promotion. 49 * @enum {number} 50 */ 51 Metrics.GcpPromoBucket = { 52 // Used when the Google Cloud Print pomotion (shown above the pdf preview 53 // plugin) is shown to the user. 54 SHOWN: 0, 55 // Used when the user clicks the "Get started" link in the promotion shown 56 // in CLOUDPRINT_BIG_PROMO_SHOWN. 57 CLICKED: 1, 58 // Used when the user dismisses the promotion shown in 59 // CLOUDPRINT_BIG_PROMO_SHOWN. 60 DISMISSED: 2 61 }; 62 63 /** 64 * Name of the C++ function to call to increment bucket counts. 65 * @type {string} 66 * @const 67 * @private 68 */ 69 Metrics.NATIVE_FUNCTION_NAME_ = 'reportUiEvent'; 70 71 Metrics.prototype = { 72 /** 73 * Increments the counter of a destination-search bucket. 74 * @param {!Metrics.DestinationSearchBucket} bucket Bucket to increment. 75 */ 76 incrementDestinationSearchBucket: function(bucket) { 77 chrome.send(Metrics.NATIVE_FUNCTION_NAME_, 78 [Metrics.BucketGroup.DESTINATION_SEARCH, bucket]); 79 }, 80 81 /** 82 * Increments the counter of a gcp-promo bucket. 83 * @param {!Metrics.GcpPromoBucket} bucket Bucket to increment. 84 */ 85 incrementGcpPromoBucket: function(bucket) { 86 chrome.send(Metrics.NATIVE_FUNCTION_NAME_, 87 [Metrics.BucketGroup.GCP_PROMO, bucket]); 88 } 89 }; 90 91 // Export 92 return { 93 Metrics: Metrics 94 }; 95 }); 96