mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-09 17:31:47 +09:00
parent
51025a5a81
commit
fe9637c0f8
6 changed files with 0 additions and 275 deletions
|
|
@ -4,8 +4,6 @@
|
|||
|
||||
var gFxAccounts = {
|
||||
|
||||
SYNC_MIGRATION_NOTIFICATION_TITLE: "fxa-migration",
|
||||
|
||||
_initialized: false,
|
||||
_inCustomizationMode: false,
|
||||
_cachedProfile: null,
|
||||
|
|
@ -26,7 +24,6 @@ var gFxAccounts = {
|
|||
"weave:service:setup-complete",
|
||||
"weave:service:sync:error",
|
||||
"weave:ui:login:error",
|
||||
"fxa-migration:state-changed",
|
||||
this.FxAccountsCommon.ONLOGIN_NOTIFICATION,
|
||||
this.FxAccountsCommon.ONLOGOUT_NOTIFICATION,
|
||||
this.FxAccountsCommon.ON_PROFILE_CHANGE_NOTIFICATION,
|
||||
|
|
@ -122,9 +119,6 @@ var gFxAccounts = {
|
|||
|
||||
observe: function (subject, topic, data) {
|
||||
switch (topic) {
|
||||
case "fxa-migration:state-changed":
|
||||
this.onMigrationStateChanged(data, subject);
|
||||
break;
|
||||
case this.FxAccountsCommon.ON_PROFILE_CHANGE_NOTIFICATION:
|
||||
this._cachedProfile = null;
|
||||
// Fallthrough intended
|
||||
|
|
@ -134,48 +128,6 @@ var gFxAccounts = {
|
|||
}
|
||||
},
|
||||
|
||||
onMigrationStateChanged: function () {
|
||||
// Since we nuked most of the migration code, this notification will fire
|
||||
// once after legacy Sync has been disconnected (and should never fire
|
||||
// again)
|
||||
let nb = window.document.getElementById("global-notificationbox");
|
||||
|
||||
let msg = this.strings.GetStringFromName("autoDisconnectDescription")
|
||||
let signInLabel = this.strings.GetStringFromName("autoDisconnectSignIn.label");
|
||||
let signInAccessKey = this.strings.GetStringFromName("autoDisconnectSignIn.accessKey");
|
||||
let learnMoreLink = this.fxaMigrator.learnMoreLink;
|
||||
|
||||
let buttons = [
|
||||
{
|
||||
label: signInLabel,
|
||||
accessKey: signInAccessKey,
|
||||
callback: () => {
|
||||
this.openPreferences();
|
||||
}
|
||||
}
|
||||
];
|
||||
|
||||
let fragment = document.createDocumentFragment();
|
||||
let msgNode = document.createTextNode(msg);
|
||||
fragment.appendChild(msgNode);
|
||||
if (learnMoreLink) {
|
||||
let link = document.createElement("label");
|
||||
link.className = "text-link";
|
||||
link.setAttribute("value", learnMoreLink.text);
|
||||
link.href = learnMoreLink.href;
|
||||
fragment.appendChild(link);
|
||||
}
|
||||
|
||||
nb.appendNotification(fragment,
|
||||
this.SYNC_MIGRATION_NOTIFICATION_TITLE,
|
||||
undefined,
|
||||
nb.PRIORITY_WARNING_LOW,
|
||||
buttons);
|
||||
|
||||
// ensure the hamburger menu reflects the newly disconnected state.
|
||||
this.updateAppMenuItem();
|
||||
},
|
||||
|
||||
handleEvent: function (event) {
|
||||
this._inCustomizationMode = event.type == "customizationstarting";
|
||||
this.updateAppMenuItem();
|
||||
|
|
|
|||
|
|
@ -72,13 +72,6 @@ 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");
|
||||
|
||||
// Side-effect of accessing the service is that it is instantiated.
|
||||
|
|
|
|||
|
|
@ -1,99 +0,0 @@
|
|||
/* 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/. */
|
||||
|
||||
"use strict;"
|
||||
|
||||
// Note that this module used to supervise the step-by-step migration from
|
||||
// a legacy Sync account to a FxA-based Sync account. In bug 1205928, this
|
||||
// changed to automatically disconnect the legacy Sync account.
|
||||
|
||||
const {classes: Cc, interfaces: Ci, results: Cr, utils: Cu} = Components;
|
||||
|
||||
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
|
||||
Cu.import("resource://gre/modules/Log.jsm");
|
||||
Cu.import("resource://gre/modules/Services.jsm");
|
||||
|
||||
XPCOMUtils.defineLazyGetter(this, "WeaveService", function() {
|
||||
return Cc["@mozilla.org/weave/service;1"]
|
||||
.getService(Components.interfaces.nsISupports)
|
||||
.wrappedJSObject;
|
||||
});
|
||||
|
||||
XPCOMUtils.defineLazyModuleGetter(this, "Weave",
|
||||
"resource://services-sync/main.js");
|
||||
|
||||
// We send this notification when we perform the disconnection. The browser
|
||||
// window will show a one-off notification bar.
|
||||
const OBSERVER_STATE_CHANGE_TOPIC = "fxa-migration:state-changed";
|
||||
|
||||
const OBSERVER_TOPICS = [
|
||||
"xpcom-shutdown",
|
||||
"weave:eol",
|
||||
];
|
||||
|
||||
function Migrator() {
|
||||
// Leave the log-level as Debug - Sync will setup log appenders such that
|
||||
// these messages generally will not be seen unless other log related
|
||||
// prefs are set.
|
||||
this.log.level = Log.Level.Debug;
|
||||
|
||||
for (let topic of OBSERVER_TOPICS) {
|
||||
Services.obs.addObserver(this, topic, false);
|
||||
}
|
||||
}
|
||||
|
||||
Migrator.prototype = {
|
||||
log: Log.repository.getLogger("Sync.SyncMigration"),
|
||||
|
||||
finalize() {
|
||||
for (let topic of OBSERVER_TOPICS) {
|
||||
Services.obs.removeObserver(this, topic);
|
||||
}
|
||||
},
|
||||
|
||||
observe(subject, topic, data) {
|
||||
this.log.debug("observed " + topic);
|
||||
switch (topic) {
|
||||
case "xpcom-shutdown":
|
||||
this.finalize();
|
||||
break;
|
||||
|
||||
default:
|
||||
// this notification when configured with legacy Sync means we want to
|
||||
// disconnect
|
||||
if (!WeaveService.fxAccountsEnabled) {
|
||||
this.log.info("Disconnecting from legacy Sync");
|
||||
// Set up an observer for when the disconnection is complete.
|
||||
let observe;
|
||||
Services.obs.addObserver(observe = () => {
|
||||
this.log.info("observed that startOver is complete");
|
||||
Services.obs.removeObserver(observe, "weave:service:start-over:finish");
|
||||
// Send the notification for the UI.
|
||||
Services.obs.notifyObservers(null, OBSERVER_STATE_CHANGE_TOPIC, null);
|
||||
}, "weave:service:start-over:finish", false);
|
||||
|
||||
// Do the disconnection.
|
||||
Weave.Service.startOver();
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
get learnMoreLink() {
|
||||
try {
|
||||
var url = Services.prefs.getCharPref("app.support.baseURL");
|
||||
} catch (err) {
|
||||
return null;
|
||||
}
|
||||
url += "sync-upgrade";
|
||||
let sb = Services.strings.createBundle("chrome://weave/locale/services/sync.properties");
|
||||
return {
|
||||
text: sb.GetStringFromName("sync.eol.learnMore.label"),
|
||||
href: Services.urlFormatter.formatURL(url),
|
||||
};
|
||||
},
|
||||
};
|
||||
|
||||
// We expose a singleton
|
||||
this.EXPORTED_SYMBOLS = ["fxaMigrator"];
|
||||
var fxaMigrator = new Migrator();
|
||||
|
|
@ -26,7 +26,6 @@ EXTRA_JS_MODULES['services-sync'] += [
|
|||
'modules/browserid_identity.js',
|
||||
'modules/collection_validator.js',
|
||||
'modules/engines.js',
|
||||
'modules/FxaMigrator.jsm',
|
||||
'modules/identity.js',
|
||||
'modules/jpakeclient.js',
|
||||
'modules/keys.js',
|
||||
|
|
|
|||
|
|
@ -1,117 +0,0 @@
|
|||
// We change this pref before anything else initializes
|
||||
Services.prefs.setCharPref("identity.fxaccounts.auth.uri", "http://localhost");
|
||||
|
||||
// Test the FxAMigration module
|
||||
Cu.import("resource://services-sync/FxaMigrator.jsm");
|
||||
Cu.import("resource://gre/modules/Promise.jsm");
|
||||
|
||||
// Set our username pref early so sync initializes with the legacy provider.
|
||||
Services.prefs.setCharPref("services.sync.username", "foo");
|
||||
// And ensure all debug messages end up being printed.
|
||||
Services.prefs.setCharPref("services.sync.log.appender.dump", "Debug");
|
||||
|
||||
// Now import sync
|
||||
Cu.import("resource://services-sync/service.js");
|
||||
Cu.import("resource://services-sync/record.js");
|
||||
Cu.import("resource://services-sync/util.js");
|
||||
|
||||
// And reset the username.
|
||||
Services.prefs.clearUserPref("services.sync.username");
|
||||
|
||||
Cu.import("resource://testing-common/services/sync/utils.js");
|
||||
Cu.import("resource://testing-common/services/common/logging.js");
|
||||
Cu.import("resource://testing-common/services/sync/rotaryengine.js");
|
||||
|
||||
const FXA_USERNAME = "someone@somewhere";
|
||||
|
||||
// Utilities
|
||||
function promiseOneObserver(topic) {
|
||||
return new Promise((resolve, reject) => {
|
||||
let observer = function(subject, topic, data) {
|
||||
Services.obs.removeObserver(observer, topic);
|
||||
resolve({ subject: subject, data: data });
|
||||
}
|
||||
Services.obs.addObserver(observer, topic, false);
|
||||
});
|
||||
}
|
||||
|
||||
function promiseStopServer(server) {
|
||||
return new Promise((resolve, reject) => {
|
||||
server.stop(resolve);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
// Helpers
|
||||
function configureLegacySync() {
|
||||
let engine = new RotaryEngine(Service);
|
||||
engine.enabled = true;
|
||||
Svc.Prefs.set("registerEngines", engine.name);
|
||||
Svc.Prefs.set("log.logger.engine.rotary", "Trace");
|
||||
|
||||
let contents = {
|
||||
meta: {global: {engines: {rotary: {version: engine.version,
|
||||
syncID: engine.syncID}}}},
|
||||
crypto: {},
|
||||
rotary: {}
|
||||
};
|
||||
|
||||
const USER = "foo";
|
||||
const PASSPHRASE = "abcdeabcdeabcdeabcdeabcdea";
|
||||
|
||||
setBasicCredentials(USER, "password", PASSPHRASE);
|
||||
|
||||
let onRequest = function(request, response) {
|
||||
// ideally we'd only do this while a legacy user is configured, but WTH.
|
||||
response.setHeader("x-weave-alert", JSON.stringify({code: "soft-eol"}));
|
||||
}
|
||||
let server = new SyncServer({onRequest: onRequest});
|
||||
server.registerUser(USER, "password");
|
||||
server.createContents(USER, contents);
|
||||
server.start();
|
||||
|
||||
Service.serverURL = server.baseURI;
|
||||
Service.clusterURL = server.baseURI;
|
||||
Service.identity.username = USER;
|
||||
Service._updateCachedURLs();
|
||||
|
||||
Service.engineManager._engines[engine.name] = engine;
|
||||
|
||||
return [engine, server];
|
||||
}
|
||||
|
||||
add_task(function *testMigrationUnlinks() {
|
||||
|
||||
// when we do a .startOver we want the new provider.
|
||||
let oldValue = Services.prefs.getBoolPref("services.sync-testing.startOverKeepIdentity");
|
||||
Services.prefs.setBoolPref("services.sync-testing.startOverKeepIdentity", false);
|
||||
|
||||
do_register_cleanup(() => {
|
||||
Services.prefs.setBoolPref("services.sync-testing.startOverKeepIdentity", oldValue)
|
||||
});
|
||||
|
||||
// Arrange for a legacy sync user.
|
||||
let [engine, server] = configureLegacySync();
|
||||
|
||||
// Start a sync - this will cause an EOL notification which the migrator's
|
||||
// observer will notice.
|
||||
let promiseMigration = promiseOneObserver("fxa-migration:state-changed");
|
||||
let promiseStartOver = promiseOneObserver("weave:service:start-over:finish");
|
||||
_("Starting sync");
|
||||
Service.sync();
|
||||
_("Finished sync");
|
||||
|
||||
yield promiseStartOver;
|
||||
yield promiseMigration;
|
||||
// We should have seen the observer and Sync should no longer be configured.
|
||||
Assert.ok(!Services.prefs.prefHasUserValue("services.sync.username"));
|
||||
});
|
||||
|
||||
function run_test() {
|
||||
initTestLogging();
|
||||
do_register_cleanup(() => {
|
||||
fxaMigrator.finalize();
|
||||
Svc.Prefs.resetBranch("");
|
||||
});
|
||||
run_next_test();
|
||||
}
|
||||
|
|
@ -190,9 +190,6 @@ support-files = prefs_test_prefs_store.js
|
|||
[test_warn_on_truncated_response.js]
|
||||
[test_postqueue.js]
|
||||
|
||||
# FxA migration
|
||||
[test_fxa_migration.js]
|
||||
|
||||
# Synced tabs.
|
||||
[test_syncedtabs.js]
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue