mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-08 16:58:38 +09:00
Partially disentangle FxA from Weave so Pale Moon Sync can work.
This commit is contained in:
parent
9879cbdd88
commit
8d899f957c
6 changed files with 149 additions and 4 deletions
|
|
@ -3,7 +3,8 @@
|
|||
# Thus we restrict it to these apps:
|
||||
#
|
||||
# b2g: {3c2e2abc-06d4-11e1-ac3b-374f68613e61}
|
||||
# browser: {ec8030f7-c20a-464f-9b0e-13a3a9e97384}
|
||||
# basilisk: {ec8030f7-c20a-464f-9b0e-13a3a9e97384}
|
||||
# pale moon: {8de7fcbb-c55c-4fbe-bfc5-fc555c87dbc4}
|
||||
# mobile/android: {aa3c5121-dab2-40e2-81ca-7ea25febc110}
|
||||
# mobile/xul: {a23983c0-fd0e-11dc-95ff-0800200c9a66}
|
||||
# suite (comm): {92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}
|
||||
|
|
@ -12,7 +13,7 @@
|
|||
# Weave.js
|
||||
component {74b89fb0-f200-4ae8-a3ec-dd164117f6de} Weave.js
|
||||
contract @mozilla.org/weave/service;1 {74b89fb0-f200-4ae8-a3ec-dd164117f6de}
|
||||
category app-startup WeaveService service,@mozilla.org/weave/service;1 application={3c2e2abc-06d4-11e1-ac3b-374f68613e61} application={ec8030f7-c20a-464f-9b0e-13a3a9e97384} application={aa3c5121-dab2-40e2-81ca-7ea25febc110} application={a23983c0-fd0e-11dc-95ff-0800200c9a66} application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} application={99bceaaa-e3c6-48c1-b981-ef9b46b67d60} application={d1bfe7d9-c01e-4237-998b-7b5f960a4314}
|
||||
category app-startup WeaveService service,@mozilla.org/weave/service;1 application={3c2e2abc-06d4-11e1-ac3b-374f68613e61} application={ec8030f7-c20a-464f-9b0e-13a3a9e97384} application={8de7fcbb-c55c-4fbe-bfc5-fc555c87dbc4} application={aa3c5121-dab2-40e2-81ca-7ea25febc110} application={a23983c0-fd0e-11dc-95ff-0800200c9a66} application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} application={99bceaaa-e3c6-48c1-b981-ef9b46b67d60} application={d1bfe7d9-c01e-4237-998b-7b5f960a4314}
|
||||
component {d28f8a0b-95da-48f4-b712-caf37097be41} Weave.js
|
||||
contract @mozilla.org/network/protocol/about;1?what=sync-log {d28f8a0b-95da-48f4-b712-caf37097be41}
|
||||
|
||||
|
|
|
|||
|
|
@ -72,10 +72,12 @@ WeaveService.prototype = {
|
|||
Ci.nsISupportsWeakReference]),
|
||||
|
||||
ensureLoaded: function () {
|
||||
#ifndef MC_PALEMOON
|
||||
// If we are loaded and not using FxA, load the migration module.
|
||||
if (!this.fxAccountsEnabled) {
|
||||
Cu.import("resource://services-sync/FxaMigrator.jsm");
|
||||
}
|
||||
#endif
|
||||
|
||||
Components.utils.import("resource://services-sync/main.js");
|
||||
|
||||
|
|
@ -103,6 +105,9 @@ WeaveService.prototype = {
|
|||
* @return bool
|
||||
*/
|
||||
get fxAccountsEnabled() {
|
||||
#ifdef MC_PALEMOON
|
||||
return false;
|
||||
#else
|
||||
try {
|
||||
// Old sync guarantees '@' will never appear in the username while FxA
|
||||
// uses the FxA email address - so '@' is the flag we use.
|
||||
|
|
@ -111,6 +116,7 @@ WeaveService.prototype = {
|
|||
} catch (_) {
|
||||
return true; // No username == only allow FxA to be configured.
|
||||
}
|
||||
#endif
|
||||
},
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ this.Weave = {};
|
|||
Components.utils.import("resource://services-sync/constants.js", Weave);
|
||||
var lazies = {
|
||||
"jpakeclient.js": ["JPAKEClient", "SendCredentialsController"],
|
||||
"notifications.js": ["Notifications", "Notification", "NotificationButton"],
|
||||
"service.js": ["Service"],
|
||||
"status.js": ["Status"],
|
||||
"util.js": ['Utils', 'Svc']
|
||||
|
|
|
|||
131
services/sync/modules/notifications.js
Normal file
131
services/sync/modules/notifications.js
Normal file
|
|
@ -0,0 +1,131 @@
|
|||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
this.EXPORTED_SYMBOLS = ["Notifications", "Notification", "NotificationButton"];
|
||||
|
||||
var Cc = Components.classes;
|
||||
var Ci = Components.interfaces;
|
||||
var Cr = Components.results;
|
||||
var Cu = Components.utils;
|
||||
|
||||
Cu.import("resource://services-common/observers.js");
|
||||
Cu.import("resource://gre/modules/Log.jsm");
|
||||
Cu.import("resource://services-sync/util.js");
|
||||
|
||||
this.Notifications = {
|
||||
// Match the referenced values in toolkit/content/widgets/notification.xml.
|
||||
get PRIORITY_INFO() { return 1; }, // PRIORITY_INFO_LOW
|
||||
get PRIORITY_WARNING() { return 4; }, // PRIORITY_WARNING_LOW
|
||||
get PRIORITY_ERROR() { return 7; }, // PRIORITY_CRITICAL_LOW
|
||||
|
||||
// FIXME: instead of making this public, dress the Notifications object
|
||||
// to behave like an iterator (using generators?) and have callers access
|
||||
// this array through the Notifications object.
|
||||
notifications: [],
|
||||
|
||||
_observers: [],
|
||||
|
||||
// XXX Should we have a helper method for adding a simple notification?
|
||||
// I.e. something like |function notify(title, description, priority)|.
|
||||
|
||||
add: function Notifications_add(notification) {
|
||||
this.notifications.push(notification);
|
||||
Observers.notify("weave:notification:added", notification, null);
|
||||
},
|
||||
|
||||
remove: function Notifications_remove(notification) {
|
||||
let index = this.notifications.indexOf(notification);
|
||||
|
||||
if (index != -1) {
|
||||
this.notifications.splice(index, 1);
|
||||
Observers.notify("weave:notification:removed", notification, null);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Replace an existing notification.
|
||||
*/
|
||||
replace: function Notifications_replace(oldNotification, newNotification) {
|
||||
let index = this.notifications.indexOf(oldNotification);
|
||||
|
||||
if (index != -1)
|
||||
this.notifications.splice(index, 1, newNotification);
|
||||
else {
|
||||
this.notifications.push(newNotification);
|
||||
// XXX Should we throw because we didn't find the existing notification?
|
||||
// XXX Should we notify observers about weave:notification:added?
|
||||
}
|
||||
|
||||
// XXX Should we notify observers about weave:notification:replaced?
|
||||
},
|
||||
|
||||
/**
|
||||
* Remove all notifications that match a title. If no title is provided, all
|
||||
* notifications are removed.
|
||||
*
|
||||
* @param title [optional]
|
||||
* Title of notifications to remove; falsy value means remove all
|
||||
*/
|
||||
removeAll: function Notifications_removeAll(title) {
|
||||
this.notifications.filter(old => (old.title == title || !title)).
|
||||
forEach(old => { this.remove(old); }, this);
|
||||
},
|
||||
|
||||
// replaces all existing notifications with the same title as the new one
|
||||
replaceTitle: function Notifications_replaceTitle(notification) {
|
||||
this.removeAll(notification.title);
|
||||
this.add(notification);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* A basic notification. Subclass this to create more complex notifications.
|
||||
*/
|
||||
this.Notification =
|
||||
function Notification(title, description, iconURL, priority, buttons, link) {
|
||||
this.title = title;
|
||||
this.description = description;
|
||||
|
||||
if (iconURL)
|
||||
this.iconURL = iconURL;
|
||||
|
||||
if (priority)
|
||||
this.priority = priority;
|
||||
|
||||
if (buttons)
|
||||
this.buttons = buttons;
|
||||
|
||||
if (link)
|
||||
this.link = link;
|
||||
}
|
||||
|
||||
// We set each prototype property individually instead of redefining
|
||||
// the entire prototype to avoid blowing away existing properties
|
||||
// of the prototype like the the "constructor" property, which we use
|
||||
// to bind notification objects to their XBL representations.
|
||||
Notification.prototype.priority = Notifications.PRIORITY_INFO;
|
||||
Notification.prototype.iconURL = null;
|
||||
Notification.prototype.buttons = [];
|
||||
|
||||
/**
|
||||
* A button to display in a notification.
|
||||
*/
|
||||
this.NotificationButton =
|
||||
function NotificationButton(label, accessKey, callback) {
|
||||
function callbackWrapper() {
|
||||
try {
|
||||
callback.apply(this, arguments);
|
||||
} catch (e) {
|
||||
let logger = Log.repository.getLogger("Sync.Notifications");
|
||||
logger.error("An exception occurred: " + Utils.exceptionStr(e));
|
||||
logger.info(Utils.stackTrace(e));
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
this.label = label;
|
||||
this.accessKey = accessKey;
|
||||
this.callback = callbackWrapper;
|
||||
}
|
||||
|
|
@ -1067,6 +1067,7 @@ Sync11Service.prototype = {
|
|||
// Note: returns false if we failed for a reason other than the server not yet
|
||||
// supporting the api.
|
||||
_fetchServerConfiguration() {
|
||||
#if 0 // FSyncMS doesn't support this and it will break auth if left enabled!
|
||||
// This is similar to _fetchInfo, but with different error handling.
|
||||
|
||||
let infoURL = this.userBaseURL + "info/configuration";
|
||||
|
|
@ -1092,6 +1093,7 @@ Sync11Service.prototype = {
|
|||
this.serverConfiguration = configResponse.obj;
|
||||
}
|
||||
this._log.trace("info/configuration for this server", this.serverConfiguration);
|
||||
#endif
|
||||
return true;
|
||||
},
|
||||
|
||||
|
|
|
|||
|
|
@ -13,6 +13,9 @@ XPCSHELL_TESTS_MANIFESTS += ['tests/unit/xpcshell.ini']
|
|||
|
||||
EXTRA_COMPONENTS += [
|
||||
'SyncComponents.manifest',
|
||||
]
|
||||
|
||||
EXTRA_PP_COMPONENTS += [
|
||||
'Weave.js',
|
||||
]
|
||||
|
||||
|
|
@ -28,11 +31,11 @@ EXTRA_JS_MODULES['services-sync'] += [
|
|||
'modules/jpakeclient.js',
|
||||
'modules/keys.js',
|
||||
'modules/main.js',
|
||||
'modules/notifications.js',
|
||||
'modules/policies.js',
|
||||
'modules/record.js',
|
||||
'modules/resource.js',
|
||||
'modules/rest.js',
|
||||
'modules/service.js',
|
||||
'modules/status.js',
|
||||
'modules/SyncedTabs.jsm',
|
||||
'modules/telemetry.js',
|
||||
|
|
@ -42,10 +45,11 @@ EXTRA_JS_MODULES['services-sync'] += [
|
|||
|
||||
EXTRA_PP_JS_MODULES['services-sync'] += [
|
||||
'modules/constants.js',
|
||||
'modules/service.js',
|
||||
]
|
||||
|
||||
# Definitions used by constants.js
|
||||
DEFINES['weave_version'] = '1.54.0'
|
||||
DEFINES['weave_version'] = '1.54.1'
|
||||
DEFINES['weave_id'] = '{340c2bbc-ce74-4362-90b5-7c26312808ef}'
|
||||
|
||||
EXTRA_JS_MODULES['services-sync'].engines += [
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue