Merge autoland to mozilla-central a=merge

This commit is contained in:
arthur.iakab 2018-07-16 00:50:38 +03:00
Родитель 1261098dca 9f85c749a3
Коммит 78b9d7d52c
27 изменённых файлов: 169 добавлений и 103 удалений

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

@ -1,6 +1,6 @@
const { AppConstants } = ChromeUtils.import("resource://gre/modules/AppConstants.jsm", {});
const { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm", {});
const { MessageContext } = ChromeUtils.import("resource://gre/modules/MessageContext.jsm", {});
const { MessageContext, FluentResource } = ChromeUtils.import("resource://gre/modules/MessageContext.jsm", {});
ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
XPCOMUtils.defineLazyGlobalGetters(this, ["fetch"]);
@ -76,10 +76,8 @@ XPCOMUtils.defineLazyGlobalGetters(this, ["fetch"]);
* and will produce a new set of permutations placing the language pack provided resources
* at the top.
*/
const L10nRegistry = {
sources: new Map(),
ctxCache: new Map(),
bootstrap: null,
/**
@ -95,8 +93,29 @@ const L10nRegistry = {
await this.bootstrap;
}
const sourcesOrder = Array.from(this.sources.keys()).reverse();
const pseudoNameFromPref = Services.prefs.getStringPref("intl.l10n.pseudo", "");
for (const locale of requestedLangs) {
yield * generateContextsForLocale(locale, sourcesOrder, resourceIds);
for (const fetchPromises of generateResourceSetsForLocale(locale, sourcesOrder, resourceIds)) {
const ctx = await Promise.all(fetchPromises).then(
dataSets => {
const ctx = new MessageContext(locale, {
...MSG_CONTEXT_OPTIONS,
transform: PSEUDO_STRATEGIES[pseudoNameFromPref],
});
for (const data of dataSets) {
if (data === null) {
return null;
}
ctx.addResource(data);
}
return ctx;
},
() => null
);
if (ctx !== null) {
yield ctx;
}
}
}
},
@ -126,7 +145,6 @@ const L10nRegistry = {
throw new Error(`Source with name "${source.name}" is not registered.`);
}
this.sources.set(source.name, source);
this.ctxCache.clear();
Services.locale.setAvailableLocales(this.getAvailableLocales());
},
@ -158,21 +176,6 @@ const L10nRegistry = {
},
};
/**
* A helper function for generating unique context ID used for caching
* MessageContexts.
*
* @param {String} locale
* @param {Array} sourcesOrder
* @param {Array} resourceIds
* @returns {String}
*/
function generateContextID(locale, sourcesOrder, resourceIds) {
const sources = sourcesOrder.join(",");
const ids = resourceIds.join(",");
return `${locale}|${sources}|${ids}`;
}
/**
* This function generates an iterator over MessageContexts for a single locale
* for a given list of resourceIds for all possible combinations of sources.
@ -187,7 +190,7 @@ function generateContextID(locale, sourcesOrder, resourceIds) {
* @param {Array} [resolvedOrder]
* @returns {AsyncIterator<MessageContext>}
*/
async function* generateContextsForLocale(locale, sourcesOrder, resourceIds, resolvedOrder = []) {
function* generateResourceSetsForLocale(locale, sourcesOrder, resourceIds, resolvedOrder = []) {
const resolvedLength = resolvedOrder.length;
const resourcesLength = resourceIds.length;
@ -208,14 +211,11 @@ async function* generateContextsForLocale(locale, sourcesOrder, resourceIds, res
// If the number of resolved sources equals the number of resources,
// create the right context and return it if it loads.
if (resolvedLength + 1 === resourcesLength) {
const ctx = await generateContext(locale, order, resourceIds);
if (ctx !== null) {
yield ctx;
}
yield generateResourceSet(locale, order, resourceIds);
} else if (resolvedLength < resourcesLength) {
// otherwise recursively load another generator that walks over the
// partially resolved list of sources.
yield * generateContextsForLocale(locale, sourcesOrder, resourceIds, order);
yield * generateResourceSetsForLocale(locale, sourcesOrder, resourceIds, order);
}
}
}
@ -346,35 +346,10 @@ const PSEUDO_STRATEGIES = {
* @param {Array} resourceIds
* @returns {Promise<MessageContext>}
*/
function generateContext(locale, sourcesOrder, resourceIds) {
const ctxId = generateContextID(locale, sourcesOrder, resourceIds);
if (L10nRegistry.ctxCache.has(ctxId)) {
return L10nRegistry.ctxCache.get(ctxId);
}
const fetchPromises = resourceIds.map((resourceId, i) => {
function generateResourceSet(locale, sourcesOrder, resourceIds) {
return resourceIds.map((resourceId, i) => {
return L10nRegistry.sources.get(sourcesOrder[i]).fetchFile(locale, resourceId);
});
const ctxPromise = Promise.all(fetchPromises).then(
dataSets => {
const pseudoNameFromPref = Services.prefs.getStringPref("intl.l10n.pseudo", "");
const ctx = new MessageContext(locale, {
...MSG_CONTEXT_OPTIONS,
transform: PSEUDO_STRATEGIES[pseudoNameFromPref],
});
for (const data of dataSets) {
if (data === null) {
return null;
}
ctx.addMessages(data);
}
return ctx;
},
() => null
);
L10nRegistry.ctxCache.set(ctxId, ctxPromise);
return ctxPromise;
}
/**
@ -454,7 +429,9 @@ class FileSource {
if (this.cache[fullPath] === false) {
return Promise.reject(`The source has no resources for path "${fullPath}"`);
}
if (this.cache[fullPath].then) {
// `true` means that the file is indexed, but hasn't
// been fetched yet.
if (this.cache[fullPath] !== true) {
return this.cache[fullPath];
}
} else if (this.indexed) {
@ -462,7 +439,7 @@ class FileSource {
}
return this.cache[fullPath] = L10nRegistry.load(fullPath).then(
data => {
return this.cache[fullPath] = data;
return this.cache[fullPath] = FluentResource.fromString(data);
},
err => {
this.cache[fullPath] = false;

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

@ -263,7 +263,6 @@ class Localization {
case "nsPref:changed":
switch (data) {
case "intl.l10n.pseudo":
L10nRegistry.ctxCache.clear();
this.onChange();
}
break;

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

@ -1908,4 +1908,5 @@ class MessageContext {
}
this.MessageContext = MessageContext;
var EXPORTED_SYMBOLS = ["MessageContext"];
this.FluentResource = FluentResource;
var EXPORTED_SYMBOLS = ["MessageContext", "FluentResource"];

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

@ -40,7 +40,6 @@ add_task(async function test_empty_resourceids() {
// cleanup
L10nRegistry.sources.clear();
L10nRegistry.ctxCache.clear();
});
/**
@ -57,7 +56,6 @@ add_task(async function test_empty_sources() {
// cleanup
L10nRegistry.sources.clear();
L10nRegistry.ctxCache.clear();
});
/**
@ -80,7 +78,6 @@ add_task(async function test_methods_calling() {
// cleanup
L10nRegistry.sources.clear();
L10nRegistry.ctxCache.clear();
});
/**
@ -118,7 +115,6 @@ add_task(async function test_has_one_source() {
// cleanup
L10nRegistry.sources.clear();
L10nRegistry.ctxCache.clear();
});
/**
@ -175,7 +171,6 @@ add_task(async function test_has_two_sources() {
// cleanup
L10nRegistry.sources.clear();
L10nRegistry.ctxCache.clear();
});
/**
@ -203,7 +198,6 @@ add_task(async function test_indexed() {
// cleanup
L10nRegistry.sources.clear();
L10nRegistry.ctxCache.clear();
});
/**
@ -244,7 +238,6 @@ add_task(async function test_override() {
// cleanup
L10nRegistry.sources.clear();
L10nRegistry.ctxCache.clear();
});
/**
@ -282,7 +275,6 @@ add_task(async function test_updating() {
// cleanup
L10nRegistry.sources.clear();
L10nRegistry.ctxCache.clear();
});
/**
@ -348,7 +340,6 @@ add_task(async function test_removing() {
// cleanup
L10nRegistry.sources.clear();
L10nRegistry.ctxCache.clear();
});
/**
@ -378,15 +369,25 @@ add_task(async function test_missing_file() {
// returns a single context
let ctxs = L10nRegistry.generateContexts(["en-US"], ["test.ftl", "test2.ftl"]);
(await ctxs.next());
(await ctxs.next());
// First permutation:
// [platform, platform] - both present
let ctx1 = (await ctxs.next());
equal(ctx1.value.hasMessage("key"), true);
// Second permutation skipped:
// [platform, app] - second missing
// Third permutation:
// [app, platform] - both present
let ctx2 = (await ctxs.next());
equal(ctx2.value.hasMessage("key"), true);
// Fourth permutation skipped:
// [app, app] - second missing
equal((await ctxs.next()).done, true);
// cleanup
L10nRegistry.sources.clear();
L10nRegistry.ctxCache.clear();
});
/**
@ -447,6 +448,5 @@ add_task(async function test_parallel_io() {
// cleanup
L10nRegistry.sources.clear();
L10nRegistry.ctxCache.clear();
L10nRegistry.load = originalLoad;
});

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

@ -43,7 +43,6 @@ add_task(async function test_methods_calling() {
equal(values[1], "[en] Value3");
L10nRegistry.sources.clear();
L10nRegistry.ctxCache.clear();
L10nRegistry.load = originalLoad;
Services.locale.setRequestedLocales(originalRequested);
});
@ -90,7 +89,6 @@ key = { PLATFORM() ->
`${ known_platforms[AppConstants.platform].toUpperCase() } Value`));
L10nRegistry.sources.clear();
L10nRegistry.ctxCache.clear();
L10nRegistry.load = originalLoad;
});
@ -138,7 +136,6 @@ add_task(async function test_add_remove_resourceIds() {
equal(values[1], "Value2");
L10nRegistry.sources.clear();
L10nRegistry.ctxCache.clear();
L10nRegistry.load = originalLoad;
Services.locale.setRequestedLocales(originalRequested);
});

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

@ -94,7 +94,6 @@ add_task(async function test_accented_works() {
}
L10nRegistry.sources.clear();
L10nRegistry.ctxCache.clear();
L10nRegistry.load = originalValues.load;
Services.locale.setRequestedLocales(originalValues.requested);
});
@ -126,7 +125,6 @@ add_task(async function test_unavailable_strategy_works() {
Services.prefs.setStringPref("intl.l10n.pseudo", "");
L10nRegistry.sources.clear();
L10nRegistry.ctxCache.clear();
L10nRegistry.load = originalValues.load;
Services.locale.setRequestedLocales(originalValues.requested);
});

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

@ -1133,9 +1133,8 @@ nsRefreshDriver::nsRefreshDriver(nsPresContext* aPresContext)
"Need a pres context to tell us to call Disconnect() later "
"and decrement sRefreshDriverCount.");
mMostRecentRefresh = TimeStamp::Now();
mMostRecentTick = mMostRecentRefresh;
mNextThrottledFrameRequestTick = mMostRecentTick;
mNextRecomputeVisibilityTick = mMostRecentTick;
mNextThrottledFrameRequestTick = mMostRecentRefresh;
mNextRecomputeVisibilityTick = mMostRecentRefresh;
++sRefreshDriverCount;
}
@ -1788,17 +1787,16 @@ nsRefreshDriver::Tick(TimeStamp aNowTime)
return;
}
TimeStamp previousRefresh = mMostRecentRefresh;
mMostRecentRefresh = aNowTime;
if (IsWaitingForPaint(aNowTime)) {
// We're currently suspended waiting for earlier Tick's to
// be completed (on the Compositor). Mark that we missed the paint
// and keep waiting.
return;
}
mMostRecentTick = aNowTime;
TimeStamp previousRefresh = mMostRecentRefresh;
mMostRecentRefresh = aNowTime;
if (mRootRefresh) {
mRootRefresh->RemoveRefreshObserver(this, FlushType::Style);
mRootRefresh = nullptr;
@ -2240,10 +2238,10 @@ nsRefreshDriver::IsWaitingForPaint(mozilla::TimeStamp aTime)
}
if (mWaitingForTransaction) {
if (mSkippedPaints && aTime > (mMostRecentTick + TimeDuration::FromMilliseconds(mWarningThreshold * 1000))) {
if (mSkippedPaints && aTime > (mMostRecentRefresh + TimeDuration::FromMilliseconds(mWarningThreshold * 1000))) {
// XXX - Bug 1303369 - too many false positives.
//gfxCriticalNote << "Refresh driver waiting for the compositor for "
// << (aTime - mMostRecentTick).ToSeconds()
// << (aTime - mMostRecentRefresh).ToSeconds()
// << " seconds.";
mWarningThreshold *= 2;
}

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

@ -513,7 +513,6 @@ private:
// The number is doubled every time the threshold is hit.
uint64_t mWarningThreshold;
mozilla::TimeStamp mMostRecentRefresh;
mozilla::TimeStamp mMostRecentTick;
mozilla::TimeStamp mTickStart;
mozilla::TimeStamp mNextThrottledFrameRequestTick;
mozilla::TimeStamp mNextRecomputeVisibilityTick;

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

@ -6404,11 +6404,15 @@ FrameLayerBuilder::PaintItems(std::vector<AssignedDisplayItem>& aItems,
tmpClip.RemoveRoundedCorners();
clip = &tmpClip;
}
bool itemPaintsOwnClip = false;
if (clipTracker.HasClip(opacityNesting) != clip->HasClip() ||
(clip->HasClip() && *clip != currentClip)) {
clipTracker.PopClipIfNeeded(opacityNesting);
if (clip->HasClip()) {
if (item->CanPaintWithClip(*clip)) {
MOZ_ASSERT(!cdi.mInactiveLayerManager);
itemPaintsOwnClip = true;
} else if (clip->HasClip()) {
currentClip = *clip;
clipTracker.SaveClip(opacityNesting);
currentClip.ApplyTo(aContext, appUnitsPerDevPixel);
@ -6432,7 +6436,11 @@ FrameLayerBuilder::PaintItems(std::vector<AssignedDisplayItem>& aItems,
} else
#endif
{
item->Paint(aBuilder, aContext);
if (itemPaintsOwnClip) {
item->PaintWithClip(aBuilder, aContext, *clip);
} else {
item->Paint(aBuilder, aContext);
}
}
}
}

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

@ -4766,6 +4766,52 @@ nsDisplayBackgroundColor::CreateWebRenderCommands(mozilla::wr::DisplayListBuilde
return true;
}
void
nsDisplayBackgroundColor::PaintWithClip(nsDisplayListBuilder* aBuilder,
gfxContext* aCtx,
const DisplayItemClip& aClip)
{
MOZ_ASSERT(mBackgroundStyle->StyleBackground()->mImage.mLayers[0].mClip != StyleGeometryBox::Text);
if (mColor == Color()) {
return;
}
nsRect fillRect = mBackgroundRect;
if (aClip.HasClip()) {
fillRect.IntersectRect(fillRect, aClip.GetClipRect());
}
DrawTarget* dt = aCtx->GetDrawTarget();
int32_t A2D = mFrame->PresContext()->AppUnitsPerDevPixel();
Rect bounds = ToRect(nsLayoutUtils::RectToGfxRect(fillRect, A2D));
MaybeSnapToDevicePixels(bounds, *dt);
ColorPattern fill(ToDeviceColor(mColor));
if (aClip.GetRoundedRectCount()) {
MOZ_ASSERT(aClip.GetRoundedRectCount() == 1);
AutoTArray<DisplayItemClip::RoundedRect, 1> roundedRect;
aClip.AppendRoundedRects(&roundedRect);
bool pushedClip = false;
if (!fillRect.Contains(roundedRect[0].mRect)) {
dt->PushClipRect(bounds);
pushedClip = true;
}
RefPtr<Path> path = aClip.MakeRoundedRectPath(*aCtx->GetDrawTarget(),
A2D,
roundedRect[0]);
dt->Fill(path, fill);
if (pushedClip) {
dt->PopClip();
}
} else {
dt->FillRect(bounds, fill);
}
}
void
nsDisplayBackgroundColor::Paint(nsDisplayListBuilder* aBuilder,
gfxContext* aCtx)

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

@ -2465,6 +2465,13 @@ public:
return false;
}
/**
* Returns true if this item supports PaintWithClip, where the clipping
* is used directly as the primitive geometry instead of needing an explicit
* clip.
*/
virtual bool CanPaintWithClip(const DisplayItemClip& aClip) { return false; }
/**
* Actually paint this item to some rendering context.
* Content outside mVisibleRect need not be painted.
@ -2472,6 +2479,12 @@ public:
*/
virtual void Paint(nsDisplayListBuilder* aBuilder, gfxContext* aCtx) {}
/**
* Same as Paint, except provides a clip to use the geometry to draw with.
* Must not be called unless CanPaintWithClip returned true.
*/
virtual void PaintWithClip(nsDisplayListBuilder* aBuilder, gfxContext* aCtx, const DisplayItemClip& aClip) {}
#ifdef MOZ_DUMP_PAINTING
/**
* Mark this display item as being painted via FrameLayerBuilder::DrawPaintedLayer.
@ -4413,6 +4426,7 @@ public:
LayerManager* aManager,
const ContainerLayerParameters& aParameters) override;
virtual void Paint(nsDisplayListBuilder* aBuilder, gfxContext* aCtx) override;
virtual void PaintWithClip(nsDisplayListBuilder* aBuilder, gfxContext* aCtx, const DisplayItemClip& aClip) override;
virtual already_AddRefed<Layer> BuildLayer(nsDisplayListBuilder* aBuilder,
LayerManager* aManager,
const ContainerLayerParameters& aContainerParameters) override;
@ -4439,6 +4453,18 @@ public:
return mBackgroundRect;
}
virtual bool CanPaintWithClip(const DisplayItemClip& aClip) override
{
mozilla::StyleGeometryBox clip = mBackgroundStyle->StyleBackground()->mImage.mLayers[0].mClip;
if (clip == mozilla::StyleGeometryBox::Text) {
return false;
}
if (aClip.GetRoundedRectCount() > 1) {
return false;
}
return true;
}
virtual nsDisplayItemGeometry* AllocateGeometry(nsDisplayListBuilder* aBuilder) override
{
return new nsDisplaySolidColorGeometry(this, aBuilder, mColor.ToABGR());

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

@ -51,8 +51,8 @@ fuzzy-if(/^Windows\x20NT\x206\.2/.test(http.oscpu),1,5) == clipping-5-image.html
fuzzy-if(/^Windows\x20NT\x206\.2/.test(http.oscpu),1,5) fuzzy-if(skiaContent,1,77) == clipping-5-overflow-hidden.html clipping-5-ref.html
fuzzy-if(/^Windows\x20NT\x206\.2/.test(http.oscpu),1,5) fuzzy-if(Android,5,21) fuzzy-if(skiaContent,1,97) == clipping-5-refi.html clipping-5-ref.html
fuzzy-if(true,1,7) fuzzy-if(d2d,55,95) fuzzy-if(cocoaWidget,1,99) fuzzy-if(Android,99,115) fuzzy-if(skiaContent,1,77) == clipping-5-refc.html clipping-5-ref.html # bug 732535
fuzzy-if(Android,8,469) fuzzy-if(skiaContent,21,74) fuzzy-if(winWidget,144,335) fuzzy-if(webrender&&cocoaWidget,98-98,279-279) random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) == clipping-6.html clipping-6-ref.html # PaintedLayer and MaskLayer with transforms that aren't identical, bug 1392106
fuzzy-if(true,2,29) fuzzy-if(d2d,46,71) fuzzy-if(Android,255,586) fuzzy-if(skiaContent,28,96) == clipping-7.html clipping-7-ref.html # ColorLayer and MaskLayer with transforms that aren't identical. Reference image rendered without using layers (which causes fuzzy failures).
fuzzy-if(Android,8,469) fuzzy-if(skiaContent,21,76) fuzzy-if(winWidget,144,335) fuzzy-if(webrender&&cocoaWidget,98-98,279-279) random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) == clipping-6.html clipping-6-ref.html # PaintedLayer and MaskLayer with transforms that aren't identical, bug 1392106
fuzzy-if(true,2,29) fuzzy-if(d2d,46,71) fuzzy-if(Android,255,586) fuzzy-if(skiaContent,28,97) == clipping-7.html clipping-7-ref.html # ColorLayer and MaskLayer with transforms that aren't identical. Reference image rendered without using layers (which causes fuzzy failures).
fuzzy-if(/^Windows\x20NT\x206\.2/.test(http.oscpu),1,5) == clipping-and-zindex-1.html clipping-and-zindex-1-ref.html
fuzzy-if(cocoaWidget,1,4) fuzzy-if(d2d,59,342) fuzzy-if(d3d11&&advancedLayers&&!d2d,30,3) == intersecting-clipping-1-canvas.html intersecting-clipping-1-refc.html
== intersecting-clipping-1-image.html intersecting-clipping-1-refi.html
@ -78,7 +78,7 @@ fails-if(Android) == scrollbar-clamping-2.html scrollbar-clamping-2-ref.html
fuzzy-if(true,1,1) == corner-joins-1.xhtml corner-joins-1-ref.xhtml
fuzzy(255,20) random-if(winWidget) fuzzy-if(skiaContent,255,610) == corner-joins-2.xhtml corner-joins-2-ref.xhtml
fuzzy-if(/^Windows\x20NT\x2010\.0/.test(http.oscpu)||/^Windows\x20NT\x206\.2/.test(http.oscpu),1,20) fuzzy-if(d2d,98,157) fuzzy-if(Android,166,400) fuzzy-if(skiaContent,59,145) == scroll-1.html scroll-1-ref.html # see bug 732535 #Bug 959166
fuzzy-if(/^Windows\x20NT\x2010\.0/.test(http.oscpu)||/^Windows\x20NT\x206\.2/.test(http.oscpu),1,20) fuzzy-if(d2d,98,157) fuzzy-if(Android,166,400) fuzzy-if(skiaContent,59,146) == scroll-1.html scroll-1-ref.html # see bug 732535 #Bug 959166
== transforms-1.html transforms-1-ref.html

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

@ -15,13 +15,13 @@ fuzzy-if(OSX==1010,1,24) fuzzy-if(d2d,16,999) fuzzy-if(skiaContent,1,12) fuzzy-i
fails-if(Android) == boxshadow-fileupload.html boxshadow-fileupload-ref.html
fuzzy-if(/^Windows\x20NT\x2010\.0/.test(http.oscpu),98,152) fuzzy-if(skiaContent,13,28) fuzzy-if(webrender,19-19,50-50) == boxshadow-inner-basic.html boxshadow-inner-basic-ref.svg
random-if(layersGPUAccelerated) == boxshadow-mixed.html boxshadow-mixed-ref.html
== boxshadow-mixed-2.html boxshadow-mixed-2-ref.html
random-if(d2d) fuzzy-if(skiaContent,1,100) fuzzy-if(webrender,127,3528) == boxshadow-rounded-spread.html boxshadow-rounded-spread-ref.html
fuzzy-if(skiaContent,1,17) random-if(layersGPUAccelerated) == boxshadow-mixed.html boxshadow-mixed-ref.html
fuzzy-if(skiaContent,1,17) == boxshadow-mixed-2.html boxshadow-mixed-2-ref.html
random-if(d2d) fuzzy-if(skiaContent,1,212) fuzzy-if(webrender,127,3528) == boxshadow-rounded-spread.html boxshadow-rounded-spread-ref.html
fuzzy-if(skiaContent,1,50) == boxshadow-dynamic.xul boxshadow-dynamic-ref.xul
random-if(d2d) == boxshadow-onecorner.html boxshadow-onecorner-ref.html
random-if(d2d) == boxshadow-twocorners.html boxshadow-twocorners-ref.html
random-if(d2d) == boxshadow-threecorners.html boxshadow-threecorners-ref.html
random-if(d2d) fuzzy-if(skiaContent,1,14) == boxshadow-onecorner.html boxshadow-onecorner-ref.html
random-if(d2d) fuzzy-if(skiaContent,1,22) == boxshadow-twocorners.html boxshadow-twocorners-ref.html
random-if(d2d) fuzzy-if(skiaContent,1,36) == boxshadow-threecorners.html boxshadow-threecorners-ref.html
fuzzy(2,440) fails-if(webrender) == boxshadow-skiprect.html boxshadow-skiprect-ref.html
== boxshadow-opacity.html boxshadow-opacity-ref.html
== boxshadow-color-rounding.html boxshadow-color-rounding-ref.html

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

@ -1440,7 +1440,7 @@ fuzzy-if(skiaContent,1,3) == 521525-1.html 521525-1-ref.html
== 523096-1.html 523096-1-ref.html
random-if(d2d) == 523468-1.html 523468-1-ref.html
== 524175-1.html 524175-1-ref.html
fuzzy-if(skiaContent,1,50) == 526463-1.html 526463-1-ref.html
fuzzy-if(skiaContent,5,50) == 526463-1.html 526463-1-ref.html
== 527464-1.html 527464-ref.html
== 528038-1a.html 528038-1-ref.html
== 528038-1b.html 528038-1-ref.html
@ -2070,7 +2070,7 @@ test-pref(font.size.systemFontScale,200) == 1412743.html 1412743-ref.html
== 1424680.html 1424680-ref.html
== 1424798-1.html 1424798-ref.html
fuzzy(74,2234) random-if(webrender) == 1425243-1.html 1425243-1-ref.html
fuzzy-if(Android,66,574) fuzzy-if(d2d,89,777) fuzzy-if(!Android&&!d2d,1,31219) == 1425243-2.html 1425243-2-ref.html
fuzzy-if(Android,66,574) fuzzy-if(d2d,89,777) fuzzy-if(!Android&&!d2d,1,31341) == 1425243-2.html 1425243-2-ref.html
== 1430869.html 1430869-ref.html
== 1432541.html 1432541-ref.html
pref(layout.css.moz-document.url-prefix-hack.enabled,true) == 1446470.html 1035091-ref.html

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

@ -1,4 +1,4 @@
fuzzy-if(/^Windows\x20NT\x2010\.0/.test(http.oscpu),16,4) pref(layout.css.shape-outside.enabled,true) == dynamic-shape-outside-1.html dynamic-shape-outside-1-ref.html
fuzzy-if(skiaContent,1,161) fuzzy-if(/^Windows\x20NT\x2010\.0/.test(http.oscpu),16,161) pref(layout.css.shape-outside.enabled,true) == dynamic-shape-outside-1.html dynamic-shape-outside-1-ref.html
== shape-outside-empty-circle-1.html shape-outside-empty-point-ref.html
== shape-outside-empty-circle-2.html shape-outside-empty-circle-ref.html

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

@ -20,9 +20,9 @@ fuzzy-if(d2d,255,24) == element-paint-transform-03.html element-paint-transform-
fuzzy-if(asyncPan,2,140) fuzzy-if(skiaContent,3,106) fuzzy-if(webrender&&!gtkWidget,134-222,1323-1588) == element-paint-native-widget.html element-paint-native-widget-ref.html # in -ref the scrollframe is active and layerized differently with APZ
fails-if(usesRepeatResampling&&!(webrender&&winWidget)) == element-paint-subimage-sampling-restriction.html about:blank
== element-paint-clippath.html element-paint-clippath-ref.html
fuzzy-if(webrender,35-35,706-706) == element-paint-sharpness-01a.html element-paint-sharpness-01b.html
fuzzy-if(webrender,36-36,702-702) == element-paint-sharpness-01a.html element-paint-sharpness-01b.html
fuzzy-if(skiaContent,1,326) == element-paint-sharpness-01b.html element-paint-sharpness-01c.html
fuzzy-if(webrender,35-35,706-706) == element-paint-sharpness-01c.html element-paint-sharpness-01d.html
fuzzy-if(webrender,36-36,702-702) == element-paint-sharpness-01c.html element-paint-sharpness-01d.html
== element-paint-sharpness-02a.html element-paint-sharpness-02b.html
== element-paint-sharpness-02b.html element-paint-sharpness-02c.html
== element-paint-paintserversize-rounding-01.html element-paint-paintserversize-rounding-01-ref.html

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

@ -0,0 +1,3 @@
[mix-blend-mode-blended-element-overflow-hidden-and-border-radius.html]
expected:
if os == "linux": FAIL

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

@ -0,0 +1,3 @@
[mix-blend-mode-intermediate-element-overflow-hidden-and-border-radius.html]
expected:
if os == "linux": FAIL

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

@ -0,0 +1,3 @@
[mix-blend-mode-parent-with-border-radius.html]
expected:
if os == "linux": FAIL

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

@ -1,3 +1,4 @@
[clip-path-ellipse-001.html]
expected:
if webrender: FAIL
if os == "linux": FAIL

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

@ -2,3 +2,4 @@
expected:
if debug and webrender and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): FAIL
if not debug and webrender and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): FAIL
if os == "linux": FAIL

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

@ -2,3 +2,4 @@
expected:
if debug and webrender and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): FAIL
if not debug and webrender and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): FAIL
if os == "linux": FAIL

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

@ -2,3 +2,4 @@
expected:
if debug and webrender and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): FAIL
if not debug and webrender and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): FAIL
if os == "linux": FAIL

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

@ -2,3 +2,4 @@
expected:
if debug and webrender and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): FAIL
if not debug and webrender and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): FAIL
if os == "linux": FAIL

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

@ -2,3 +2,4 @@
expected:
if debug and webrender and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): FAIL
if not debug and webrender and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): FAIL
if os == "linux": FAIL

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

@ -2,3 +2,4 @@
expected:
if debug and webrender and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): FAIL
if not debug and webrender and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): FAIL
if os == "linux": FAIL

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

@ -2,3 +2,4 @@
expected:
if debug and webrender and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): FAIL
if not debug and webrender and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): FAIL
if os == "linux": FAIL