Merge mozilla-central to inbound. a=merge CLOSED TREE

This commit is contained in:
Narcis Beleuzu 2018-02-04 00:01:34 +02:00
Родитель de32ea78a2 5742ff4ffb
Коммит 9bf3d93934
17 изменённых файлов: 318 добавлений и 148 удалений

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

@ -115,8 +115,11 @@ class FormAutofillSection {
*
* @param {Object} profile
* A profile for pre-processing before filling values.
* @returns {boolean} Whether the profile should be filled.
*/
async prepareFillingProfile(profile) {}
async prepareFillingProfile(profile) {
return true;
}
/*
* Override this methid if any data for `createRecord` is needed to be
@ -248,7 +251,10 @@ class FormAutofillSection {
throw new Error("No fieldDetail for the focused input.");
}
await this.prepareFillingProfile(profile);
if (!await this.prepareFillingProfile(profile)) {
log.debug("profile cannot be filled", profile);
return;
}
log.debug("profile in autofillFields:", profile);
this.filledRecordGUID = profile.guid;
@ -853,6 +859,7 @@ class FormAutofillCreditCardSection extends FormAutofillSection {
*
* @param {Object} profile
* A profile for pre-processing before filling values.
* @returns {boolean} Whether the profile should be filled.
* @override
*/
async prepareFillingProfile(profile) {
@ -865,11 +872,12 @@ class FormAutofillCreditCardSection extends FormAutofillSection {
if (!decrypted) {
// Early return if the decrypted is empty or undefined
return;
return false;
}
profile["cc-number"] = decrypted;
}
return true;
}
}

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

@ -12,6 +12,7 @@ support-files =
[browser_autocomplete_marked_detached_tab.js]
[browser_check_installed.js]
[browser_creditCard_doorhanger.js]
[browser_creditCard_fill_master_password.js]
[browser_dropdown_layout.js]
[browser_editAddressDialog.js]
[browser_editCreditCardDialog.js]

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

@ -0,0 +1,25 @@
"use strict";
add_task(async function test_fill_creditCard_with_mp_enabled_but_canceled() {
await saveCreditCard(TEST_CREDIT_CARD_2);
LoginTestUtils.masterPassword.enable();
registerCleanupFunction(() => {
LoginTestUtils.masterPassword.disable();
});
let masterPasswordDialogShown = waitForMasterPasswordDialog(false); // cancel
await BrowserTestUtils.withNewTab({gBrowser, url: CREDITCARD_FORM_URL},
async function(browser) {
await openPopupOn(browser, "#cc-name");
const ccItem = getDisplayedPopupItems(browser)[0];
await EventUtils.synthesizeMouseAtCenter(ccItem, {});
await Promise.all([masterPasswordDialogShown, expectPopupClose(browser)]);
await ContentTask.spawn(browser, {}, async function() {
is(content.document.querySelector("#cc-name").value, "", "Check name");
is(content.document.querySelector("#cc-number").value, "", "Check number");
});
}
);
});

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

