OLD | NEW |
(Empty) | |
| 1 // Copyright 2014 The ChromeOS IME Authors. All Rights Reserved. |
| 2 // limitations under the License. |
| 3 // See the License for the specific language governing permissions and |
| 4 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 5 // distributed under the License is distributed on an "AS-IS" BASIS, |
| 6 // Unless required by applicable law or agreed to in writing, software |
| 7 // |
| 8 // http://www.apache.org/licenses/LICENSE-2.0 |
| 9 // |
| 10 // You may obtain a copy of the License at |
| 11 // you may not use this file except in compliance with the License. |
| 12 // Licensed under the Apache License, Version 2.0 (the "License"); |
| 13 // |
| 14 goog.provide('i18n.input.chrome.inputview.Statistics'); |
| 15 |
| 16 |
| 17 |
| 18 /** |
| 19 * The statistics util class for input view. |
| 20 * |
| 21 * @constructor |
| 22 */ |
| 23 i18n.input.chrome.inputview.Statistics = function() { |
| 24 }; |
| 25 goog.addSingletonGetter(i18n.input.chrome.inputview.Statistics); |
| 26 |
| 27 |
| 28 /** |
| 29 * The current layout code. |
| 30 * |
| 31 * @type {string} |
| 32 * @private |
| 33 */ |
| 34 i18n.input.chrome.inputview.Statistics.prototype.layoutCode_ = ''; |
| 35 |
| 36 |
| 37 /** |
| 38 * Sets the current layout code, which will be a part of the metrics name. |
| 39 * |
| 40 * @param {string} layoutCode . |
| 41 */ |
| 42 i18n.input.chrome.inputview.Statistics.prototype.setCurrentLayout = function( |
| 43 layoutCode) { |
| 44 this.layoutCode_ = layoutCode; |
| 45 }; |
| 46 |
| 47 |
| 48 /** |
| 49 * Gets the target type based on the given source and target. |
| 50 * |
| 51 * @param {string} source . |
| 52 * @param {string} target . |
| 53 * @return {number} The target type number value. |
| 54 */ |
| 55 i18n.input.chrome.inputview.Statistics.prototype.getTargetType = function( |
| 56 source, target) { |
| 57 if (source == target) { |
| 58 return 0; |
| 59 } |
| 60 if (!source) { |
| 61 return 3; |
| 62 } |
| 63 if (target.length > source.length) { |
| 64 return 2; |
| 65 } |
| 66 return 1; |
| 67 }; |
| 68 |
| 69 |
| 70 /** |
| 71 * Records the metrics for each commit. |
| 72 * |
| 73 * @param {number} sourceLen The source length. |
| 74 * @param {number} targetLen The target length. |
| 75 * @param {number} targetIndex The target index. |
| 76 * @param {number} targetType The target type: |
| 77 * 0: Source; 1: Correction; 2: Completion; 3: Prediction. |
| 78 * @param {number} triggerType The trigger type: |
| 79 * 0: BySpace; 1: ByReset; 2: ByCandidate; 3: BySymbolOrNumber; |
| 80 * 4: ByDoubleSpaceToPeriod. |
| 81 */ |
| 82 i18n.input.chrome.inputview.Statistics.prototype.recordCommit = function( |
| 83 sourceLen, targetLen, targetIndex, targetType, triggerType) { |
| 84 if (!this.layoutCode_) { |
| 85 return; |
| 86 } |
| 87 this.recordCount_('Commit.SourceLength', sourceLen); |
| 88 this.recordCount_('Commit.TargetLength', targetLen); |
| 89 this.recordCount_('Commit.TargetIndex', targetIndex + 1); // 1-based index. |
| 90 this.recordCount_('Commit.TargetType', targetType); |
| 91 this.recordCount_('Commit.TriggerType', triggerType); |
| 92 }; |
| 93 |
| 94 |
| 95 /** |
| 96 * Records the VK show time for current keyboard layout. |
| 97 * |
| 98 * @param {number} showTimeSeconds The show time in seconds. |
| 99 */ |
| 100 i18n.input.chrome.inputview.Statistics.prototype.recordShowTime = function( |
| 101 showTimeSeconds) { |
| 102 this.recordCount_('Layout.ShowTime', showTimeSeconds); |
| 103 }; |
| 104 |
| 105 |
| 106 /** |
| 107 * Records the layout switching action. |
| 108 * |
| 109 * @param {string} layoutCode The layout code to be switched to. |
| 110 */ |
| 111 i18n.input.chrome.inputview.Statistics.prototype.recordSwitch = function( |
| 112 layoutCode) { |
| 113 this.recordCount_('Layout.SwitchTo.' + layoutCode, 1); |
| 114 }; |
| 115 |
| 116 |
| 117 /** |
| 118 * Records the special key action, which is function key like BACKSPACE, ENTER, |
| 119 * etc.. |
| 120 * |
| 121 * @param {string} keyCode . |
| 122 * @param {boolean} isComposing Whether the key is pressed with composing mode. |
| 123 */ |
| 124 i18n.input.chrome.inputview.Statistics.prototype.recordSpecialKey = function( |
| 125 keyCode, isComposing) { |
| 126 var name = 'Key.' + isComposing ? 'Composing.' : '' + keyCode; |
| 127 this.recordCount_(name, 1); |
| 128 }; |
| 129 |
| 130 |
| 131 /** |
| 132 * Records count value to chrome UMA framework. |
| 133 * |
| 134 * @param {string} name . |
| 135 * @param {number} count . |
| 136 * @private |
| 137 */ |
| 138 i18n.input.chrome.inputview.Statistics.prototype.recordCount_ = function( |
| 139 name, count) { |
| 140 if (!this.layoutCode_) { |
| 141 return; |
| 142 } |
| 143 if (chrome.metricsPrivate && chrome.metricsPrivate.recordCount) { |
| 144 name = 'InputView.' + name + '.' + this.layoutCode_; |
| 145 chrome.metricsPrivate.recordCount(name, count); |
| 146 } |
| 147 }; |
OLD | NEW |