mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-10 20:05:49 +00:00
Bug 1131414 (part 2) - add the reading-list engine to Sync prefs. r=adw
This commit is contained in:
parent
7fd14d5025
commit
d429535c22
@ -1879,5 +1879,7 @@ pref("dom.ipc.reportProcessHangs", true);
|
||||
pref("reader.parse-on-load.enabled", false);
|
||||
#endif
|
||||
|
||||
// Disable ReadingList by default.
|
||||
// Disable ReadingList browser UI by default.
|
||||
pref("browser.readinglist.enabled", false);
|
||||
// Enable the readinglist engine by default.
|
||||
pref("readinglist.scheduler.enabled", true);
|
||||
|
@ -4,8 +4,31 @@
|
||||
|
||||
"use strict";
|
||||
|
||||
Components.utils.import("resource://gre/modules/Services.jsm");
|
||||
|
||||
addEventListener("load", function () {
|
||||
// unhide the reading-list engine if readinglist is enabled (note this
|
||||
// dialog is only used with FxA sync, so no special action is needed
|
||||
// for legacy sync.)
|
||||
if (Services.prefs.getBoolPref("browser.readinglist.enabled")) {
|
||||
document.getElementById("readinglist-engine").removeAttribute("hidden");
|
||||
}
|
||||
});
|
||||
|
||||
addEventListener("dialogaccept", function () {
|
||||
let pane = document.getElementById("sync-customize-pane");
|
||||
// First determine what the preference for the "global" sync enabled pref
|
||||
// should be based on the engines selected.
|
||||
let prefElts = pane.querySelectorAll("preferences > preference");
|
||||
let syncEnabled = false;
|
||||
for (let elt of prefElts) {
|
||||
if (elt.name.startsWith("services.sync.") && elt.value) {
|
||||
syncEnabled = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
Services.prefs.setBoolPref("services.sync.enabled", syncEnabled);
|
||||
// and write the individual prefs.
|
||||
pane.writePreferences(true);
|
||||
window.arguments[0].accepted = true;
|
||||
});
|
||||
|
@ -27,6 +27,8 @@
|
||||
<preference id="engine.passwords" name="services.sync.engine.passwords" type="bool"/>
|
||||
<preference id="engine.addons" name="services.sync.engine.addons" type="bool"/>
|
||||
<preference id="engine.prefs" name="services.sync.engine.prefs" type="bool"/>
|
||||
<!-- non Sync-Engine engines -->
|
||||
<preference id="engine.readinglist" name="readinglist.scheduler.enabled" type="bool"/>
|
||||
</preferences>
|
||||
|
||||
<label id="sync-customize-title" value="&syncCustomize.title;"/>
|
||||
@ -51,6 +53,11 @@
|
||||
<checkbox label="&engine.history.label;"
|
||||
accesskey="&engine.history.accesskey;"
|
||||
preference="engine.history"/>
|
||||
<checkbox id="readinglist-engine"
|
||||
label="&engine.readinglist.label;"
|
||||
accesskey="&engine.readinglist.accesskey;"
|
||||
preference="engine.readinglist"
|
||||
hidden="true"/>
|
||||
<checkbox label="&engine.addons.label;"
|
||||
accesskey="&engine.addons.accesskey;"
|
||||
preference="engine.addons"/>
|
||||
|
@ -237,6 +237,11 @@ let gSyncPane = {
|
||||
// service.fxAccountsEnabled is false iff sync is already configured for
|
||||
// the legacy provider.
|
||||
if (service.fxAccountsEnabled) {
|
||||
// unhide the reading-list engine if readinglist is enabled (note we do
|
||||
// it here as it must remain disabled for legacy sync users)
|
||||
if (Services.prefs.getBoolPref("browser.readinglist.enabled")) {
|
||||
document.getElementById("readinglist-engine").removeAttribute("hidden");
|
||||
}
|
||||
// determine the fxa status...
|
||||
this.page = PAGE_PLEASE_WAIT;
|
||||
fxAccounts.getSignedInUser().then(data => {
|
||||
@ -372,6 +377,19 @@ let gSyncPane = {
|
||||
document.getElementById("sync-migration-deck").selectedIndex = selIndex;
|
||||
},
|
||||
|
||||
// Called whenever one of the sync engine preferences is changed.
|
||||
onPreferenceChanged: function() {
|
||||
let prefElts = document.querySelectorAll("#syncEnginePrefs > preference");
|
||||
let syncEnabled = false;
|
||||
for (let elt of prefElts) {
|
||||
if (elt.name.startsWith("services.sync.") && elt.value) {
|
||||
syncEnabled = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
Services.prefs.setBoolPref("services.sync.enabled", syncEnabled);
|
||||
},
|
||||
|
||||
startOver: function (showDialog) {
|
||||
if (showDialog) {
|
||||
let flags = Services.prompt.BUTTON_POS_0 * Services.prompt.BUTTON_TITLE_IS_STRING +
|
||||
|
@ -4,7 +4,8 @@
|
||||
|
||||
<!-- Sync panel -->
|
||||
|
||||
<preferences hidden="true" data-category="paneSync">
|
||||
<preferences id="syncEnginePrefs" hidden="true" data-category="paneSync"
|
||||
onchange="gSyncPane.onPreferenceChanged();">
|
||||
<preference id="engine.addons"
|
||||
name="services.sync.engine.addons"
|
||||
type="bool"/>
|
||||
@ -23,6 +24,10 @@
|
||||
<preference id="engine.passwords"
|
||||
name="services.sync.engine.passwords"
|
||||
type="bool"/>
|
||||
<!-- non Sync-Engine engines -->
|
||||
<preference id="engine.readinglist"
|
||||
name="readinglist.scheduler.enabled"
|
||||
type="bool"/>
|
||||
</preferences>
|
||||
|
||||
<script type="application/javascript"
|
||||
@ -290,6 +295,11 @@
|
||||
<checkbox label="&engine.history.label;"
|
||||
accesskey="&engine.history.accesskey;"
|
||||
preference="engine.history"/>
|
||||
<checkbox id="readinglist-engine"
|
||||
label="&engine.readinglist.label;"
|
||||
accesskey="&engine.readinglist.accesskey;"
|
||||
preference="engine.readinglist"
|
||||
hidden="true"/>
|
||||
<checkbox label="&engine.addons.label;"
|
||||
accesskey="&engine.addons.accesskey;"
|
||||
preference="engine.addons"/>
|
||||
|
@ -54,6 +54,26 @@ let gSyncPane = {
|
||||
},
|
||||
|
||||
init: function () {
|
||||
// We use a preference observer to notice changes to the Sync engines
|
||||
// enabled state - other techniques are problematic due to the window
|
||||
// being instant-apply on Mac etc but modal on Windows.
|
||||
let prefObserver = () => {
|
||||
// If all our Sync engines are disabled we flip the "master" Sync-enabled pref.
|
||||
let prefElts = document.querySelectorAll("#syncEnginePrefs > preference");
|
||||
let syncEnabled = false;
|
||||
for (let elt of prefElts) {
|
||||
if (elt.name.startsWith("services.sync.") && elt.value) {
|
||||
syncEnabled = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
Services.prefs.setBoolPref("services.sync.enabled", syncEnabled);
|
||||
}
|
||||
Services.prefs.addObserver("services.sync.engine.", prefObserver, false);
|
||||
window.addEventListener("unload", () => {
|
||||
Services.prefs.removeObserver("services.sync.engine.", prefObserver);
|
||||
}, false);
|
||||
|
||||
// If the Service hasn't finished initializing, wait for it.
|
||||
let xps = Components.classes["@mozilla.org/weave/service;1"]
|
||||
.getService(Components.interfaces.nsISupports)
|
||||
@ -136,6 +156,11 @@ let gSyncPane = {
|
||||
// service.fxAccountsEnabled is false iff sync is already configured for
|
||||
// the legacy provider.
|
||||
if (service.fxAccountsEnabled) {
|
||||
// unhide the reading-list engine if readinglist is enabled (note we do
|
||||
// it here as it must remain disabled for legacy sync users)
|
||||
if (Services.prefs.getBoolPref("browser.readinglist.enabled")) {
|
||||
document.getElementById("readinglist-engine").removeAttribute("hidden");
|
||||
}
|
||||
// determine the fxa status...
|
||||
this.page = PAGE_PLEASE_WAIT;
|
||||
fxAccounts.getSignedInUser().then(data => {
|
||||
|
@ -21,13 +21,15 @@
|
||||
helpTopic="prefs-weave"
|
||||
onpaneload="gSyncPane.init()">
|
||||
|
||||
<preferences>
|
||||
<preferences id="syncEnginePrefs">
|
||||
<preference id="engine.addons" name="services.sync.engine.addons" type="bool"/>
|
||||
<preference id="engine.bookmarks" name="services.sync.engine.bookmarks" type="bool"/>
|
||||
<preference id="engine.history" name="services.sync.engine.history" type="bool"/>
|
||||
<preference id="engine.tabs" name="services.sync.engine.tabs" type="bool"/>
|
||||
<preference id="engine.prefs" name="services.sync.engine.prefs" type="bool"/>
|
||||
<preference id="engine.passwords" name="services.sync.engine.passwords" type="bool"/>
|
||||
<!-- non Sync-Engine engines -->
|
||||
<preference id="engine.readinglist" name="readinglist.scheduler.enabled" type="bool"/>
|
||||
</preferences>
|
||||
|
||||
|
||||
@ -285,21 +287,33 @@
|
||||
<vbox>
|
||||
<checkbox label="&engine.tabs.label;"
|
||||
accesskey="&engine.tabs.accesskey;"
|
||||
onsynctopreference="gSyncPane.onPreferenceChanged();"
|
||||
preference="engine.tabs"/>
|
||||
<checkbox label="&engine.bookmarks.label;"
|
||||
accesskey="&engine.bookmarks.accesskey;"
|
||||
onsynctopreference="gSyncPane.onPreferenceChanged();"
|
||||
preference="engine.bookmarks"/>
|
||||
<checkbox label="&engine.passwords.label;"
|
||||
accesskey="&engine.passwords.accesskey;"
|
||||
onsynctopreference="gSyncPane.onPreferenceChanged();"
|
||||
preference="engine.passwords"/>
|
||||
<checkbox label="&engine.history.label;"
|
||||
accesskey="&engine.history.accesskey;"
|
||||
onsynctopreference="gSyncPane.onPreferenceChanged(this);"
|
||||
preference="engine.history"/>
|
||||
<!-- onpreferencechanged not needed for the readinglist engine -->
|
||||
<checkbox id="readinglist-engine"
|
||||
label="&engine.readinglist.label;"
|
||||
accesskey="&engine.readinglist.accesskey;"
|
||||
preference="engine.readinglist"
|
||||
hidden="true"/>
|
||||
<checkbox label="&engine.addons.label;"
|
||||
accesskey="&engine.addons.accesskey;"
|
||||
onsynctopreference="gSyncPane.onPreferenceChanged();"
|
||||
preference="engine.addons"/>
|
||||
<checkbox label="&engine.prefs.label;"
|
||||
accesskey="&engine.prefs.accesskey;"
|
||||
onsynctopreference="gSyncPane.onPreferenceChanged();"
|
||||
preference="engine.prefs"/>
|
||||
</vbox>
|
||||
<spacer/>
|
||||
|
@ -172,6 +172,10 @@ InternalScheduler.prototype = {
|
||||
|
||||
// canSync indicates if we can currently sync.
|
||||
_canSync(ignoreBlockingErrors = false) {
|
||||
if (!prefs.get("enabled")) {
|
||||
this.log.info("canSync=false - syncing is disabled");
|
||||
return false;
|
||||
}
|
||||
if (Services.io.offline) {
|
||||
this.log.info("canSync=false - we are offline");
|
||||
return false;
|
||||
|
Loading…
Reference in New Issue
Block a user