@ -11,8 +11,8 @@
/* These hover and active colors should work on both light and dark
backgrounds. We'll later set colors that cater for light and dark
backgrounds specifically when we can detect them. */
--toolbarbutton-hover-background: hsla(0,0%,70%,.4);
--toolbarbutton-active-background: hsla(0,0%,70%,.6);
--toolbarbutton-hover-background: var(--lwt-toolbarbutton-hover-background, hsla(0,0%,70%,.4));
--toolbarbutton-active-background: var(--lwt-toolbarbutton-active-background, hsla(0,0%,70%,.6));
--backbutton-background: hsla(0,100%,100%,.8);
--backbutton-hover-background: var(--backbutton-background);
@ -37,14 +37,14 @@
[brighttext] to cater for OS themes where :-moz-lwtheme-* doesn't apply. */
:root:-moz-lwtheme-darktext,
toolbar:not([brighttext]) {
--toolbarbutton-hover-background: hsla(240,5%,5%,.1);
--toolbarbutton-active-background: hsla(240,5%,5%,.15);
--toolbarbutton-hover-background: var(--lwt-toolbarbutton-hover-background, hsla(240,5%,5%,.1));
--toolbarbutton-active-background: var(--lwt-toolbarbutton-active-background, hsla(240,5%,5%,.15));
}
:root:-moz-lwtheme-brighttext,
toolbar[brighttext] {
--toolbarbutton-hover-background: hsla(0,0%,100%,.2);
--toolbarbutton-active-background: hsla(0,0%,100%,.3);
--toolbarbutton-hover-background: var(--lwt-toolbarbutton-hover-background, hsla(0,0%,100%,.2));
--toolbarbutton-active-background: var(--lwt-toolbarbutton-active-background, hsla(0,0%,100%,.3));
--backbutton-background: var(--toolbarbutton-hover-background);
--backbutton-hover-background: var(--toolbarbutton-active-background);
@ -168,6 +168,18 @@ toolbar[brighttext] .toolbaritem-combined-buttons > separator {
opacity: .3;
}
#PersonalToolbar .toolbarbutton-1:not([disabled=true]):not([checked]):not([open]):not(:active),
.tabbrowser-arrowscrollbox > .scrollbutton-up:not([disabled=true]),
.tabbrowser-arrowscrollbox > .scrollbutton-down:not([disabled=true]),
.findbar-button:not(:-moz-any([checked="true"],[disabled="true"])) > .toolbarbutton-text,
toolbarbutton.bookmark-item:not(.subviewbutton):not([disabled="true"]):not([open]),
toolbar .toolbarbutton-1:not([disabled=true]):not([checked]):not([open]):not(:active) > .toolbarbutton-icon,
toolbar .toolbarbutton-1:not([disabled=true]):not([checked]):not([open]):not(:active) > .toolbarbutton-text,
toolbar .toolbarbutton-1:not([disabled=true]):not([checked]):not([open]):not(:active) > .toolbarbutton-badge-stack {
background-color: var(--lwt-toolbarbutton-background, transparent);
color: inherit;
}
#PersonalToolbar .toolbarbutton-1:not([disabled=true]):not([checked]):not([open]):not(:active):hover,
.tabbrowser-arrowscrollbox > .scrollbutton-up:not([disabled=true]):hover,
.tabbrowser-arrowscrollbox > .scrollbutton-down:not([disabled=true]):hover,

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

@ -310,6 +310,10 @@ private:
std::string getMangledName(clang::MangleContext *Ctx,
const clang::NamedDecl *Decl) {
if (isa<FunctionDecl>(Decl) && cast<FunctionDecl>(Decl)->isExternC()) {
return cast<FunctionDecl>(Decl)->getNameAsString();
}
if (isa<FunctionDecl>(Decl) || isa<VarDecl>(Decl)) {
const DeclContext *DC = Decl->getDeclContext();
if (isa<TranslationUnitDecl>(DC) || isa<NamespaceDecl>(DC) ||
@ -809,7 +813,8 @@ public:
}
enum {
NoCrossref = 1,
NoCrossref = 1 << 0,
OperatorToken = 1 << 1,
};
// This is the only function that emits analysis JSON data. It should be
@ -832,11 +837,13 @@ public:
std::string RangeStr = locationToString(Loc, EndOffset - StartOffset);
std::string PeekRangeStr;
// Get the token's characters so we can make sure it's a valid token.
const char *StartChars = SM.getCharacterData(Loc);
std::string Text(StartChars, EndOffset - StartOffset);
if (!isValidIdentifier(Text)) {
return;
if (!(Flags & OperatorToken)) {
// Get the token's characters so we can make sure it's a valid token.
const char *StartChars = SM.getCharacterData(Loc);
std::string Text(StartChars, EndOffset - StartOffset);
if (!isValidIdentifier(Text)) {
return;
}
}
FileInfo *F = getFileInfo(Loc);
@ -1180,6 +1187,7 @@ public:
}
std::string Mangled = getMangledName(CurMangleContext, NamedCallee);
int Flags = 0;
Expr *CalleeExpr = E->getCallee()->IgnoreParenImpCasts();
@ -1187,6 +1195,7 @@ public:
// Just take the first token.
CXXOperatorCallExpr *Op = dyn_cast<CXXOperatorCallExpr>(E);
Loc = Op->getOperatorLoc();
Flags |= OperatorToken;
} else if (MemberExpr::classof(CalleeExpr)) {
MemberExpr *Member = dyn_cast<MemberExpr>(CalleeExpr);
Loc = Member->getMemberLoc();
@ -1204,7 +1213,7 @@ public:
}
visitIdentifier("use", "function", getQualifiedName(NamedCallee), Loc, Mangled,
getContext(Loc));
getContext(Loc), Flags);
return true;
}

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

