mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
3ec162d8ae
The data reporting notification was over-complicated. It wasn't displayed for +24hr after first run and it had a weird, non-required policy around what constituted acceptance of the policy. The notification is now shown shortly after first startup. The logic around "notification accepted" has been greatly simplified by rolling it into "notification shown." Where we once were checking whether the notification has been "accepted," we now check whether it has been displayed. The overly complicated logic around the implicit acceptance of the policy has also been removed. The end result is the code for managing the state of the notification is greatly simplified.
95 lines
2.8 KiB
JavaScript
95 lines
2.8 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
"use strict";
|
|
|
|
function runPaneTest(fn) {
|
|
function observer(win, topic, data) {
|
|
Services.obs.removeObserver(observer, "advanced-pane-loaded");
|
|
|
|
let policy = Components.classes["@mozilla.org/datareporting/service;1"]
|
|
.getService(Components.interfaces.nsISupports)
|
|
.wrappedJSObject
|
|
.policy;
|
|
ok(policy, "Policy object defined");
|
|
|
|
resetPreferences();
|
|
|
|
fn(win, policy);
|
|
}
|
|
|
|
Services.obs.addObserver(observer, "advanced-pane-loaded", false);
|
|
openDialog("chrome://browser/content/preferences/preferences.xul", "Preferences",
|
|
"chrome,titlebar,toolbar,centerscreen,dialog=no", "paneAdvanced");
|
|
}
|
|
|
|
let logDetails = {
|
|
dumpAppender: null,
|
|
rootLogger: null,
|
|
};
|
|
|
|
function test() {
|
|
waitForExplicitFinish();
|
|
resetPreferences();
|
|
registerCleanupFunction(resetPreferences);
|
|
|
|
let ld = logDetails;
|
|
registerCleanupFunction(() => {
|
|
ld.rootLogger.removeAppender(ld.dumpAppender);
|
|
delete ld.dumpAppender;
|
|
delete ld.rootLogger;
|
|
});
|
|
|
|
let ns = {};
|
|
Cu.import("resource://gre/modules/Log.jsm", ns);
|
|
ld.rootLogger = ns.Log.repository.rootLogger;
|
|
ld.dumpAppender = new ns.Log.DumpAppender();
|
|
ld.dumpAppender.level = ns.Log.Level.All;
|
|
ld.rootLogger.addAppender(ld.dumpAppender);
|
|
|
|
Services.prefs.lockPref("datareporting.healthreport.uploadEnabled");
|
|
runPaneTest(testUploadDisabled);
|
|
}
|
|
|
|
function testUploadDisabled(win, policy) {
|
|
ok(policy.healthReportUploadLocked, "Upload enabled flag is locked.");
|
|
let checkbox = win.document.getElementById("submitHealthReportBox");
|
|
is(checkbox.getAttribute("disabled"), "true", "Checkbox is disabled if upload setting is locked.");
|
|
policy._healthReportPrefs.unlock("uploadEnabled");
|
|
|
|
win.close();
|
|
runPaneTest(testBasic);
|
|
}
|
|
|
|
function testBasic(win, policy) {
|
|
let doc = win.document;
|
|
|
|
resetPreferences();
|
|
|
|
is(policy.healthReportUploadEnabled, true, "Health Report upload enabled on app first run.");
|
|
|
|
let checkbox = doc.getElementById("submitHealthReportBox");
|
|
ok(checkbox);
|
|
is(checkbox.checked, true, "Health Report checkbox is checked on app first run.");
|
|
|
|
checkbox.checked = false;
|
|
checkbox.doCommand();
|
|
is(policy.healthReportUploadEnabled, false, "Unchecking checkbox opts out of FHR upload.");
|
|
|
|
checkbox.checked = true;
|
|
checkbox.doCommand();
|
|
is(policy.healthReportUploadEnabled, true, "Checking checkbox allows FHR upload.");
|
|
|
|
win.close();
|
|
finish();
|
|
}
|
|
|
|
function resetPreferences() {
|
|
let service = Cc["@mozilla.org/datareporting/service;1"]
|
|
.getService(Ci.nsISupports)
|
|
.wrappedJSObject;
|
|
service.policy._prefs.resetBranch("datareporting.policy.");
|
|
service.policy.dataSubmissionPolicyBypassNotification = true;
|
|
}
|
|
|