Backed out 2 changesets (bug 1522253) for causing ES Lint failure in newInstallPage.js

Backed out changeset 5b2aeaf2da17 (bug 1522253)
Backed out changeset a091f6b58aba (bug 1522253)
This commit is contained in:
Noemi Erli 2019-02-13 19:12:35 +02:00
Родитель ef53454138
Коммит 8842faa45f
6 изменённых файлов: 33 добавлений и 170 удалений

Просмотреть файл

@ -237,6 +237,8 @@ pref("browser.startup.homepage", "about:home");
// Whether we should skip the homepage when opening the first-run page
pref("browser.startup.firstrunSkipsHomepage", true);
pref("browser.dedicatedprofile.welcome.accounts.endpoint", "https://accounts.firefox.com/");
// Show an about:blank window as early as possible for quick startup feedback.
// Held to nightly on Linux due to bug 1450626.
// Disabled on Mac because the bouncing dock icon already provides feedback.

Просмотреть файл

@ -4,9 +4,10 @@
const PARAMS = new URL(location).searchParams;
const ENTRYPOINT = "new-install-page";
const SOURCE = `new-install-page-${RPMGetUpdateChannel()}`;
const SOURCE = `new-install-page-${PARAMS.get("channel")}`;
const CAMPAIGN = "dedicated-profiles";
const ENDPOINT = PARAMS.get("endpoint");
const CONTEXT = "fx_desktop_v3";
function appendAccountsParams(url) {
url.searchParams.set("entrypoint", ENTRYPOINT);
@ -23,8 +24,7 @@ function appendParams(url, params) {
}
async function requestFlowMetrics() {
let requestURL = new URL(await endpoint);
requestURL.pathname = "metrics-flow";
let requestURL = new URL(`${ENDPOINT}metrics-flow`);
appendParams(requestURL, {
"form_type": "email",
});
@ -47,9 +47,11 @@ async function submitForm(event) {
let { flowId, flowBeginTime } = await metrics;
let requestURL = new URL(await endpoint);
let requestURL = new URL(ENDPOINT);
appendParams(requestURL, {
"service": "sync",
"action": "email",
"context": CONTEXT,
"utm_campaign": CAMPAIGN,
"email": input.value,
"flow_id": flowId,
@ -59,8 +61,6 @@ async function submitForm(event) {
window.open(requestURL, "_blank", "noopener");
}
const endpoint = RPMGetFxAccountsEndpoint(ENTRYPOINT);
// This must come before the CSP is set or it will be blocked.
const metrics = requestFlowMetrics();

Просмотреть файл

@ -15,7 +15,6 @@ XPCOMUtils.defineLazyModuleGetters(this, {
SessionStartup: "resource:///modules/sessionstore/SessionStartup.jsm",
ShellService: "resource:///modules/ShellService.jsm",
UpdatePing: "resource://gre/modules/UpdatePing.jsm",
RemotePages: "resource://gre/modules/remotepagemanager/RemotePageManagerParent.jsm",
});
XPCOMUtils.defineLazyServiceGetter(this, "WindowsUIUtils",
"@mozilla.org/windows-ui-utils;1", "nsIWindowsUIUtils");
@ -24,8 +23,6 @@ XPCOMUtils.defineLazyGetter(this, "gSystemPrincipal",
() => Services.scriptSecurityManager.getSystemPrincipal());
XPCOMUtils.defineLazyGlobalGetters(this, [URL]);
const NEWINSTALL_PAGE = "about:newinstall";
function shouldLoadURI(aURI) {
if (aURI && !aURI.schemeIs("chrome"))
return true;
@ -63,14 +60,12 @@ function resolveURIInternal(aCmdLine, aArgument) {
return uri;
}
let gRemoteInstallPage = null;
function getNewInstallPage() {
if (!gRemoteInstallPage) {
gRemoteInstallPage = new RemotePages(NEWINSTALL_PAGE);
}
return NEWINSTALL_PAGE;
let url = new URL("about:newinstall");
let endpoint = Services.prefs.getCharPref("browser.dedicatedprofile.welcome.accounts.endpoint");
url.searchParams.set("endpoint", endpoint);
url.searchParams.set("channel", AppConstants.MOZ_UPDATE_CHANNEL);
return url.toString();
}
var gFirstWindow = false;

Просмотреть файл

@ -11,10 +11,6 @@ ChromeUtils.defineModuleGetter(this, "AsyncPrefs",
"resource://gre/modules/AsyncPrefs.jsm");
ChromeUtils.defineModuleGetter(this, "PrivateBrowsingUtils",
"resource://gre/modules/PrivateBrowsingUtils.jsm");
ChromeUtils.defineModuleGetter(this, "PromiseUtils",
"resource://gre/modules/PromiseUtils.jsm");
ChromeUtils.defineModuleGetter(this, "UpdateUtils",
"resource://gre/modules/UpdateUtils.jsm");
/*
* Used for all kinds of permissions checks which requires explicit
@ -35,10 +31,6 @@ let RPMAccessManager = {
"app.support.baseURL"],
"isWindowPrivate": ["yes"],
},
"about:newinstall": {
"getUpdateChannel": ["yes"],
"getFxAccountsEndpoint": ["yes"],
},
},
checkAllowAccess(aPrincipal, aFeature, aValue) {
@ -134,107 +126,18 @@ class MessagePort {
this.destroyed = false;
this.listener = new MessageListener();
// This is a sparse array of pending requests. The id of each request is
// simply its index in the array. The next id is the current length of the
// array (which includes the count of missing indexes).
this.requests = [];
this.message = this.message.bind(this);
this.receiveRequest = this.receiveRequest.bind(this);
this.receiveResponse = this.receiveResponse.bind(this);
this.addMessageListeners();
}
addMessageListeners() {
this.messageManager.addMessageListener("RemotePage:Message", this.message);
this.messageManager.addMessageListener("RemotePage:Request", this.receiveRequest);
this.messageManager.addMessageListener("RemotePage:Response", this.receiveResponse);
}
removeMessageListeners() {
this.messageManager.removeMessageListener("RemotePage:Message", this.message);
this.messageManager.removeMessageListener("RemotePage:Request", this.receiveRequest);
this.messageManager.removeMessageListener("RemotePage:Response", this.receiveResponse);
}
// Called when the message manager used to connect to the other process has
// changed, i.e. when a tab is detached.
swapMessageManager(messageManager) {
this.removeMessageListeners();
this.messageManager.removeMessageListener("RemotePage:Message", this.message);
this.messageManager = messageManager;
this.addMessageListeners();
}
// Sends a request to the other process and returns a promise that completes
// once the other process has responded to the request or some error occurs.
sendRequest(name, data = null) {
if (this.destroyed) {
return this.window.Promise.reject(new Error("Message port has been destroyed"));
}
let deferred = PromiseUtils.defer();
this.requests.push(deferred);
this.messageManager.sendAsyncMessage("RemotePage:Request", {
portID: this.portID,
requestID: this.requests.length - 1,
name,
data,
});
return this.wrapPromise(deferred.promise);
}
// Handles an IPC message to perform a request of some kind.
async receiveRequest({ data: messagedata }) {
if (this.destroyed || (messagedata.portID != this.portID)) {
return;
}
let data = {
portID: this.portID,
requestID: messagedata.requestID,
};
try {
data.resolve = await this.handleRequest(messagedata.name, messagedata.data);
} catch (e) {
data.reject = e;
}
this.messageManager.sendAsyncMessage("RemotePage:Response", data);
}
// Handles an IPC message with the response of a request.
receiveResponse({ data: messagedata }) {
if (this.destroyed || (messagedata.portID != this.portID)) {
return;
}
let deferred = this.requests[messagedata.requestID];
if (!deferred) {
Cu.reportError("Received a response to an unknown request.");
return;
}
delete this.requests[messagedata.requestID];
if ("resolve" in messagedata) {
deferred.resolve(messagedata.resolve);
} else if ("reject" in messagedata) {
deferred.reject(messagedata.reject);
} else {
deferred.reject(new Error("Internal RPM error."));
}
}
// Handles an IPC message containing any message.
message({ data: messagedata }) {
if (this.destroyed || (messagedata.portID != this.portID)) {
return;
}
this.handleMessage(messagedata);
this.messageManager.addMessageListener("RemotePage:Message", this.message);
}
/* Adds a listener for messages. Many callbacks can be registered for the
@ -281,24 +184,12 @@ class MessagePort {
destroy() {
try {
// This can fail in the child process if the tab has already been closed
this.removeMessageListeners();
this.messageManager.removeMessageListener("RemotePage:Message", this.message);
} catch (e) { }
for (let deferred of this.requests) {
if (deferred) {
deferred.reject(new Error("Message port has been destroyed"));
}
}
this.messageManager = null;
this.destroyed = true;
this.portID = null;
this.listener = null;
this.requests = [];
}
wrapPromise(promise) {
return new this.window.Promise((resolve, reject) => promise.then(resolve, reject));
}
getBoolPref(aPref) {
@ -310,7 +201,11 @@ class MessagePort {
}
setBoolPref(aPref, aVal) {
return this.wrapPromise(AsyncPrefs.set(aPref, aVal));
return new this.window.Promise(function(resolve) {
AsyncPrefs.set(aPref, aVal).then(function() {
resolve();
});
});
}
getFormatURLPref(aFormatURL) {
@ -328,21 +223,4 @@ class MessagePort {
}
return PrivateBrowsingUtils.isContentWindowPrivate(this.window);
}
getUpdateChannel() {
let principal = this.window.document.nodePrincipal;
if (!RPMAccessManager.checkAllowAccess(principal, "getUpdateChannel", "yes")) {
throw new Error("RPMAccessManager does not allow access to getUpdateChannel");
}
return UpdateUtils.UpdateChannel;
}
getFxAccountsEndpoint(aEntrypoint) {
let principal = this.window.document.nodePrincipal;
if (!RPMAccessManager.checkAllowAccess(principal, "getFxAccountsEndpoint", "yes")) {
throw new Error("RPMAccessManager does not allow access to getFxAccountsEndpoint");
}
return this.sendRequest("FxAccountsEndpoint", aEntrypoint);
}
}

Просмотреть файл

@ -41,12 +41,6 @@ class ChildMessagePort extends MessagePort {
Cu.exportFunction(this.isWindowPrivate.bind(this), window, {
defineAs: "RPMIsWindowPrivate",
});
Cu.exportFunction(this.getUpdateChannel.bind(this), window, {
defineAs: "RPMGetUpdateChannel",
});
Cu.exportFunction(this.getFxAccountsEndpoint.bind(this), window, {
defineAs: "RPMGetFxAccountsEndpoint",
});
// Send a message for load events
let loadListener = () => {
@ -73,13 +67,13 @@ class ChildMessagePort extends MessagePort {
});
}
// Called when the content process is requesting some data.
async handleRequest(name, data) {
throw new Error(`Unknown request ${name}.`);
}
// Called when a message is received from the message manager. This could
// have come from any port in the message manager so verify the port ID.
message({ data: messagedata }) {
if (this.destroyed || (messagedata.portID != this.portID)) {
return;
}
// Called when a message is received from the message manager.
handleMessage(messagedata) {
let message = {
name: messagedata.name,
data: messagedata.data,

Просмотреть файл

@ -21,8 +21,6 @@ var EXPORTED_SYMBOLS = ["RemotePages", "RemotePageManager"];
const {Services} = ChromeUtils.import("resource://gre/modules/Services.jsm");
const {MessageListener, MessagePort} = ChromeUtils.import("resource://gre/modules/remotepagemanager/MessagePort.jsm");
ChromeUtils.defineModuleGetter(this, "FxAccounts",
"resource://gre/modules/FxAccounts.jsm");
/**
* Creates a RemotePages object which listens for new remote pages of some
@ -236,17 +234,13 @@ class ChromeMessagePort extends MessagePort {
this.destroy();
}
// Called when the content process is requesting some data.
async handleRequest(name, data) {
if (name == "FxAccountsEndpoint") {
return FxAccounts.config.promiseEmailFirstURI(data);
// Called when a message is received from the message manager. This could
// have come from any port in the message manager so verify the port ID.
message({ data: messagedata }) {
if (this.destroyed || (messagedata.portID != this.portID)) {
return;
}
throw new Error(`Unknown request ${name}.`);
}
// Called when a message is received from the message manager.
handleMessage(messagedata) {
let message = {
target: this.publicPort,
name: messagedata.name,