Merge fx-team to central, a=merge
|
@ -1707,8 +1707,6 @@ pref("image.mem.max_decoded_image_kb", 256000);
|
|||
pref("loop.enabled", true);
|
||||
pref("loop.textChat.enabled", true);
|
||||
pref("loop.server", "https://loop.services.mozilla.com/v0");
|
||||
pref("loop.seenToS", "unseen");
|
||||
pref("loop.showPartnerLogo", true);
|
||||
pref("loop.gettingStarted.seen", false);
|
||||
pref("loop.gettingStarted.url", "https://www.mozilla.org/%LOCALE%/firefox/%VERSION%/hello/start/");
|
||||
pref("loop.gettingStarted.resumeOnFirstJoin", false);
|
||||
|
|
|
@ -563,8 +563,20 @@
|
|||
<parameter name="aTab"/>
|
||||
<parameter name="aBrowser"/>
|
||||
<parameter name="aStartsBlank"/>
|
||||
<parameter name="aWasPreloadedBrowser"/>
|
||||
<body>
|
||||
<![CDATA[
|
||||
let stateFlags = 0;
|
||||
// Initialize mStateFlags to non-zero e.g. when creating a progress
|
||||
// listener for preloaded browsers as there was no progress listener
|
||||
// around when the content started loading. If the content didn't
|
||||
// quite finish loading yet, mStateFlags will very soon be overridden
|
||||
// with the correct value and end up at STATE_STOP again.
|
||||
if (aWasPreloadedBrowser) {
|
||||
stateFlags = Ci.nsIWebProgressListener.STATE_STOP |
|
||||
Ci.nsIWebProgressListener.STATE_IS_REQUEST;
|
||||
}
|
||||
|
||||
return ({
|
||||
mTabBrowser: this,
|
||||
mTab: aTab,
|
||||
|
@ -572,7 +584,7 @@
|
|||
mBlank: aStartsBlank,
|
||||
|
||||
// cache flags for correct status UI update after tab switching
|
||||
mStateFlags: 0,
|
||||
mStateFlags: stateFlags,
|
||||
mStatus: 0,
|
||||
mMessage: "",
|
||||
mTotalProgress: 0,
|
||||
|
@ -1837,7 +1849,7 @@
|
|||
this.tabContainer.updateVisibility();
|
||||
|
||||
// wire up a progress listener for the new browser object.
|
||||
var tabListener = this.mTabProgressListener(t, b, uriIsAboutBlank);
|
||||
var tabListener = this.mTabProgressListener(t, b, uriIsAboutBlank, usingPreloadedContent);
|
||||
const filter = Components.classes["@mozilla.org/appshell/component/browser-status-filter;1"]
|
||||
.createInstance(Components.interfaces.nsIWebProgress);
|
||||
filter.addProgressListener(tabListener, Components.interfaces.nsIWebProgress.NOTIFY_ALL);
|
||||
|
@ -2563,7 +2575,7 @@
|
|||
|
||||
// Restore the progress listener
|
||||
this.mTabListeners[index] = tabListener =
|
||||
this.mTabProgressListener(aOurTab, ourBrowser, false);
|
||||
this.mTabProgressListener(aOurTab, ourBrowser, false, false);
|
||||
|
||||
const notifyAll = Ci.nsIWebProgress.NOTIFY_ALL;
|
||||
filter.addProgressListener(tabListener, notifyAll);
|
||||
|
@ -4042,7 +4054,7 @@
|
|||
this.updateWindowResizers();
|
||||
|
||||
// Hook up the event listeners to the first browser
|
||||
var tabListener = this.mTabProgressListener(this.mCurrentTab, this.mCurrentBrowser, true);
|
||||
var tabListener = this.mTabProgressListener(this.mCurrentTab, this.mCurrentBrowser, true, false);
|
||||
const nsIWebProgress = Components.interfaces.nsIWebProgress;
|
||||
const filter = Components.classes["@mozilla.org/appshell/component/browser-status-filter;1"]
|
||||
.createInstance(nsIWebProgress);
|
||||
|
|
|
@ -263,16 +263,6 @@ loop.panel = (function(_, mozL10n) {
|
|||
var ToSView = React.createClass({displayName: "ToSView",
|
||||
mixins: [sharedMixins.WindowCloseMixin],
|
||||
|
||||
getInitialState: function() {
|
||||
var getPref = navigator.mozLoop.getLoopPref.bind(navigator.mozLoop);
|
||||
|
||||
return {
|
||||
seenToS: getPref("seenToS"),
|
||||
gettingStartedSeen: getPref("gettingStarted.seen"),
|
||||
showPartnerLogo: getPref("showPartnerLogo")
|
||||
};
|
||||
},
|
||||
|
||||
handleLinkClick: function(event) {
|
||||
if (!event.target || !event.target.href) {
|
||||
return;
|
||||
|
@ -283,24 +273,8 @@ loop.panel = (function(_, mozL10n) {
|
|||
this.closeWindow();
|
||||
},
|
||||
|
||||
renderPartnerLogo: function() {
|
||||
if (!this.state.showPartnerLogo) {
|
||||
return null;
|
||||
}
|
||||
|
||||
var locale = mozL10n.getLanguage();
|
||||
navigator.mozLoop.setLoopPref("showPartnerLogo", false);
|
||||
return (
|
||||
React.createElement("p", {className: "powered-by", id: "powered-by"},
|
||||
mozL10n.get("powered_by_beforeLogo"),
|
||||
React.createElement("img", {className: locale, id: "powered-by-logo"}),
|
||||
mozL10n.get("powered_by_afterLogo")
|
||||
)
|
||||
);
|
||||
},
|
||||
|
||||
render: function() {
|
||||
if (!this.state.gettingStartedSeen || this.state.seenToS == "unseen") {
|
||||
var locale = mozL10n.getLanguage();
|
||||
var terms_of_use_url = navigator.mozLoop.getLoopPref("legal.ToS_url");
|
||||
var privacy_notice_url = navigator.mozLoop.getLoopPref("legal.privacy_url");
|
||||
var tosHTML = mozL10n.get("legal_text_and_links3", {
|
||||
|
@ -318,15 +292,16 @@ loop.panel = (function(_, mozL10n) {
|
|||
});
|
||||
return (
|
||||
React.createElement("div", {id: "powered-by-wrapper"},
|
||||
this.renderPartnerLogo(),
|
||||
React.createElement("p", {className: "powered-by", id: "powered-by"},
|
||||
mozL10n.get("powered_by_beforeLogo"),
|
||||
React.createElement("img", {className: locale, id: "powered-by-logo"}),
|
||||
mozL10n.get("powered_by_afterLogo")
|
||||
),
|
||||
React.createElement("p", {className: "terms-service",
|
||||
dangerouslySetInnerHTML: {__html: tosHTML},
|
||||
onClick: this.handleLinkClick})
|
||||
)
|
||||
);
|
||||
} else {
|
||||
return React.createElement("div", null);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -969,8 +944,7 @@ loop.panel = (function(_, mozL10n) {
|
|||
React.createElement(RoomList, {dispatcher: this.props.dispatcher,
|
||||
mozLoop: this.props.mozLoop,
|
||||
store: this.props.roomStore,
|
||||
userProfile: this.state.userProfile}),
|
||||
React.createElement(ToSView, null)
|
||||
userProfile: this.state.userProfile})
|
||||
),
|
||||
React.createElement(Tab, {name: "contacts"},
|
||||
React.createElement(ContactsList, {
|
||||
|
|
|
@ -263,16 +263,6 @@ loop.panel = (function(_, mozL10n) {
|
|||
var ToSView = React.createClass({
|
||||
mixins: [sharedMixins.WindowCloseMixin],
|
||||
|
||||
getInitialState: function() {
|
||||
var getPref = navigator.mozLoop.getLoopPref.bind(navigator.mozLoop);
|
||||
|
||||
return {
|
||||
seenToS: getPref("seenToS"),
|
||||
gettingStartedSeen: getPref("gettingStarted.seen"),
|
||||
showPartnerLogo: getPref("showPartnerLogo")
|
||||
};
|
||||
},
|
||||
|
||||
handleLinkClick: function(event) {
|
||||
if (!event.target || !event.target.href) {
|
||||
return;
|
||||
|
@ -283,24 +273,8 @@ loop.panel = (function(_, mozL10n) {
|
|||
this.closeWindow();
|
||||
},
|
||||
|
||||
renderPartnerLogo: function() {
|
||||
if (!this.state.showPartnerLogo) {
|
||||
return null;
|
||||
}
|
||||
|
||||
var locale = mozL10n.getLanguage();
|
||||
navigator.mozLoop.setLoopPref("showPartnerLogo", false);
|
||||
return (
|
||||
<p className="powered-by" id="powered-by">
|
||||
{mozL10n.get("powered_by_beforeLogo")}
|
||||
<img className={locale} id="powered-by-logo" />
|
||||
{mozL10n.get("powered_by_afterLogo")}
|
||||
</p>
|
||||
);
|
||||
},
|
||||
|
||||
render: function() {
|
||||
if (!this.state.gettingStartedSeen || this.state.seenToS == "unseen") {
|
||||
var locale = mozL10n.getLanguage();
|
||||
var terms_of_use_url = navigator.mozLoop.getLoopPref("legal.ToS_url");
|
||||
var privacy_notice_url = navigator.mozLoop.getLoopPref("legal.privacy_url");
|
||||
var tosHTML = mozL10n.get("legal_text_and_links3", {
|
||||
|
@ -318,15 +292,16 @@ loop.panel = (function(_, mozL10n) {
|
|||
});
|
||||
return (
|
||||
<div id="powered-by-wrapper">
|
||||
{this.renderPartnerLogo()}
|
||||
<p className="powered-by" id="powered-by">
|
||||
{mozL10n.get("powered_by_beforeLogo")}
|
||||
<img className={locale} id="powered-by-logo" />
|
||||
{mozL10n.get("powered_by_afterLogo")}
|
||||
</p>
|
||||
<p className="terms-service"
|
||||
dangerouslySetInnerHTML={{__html: tosHTML}}
|
||||
onClick={this.handleLinkClick}></p>
|
||||
</div>
|
||||
);
|
||||
} else {
|
||||
return <div />;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -970,7 +945,6 @@ loop.panel = (function(_, mozL10n) {
|
|||
mozLoop={this.props.mozLoop}
|
||||
store={this.props.roomStore}
|
||||
userProfile={this.state.userProfile} />
|
||||
<ToSView />
|
||||
</Tab>
|
||||
<Tab name="contacts">
|
||||
<ContactsList
|
||||
|
|
|
@ -370,16 +370,11 @@ loop.store = loop.store || {};
|
|||
|
||||
switch (providerOrigin) {
|
||||
case "mail.google.com":
|
||||
shareTitle = mozL10n.get("share_email_subject5", {
|
||||
clientShortname2: mozL10n.get("clientShortname2")
|
||||
});
|
||||
shareBody = mozL10n.get("share_email_body5", {
|
||||
callUrl: actionData.roomUrl,
|
||||
brandShortname: mozL10n.get("brandShortname"),
|
||||
clientShortname2: mozL10n.get("clientShortname2"),
|
||||
clientSuperShortname: mozL10n.get("clientSuperShortname"),
|
||||
learnMoreUrl: this._mozLoop.getLoopPref("learnMoreUrl")
|
||||
shareTitle = mozL10n.get("share_email_subject6");
|
||||
shareBody = mozL10n.get("share_email_body6", {
|
||||
callUrl: actionData.roomUrl
|
||||
});
|
||||
shareBody += mozL10n.get("share_email_footer");
|
||||
break;
|
||||
case "twitter.com":
|
||||
default:
|
||||
|
|
|
@ -762,9 +762,6 @@ loop.store.ActiveRoomStore = (function() {
|
|||
roomState: ROOM_STATES.HAS_PARTICIPANTS,
|
||||
used: true
|
||||
});
|
||||
|
||||
// We've connected with a third-party, therefore stop displaying the ToS etc.
|
||||
this._mozLoop.setLoopPref("seenToS", "seen");
|
||||
},
|
||||
|
||||
/**
|
||||
|
|
|
@ -398,40 +398,25 @@ var inChrome = typeof Components != "undefined" && "utils" in Components;
|
|||
}
|
||||
|
||||
var subject, body;
|
||||
var brandShortname = mozL10n.get("brandShortname");
|
||||
var clientShortname2 = mozL10n.get("clientShortname2");
|
||||
var clientSuperShortname = mozL10n.get("clientSuperShortname");
|
||||
var learnMoreUrl = mozLoop.getLoopPref("learnMoreUrl");
|
||||
var footer = mozL10n.get("share_email_footer");
|
||||
|
||||
if (contextDescription) {
|
||||
subject = mozL10n.get("share_email_subject_context", {
|
||||
clientShortname2: clientShortname2,
|
||||
title: contextDescription
|
||||
});
|
||||
body = mozL10n.get("share_email_body_context", {
|
||||
subject = mozL10n.get("share_email_subject6");
|
||||
body = mozL10n.get("share_email_body_context2", {
|
||||
callUrl: callUrl,
|
||||
brandShortname: brandShortname,
|
||||
clientShortname2: clientShortname2,
|
||||
clientSuperShortname: clientSuperShortname,
|
||||
learnMoreUrl: learnMoreUrl,
|
||||
title: contextDescription
|
||||
});
|
||||
} else {
|
||||
subject = mozL10n.get("share_email_subject5", {
|
||||
clientShortname2: clientShortname2
|
||||
});
|
||||
body = mozL10n.get("share_email_body5", {
|
||||
callUrl: callUrl,
|
||||
brandShortname: brandShortname,
|
||||
clientShortname2: clientShortname2,
|
||||
clientSuperShortname: clientSuperShortname,
|
||||
learnMoreUrl: learnMoreUrl
|
||||
subject = mozL10n.get("share_email_subject6");
|
||||
body = mozL10n.get("share_email_body6", {
|
||||
callUrl: callUrl
|
||||
});
|
||||
}
|
||||
|
||||
var bodyFooter = body + footer;
|
||||
bodyFooter = bodyFooter.replace(/\r\n/g, "\n").replace(/\n/g, "\r\n");
|
||||
mozLoop.composeEmail(
|
||||
subject,
|
||||
body.replace(/\r\n/g, "\n").replace(/\n/g, "\r\n"),
|
||||
bodyFooter,
|
||||
recipient
|
||||
);
|
||||
|
||||
|
|
|
@ -210,11 +210,6 @@ let LoopCallsInternal = {
|
|||
return;
|
||||
}
|
||||
|
||||
// We set this here as it is assumed that once the user receives an incoming
|
||||
// call, they'll have had enough time to see the terms of service. See
|
||||
// bug 1046039 for background.
|
||||
Services.prefs.setCharPref("loop.seenToS", "seen");
|
||||
|
||||
// Request the information on the new call(s) associated with this version.
|
||||
// The registered FxA session is checked first, then the anonymous session.
|
||||
// Make the call to get the GUEST session regardless of whether the FXA
|
||||
|
|
|
@ -270,10 +270,6 @@ loop.StandaloneMozLoop = (function(mozL10n) {
|
|||
* @param {String} value The value to set.
|
||||
*/
|
||||
setLoopPref: function(prefName, value) {
|
||||
if (prefName === "seenToS") {
|
||||
return;
|
||||
}
|
||||
|
||||
localStorage.setItem(prefName, value);
|
||||
},
|
||||
|
||||
|
|
|
@ -459,22 +459,26 @@ describe("loop.panel", function() {
|
|||
});
|
||||
|
||||
describe("#render", function() {
|
||||
it("should render a ToSView", function() {
|
||||
var view = createTestPanelView();
|
||||
|
||||
TestUtils.findRenderedComponentWithType(view, loop.panel.ToSView);
|
||||
});
|
||||
|
||||
it("should not render a ToSView when the view has been 'seen'", function() {
|
||||
it("should not render a ToSView when gettingStarted.seen is true", function() {
|
||||
navigator.mozLoop.getLoopPref = function() {
|
||||
return "seen";
|
||||
return true;
|
||||
};
|
||||
var view = createTestPanelView();
|
||||
|
||||
try {
|
||||
expect(function() {
|
||||
TestUtils.findRenderedComponentWithType(view, loop.panel.ToSView);
|
||||
sinon.assert.fail("Should not find the ToSView if it has been 'seen'");
|
||||
} catch (ex) {}
|
||||
}).to.Throw(/not find/);
|
||||
});
|
||||
|
||||
it("should not render a ToSView when gettingStarted.seen is false", function() {
|
||||
navigator.mozLoop.getLoopPref = function() {
|
||||
return false;
|
||||
};
|
||||
var view = createTestPanelView();
|
||||
|
||||
expect(function() {
|
||||
TestUtils.findRenderedComponentWithType(view, loop.panel.ToSView);
|
||||
}).to.not.Throw();
|
||||
});
|
||||
|
||||
it("should render a GettingStarted view", function() {
|
||||
|
@ -989,70 +993,6 @@ describe("loop.panel", function() {
|
|||
});
|
||||
});
|
||||
|
||||
describe("loop.panel.ToSView", function() {
|
||||
|
||||
it("should render when the value of loop.seenToS is not set", function() {
|
||||
navigator.mozLoop.getLoopPref = function(key) {
|
||||
return {
|
||||
"gettingStarted.seen": true,
|
||||
"seenToS": "unseen"
|
||||
}[key];
|
||||
};
|
||||
|
||||
var view = TestUtils.renderIntoDocument(
|
||||
React.createElement(loop.panel.ToSView));
|
||||
|
||||
TestUtils.findRenderedDOMComponentWithClass(view, "terms-service");
|
||||
});
|
||||
|
||||
it("should not render when the value of loop.seenToS is set to 'seen'", function() {
|
||||
navigator.mozLoop.getLoopPref = function(key) {
|
||||
return {
|
||||
"gettingStarted.seen": true,
|
||||
"seenToS": "seen"
|
||||
}[key];
|
||||
};
|
||||
|
||||
var view = TestUtils.renderIntoDocument(
|
||||
React.createElement(loop.panel.ToSView));
|
||||
|
||||
expect(function() {
|
||||
TestUtils.findRenderedDOMComponentWithClass(view, "terms-service");
|
||||
}).to.Throw(/not find/);
|
||||
});
|
||||
|
||||
it("should render when the value of loop.gettingStarted.seen is false",
|
||||
function() {
|
||||
navigator.mozLoop.getLoopPref = function(key) {
|
||||
return {
|
||||
"gettingStarted.seen": false,
|
||||
"seenToS": "seen"
|
||||
}[key];
|
||||
};
|
||||
var view = TestUtils.renderIntoDocument(
|
||||
React.createElement(loop.panel.ToSView));
|
||||
|
||||
TestUtils.findRenderedDOMComponentWithClass(view, "terms-service");
|
||||
});
|
||||
|
||||
it("should render the telefonica logo after the first time use",
|
||||
function() {
|
||||
navigator.mozLoop.getLoopPref = function(key) {
|
||||
return {
|
||||
"gettingStarted.seen": false,
|
||||
"seenToS": "unseen",
|
||||
"showPartnerLogo": false
|
||||
}[key];
|
||||
};
|
||||
|
||||
var view = TestUtils.renderIntoDocument(
|
||||
React.createElement(loop.panel.ToSView));
|
||||
|
||||
expect(view.getDOMNode().querySelector(".powered-by")).eql(null);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
describe("loop.panel.SignInRequestView", function() {
|
||||
var view;
|
||||
|
||||
|
|
|
@ -581,7 +581,7 @@ describe("loop.store.RoomStore", function () {
|
|||
|
||||
sinon.assert.calledOnce(fakeMozLoop.socialShareRoom);
|
||||
sinon.assert.calledWithExactly(fakeMozLoop.socialShareRoom, origin,
|
||||
roomUrl, "share_email_subject5", "share_email_body5");
|
||||
roomUrl, "share_email_subject6", "share_email_body6" + "share_email_footer");
|
||||
});
|
||||
|
||||
it("should pass the correct data for all other Social Providers", function() {
|
||||
|
|
|
@ -1272,14 +1272,6 @@ describe("loop.store.ActiveRoomStore", function () {
|
|||
|
||||
expect(store.getStoreState().roomState).eql(ROOM_STATES.HAS_PARTICIPANTS);
|
||||
});
|
||||
|
||||
it("should set the pref for ToS to `seen`", function() {
|
||||
store.remotePeerConnected();
|
||||
|
||||
sinon.assert.calledOnce(fakeMozLoop.setLoopPref);
|
||||
sinon.assert.calledWithExactly(fakeMozLoop.setLoopPref,
|
||||
"seenToS", "seen");
|
||||
});
|
||||
});
|
||||
|
||||
describe("#remotePeerDisconnected", function() {
|
||||
|
|
|
@ -355,14 +355,14 @@ describe("loop.shared.utils", function() {
|
|||
// fake mozL10n
|
||||
sandbox.stub(navigator.mozL10n, "get", function(id) {
|
||||
switch(id) {
|
||||
case "share_email_subject5":
|
||||
case "share_email_subject6":
|
||||
return "subject";
|
||||
case "share_email_body5":
|
||||
case "share_email_body6":
|
||||
return "body";
|
||||
case "share_email_subject_context":
|
||||
return "subject_context";
|
||||
case "share_email_body_context":
|
||||
case "share_email_body_context2":
|
||||
return "body_context";
|
||||
case "share_email_footer":
|
||||
return "footer";
|
||||
}
|
||||
});
|
||||
composeEmail = sandbox.spy();
|
||||
|
@ -385,14 +385,14 @@ describe("loop.shared.utils", function() {
|
|||
|
||||
sinon.assert.calledOnce(composeEmail);
|
||||
sinon.assert.calledWith(composeEmail,
|
||||
"subject", "body", "fake@invalid.tld");
|
||||
"subject", "body" + "footer", "fake@invalid.tld");
|
||||
});
|
||||
|
||||
it("should compose a different email when context info is provided", function() {
|
||||
sharedUtils.composeCallUrlEmail("http://invalid", null, "Hello, is me you're looking for?");
|
||||
|
||||
sinon.assert.calledOnce(composeEmail);
|
||||
sinon.assert.calledWith(composeEmail, "subject_context", "body_context");
|
||||
sinon.assert.calledWith(composeEmail, "subject", "body_context" + "footer");
|
||||
});
|
||||
|
||||
it("should record a telemetry event when an email is composed", function() {
|
||||
|
|
|
@ -55,12 +55,6 @@ describe("loop.StandaloneMozLoop", function() {
|
|||
|
||||
expect(localStorage.getItem("fakePref")).eql("fakeValue");
|
||||
});
|
||||
|
||||
it("should not store the value of seenToS", function() {
|
||||
mozLoop.setLoopPref("seenToS", "fakeValue1");
|
||||
|
||||
expect(localStorage.getItem("seenToS")).eql(null);
|
||||
});
|
||||
});
|
||||
|
||||
describe("#getLoopPref", function() {
|
||||
|
|
|
@ -10,8 +10,6 @@ XPCOMUtils.defineLazyModuleGetter(this, "Chat",
|
|||
let openChatOrig = Chat.open;
|
||||
|
||||
add_test(function test_openChatWindow_on_notification() {
|
||||
Services.prefs.setCharPref("loop.seenToS", "unseen");
|
||||
|
||||
mockPushHandler.registrationPushURL = kEndPointUrl;
|
||||
|
||||
MozLoopService.promiseRegisteredWithServers(LOOP_SESSION_TYPE.FXA).then(() => {
|
||||
|
@ -25,9 +23,6 @@ add_test(function test_openChatWindow_on_notification() {
|
|||
waitForCondition(() => opened).then(() => {
|
||||
do_check_true(opened, "should open a chat window");
|
||||
|
||||
do_check_eq(Services.prefs.getCharPref("loop.seenToS"), "seen",
|
||||
"should set the pref to 'seen'");
|
||||
|
||||
run_next_test();
|
||||
}, () => {
|
||||
do_throw("should have opened a chat window");
|
||||
|
@ -56,9 +51,6 @@ function run_test() {
|
|||
do_register_cleanup(function() {
|
||||
// Revert original Chat.open implementation
|
||||
Chat.open = openChatOrig;
|
||||
|
||||
// clear test pref
|
||||
Services.prefs.clearUserPref("loop.seenToS");
|
||||
});
|
||||
|
||||
run_next_test();
|
||||
|
|
|
@ -240,18 +240,14 @@ let gSyncPane = {
|
|||
gSyncPane.startOver(true);
|
||||
return false;
|
||||
});
|
||||
setEventListener("noFxaSignUp", "click", function () {
|
||||
setEventListener("noFxaSignUp", "command", function () {
|
||||
gSyncPane.signUp();
|
||||
return false;
|
||||
});
|
||||
setEventListener("noFxaSignIn", "click", function () {
|
||||
setEventListener("noFxaSignIn", "command", function () {
|
||||
gSyncPane.signIn();
|
||||
return false;
|
||||
});
|
||||
setEventListener("noFxaUseOldSync", "click", function () {
|
||||
gSyncPane.openOldSyncSupportPage();
|
||||
return false;
|
||||
});
|
||||
setEventListener("verifiedManage", "command",
|
||||
gSyncPane.manageFirefoxAccount);
|
||||
setEventListener("fxaUnlinkButton", "click", function () {
|
||||
|
@ -259,13 +255,13 @@ let gSyncPane = {
|
|||
});
|
||||
setEventListener("verifyFxaAccount", "command",
|
||||
gSyncPane.verifyFirefoxAccount);
|
||||
setEventListener("unverifiedUnlinkFxaAccount", "click", function () {
|
||||
setEventListener("unverifiedUnlinkFxaAccount", "command", function () {
|
||||
/* no warning as account can't have previously synced */
|
||||
gSyncPane.unlinkFirefoxAccount(false);
|
||||
});
|
||||
setEventListener("rejectReSignIn", "command",
|
||||
gSyncPane.reSignIn);
|
||||
setEventListener("rejectUnlinkFxaAccount", "click", function () {
|
||||
setEventListener("rejectUnlinkFxaAccount", "command", function () {
|
||||
gSyncPane.unlinkFirefoxAccount(true);
|
||||
});
|
||||
setEventListener("tosPP-small-ToS", "click", gSyncPane.openToS);
|
||||
|
|
|
@ -200,86 +200,102 @@
|
|||
</vbox>
|
||||
|
||||
<!-- These panels are for the Firefox Accounts identity provider -->
|
||||
<vbox id="noFxaAccount" align="start">
|
||||
<label>&welcome.description;</label>
|
||||
<label id="noFxaSignUp" class="text-link">
|
||||
&welcome.createAccount.label;
|
||||
</label>
|
||||
<label id="noFxaSignIn" class="text-link">
|
||||
&welcome.signIn.label;
|
||||
</label>
|
||||
<separator/>
|
||||
<label id="noFxaUseOldSync" class="text-link">
|
||||
&welcome.useOldSync.label;
|
||||
<vbox id="noFxaAccount">
|
||||
<hbox>
|
||||
<groupbox id="noFxaGroup">
|
||||
<vbox>
|
||||
<label id="noFxaCaption">&signedOut.caption;</label>
|
||||
<description id="noFxaDescription" flex="1">&signedOut.description;</description>
|
||||
<hbox class="fxaAccountBox">
|
||||
<image class="fxaFirefoxLogo"/>
|
||||
<vbox>
|
||||
<label id="signedOutAccountBoxTitle">&signedOut.accountBox.title;</label>
|
||||
<hbox>
|
||||
<button id="noFxaSignUp" label="&signedOut.accountBox.create;"/>
|
||||
<button id="noFxaSignIn" label="&signedOut.accountBox.signin;"/>
|
||||
</hbox>
|
||||
</vbox>
|
||||
</hbox>
|
||||
</vbox>
|
||||
</groupbox>
|
||||
<image class="fxaSyncIllustration"/>
|
||||
</hbox>
|
||||
<hbox class="fxaMobilePromo">
|
||||
<label>&mobilePromo.start;</label>
|
||||
<image class="androidLogo"/>
|
||||
<label class="text-link"
|
||||
href="https://www.mozilla.org/firefox/android/">
|
||||
&mobilePromo.androidLink;
|
||||
</label>
|
||||
<label>&mobilePromo.end;</label>
|
||||
</hbox>
|
||||
<label class="androidAttribution">&androidAttribution;</label>
|
||||
</vbox>
|
||||
|
||||
<vbox id="hasFxaAccount">
|
||||
<hbox>
|
||||
<vbox>
|
||||
<groupbox id="fxaGroup">
|
||||
<caption><label>&syncBrand.fxAccount.label;</label></caption>
|
||||
|
||||
<deck id="fxaLoginStatus">
|
||||
|
||||
<!-- logged in and verified and all is good -->
|
||||
<hbox id="fxaLoginVerified"
|
||||
align="center">
|
||||
<hbox align="center">
|
||||
<hbox id="fxaLoginVerified" class="fxaAccountBox">
|
||||
<image id="fxaProfileImage"
|
||||
onclick="gSyncPane.openChangeProfileImage();" hidden="true"
|
||||
tooltiptext="&profilePicture.tooltip;"/>
|
||||
tooltiptext="&profilePicture.tooltip;" class="actionable"/>
|
||||
<vbox>
|
||||
<label id="fxaEmailAddress1"/>
|
||||
<label id="fxaDisplayName" hidden="true"/>
|
||||
<hbox class="fxaAccountBoxButtons">
|
||||
<button id="verifiedManage" label="&manage.label;"/>
|
||||
<button id="fxaUnlinkButton" label="&disconnect.label;"/>
|
||||
</hbox>
|
||||
<spacer flex="1"/>
|
||||
<button id="verifiedManage"
|
||||
label="&manage.label;"/>
|
||||
<button id="fxaUnlinkButton"
|
||||
label="&disconnect.label;"/>
|
||||
</vbox>
|
||||
</hbox>
|
||||
|
||||
<!-- logged in to an unverified account -->
|
||||
<hbox id="fxaLoginUnverified"
|
||||
flex="1">
|
||||
<hbox id="fxaLoginUnverified" class="fxaAccountBox">
|
||||
<image id="fxaProfileImage"/>
|
||||
<vbox>
|
||||
<hbox>
|
||||
<vbox><image id="fxaLoginRejectedWarning"/></vbox>
|
||||
<description>
|
||||
&signedInUnverified.beforename.label;
|
||||
<label id="fxaEmailAddress2"/>
|
||||
&signedInUnverified.aftername.label;
|
||||
</description>
|
||||
<spacer flex="1"/>
|
||||
<vbox align="end">
|
||||
<button id="verifyFxaAccount"
|
||||
label="&verify.label;"/>
|
||||
<label id="unverifiedUnlinkFxaAccount" class="text-link">
|
||||
&forget.label;
|
||||
</label>
|
||||
</hbox>
|
||||
<hbox class="fxaAccountBoxButtons">
|
||||
<button id="verifyFxaAccount" label="&verify.label;"/>
|
||||
<button id="unverifiedUnlinkFxaAccount" label="&forget.label;"/>
|
||||
</hbox>
|
||||
</vbox>
|
||||
</hbox>
|
||||
|
||||
<!-- logged in locally but server rejected credentials -->
|
||||
<hbox id="fxaLoginRejected"
|
||||
flex="1">
|
||||
<hbox id="fxaLoginRejected" class="fxaAccountBox">
|
||||
<image id="fxaProfileImage"/>
|
||||
<vbox>
|
||||
<image id="fxaLoginRejectedWarning"/>
|
||||
</vbox>
|
||||
<hbox>
|
||||
<vbox><image id="fxaLoginRejectedWarning"/></vbox>
|
||||
<description>
|
||||
&signedInLoginFailure.beforename.label;
|
||||
<label id="fxaEmailAddress3"/>
|
||||
&signedInLoginFailure.aftername.label;
|
||||
</description>
|
||||
<spacer flex="1"/>
|
||||
<vbox align="end">
|
||||
<button id="rejectReSignIn"
|
||||
label="&signIn.label;"/>
|
||||
<label id="rejectUnlinkFxaAccount" class="text-link">
|
||||
&forget.label;
|
||||
</label>
|
||||
</hbox>
|
||||
<hbox class="fxaAccountBoxButtons">
|
||||
<button id="rejectReSignIn" label="&signIn.label;"/>
|
||||
<button id="rejectUnlinkFxaAccount" label="&forget.label;"/>
|
||||
</hbox>
|
||||
</vbox>
|
||||
</hbox>
|
||||
</deck>
|
||||
</groupbox>
|
||||
|
||||
<groupbox id="syncOptions">
|
||||
<caption><label>&syncBrand.shortName.label;</label></caption>
|
||||
<caption><label>&signedIn.engines.caption;</label></caption>
|
||||
<hbox id="fxaSyncEngines">
|
||||
<vbox align="start">
|
||||
<checkbox label="&engine.tabs.label;"
|
||||
|
@ -306,6 +322,11 @@
|
|||
<spacer/>
|
||||
</hbox>
|
||||
</groupbox>
|
||||
</vbox>
|
||||
<spacer flex="1"/>
|
||||
<image class="fxaSyncIllustration"/>
|
||||
</hbox>
|
||||
<spacer class="separator"/>
|
||||
<groupbox>
|
||||
<caption>
|
||||
<label accesskey="&syncDeviceName.accesskey;"
|
||||
|
@ -314,9 +335,10 @@
|
|||
</label>
|
||||
</caption>
|
||||
<hbox id="fxaDeviceName">
|
||||
<hbox flex="1">
|
||||
<hbox>
|
||||
<textbox id="fxaSyncComputerName" disabled="true" flex="1"/>
|
||||
</hbox>
|
||||
<spacer flex="1"/>
|
||||
<hbox>
|
||||
<button id="fxaChangeDeviceName"
|
||||
label="&changeSyncDeviceName.label;"/>
|
||||
|
@ -329,6 +351,16 @@
|
|||
</hbox>
|
||||
</hbox>
|
||||
</groupbox>
|
||||
<spacer class="separator"/>
|
||||
<hbox class="fxaMobilePromo">
|
||||
<label>&mobilePromo.start;</label>
|
||||
<image class="androidLogo"/>
|
||||
<label class="text-link"
|
||||
href="https://www.mozilla.org/firefox/android/">
|
||||
&mobilePromo.androidLink;
|
||||
</label>
|
||||
<label>&mobilePromo.end;</label>
|
||||
</hbox>
|
||||
<spacer flex="1"/>
|
||||
<vbox id="tosPP-small">
|
||||
<label id="tosPP-small-ToS" class="text-link">
|
||||
|
@ -338,5 +370,6 @@
|
|||
&fxaPrivacyNotice.link.label;
|
||||
</label>
|
||||
</vbox>
|
||||
<label class="androidAttribution">&androidAttribution;</label>
|
||||
</vbox>
|
||||
</deck>
|
||||
|
|
|
@ -55,18 +55,15 @@ problem_accessing_account=There Was A Problem Accessing Your Account
|
|||
## the appropriate action.
|
||||
retry_button=Retry
|
||||
|
||||
share_email_subject5={{clientShortname2}} — Join the conversation
|
||||
## LOCALIZATION NOTE (share_email_subject_context): This is the alternate email
|
||||
## subject when a conversation is shared with a context attached.
|
||||
## {{clientShortName2}} will be replaced with the respective string in this file.
|
||||
## {{title}} will be replaced with the title of an HTML document.
|
||||
share_email_subject_context={{clientShortname2}} conversation: {{title}}
|
||||
## LOCALIZATION NOTE (share_email_body4): In this item, don't translate the
|
||||
share_email_subject6=Join me for a video conversation
|
||||
## LOCALIZATION NOTE (share_email_body6): In this item, don't translate the
|
||||
## part between {{..}} and leave the \n\n part alone
|
||||
share_email_body5=Hello!\n\nJoin me for a video conversation on {{clientShortname2}}.\n\nIt's the easiest way to connect by video with anyone anywhere. With {{clientSuperShortname}}, you don't have to download or install anything. Just click or paste this link into your {{brandShortname}}, Opera or Chrome browser to join the conversation:\n\n{{callUrl}}\n\nIf you'd like to learn more about {{clientSuperShortname}} and how you can start your own free video conversations, visit {{learnMoreUrl}}\n\nTalk to you soon!
|
||||
## LOCALIZATION NOTE (share_email_body_context): In this item, don't translate
|
||||
share_email_body6=Click the Firefox Hello link to connect to the conversation now: {{callUrl}}
|
||||
## LOCALIZATION NOTE (share_email_body_context2): In this item, don't translate
|
||||
## the part between {{..}} and leave the \n\n part alone.
|
||||
share_email_body_context=Hello!\n\nJoin me for a video conversation on {{clientShortname2}} about:\n{{title}}.\n\nIt's the easiest way to connect by video with anyone anywhere. With {{clientSuperShortname}}, you don't have to download or install anything. Just click or paste this link into your {{brandShortname}}, Opera or Chrome browser to join the conversation:\n\n{{callUrl}}\n\nIf you'd like to learn more about {{clientSuperShortname}} and how you can start your own free video conversations, visit {{learnMoreUrl}}\n\nTalk to you soon!
|
||||
share_email_body_context2=Join me for a video conversation. Click the Firefox Hello link to connect now: {{callUrl}}\n\nLet’s talk about this during our conversation: {{title}}
|
||||
## LOCALIZATION NOTE (share_email_footer): Common footer content for both email types
|
||||
share_email_footer=\n\n________\nJoin and create video conversations free with Firefox Hello. Connect easily over video with anyone, anywhere. No downloads or registration. Learn more at http://www.firefox.com/hello
|
||||
## LOCALIZATION NOTE (share_tweeet): In this item, don't translate the part
|
||||
## between {{..}}. Please keep the text below 117 characters to make sure it fits
|
||||
## in a tweet.
|
||||
|
|
|
@ -83,3 +83,17 @@ both, to better adapt this sentence to their language.
|
|||
<!ENTITY welcome.createAccount.label "Create Account">
|
||||
|
||||
<!ENTITY welcome.useOldSync.label "Using an older version of Sync?">
|
||||
|
||||
<!ENTITY signedOut.caption "Take your Web with you">
|
||||
<!ENTITY signedOut.description "Synchronize your bookmarks, history, tabs, passwords, add-ons, and preferences across all your devices.">
|
||||
<!ENTITY signedOut.accountBox.title "Connect with a &syncBrand.fxAccount.label;">
|
||||
<!ENTITY signedOut.accountBox.create "Create Account">
|
||||
<!ENTITY signedOut.accountBox.signin "Sign In">
|
||||
|
||||
<!ENTITY signedIn.engines.caption "Sync between all devices">
|
||||
|
||||
<!ENTITY mobilePromo.start "Download Firefox for ">
|
||||
<!-- LOCALIZATION NOTE (mobilePromo.androidLink): This is a link title that links to https://www.mozilla.org/firefox/android/ -->
|
||||
<!ENTITY mobilePromo.androidLink "Android™">
|
||||
<!ENTITY mobilePromo.end " to sync with your mobile device.">
|
||||
<!ENTITY androidAttribution "Android is a trademark of Google Inc.">
|
||||
|
|
|
@ -222,7 +222,14 @@ browser.jar:
|
|||
skin/classic/browser/preferences/in-content/favicon.ico (../shared/incontentprefs/favicon.ico)
|
||||
skin/classic/browser/preferences/in-content/icons.svg (../shared/incontentprefs/icons.svg)
|
||||
skin/classic/browser/preferences/in-content/search.css (../shared/incontentprefs/search.css)
|
||||
skin/classic/browser/fxa/default-profile-image.svg (../shared/fxa/default-profile-image.svg)
|
||||
skin/classic/browser/fxa/default-avatar.png (../shared/fxa/default-avatar.png)
|
||||
skin/classic/browser/fxa/default-avatar@2x.png (../shared/fxa/default-avatar@2x.png)
|
||||
skin/classic/browser/fxa/logo.png (../shared/fxa/logo.png)
|
||||
skin/classic/browser/fxa/logo@2x.png (../shared/fxa/logo@2x.png)
|
||||
skin/classic/browser/fxa/sync-illustration.png (../shared/fxa/sync-illustration.png)
|
||||
skin/classic/browser/fxa/sync-illustration@2x.png (../shared/fxa/sync-illustration@2x.png)
|
||||
skin/classic/browser/fxa/android.png (../shared/fxa/android.png)
|
||||
skin/classic/browser/fxa/android@2x.png (../shared/fxa/android@2x.png)
|
||||
skin/classic/browser/preferences/applications.css (preferences/applications.css)
|
||||
skin/classic/browser/preferences/aboutPermissions.css (preferences/aboutPermissions.css)
|
||||
skin/classic/browser/preferences/search.css (preferences/search.css)
|
||||
|
|
|
@ -298,7 +298,14 @@ browser.jar:
|
|||
skin/classic/browser/preferences/in-content/favicon.ico (../shared/incontentprefs/favicon.ico)
|
||||
skin/classic/browser/preferences/in-content/icons.svg (../shared/incontentprefs/icons.svg)
|
||||
skin/classic/browser/preferences/in-content/search.css (../shared/incontentprefs/search.css)
|
||||
skin/classic/browser/fxa/default-profile-image.svg (../shared/fxa/default-profile-image.svg)
|
||||
skin/classic/browser/fxa/default-avatar.png (../shared/fxa/default-avatar.png)
|
||||
skin/classic/browser/fxa/default-avatar@2x.png (../shared/fxa/default-avatar@2x.png)
|
||||
skin/classic/browser/fxa/logo.png (../shared/fxa/logo.png)
|
||||
skin/classic/browser/fxa/logo@2x.png (../shared/fxa/logo@2x.png)
|
||||
skin/classic/browser/fxa/sync-illustration.png (../shared/fxa/sync-illustration.png)
|
||||
skin/classic/browser/fxa/sync-illustration@2x.png (../shared/fxa/sync-illustration@2x.png)
|
||||
skin/classic/browser/fxa/android.png (../shared/fxa/android.png)
|
||||
skin/classic/browser/fxa/android@2x.png (../shared/fxa/android@2x.png)
|
||||
skin/classic/browser/preferences/applications.css (preferences/applications.css)
|
||||
skin/classic/browser/preferences/aboutPermissions.css (preferences/aboutPermissions.css)
|
||||
skin/classic/browser/preferences/search.css (preferences/search.css)
|
||||
|
|
|
@ -238,10 +238,6 @@ html|a.inline-link:-moz-focusring {
|
|||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
#fxaUnlinkButton {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
#noFxaAccount {
|
||||
margin: 12px 4px;
|
||||
line-height: 1.2em;
|
||||
|
|
|
@ -702,7 +702,7 @@ toolbarpaletteitem[place="palette"] > toolbaritem > toolbarbutton {
|
|||
}
|
||||
|
||||
#PanelUI-footer-fxa[fxaprofileimage="enabled"] > #PanelUI-fxa-status > #PanelUI-fxa-avatar {
|
||||
list-style-image: url(chrome://browser/skin/fxa/default-profile-image.svg);
|
||||
list-style-image: url(chrome://browser/skin/fxa/default-avatar.png)
|
||||
}
|
||||
|
||||
#PanelUI-customize:hover,
|
||||
|
@ -1498,6 +1498,10 @@ menuitem[checked="true"].subviewbutton > .menu-iconic-left {
|
|||
list-style-image: url(chrome://branding/content/icon32.png);
|
||||
}
|
||||
|
||||
#PanelUI-footer-fxa[fxaprofileimage="enabled"] > #PanelUI-fxa-status > #PanelUI-fxa-avatar {
|
||||
list-style-image: url(chrome://browser/skin/fxa/default-avatar@2x.png)
|
||||
}
|
||||
|
||||
#PanelUI-fxa-label,
|
||||
#PanelUI-fxa-icon {
|
||||
list-style-image: url(chrome://browser/skin/sync-horizontalbar@2x.png);
|
||||
|
|
После Ширина: | Высота: | Размер: 15 KiB |
После Ширина: | Высота: | Размер: 736 B |
После Ширина: | Высота: | Размер: 1.5 KiB |
После Ширина: | Высота: | Размер: 2.5 KiB |
|
@ -1,9 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- 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/. -->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 1000">
|
||||
<path fill="#c3cfd8" d="M500-0.3c276.1,0,500,223.9,500,500s-223.9,500-500,500S0,775.8,0,499.7C0,223.5,223.9-0.3,500-0.3z"/>
|
||||
<circle fill="#fff" cx="500" cy="317" r="139.1"/>
|
||||
<path fill="#fff" d="M751.8,643.6L751.8,643.6c0.1-2.3,0.2-4.6,0.2-6.9c0-68-55.3-127-136.2-156.3L505.9,590.4h0 c-0.4,29.8-1.4,58.8-2.8,86.6c-1,0.1-2,0.3-3.1,0.3s-2-0.2-3.1-0.3c-1.4-27.9-2.4-56.9-2.8-86.7h0L384.3,480.4 C303.3,509.7,248,568.7,248,636.7c0,2.3,0.1,4.6,0.2,6.9l7.4,49.7c57.1,72,145.4,118.2,244.4,118.2c99,0,187.3-46.2,244.4-118.2 L751.8,643.6z"/>
|
||||
</svg>
|
До Ширина: | Высота: | Размер: 861 B |
После Ширина: | Высота: | Размер: 17 KiB |
После Ширина: | Высота: | Размер: 4.4 KiB |
После Ширина: | Высота: | Размер: 18 KiB |
После Ширина: | Высота: | Размер: 8.5 KiB |
|
@ -223,32 +223,6 @@ description > html|a {
|
|||
cursor: pointer;
|
||||
}
|
||||
|
||||
#fxaProfileImage {
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
border-radius: 50%;
|
||||
border-width: 5px;
|
||||
border-color: red;
|
||||
background-image: url(chrome://browser/skin/fxa/default-profile-image.svg);
|
||||
background-size: contain;
|
||||
cursor: pointer;
|
||||
-moz-margin-end: 15px;
|
||||
}
|
||||
|
||||
#fxaProfileImage:hover {
|
||||
box-shadow: 0px 0px 0px 1px #0095DD;
|
||||
}
|
||||
|
||||
#fxaProfileImage:active {
|
||||
box-shadow: 0px 0px 0px 1px #ff9500;
|
||||
}
|
||||
|
||||
#noFxaAccount {
|
||||
/* Overriding the margins from the base preferences.css theme file.
|
||||
These overrides can be simplified by fixing bug 1027174 */
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
#weavePrefsDeck > vbox > label,
|
||||
#weavePrefsDeck > vbox > groupbox,
|
||||
#weavePrefsDeck > vbox > description,
|
||||
|
@ -397,16 +371,123 @@ description > html|a {
|
|||
* Sync
|
||||
*/
|
||||
|
||||
#fxaProfileImage {
|
||||
width: 60px;
|
||||
max-height: 60px;
|
||||
border-radius: 50%;
|
||||
background-image: url(chrome://browser/skin/fxa/default-avatar.png);
|
||||
background-size: contain;
|
||||
margin-inline-end: 15px;
|
||||
}
|
||||
|
||||
#fxaProfileImage.actionable {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
#fxaProfileImage.actionable:hover {
|
||||
box-shadow: 0px 0px 0px 1px #0095DD;
|
||||
}
|
||||
|
||||
#fxaProfileImage.actionable:hover:active {
|
||||
box-shadow: 0px 0px 0px 1px #ff9500;
|
||||
}
|
||||
|
||||
#noFxaAccount {
|
||||
/* Overriding the margins from the base preferences.css theme file.
|
||||
These overrides can be simplified by fixing bug 1027174 */
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
#noFxaGroup {
|
||||
-moz-box-flex: 1;
|
||||
}
|
||||
|
||||
#noFxaGroup > vbox {
|
||||
-moz-box-align: start;
|
||||
}
|
||||
|
||||
#fxaSyncEngines > vbox:first-child {
|
||||
margin-right: 80px;
|
||||
}
|
||||
|
||||
#fxaSyncComputerName {
|
||||
margin-left: 0px;
|
||||
margin-inline-start: 0px;
|
||||
width: 500px;
|
||||
}
|
||||
|
||||
#tosPP-small-ToS {
|
||||
margin-bottom: 1em;
|
||||
margin-bottom: 14px;
|
||||
}
|
||||
|
||||
#noFxaCaption {
|
||||
font-weight: bold;
|
||||
margin-bottom: 11px;
|
||||
}
|
||||
|
||||
.fxaSyncIllustration {
|
||||
margin-top: 35px;
|
||||
}
|
||||
|
||||
#syncOptions caption {
|
||||
margin-bottom: 11px;
|
||||
}
|
||||
|
||||
#fxaDeviceName {
|
||||
margin-bottom: 27.5px;
|
||||
}
|
||||
|
||||
#noFxaDescription {
|
||||
margin-bottom: 20px !important;
|
||||
}
|
||||
|
||||
.separator {
|
||||
border-bottom: 1px solid var(--in-content-header-border-color);
|
||||
}
|
||||
|
||||
.fxaAccountBox {
|
||||
border: 1px solid #D1D2D3;
|
||||
border-radius: 5px;
|
||||
padding: 14px 20px 14px 14px;
|
||||
}
|
||||
|
||||
#signedOutAccountBoxTitle {
|
||||
margin-inline-start: 6px !important;
|
||||
font-weight: bold;
|
||||
margin-bottom: 11px;
|
||||
}
|
||||
|
||||
.fxaAccountBox button {
|
||||
padding-left: 11px;
|
||||
padding-right: 11px;
|
||||
}
|
||||
|
||||
.fxaSyncIllustration {
|
||||
width: 231px;
|
||||
max-height: 200px;
|
||||
list-style-image: url(chrome://browser/skin/fxa/sync-illustration.png)
|
||||
}
|
||||
|
||||
.fxaFirefoxLogo {
|
||||
list-style-image: url(chrome://browser/skin/fxa/logo.png);
|
||||
max-width: 64px;
|
||||
margin-inline-end: 14px;
|
||||
}
|
||||
|
||||
#noFxaAccount .fxaMobilePromo {
|
||||
margin-bottom: 55px;
|
||||
}
|
||||
|
||||
#hasFxaAccount .fxaMobilePromo {
|
||||
margin-bottom: 41px;
|
||||
margin-top: 27.5px;
|
||||
}
|
||||
|
||||
.fxaMobilePromo > label {
|
||||
margin-inline-start: 0;
|
||||
}
|
||||
|
||||
#hasFxaAccount .fxaAccountBoxButtons {
|
||||
margin-top: 11px;
|
||||
}
|
||||
|
||||
#fxaLoginRejectedWarning {
|
||||
|
@ -414,3 +495,38 @@ description > html|a {
|
|||
filter: drop-shadow(0 1px 0 hsla(206, 50%, 10%, .15));
|
||||
margin: 4px 8px 0px 0px;
|
||||
}
|
||||
|
||||
#syncOptions {
|
||||
margin-bottom: 27.5px;
|
||||
}
|
||||
|
||||
.androidLogo {
|
||||
list-style-image: url(chrome://browser/skin/fxa/android.png);
|
||||
max-width: 24px;
|
||||
margin-top: -4px;
|
||||
margin-inline-end: 4px;
|
||||
}
|
||||
|
||||
#tosPP-small {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.androidAttribution {
|
||||
font-size: 12px;
|
||||
color: #D1D2D3;
|
||||
}
|
||||
|
||||
@media (min-resolution: 1.1dppx) {
|
||||
.fxaSyncIllustration {
|
||||
list-style-image: url(chrome://browser/skin/fxa/sync-illustration@2x.png)
|
||||
}
|
||||
.fxaFirefoxLogo {
|
||||
list-style-image: url(chrome://browser/skin/fxa/logo@2x.png);
|
||||
}
|
||||
.androidLogo {
|
||||
list-style-image: url(chrome://browser/skin/fxa/android@2x.png);
|
||||
}
|
||||
#fxaProfileImage {
|
||||
background-image: url(chrome://browser/skin/fxa/default-avatar@2x.png);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -307,7 +307,14 @@ browser.jar:
|
|||
skin/classic/browser/preferences/in-content/favicon.ico (../shared/incontentprefs/favicon.ico)
|
||||
skin/classic/browser/preferences/in-content/icons.svg (../shared/incontentprefs/icons.svg)
|
||||
skin/classic/browser/preferences/in-content/search.css (../shared/incontentprefs/search.css)
|
||||
skin/classic/browser/fxa/default-profile-image.svg (../shared/fxa/default-profile-image.svg)
|
||||
skin/classic/browser/fxa/default-avatar.png (../shared/fxa/default-avatar.png)
|
||||
skin/classic/browser/fxa/default-avatar@2x.png (../shared/fxa/default-avatar@2x.png)
|
||||
skin/classic/browser/fxa/logo.png (../shared/fxa/logo.png)
|
||||
skin/classic/browser/fxa/logo@2x.png (../shared/fxa/logo@2x.png)
|
||||
skin/classic/browser/fxa/sync-illustration.png (../shared/fxa/sync-illustration.png)
|
||||
skin/classic/browser/fxa/sync-illustration@2x.png (../shared/fxa/sync-illustration@2x.png)
|
||||
skin/classic/browser/fxa/android.png (../shared/fxa/android.png)
|
||||
skin/classic/browser/fxa/android@2x.png (../shared/fxa/android@2x.png)
|
||||
skin/classic/browser/preferences/applications.css (preferences/applications.css)
|
||||
skin/classic/browser/preferences/aboutPermissions.css (preferences/aboutPermissions.css)
|
||||
skin/classic/browser/preferences/search.css (preferences/search.css)
|
||||
|
|
|
@ -22,7 +22,7 @@ AutoGlobalTimelineMarker::AutoGlobalTimelineMarker(const char* aName
|
|||
return;
|
||||
}
|
||||
|
||||
TimelineConsumers::AddMarkerToAllObservedDocShells(mName, TRACING_INTERVAL_START);
|
||||
TimelineConsumers::AddMarkerForAllObservedDocShells(mName, TRACING_INTERVAL_START);
|
||||
}
|
||||
|
||||
AutoGlobalTimelineMarker::~AutoGlobalTimelineMarker()
|
||||
|
@ -31,7 +31,7 @@ AutoGlobalTimelineMarker::~AutoGlobalTimelineMarker()
|
|||
return;
|
||||
}
|
||||
|
||||
TimelineConsumers::AddMarkerToAllObservedDocShells(mName, TRACING_INTERVAL_END);
|
||||
TimelineConsumers::AddMarkerForAllObservedDocShells(mName, TRACING_INTERVAL_END);
|
||||
}
|
||||
|
||||
} // namespace mozilla
|
||||
|
|
|
@ -84,7 +84,7 @@ TimelineConsumers::AddMarkerForDocShell(nsDocShell* aDocShell,
|
|||
}
|
||||
|
||||
void
|
||||
TimelineConsumers::AddMarkerToDocShellsList(Vector<nsRefPtr<nsDocShell>>& aDocShells,
|
||||
TimelineConsumers::AddMarkerForDocShellsList(Vector<nsRefPtr<nsDocShell>>& aDocShells,
|
||||
const char* aName, TracingMetadata aMetaData)
|
||||
{
|
||||
for (Vector<nsRefPtr<nsDocShell>>::Range range = aDocShells.all();
|
||||
|
@ -95,7 +95,7 @@ TimelineConsumers::AddMarkerToDocShellsList(Vector<nsRefPtr<nsDocShell>>& aDocSh
|
|||
}
|
||||
|
||||
void
|
||||
TimelineConsumers::AddMarkerToAllObservedDocShells(const char* aName, TracingMetadata aMetaData)
|
||||
TimelineConsumers::AddMarkerForAllObservedDocShells(const char* aName, TracingMetadata aMetaData)
|
||||
{
|
||||
Vector<nsRefPtr<nsDocShell>> docShells;
|
||||
if (!GetKnownDocShells(docShells)) {
|
||||
|
@ -104,7 +104,7 @@ TimelineConsumers::AddMarkerToAllObservedDocShells(const char* aName, TracingMet
|
|||
return;
|
||||
}
|
||||
|
||||
AddMarkerToDocShellsList(docShells, aName, aMetaData);
|
||||
AddMarkerForDocShellsList(docShells, aName, aMetaData);
|
||||
}
|
||||
|
||||
} // namespace mozilla
|
||||
|
|
|
@ -37,9 +37,9 @@ public:
|
|||
UniquePtr<TimelineMarker>&& aMarker);
|
||||
static void AddMarkerForDocShell(nsDocShell* aDocShell,
|
||||
const char* aName, TracingMetadata aMetaData);
|
||||
static void AddMarkerToDocShellsList(Vector<nsRefPtr<nsDocShell>>& aDocShells,
|
||||
static void AddMarkerForDocShellsList(Vector<nsRefPtr<nsDocShell>>& aDocShells,
|
||||
const char* aName, TracingMetadata aMetaData);
|
||||
static void AddMarkerToAllObservedDocShells(const char* aName, TracingMetadata aMetaData);
|
||||
static void AddMarkerForAllObservedDocShells(const char* aName, TracingMetadata aMetaData);
|
||||
};
|
||||
|
||||
} // namespace mozilla
|
||||
|
|
|
@ -62,7 +62,9 @@ public class RestrictedProfiles {
|
|||
}
|
||||
|
||||
final UserManager mgr = (UserManager) context.getSystemService(Context.USER_SERVICE);
|
||||
Bundle restrictions = mgr.getApplicationRestrictions(context.getPackageName());
|
||||
final Bundle restrictions = new Bundle();
|
||||
restrictions.putAll(mgr.getApplicationRestrictions(context.getPackageName()));
|
||||
restrictions.putAll(mgr.getUserRestrictions());
|
||||
|
||||
for (String key : restrictions.keySet()) {
|
||||
if (restrictions.getBoolean(key)) {
|
||||
|
|
|
@ -100,9 +100,7 @@ MOZ_ANDROID_MLS_STUMBLER=1
|
|||
MOZ_ANDROID_DOWNLOADS_INTEGRATION=1
|
||||
|
||||
# Enable Tab Queue
|
||||
if test "$NIGHTLY_BUILD"; then
|
||||
MOZ_ANDROID_TAB_QUEUE=1
|
||||
fi
|
||||
MOZ_ANDROID_TAB_QUEUE=1
|
||||
|
||||
# Use the low-memory GC tuning.
|
||||
export JS_GC_SMALL_CHUNK_SIZE=1
|
||||
|
|
|
@ -147,7 +147,6 @@ const PREF_DISTRIBUTION_ID = "distribution.id";
|
|||
const PREF_DISTRIBUTION_VERSION = "distribution.version";
|
||||
const PREF_DISTRIBUTOR = "app.distributor";
|
||||
const PREF_DISTRIBUTOR_CHANNEL = "app.distributor.channel";
|
||||
const PREF_E10S_ENABLED = "browser.tabs.remote.autostart";
|
||||
const PREF_HOTFIX_LASTVERSION = "extensions.hotfix.lastVersion";
|
||||
const PREF_APP_PARTNER_BRANCH = "app.partner.";
|
||||
const PREF_PARTNER_ID = "mozilla.partner.id";
|
||||
|
@ -1000,7 +999,7 @@ EnvironmentCache.prototype = {
|
|||
#ifndef MOZ_WIDGET_ANDROID
|
||||
isDefaultBrowser: this._isDefaultBrowser(),
|
||||
#endif
|
||||
e10sEnabled: Preferences.get(PREF_E10S_ENABLED, false),
|
||||
e10sEnabled: Services.appinfo.browserTabsRemoteAutostart,
|
||||
telemetryEnabled: Preferences.get(PREF_TELEMETRY_ENABLED, false),
|
||||
locale: getBrowserLocale(),
|
||||
update: {
|
||||
|
|
|
@ -40,7 +40,7 @@ Structure::
|
|||
loadPath: <string>, // where the engine line is located; missing if no default
|
||||
submissionURL: <string> // missing if no default or for user-installed engines
|
||||
},
|
||||
e10sEnabled: <bool>, // false on failure
|
||||
e10sEnabled: <bool>, // whether e10s is on, i.e. browser tabs open by default in a different process
|
||||
telemetryEnabled: <bool>, // false on failure
|
||||
locale: <string>, // e.g. "it", null on failure
|
||||
update: {
|
||||
|
|