Merge fx-team to central, a=merge

This commit is contained in:
Wes Kocher 2015-08-05 16:36:46 -07:00
Родитель 7066fe2b35 bf3b67755b
Коммит b48e122e04
41 изменённых файлов: 455 добавлений и 444 удалений

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

@ -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,50 +273,35 @@ 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 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", {
"clientShortname": mozL10n.get("clientShortname2"),
"terms_of_use": React.renderToStaticMarkup(
React.createElement("a", {href: terms_of_use_url, target: "_blank"},
mozL10n.get("legal_text_tos")
)
),
"privacy_notice": React.renderToStaticMarkup(
React.createElement("a", {href: privacy_notice_url, target: "_blank"},
mozL10n.get("legal_text_privacy")
)
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", {
"clientShortname": mozL10n.get("clientShortname2"),
"terms_of_use": React.renderToStaticMarkup(
React.createElement("a", {href: terms_of_use_url, target: "_blank"},
mozL10n.get("legal_text_tos")
)
});
return (
React.createElement("div", {id: "powered-by-wrapper"},
this.renderPartnerLogo(),
React.createElement("p", {className: "terms-service",
dangerouslySetInnerHTML: {__html: tosHTML},
onClick: this.handleLinkClick})
)
);
} else {
return React.createElement("div", null);
}
),
"privacy_notice": React.renderToStaticMarkup(
React.createElement("a", {href: privacy_notice_url, target: "_blank"},
mozL10n.get("legal_text_privacy")
)
)
});
return (
React.createElement("div", {id: "powered-by-wrapper"},
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})
)
);
}
});
@ -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,50 +273,35 @@ 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 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", {
"clientShortname": mozL10n.get("clientShortname2"),
"terms_of_use": React.renderToStaticMarkup(
<a href={terms_of_use_url} target="_blank">
{mozL10n.get("legal_text_tos")}
</a>
),
"privacy_notice": React.renderToStaticMarkup(
<a href={privacy_notice_url} target="_blank">
{mozL10n.get("legal_text_privacy")}
</a>
)
});
return (
<div id="powered-by-wrapper">
{this.renderPartnerLogo()}
<p className="terms-service"
dangerouslySetInnerHTML={{__html: tosHTML}}
onClick={this.handleLinkClick}></p>
</div>
);
} else {
return <div />;
}
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", {
"clientShortname": mozL10n.get("clientShortname2"),
"terms_of_use": React.renderToStaticMarkup(
<a href={terms_of_use_url} target="_blank">
{mozL10n.get("legal_text_tos")}
</a>
),
"privacy_notice": React.renderToStaticMarkup(
<a href={privacy_notice_url} target="_blank">
{mozL10n.get("legal_text_privacy")}
</a>
)
});
return (
<div id="powered-by-wrapper">
<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>
);
}
});
@ -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,112 +200,133 @@
</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;
</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">
<groupbox id="fxaGroup">
<caption><label>&syncBrand.fxAccount.label;</label></caption>
<hbox>
<vbox>
<groupbox id="fxaGroup">
<caption><label>&syncBrand.fxAccount.label;</label></caption>
<deck id="fxaLoginStatus">
<deck id="fxaLoginStatus">
<!-- logged in and verified and all is good -->
<hbox id="fxaLoginVerified"
align="center">
<hbox align="center">
<image id="fxaProfileImage"
onclick="gSyncPane.openChangeProfileImage();" hidden="true"
tooltiptext="&profilePicture.tooltip;"/>
<label id="fxaEmailAddress1"/>
<label id="fxaDisplayName" hidden="true"/>
<!-- logged in and verified and all is good -->
<hbox id="fxaLoginVerified" class="fxaAccountBox">
<image id="fxaProfileImage"
onclick="gSyncPane.openChangeProfileImage();" hidden="true"
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>
</vbox>
</hbox>
<!-- logged in to an unverified account -->
<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>
</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" class="fxaAccountBox">
<image id="fxaProfileImage"/>
<vbox>
<hbox>
<vbox><image id="fxaLoginRejectedWarning"/></vbox>
<description>
&signedInLoginFailure.beforename.label;
<label id="fxaEmailAddress3"/>
&signedInLoginFailure.aftername.label;
</description>
</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>&signedIn.engines.caption;</label></caption>
<hbox id="fxaSyncEngines">
<vbox align="start">
<checkbox label="&engine.tabs.label;"
accesskey="&engine.tabs.accesskey;"
preference="engine.tabs"/>
<checkbox label="&engine.bookmarks.label;"
accesskey="&engine.bookmarks.accesskey;"
preference="engine.bookmarks"/>
<checkbox label="&engine.passwords.label;"
accesskey="&engine.passwords.accesskey;"
preference="engine.passwords"/>
</vbox>
<vbox align="start">
<checkbox label="&engine.history.label;"
accesskey="&engine.history.accesskey;"
preference="engine.history"/>
<checkbox label="&engine.addons.label;"
accesskey="&engine.addons.accesskey;"
preference="engine.addons"/>
<checkbox label="&engine.prefs.label;"
accesskey="&engine.prefs.accesskey;"
preference="engine.prefs"/>
</vbox>
<spacer/>
</hbox>
<spacer flex="1"/>
<button id="verifiedManage"
label="&manage.label;"/>
<button id="fxaUnlinkButton"
label="&disconnect.label;"/>
</hbox>
<!-- logged in to an unverified account -->
<hbox id="fxaLoginUnverified"
flex="1">
<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>
</vbox>
</hbox>
<!-- logged in locally but server rejected credentials -->
<hbox id="fxaLoginRejected"
flex="1">
<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>
</vbox>
</hbox>
</deck>
</groupbox>
<groupbox id="syncOptions">
<caption><label>&syncBrand.shortName.label;</label></caption>
<hbox id="fxaSyncEngines">
<vbox align="start">
<checkbox label="&engine.tabs.label;"
accesskey="&engine.tabs.accesskey;"
preference="engine.tabs"/>
<checkbox label="&engine.bookmarks.label;"
accesskey="&engine.bookmarks.accesskey;"
preference="engine.bookmarks"/>
<checkbox label="&engine.passwords.label;"
accesskey="&engine.passwords.accesskey;"
preference="engine.passwords"/>
</vbox>
<vbox align="start">
<checkbox label="&engine.history.label;"
accesskey="&engine.history.accesskey;"
preference="engine.history"/>
<checkbox label="&engine.addons.label;"
accesskey="&engine.addons.accesskey;"
preference="engine.addons"/>
<checkbox label="&engine.prefs.label;"
accesskey="&engine.prefs.accesskey;"
preference="engine.prefs"/>
</vbox>
<spacer/>
</hbox>
</groupbox>
</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\nLets 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);

