| Index: chrome/browser/resources/hotword/nacl_manager.js
|
| diff --git a/chrome/browser/resources/hotword/nacl_manager.js b/chrome/browser/resources/hotword/nacl_manager.js
|
| index 79c1f3f1104a92f1c755ed883fb7140f1c36403f..60377f646a92cc75b51388c1cc502fd2d3c592f2 100644
|
| --- a/chrome/browser/resources/hotword/nacl_manager.js
|
| +++ b/chrome/browser/resources/hotword/nacl_manager.js
|
| @@ -77,6 +77,8 @@ NaClManager.ManagerState_ = {
|
| };
|
| var ManagerState_ = NaClManager.ManagerState_;
|
| var Error_ = hotword.constants.Error;
|
| +var UmaNaClMessageTimeout_ = hotword.constants.UmaNaClMessageTimeout;
|
| +var UmaNaClPluginError_ = hotword.constants.UmaNaClPluginError;
|
|
|
| NaClManager.prototype.__proto__ = cr.EventTarget.prototype;
|
|
|
| @@ -92,6 +94,18 @@ NaClManager.prototype.handleError_ = function(error) {
|
| };
|
|
|
| /**
|
| + * Record a plugin error to UMA.
|
| + * @param {!hotword.constants.UmaNaClPluginError} error
|
| + * @private
|
| + */
|
| +NaClManager.prototype.logPluginError_ = function(error) {
|
| + hotword.metrics.recordEnum(
|
| + hotword.constants.UmaMetrics.NACL_PLUGIN_ERROR,
|
| + error,
|
| + UmaNaClPluginError_.MAX);
|
| +};
|
| +
|
| +/**
|
| * @return {boolean} True if the recognizer is in a running state.
|
| */
|
| NaClManager.prototype.isRunning = function() {
|
| @@ -250,11 +264,15 @@ NaClManager.prototype.initialize = function(naclArch, stream) {
|
| false);
|
|
|
| plugin.addEventListener('crash',
|
| - this.handleError_.bind(this, Error_.NACL_CRASH),
|
| + function() {
|
| + this.handleError_(Error_.NACL_CRASH);
|
| + this.logPluginError_(UmaNaClPluginError_.CRASH);
|
| + }.bind(this),
|
| false);
|
| return true;
|
| }
|
| this.recognizerState_ = ManagerState_.ERROR;
|
| + this.logPluginError_(UmaNaClPluginError_.NO_MODULE_FOUND);
|
| return false;
|
| };
|
|
|
| @@ -297,6 +315,31 @@ NaClManager.prototype.waitForMessage_ = function(timeout, message) {
|
| function() {
|
| this.recognizerState_ = ManagerState_.ERROR;
|
| this.handleError_(Error_.TIMEOUT);
|
| + this.logPluginError_(UmaNaClPluginError_.MESSAGE_TIMEOUT);
|
| + switch (this.expectingMessage_) {
|
| + case hotword.constants.NaClPlugin.REQUEST_MODEL:
|
| + var metricValue = UmaNaClMessageTimeout_.REQUEST_MODEL;
|
| + break;
|
| + case hotword.constants.NaClPlugin.MODEL_LOADED:
|
| + var metricValue = UmaNaClMessageTimeout_.MODEL_LOADED;
|
| + break;
|
| + case hotword.constants.NaClPlugin.READY_FOR_AUDIO:
|
| + var metricValue = UmaNaClMessageTimeout_.READY_FOR_AUDIO;
|
| + break;
|
| + case hotword.constants.NaClPlugin.STOPPED:
|
| + var metricValue = UmaNaClMessageTimeout_.STOPPED;
|
| + break;
|
| + case hotword.constants.NaClPlugin.HOTWORD_DETECTED:
|
| + var metricValue = UmaNaClMessageTimeout_.HOTWORD_DETECTED;
|
| + break;
|
| + case hotword.constants.NaClPlugin.MS_CONFIGURED:
|
| + var metricValue = UmaNaClMessageTimeout_.MS_CONFIGURED;
|
| + break;
|
| + }
|
| + hotword.metrics.recordEnum(
|
| + hotword.constants.UmaMetrics.NACL_MESSAGE_TIMEOUT,
|
| + metricValue,
|
| + UmaNaClMessageTimeout_.MAX);
|
| }.bind(this), timeout);
|
| this.expectingMessage_ = message;
|
| };
|
|
|