@ -0,0 +1,9 @@
<!doctype html>
<style>
div { display: contents; }
</style>
<math></math>
<script>
let div = document.createElementNS('http://www.w3.org/1998/Math/MathML', 'div');
document.querySelector('math').appendChild(div);
</script>

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

@ -522,3 +522,4 @@ load 1425893.html
load 1428353.html
pref(dom.webcomponents.shadowdom.enabled,true) load 1429088.html
load 1429961.html
load 1435015.html

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

@ -6095,6 +6095,7 @@ nsCSSFrameConstructor::AddFrameConstructionItemsInternal(nsFrameConstructorState
}
bool isPopup = false;
bool foundMathMLData = false;
// Try to find frame construction data for this content
const FrameConstructionData* data;
if (isText) {
@ -6124,6 +6125,7 @@ nsCSSFrameConstructor::AddFrameConstructionItemsInternal(nsFrameConstructorState
}
if (!data) {
data = FindMathMLData(element, aTag, aNameSpaceID, styleContext);
foundMathMLData = !!data;
}
if (!data) {
data = FindSVGData(element, aTag, aNameSpaceID, aParentFrame,
@ -6189,7 +6191,7 @@ nsCSSFrameConstructor::AddFrameConstructionItemsInternal(nsFrameConstructorState
//
// Figure out what should happen for display: contents in MathML.
if (display->mDisplay == StyleDisplay::Contents &&
!aContent->IsMathMLElement()) {
!foundMathMLData) {
if (!GetDisplayContentsStyleFor(aContent)) {
MOZ_ASSERT(styleContext->GetPseudo() || !isGeneratedContent,
"Should have had pseudo type");

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

@ -399,6 +399,7 @@ nsHtml5TreeBuilder::characters(const char16_t* buf,
continue;
}
}
MOZ_FALLTHROUGH_ASSERT("unreachable");
}
default: {
switch (mode) {

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

@ -1162,4 +1162,4 @@ static const TransportSecurityPreload kPublicKeyPinningPreloadList[] = {
static const int32_t kUnknownId = -1;
static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1526066279722000);
static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1526152836006000);

Разница между файлами не показана из-за своего большого размера Загрузить разницу

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

@ -8,7 +8,7 @@
/*****************************************************************************/
#include <stdint.h>
const PRTime gPreloadListExpirationTime = INT64_C(1528485467104000);
const PRTime gPreloadListExpirationTime = INT64_C(1528572023795000);
%%
0-1.party, 1
0.me.uk, 1
@ -903,7 +903,6 @@ adentalsolution.com, 1
adevel.eu, 1
adhd-inattentive.com, 1
adhesivelaundry.co.uk, 1
adhigamindia.com, 1
adhoc.is, 1
adigitali.biz, 1
adimaja.com, 1
@ -1218,6 +1217,7 @@ airnow.gov, 1
airpbx.com, 1
airplay-inflatable-hire.co.uk, 1
airplayradio.nl, 1
airportlimototoronto.com, 1
airpurifierproductsonline.com, 1
airsoft.ch, 1
airtimefranchise.com, 1
@ -1512,7 +1512,7 @@ alpha.ch, 1
alpha88uat.com, 1
alphabetsigns.com, 1
alphabouncycastles.co.uk, 1
alphabrock.cn, 1
alphabrock.cn, 0
alphachat.net, 1
alphafiduciaryservices.ch, 1
alphahunks.com, 0
@ -1568,6 +1568,7 @@ alumni-kusa.jp, 1
alunonaescola.com.br, 1
alupferd.de, 1
aluroof.eu, 1
alvcs.com, 1
alviano.com, 1
alvicom.hu, 1
alvosec.com, 1
@ -2778,6 +2779,7 @@ awin.la, 1
awk.tw, 1
awksolutions.com, 1
awningsaboveus.com, 1
awomaninherprime.com, 1
awsmdev.de, 1
awxg.com, 1
awxg.org, 1
@ -4925,7 +4927,6 @@ bugginslab.co.uk, 1
bugs.chromium.org, 1
bugsmashed.com, 1
bugtrack.co.uk, 1
bugwie.com, 1
bugzil.la, 1
bugzilla.mozilla.org, 1
buiko.com, 1
@ -5621,7 +5622,6 @@ cdu-wilgersdorf.de, 1
ce-pimkie.fr, 1
cebz.org, 1
ceciliacolombara.com, 1
cecilwalker.com.au, 1
cecipu.gob.cl, 1
ced-services.nl, 1
cedriccassimo.ch, 1
@ -5787,7 +5787,6 @@ channelcards.com, 1
channellife.asia, 1
channellife.co.nz, 1
channellife.com.au, 1
channyc.com, 1
chanoyu-gakkai.jp, 1
chantalguggenbuhl.ch, 1
chanz.com, 1
@ -7226,7 +7225,6 @@ croixblanche-haguenau.fr, 1
cronix.cc, 1
cronologie.de, 1
cronometer.com, 1
crop-alert.com, 1
croquette.net, 1
crosbug.com, 1
crose.co.uk, 1
@ -7563,7 +7561,6 @@ d-bood.site, 0
d-designerin.de, 1
d-loop.de, 1
d-msg.com, 1
d-parts24.de, 1
d-quantum.com, 1
d-toys.com.ua, 1
d-training.de, 1
@ -8266,7 +8263,6 @@ dethemium.com, 1
dethikiemtra.com, 1
detoxetmoi.com, 1
detoxsinutritie.ro, 1
detroit-english.de, 1
detroitstylepizza.com, 1
detroitzoo.org, 1
detskysad.com, 1
@ -8461,6 +8457,7 @@ diffnow.com, 1
difoosion.com, 1
digcit.org, 1
digdata.de, 1
diggable.co, 1
dighans.com, 1
digiarc.net, 1
digibild.ch, 1
@ -8805,7 +8802,6 @@ dogworld.com.br, 1
dohanews.co, 1
dojifish.space, 1
dokan-e.com, 1
dokelio-idf.fr, 1
doku-gilde.de, 1
dokuboard.com, 1
dokuraum.de, 1
@ -9252,6 +9248,7 @@ dustygroove.com, 1
dustyspokesbnb.ca, 1
dutch.desi, 1
dutch1.nl, 1
dutchessuganda.com, 1
dutchrank.nl, 1
dutchwanderers.nl, 1
dutchweballiance.nl, 1
@ -9515,7 +9512,6 @@ eddesign.ch, 1
eddmil.es, 1
eddokloosterman.com, 1
edeca.net, 1
edehsa.com, 1
edenmal.net, 1
edenvalerubbleremovals.co.za, 1
edesseglabor.hu, 1
@ -10204,7 +10200,6 @@ eroimatome.com, 1
eroma.com.au, 1
eron.info, 1
erotic4me.ch, 1
eroticforce.com, 1
erotpo.cz, 1
erp-band.ru, 1
erp.band, 1
@ -10611,7 +10606,6 @@ everydaywot.com, 1
everydaywp.com, 1
everyex.com, 1
everygayporn.com, 1
everygayporn.xyz, 1
everymove.org, 1
everytruckjob.com, 1
everytrycounts.gov, 1
@ -10878,7 +10872,6 @@ faithindemocracy.eu, 1
faithmissionaries.com, 1
faithwatch.org, 1
faixaazul.com, 1
faizan.net, 1
fakeapple.nl, 1
fakerli.com, 1
fakti.bg, 1
@ -12237,6 +12230,7 @@ gambetti.fr, 1
gambit.pro, 1
gambitboard.com, 1
gambitnash.co.uk, 1
gambitnash.com, 1
gambitprint.com, 1
gamblersgaming.eu, 1
game-files.net, 0
@ -12528,6 +12522,7 @@ geoscope.ch, 1
geosphereservices.com, 1
geotab.com, 1
geraintwhite.co.uk, 1
gerald-zojer.com, 1
geraldsonrealty.com, 1
gerardobsd.com, 1
gerardozamudio.mx, 1
@ -13273,7 +13268,6 @@ gtdgo.com, 1
gtmasterclub.it, 0
gtmetrix.com, 1
gtopala.com, 1
gtour.info, 1
gtravers-basketmaker.co.uk, 1
gtts.space, 1
guardian360.nl, 1
@ -14123,6 +14117,7 @@ hirevets.gov, 1
hirezzportal.com, 1
hirotaka.org, 1
hirte-digital.de, 1
hirzaconsult.ro, 1
hisbrucker.net, 1
hisnet.de, 1
hispanic.dating, 1
@ -14986,6 +14981,7 @@ imaginetricks.com, 1
imagr.io, 1
imanageproducts.uk, 1
imanesdeviaje.com, 1
imanhearts.com, 1
imanolbarba.net, 1
imanudin.net, 1
imarkethost.co.uk, 1
@ -15440,6 +15436,7 @@ investir.ch, 1
investor.gov, 1
investorforms.com, 1
investorloanshub.com, 1
investpay.ru, 1
invinsec.com, 1
invioinc.com, 1
invis.net, 1
@ -16521,6 +16518,7 @@ judc-ge.ch, 1
judge2020.com, 1
judge2020.me, 1
judoprodeti.cz, 1
judosaintdenis.fr, 0
juegosycodigos.es, 1
juegosycodigos.mx, 1
juergen-elbert.de, 1
@ -16669,6 +16667,7 @@ k258059.net, 1
k2mts.org, 1
k33k00.com, 1
k38.cc, 1
k3nny.fr, 0
k4r.ru, 1
k82.org, 1
k8r.eu, 1
@ -16676,7 +16675,6 @@ k9swx.com, 1
kaamoscreations.com, 1
kaanduman.com, 1
kaangenc.me, 1
kaasbijwijn.nl, 1
kaatha-kamrater.se, 1
kab-s.de, 1
kabashop.com.br, 1
@ -16754,7 +16752,6 @@ kanagawachuo-hospital.jp, 1
kanal-schaefer.de, 1
kanal-tv-haensch.de, 1
kanar.nl, 1
kancolle.me, 1
kandalife.com, 1
kandec.co.jp, 1
kanecastles.com, 1
@ -17661,6 +17658,7 @@ kuroinu.jp, 1
kuroisalva.xyz, 0
kurona.ga, 1
kuronekogaro.com, 1
kurrietv.nl, 1
kurschies.de, 1
kursprogramisty.pl, 1
kurswahl-online.de, 1
@ -18494,6 +18492,7 @@ limereslaw.com, 1
limitededitioncomputers.com, 1
limitededitionsolutions.com, 1
limn.me, 1
limoairporttoronto.net, 1
limousineservicezurich.com, 1
limpid.nl, 1
limules.ch, 1
@ -19319,7 +19318,6 @@ mainston.com, 1
mainzelmaennchen.net, 1
maisgasolina.com, 1
maisonpaulmier.fr, 1
maispa.com, 1
maisretorno.com, 1
maisvitaminas.com.br, 1
maitrechaton.fr, 1
@ -19567,7 +19565,6 @@ marketing.limited, 1
marketingco.nl, 1
marketingdesignu.cz, 1
marketingromania.ro, 1
marketingvirtuales.com, 1
marketio.co, 1
marketizare.ro, 1
marketnsight.com, 1
@ -20873,7 +20870,6 @@ moojp.co.jp, 1
moolah.rocks, 1
moonagic.com, 1
moonbot.io, 1
moonchart.co.uk, 1
moondrop.org, 1
moonkin.eu, 1
moonmelo.com, 1
@ -21021,7 +21017,7 @@ mplusm.eu, 1
mpn.poker, 1
mpnpokertour.com, 1
mpodraza.pl, 1
mpreserver.com, 0
mpreserver.com, 1
mpserver12.org, 1
mpsgarage.com.au, 1
mpsoundcraft.com, 1
@ -21049,7 +21045,6 @@ mrjooz.com, 1
mrkapowski.com, 1
mrketolocksmith.com, 1
mrknee.gr, 1
mrksk.com, 1
mrleonardo.com, 1
mrliu.me, 1
mrmoregame.de, 1
@ -21430,6 +21425,7 @@ myproblog.com, 1
myptsite.com, 1
mypup.nl, 1
myrandomtips.com, 1
myranicol.com, 1
myrealestatemate.com.au, 1
myref.net, 1
myrekber.co.id, 1
@ -22100,7 +22096,6 @@ ngiemboon.net, 1
nginxyii.tk, 1
ngndn.jp, 1
ngocuong.net, 1
ngtoys.com.br, 1
ngvf.de, 1
ngxpkg.com, 1
nhccnews.org, 1
@ -23677,6 +23672,7 @@ paulrobertlloyd.com, 1
paulrotter.de, 1
paulrudge.codes, 1
paulschreiber.com, 1
paulscustomauto.com, 1
paulshir.com, 1
paulshir.is, 1
paulswartz.net, 1
@ -23928,6 +23924,7 @@ petelew.is, 1
peter.org.ua, 1
peterandjoelle.co.uk, 1
peterboers.info, 1
peterdavehello.org, 1
peterfolta.net, 1
peterhuetz.at, 1
peterhuetz.com, 1
@ -24633,6 +24630,7 @@ postdarwinism.com, 1
postdeck.de, 1
posteo.de, 0
posters.win, 1
posterspy.com, 1
postfalls-naturopathic.com, 1
postfinance.ch, 1
postmatescode.com, 1
@ -24809,6 +24807,7 @@ primordialsnooze.com, 1
primotilesandbathrooms.co.uk, 1
princeagency.com, 1
princeofwhales.com, 1
princesparktouch.com, 1
princessbackpack.de, 1
princessmargaretlotto.com, 1
principalstest.com, 1
@ -25052,6 +25051,7 @@ proxyportal.net, 1
proxyportal.org, 1
proymaganadera.com, 1
prpsss.com, 1
prstatic.com, 1
prt.in.th, 1
prtimes.com, 1
prtpe.com, 1
@ -25763,7 +25763,6 @@ reddingo.jp, 1
reddingo.nl, 1
reddingo.nz, 1
reddingsbrigade-zwolle.nl, 1
reddiseals.com, 1
reddit2kindle.com, 1
reddraggone9.com, 1
rede-reim.de, 1
@ -26158,7 +26157,6 @@ rijsinkunst.nl, 1
rile5.com, 1
rileyevans.co.uk, 1
rimax.vn, 1
rimcountrymuseum.org, 1
rimeto.io, 1
rimo.site, 1
ringingliberty.com, 1
@ -27605,6 +27603,7 @@ servepublic.com, 1
servepublic.org, 1
server-bg.net, 1
server-daten.de, 1
server-datenrettung.de, 1
server-essentials.com, 1
server-eye.de, 1
server.pk, 1
@ -29379,6 +29378,7 @@ stonewuu.com, 1
stony.com, 1
stonystratford.org, 1
stopakwardhandshakes.org, 1
stopbreakupnow.org, 1
stopbullying.gov, 1
stopfraud.gov, 1
stopthethyroidmadness.com, 1
@ -29594,6 +29594,7 @@ sundayfundayjapan.com, 1
suneilpatel.com, 1
sunfeathers.net, 1
sunfireshop.com.br, 1
sunflyer.cn, 0
sunfox.cz, 1
sunfulong.blog, 1
sunfulong.me, 1
@ -29965,7 +29966,6 @@ takeitoffline.co.uk, 1
takemoto-ped.com, 1
taken.pl, 1
takeshifujimoto.com, 1
takinet.kr, 1
takk.pl, 1
takkaaaaa.com, 1
takusan.ru, 1
@ -30535,7 +30535,6 @@ thediscovine.com, 1
thedocumentrefinery.com, 1
thedominatorsclan.com, 1
thedreamtravelgroup.co.uk, 1
thedrinks.co, 1
thedronechart.com, 1
thedrunkencabbage.com, 1
thedutchmarketers.com, 1
@ -31020,7 +31019,6 @@ tkn.tokyo, 1
tkts.cl, 1
tkusano.jp, 1
tkw01536.de, 1
tlach.cz, 1
tlca.org, 1
tlcnet.info, 1
tlehseasyads.com, 1
@ -31293,6 +31291,7 @@ toretfaction.net, 1
tormentedradio.com, 0
torn1.se, 1
torngalaxy.com, 1
torontocorporatelimo.services, 1
torproject.org, 0
torprojects.com, 1
torquato.de, 0
@ -32652,6 +32651,7 @@ vidiproject.com, 1
vidister.de, 1
viditut.com, 1
vidkovaomara.si, 1
vidlyoficial.com, 1
vieaw.com, 1
vieclam24h.vn, 0
viekelis.lt, 0
@ -33157,7 +33157,6 @@ waterschaplimburg.nl, 1
watertrails.io, 1
waterworkscondos.com, 1
watsonwork.me, 1
wattechweb.com, 1
wave-ola.es, 1
wavesboardshop.com, 1
wavesoftime.com, 1
@ -33268,7 +33267,6 @@ webfilings-eu-mirror.appspot.com, 1
webfilings-eu.appspot.com, 1
webfilings-mirror-hrd.appspot.com, 1
webfilings.appspot.com, 1
webfox.com.br, 1
webgarten.ch, 1
webgears.com, 1
webhackspro.com, 1
@ -34283,7 +34281,6 @@ xicreative.net, 1
xight.org, 1
xilef.org, 1
xilegames.com, 1
xiliant.com, 1
xilkoi.net, 1
ximbo.net, 1
xin-in.com, 1
@ -34306,7 +34303,6 @@ xlaff.com, 1
xlan.be, 1
xlange.com, 1
xlboo.com, 1
xlfblog.com, 1
xlinar.com, 1
xmedius.ca, 1
xmedius.com, 0
@ -34950,7 +34946,7 @@ zbp.at, 0
zbrane-doplnky.cz, 1
zby.io, 1
zbyga.cz, 1
zbyte.it, 0
zbyte.it, 1
zcarot.com, 1
zcarrot.com, 1
zcgram.com, 1
@ -35034,6 +35030,7 @@ zh.search.yahoo.com, 0
zhang-hao.com, 1
zhang.nz, 1
zhangfangzhou.com, 1
zhangge.net, 1
zhanghao.me, 1
zhangsidan.com, 1
zhangsir.net, 1
@ -35200,6 +35197,7 @@ zwerimex.com, 1
zwollemag.nl, 1
zwy.ch, 1
zwy.me, 0
zx6rninja.de, 1
zx7r.de, 1
zxity.co.uk, 1
zxity.ltd, 1

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

@ -158,6 +158,9 @@ class Theme {
case "toolbar_top_separator":
case "toolbar_bottom_separator":
case "toolbar_vertical_separator":
case "button_background":
case "button_background_hover":
case "button_background_active":
this.lwtStyles[color] = cssColor;
break;
}

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

@ -144,6 +144,18 @@
"icons_attention": {
"$ref": "ThemeColor",
"optional": true
},
"button_background": {
"$ref": "ThemeColor",
"optional": true
},
"button_background_hover": {
"$ref": "ThemeColor",
"optional": true
},
"button_background_active": {
"$ref": "ThemeColor",
"optional": true
}
},
"additionalProperties": { "$ref": "UnrecognizedProperty" }

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

@ -19,3 +19,4 @@ support-files =
[browser_ext_themes_toolbar_fields.js]
[browser_ext_themes_toolbars.js]
[browser_ext_themes_toolbarbutton_icons.js]
[browser_ext_themes_toolbarbutton_colors.js]

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

@ -0,0 +1,65 @@
"use strict";
Cu.importGlobalProperties(["InspectorUtils"]);
// This test checks whether applied WebExtension themes that attempt to change
// the button background color properties are applied correctly.
add_task(async function test_button_background_properties() {
const BUTTON_BACKGROUND = "#DEDEDE";
const BUTTON_BACKGROUND_ACTIVE = "#FFFFFF";
const BUTTON_BACKGROUND_HOVER = "#59CBE8";
let extension = ExtensionTestUtils.loadExtension({
manifest: {
"theme": {
"images": {
"headerURL": "image1.png",
},
"colors": {
"accentcolor": ACCENT_COLOR,
"textcolor": TEXT_COLOR,
"button_background": BUTTON_BACKGROUND,
"button_background_active": BUTTON_BACKGROUND_ACTIVE,
"button_background_hover": BUTTON_BACKGROUND_HOVER,
},
},
},
files: {
"image1.png": BACKGROUND,
},
});
await extension.startup();
let toolbarButton = document.querySelector("#home-button");
let toolbarButtonIcon = document.getAnonymousElementByAttribute(toolbarButton, "class", "toolbarbutton-icon");
let toolbarButtonIconCS = window.getComputedStyle(toolbarButtonIcon);
Assert.equal(
toolbarButtonIconCS.getPropertyValue("background-color"),
`rgb(${hexToRGB(BUTTON_BACKGROUND).join(", ")})`,
"Toolbar button background is set."
);
InspectorUtils.addPseudoClassLock(toolbarButton, ":hover");
Assert.equal(
toolbarButtonIconCS.getPropertyValue("background-color"),
`rgb(${hexToRGB(BUTTON_BACKGROUND_HOVER).join(", ")})`,
"Toolbar button hover background is set."
);
InspectorUtils.addPseudoClassLock(toolbarButton, ":active");
Assert.equal(
toolbarButtonIconCS.getPropertyValue("background-color"),
`rgb(${hexToRGB(BUTTON_BACKGROUND_ACTIVE).join(", ")})`,
"Toolbar button active background is set!"
);
InspectorUtils.clearPseudoClassLocks(toolbarButton);
await extension.unload();
});

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

@ -30,6 +30,9 @@ const kCSSVarsMap = new Map([
["--toolbox-border-bottom-color", "toolbar_bottom_separator"],
["--lwt-toolbarbutton-icon-fill", "icon_color"],
["--lwt-toolbarbutton-icon-fill-attention", "icon_attention_color"],
["--lwt-toolbarbutton-background", "button_background"],
["--lwt-toolbarbutton-hover-background", "button_background_hover"],
["--lwt-toolbarbutton-active-background", "button_background_active"],
]);
this.LightweightThemeConsumer =