Двоичные данные
browser/themes/shared/fxa/android.png Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 15 KiB

Двоичные данные
browser/themes/shared/fxa/android@2x.png Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 736 B

Двоичные данные
browser/themes/shared/fxa/default-avatar.png Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 1.5 KiB

Двоичные данные
browser/themes/shared/fxa/default-avatar@2x.png Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 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

Двоичные данные
browser/themes/shared/fxa/logo.png Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 17 KiB

Двоичные данные
browser/themes/shared/fxa/logo@2x.png Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 4.4 KiB

Двоичные данные
browser/themes/shared/fxa/sync-illustration.png Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 18 KiB

Двоичные данные
browser/themes/shared/fxa/sync-illustration@2x.png Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 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,8 +84,8 @@ TimelineConsumers::AddMarkerForDocShell(nsDocShell* aDocShell,
}
void
TimelineConsumers::AddMarkerToDocShellsList(Vector<nsRefPtr<nsDocShell>>& aDocShells,
const char* aName, TracingMetadata aMetaData)
TimelineConsumers::AddMarkerForDocShellsList(Vector<nsRefPtr<nsDocShell>>& aDocShells,
const char* aName, TracingMetadata aMetaData)
{
for (Vector<nsRefPtr<nsDocShell>>::Range range = aDocShells.all();
!range.empty();
@ -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,
const char* aName, TracingMetadata aMetaData);
static void AddMarkerToAllObservedDocShells(const char* aName, TracingMetadata aMetaData);
static void AddMarkerForDocShellsList(Vector<nsRefPtr<nsDocShell>>& aDocShells,
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: {