Home | History | Annotate | Download | only in print_preview
      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