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     // Used when a user selects the privet printer in a pair of duplicate
     45     // privet and cloud printers.
     46     PRIVET_DUPLICATE_SELECTED: 5,
     47     // Used when a user selects the cloud printer in a pair of duplicate
     48     // privet and cloud printers.
     49     CLOUD_DUPLICATE_SELECTED: 6
     50   };
     51 
     52   /**
     53    * Enumeration of buckets that a user can enter while using the Google Cloud
     54    * Print promotion.
     55    * @enum {number}
     56    */
     57   Metrics.GcpPromoBucket = {
     58     // Used when the Google Cloud Print pomotion (shown above the pdf preview
     59     // plugin) is shown to the user.
     60     SHOWN: 0,
     61     // Used when the user clicks the "Get started" link in the promotion shown
     62     // in CLOUDPRINT_BIG_PROMO_SHOWN.
     63     CLICKED: 1,
     64     // Used when the user dismisses the promotion shown in
     65     // CLOUDPRINT_BIG_PROMO_SHOWN.
     66     DISMISSED: 2
     67   };
     68 
     69   /**
     70    * Name of the C++ function to call to increment bucket counts.
     71    * @type {string}
     72    * @const
     73    * @private
     74    */
     75   Metrics.NATIVE_FUNCTION_NAME_ = 'reportUiEvent';
     76 
     77   Metrics.prototype = {
     78     /**
     79      * Increments the counter of a destination-search bucket.
     80      * @param {!Metrics.DestinationSearchBucket} bucket Bucket to increment.
     81      */
     82     incrementDestinationSearchBucket: function(bucket) {
     83       chrome.send(Metrics.NATIVE_FUNCTION_NAME_,
     84                   [Metrics.BucketGroup.DESTINATION_SEARCH, bucket]);
     85     },
     86 
     87     /**
     88      * Increments the counter of a gcp-promo bucket.
     89      * @param {!Metrics.GcpPromoBucket} bucket Bucket to increment.
     90      */
     91     incrementGcpPromoBucket: function(bucket) {
     92       chrome.send(Metrics.NATIVE_FUNCTION_NAME_,
     93                   [Metrics.BucketGroup.GCP_PROMO, bucket]);
     94     }
     95   };
     96 
     97   // Export
     98   return {
     99     Metrics: Metrics
    100   };
    101 });
    102