зеркало из https://github.com/mozilla/gecko-dev.git
Bug 813226 - Add ability to bypass policy acceptance; r=rnewman
This is needed to support background "always OK" data submission, such as ADU pings.
This commit is contained in:
Родитель
6d778b7eaf
Коммит
e2ec35f022
|
@ -10,6 +10,7 @@ pref("healthreport.logging.consoleLevel", "Warn");
|
|||
pref("healthreport.policy.currentDaySubmissionFailureCount", 0);
|
||||
pref("healthreport.policy.dataSubmissionEnabled", true);
|
||||
pref("healthreport.policy.dataSubmissionPolicyAccepted", false);
|
||||
pref("healthreport.policy.dataSubmissionPolicyBypassAcceptance", false);
|
||||
pref("healthreport.policy.dataSubmissionPolicyNotifiedTime", "0");
|
||||
pref("healthreport.policy.dataSubmissionPolicyResponseType", "");
|
||||
pref("healthreport.policy.dataSubmissionPolicyResponseTime", "0");
|
||||
|
|
|
@ -359,6 +359,16 @@ HealthReportPolicy.prototype = {
|
|||
OLDEST_ALLOWED_YEAR);
|
||||
},
|
||||
|
||||
/**
|
||||
* Short circuit policy checking and always assume acceptance.
|
||||
*
|
||||
* This shuld never be set by the user. Instead, it is a per-application or
|
||||
* per-deployment default pref.
|
||||
*/
|
||||
get dataSubmissionPolicyBypassAcceptance() {
|
||||
return this._prefs.get("dataSubmissionPolicyBypassAcceptance", false);
|
||||
},
|
||||
|
||||
/**
|
||||
* When the user was notified that data submission could occur.
|
||||
*
|
||||
|
@ -754,7 +764,7 @@ HealthReportPolicy.prototype = {
|
|||
}
|
||||
|
||||
// User has opted out of data submission.
|
||||
if (!this.dataSubmissionPolicyAccepted) {
|
||||
if (!this.dataSubmissionPolicyAccepted && !this.dataSubmissionPolicyBypassAcceptance) {
|
||||
this._log.debug("Data submission has been disabled per user request.");
|
||||
return;
|
||||
}
|
||||
|
@ -780,6 +790,10 @@ HealthReportPolicy.prototype = {
|
|||
* @return bool Whether user has responded to data policy.
|
||||
*/
|
||||
ensureNotifyResponse: function ensureNotifyResponse(now) {
|
||||
if (this.dataSubmissionPolicyBypassAcceptance) {
|
||||
return true;
|
||||
}
|
||||
|
||||
let notifyState = this.notifyState;
|
||||
|
||||
if (notifyState == this.STATE_NOTIFY_UNNOTIFIED) {
|
||||
|
|
|
@ -80,6 +80,10 @@ add_test(function test_prefs() {
|
|||
do_check_false(prefs.get("dataSubmissionPolicyAccepted", true));
|
||||
do_check_false(policy.dataSubmissionPolicyAccepted);
|
||||
|
||||
do_check_false(policy.dataSubmissionPolicyBypassAcceptance);
|
||||
prefs.set("dataSubmissionPolicyBypassAcceptance", true);
|
||||
do_check_true(policy.dataSubmissionPolicyBypassAcceptance);
|
||||
|
||||
policy.lastDataSubmissionRequestedDate = now;
|
||||
do_check_eq(prefs.get("lastDataSubmissionRequestedTime"), nowT);
|
||||
do_check_eq(policy.lastDataSubmissionRequestedDate.getTime(), nowT);
|
||||
|
@ -154,6 +158,19 @@ add_test(function test_initial_submission_notification() {
|
|||
run_next_test();
|
||||
});
|
||||
|
||||
add_test(function test_bypass_acceptance() {
|
||||
let [policy, prefs, listener] = getPolicy("bypass_acceptance");
|
||||
|
||||
prefs.set("dataSubmissionPolicyBypassAcceptance", true);
|
||||
do_check_false(policy.dataSubmissionPolicyAccepted);
|
||||
do_check_true(policy.dataSubmissionPolicyBypassAcceptance);
|
||||
defineNow(policy, new Date(policy.nextDataSubmissionDate.getTime()));
|
||||
policy.checkStateAndTrigger();
|
||||
do_check_eq(listener.requestDataUploadCount, 1);
|
||||
|
||||
run_next_test();
|
||||
});
|
||||
|
||||
add_test(function test_notification_implicit_acceptance() {
|
||||
let [policy, prefs, listener] = getPolicy("notification_implicit_acceptance");
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче