Javascript  |  102行  |  3.04 KB

// Copyright (c) 2012 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.

cr.define('print_preview', function() {
  'use strict';

  /**
   * Object used to measure usage statistics.
   * @constructor
   */
  function Metrics() {};

  /**
   * Enumeration of metrics bucket groups. Each group describes a set of events
   * that can happen in order. This implies that an event cannot occur twice and
   * an event that occurs semantically before another event, should not occur
   * after.
   * @enum {number}
   */
  Metrics.BucketGroup = {
    DESTINATION_SEARCH: 0,
    GCP_PROMO: 1
  };

  /**
   * Enumeration of buckets that a user can enter while using the destination
   * search widget.
   * @enum {number}
   */
  Metrics.DestinationSearchBucket = {
    // Used when the print destination search widget is shown.
    SHOWN: 0,
    // Used when the user selects a print destination.
    DESTINATION_SELECTED: 1,
    // Used when the print destination search widget is closed without selecting
    // a print destination.
    CANCELED: 2,
    // Used when the Google Cloud Print promotion (shown in the destination
    // search widget) is shown to the user.
    CLOUDPRINT_PROMO_SHOWN: 3,
    // Used when the user chooses to sign-in to their Google account.
    SIGNIN_TRIGGERED: 4,
    // Used when a user selects the privet printer in a pair of duplicate
    // privet and cloud printers.
    PRIVET_DUPLICATE_SELECTED: 5,
    // Used when a user selects the cloud printer in a pair of duplicate
    // privet and cloud printers.
    CLOUD_DUPLICATE_SELECTED: 6
  };

  /**
   * Enumeration of buckets that a user can enter while using the Google Cloud
   * Print promotion.
   * @enum {number}
   */
  Metrics.GcpPromoBucket = {
    // Used when the Google Cloud Print pomotion (shown above the pdf preview
    // plugin) is shown to the user.
    SHOWN: 0,
    // Used when the user clicks the "Get started" link in the promotion shown
    // in CLOUDPRINT_BIG_PROMO_SHOWN.
    CLICKED: 1,
    // Used when the user dismisses the promotion shown in
    // CLOUDPRINT_BIG_PROMO_SHOWN.
    DISMISSED: 2
  };

  /**
   * Name of the C++ function to call to increment bucket counts.
   * @type {string}
   * @const
   * @private
   */
  Metrics.NATIVE_FUNCTION_NAME_ = 'reportUiEvent';

  Metrics.prototype = {
    /**
     * Increments the counter of a destination-search bucket.
     * @param {!Metrics.DestinationSearchBucket} bucket Bucket to increment.
     */
    incrementDestinationSearchBucket: function(bucket) {
      chrome.send(Metrics.NATIVE_FUNCTION_NAME_,
                  [Metrics.BucketGroup.DESTINATION_SEARCH, bucket]);
    },

    /**
     * Increments the counter of a gcp-promo bucket.
     * @param {!Metrics.GcpPromoBucket} bucket Bucket to increment.
     */
    incrementGcpPromoBucket: function(bucket) {
      chrome.send(Metrics.NATIVE_FUNCTION_NAME_,
                  [Metrics.BucketGroup.GCP_PROMO, bucket]);
    }
  };

  // Export
  return {
    Metrics: Metrics
  };
});