Bug 827187 - Report default browser flag in Firefox Health Report; r=rnewman

This commit is contained in:
Gregory Szorc 2013-01-06 18:23:16 -08:00
parent dcb723b7ae
commit 31972cbeb6
2 changed files with 41 additions and 0 deletions

View File

@ -78,6 +78,9 @@ AppInfoMeasurement.prototype = Object.freeze({
for (let field of self.LAST_TEXT_FIELDS) {
yield self.registerStorageField(field, self.storage.FIELD_LAST_TEXT);
}
yield self.registerStorageField("isDefaultBrowser",
self.storage.FIELD_DAILY_LAST_NUMERIC);
});
},
});
@ -220,6 +223,34 @@ AppInfoProvider.prototype = Object.freeze({
this._log.warn("Could not obtain application locale: " +
CommonUtils.exceptionStr(ex));
}
// FUTURE this should be retrieved periodically or at upload time.
yield this._recordDefaultBrowser(m);
},
_recordDefaultBrowser: function (m) {
let shellService;
try {
shellService = Cc["@mozilla.org/browser/shell-service;1"]
.getService(Ci.nsIShellService);
} catch (ex) {
this._log.warn("Could not obtain shell service: " +
CommonUtils.exceptionStr(ex));
}
let isDefault = -1;
if (shellService) {
try {
// This uses the same set of flags used by the pref pane.
isDefault = shellService.isDefaultBrowser(false, true) ? 1 : 0;
} catch (ex) {
this._log.warn("Could not determine if default browser: " +
CommonUtils.exceptionStr(ex));
}
}
return m.setDailyLastNumeric("isDefaultBrowser", isDefault);
},
});

View File

@ -26,6 +26,7 @@ add_task(function test_collect_smoketest() {
let provider = new AppInfoProvider();
yield provider.init(storage);
let now = new Date();
yield provider.collectConstantData();
let m = provider.getMeasurement("appinfo", 1);
@ -43,6 +44,15 @@ add_task(function test_collect_smoketest() {
do_check_eq(d.os, "XPCShell");
do_check_eq(d.xpcomabi, "noarch-spidermonkey");
do_check_eq(data.days.size, 1);
do_check_true(data.days.hasDay(now));
let day = data.days.getDay(now);
do_check_eq(day.size, 1);
do_check_true(day.has("isDefaultBrowser"));
// Underlying shell service is not available in xpcshell tests.
do_check_eq(day.get("isDefaultBrowser"), -1);
yield provider.shutdown();
yield storage.close();
});