зеркало из https://github.com/mozilla/gecko-dev.git
Merge autoland to mozilla-central a=merge
This commit is contained in:
Коммит
78b9d7d52c
|
@ -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
|
||||
|
|
Загрузка…
Ссылка в новой задаче