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

This commit is contained in:
Margareta Eliza Balazs 2018-03-20 19:00:25 +02:00
commit 922c555275
111 changed files with 610 additions and 645 deletions

View File

@ -130,7 +130,7 @@ static void
ConvertTexttoAsterisks(AccessibleWrap* accWrap, nsAString& aString)
{
// convert each char to "*" when it's "password text"
if (accWrap->NativeRole() == roles::PASSWORD_TEXT) {
if (accWrap->IsPassword()) {
DOMtoATK::ConvertTexttoAsterisks(aString);
}
}
@ -148,7 +148,7 @@ getTextCB(AtkText *aText, gint aStartOffset, gint aEndOffset)
return nullptr;
return DOMtoATK::NewATKString(text, aStartOffset, aEndOffset,
accWrap->NativeRole() == roles::PASSWORD_TEXT ?
accWrap->IsPassword() ?
DOMtoATK::AtkStringConvertFlags::ConvertTextToAsterisks :
DOMtoATK::AtkStringConvertFlags::None);

View File

@ -39,6 +39,7 @@ enum AccType {
eHTMLTableCellType,
eHTMLTableRowType,
eHTMLTextFieldType,
eHTMLTextPasswordFieldType,
eHyperTextType,
eImageType,
eOuterDocType,

View File

@ -649,7 +649,10 @@ public:
bool IsTableRow() const { return HasGenericType(eTableRow); }
bool IsTextField() const { return mType == eHTMLTextFieldType; }
bool IsTextField() const { return mType == eHTMLTextFieldType ||
mType == eHTMLTextPasswordFieldType; }
bool IsPassword() const { return mType == eHTMLTextPasswordFieldType; }
bool IsText() const { return mGenericTypes & eText; }

View File

@ -282,14 +282,16 @@ HTMLTextFieldAccessible::
HTMLTextFieldAccessible(nsIContent* aContent, DocAccessible* aDoc) :
HyperTextAccessibleWrap(aContent, aDoc)
{
mType = eHTMLTextFieldType;
mType = mContent->AsElement()->AttrValueIs(kNameSpaceID_None, nsGkAtoms::type,
nsGkAtoms::password, eIgnoreCase) ?
eHTMLTextPasswordFieldType :
eHTMLTextFieldType;
}
role
HTMLTextFieldAccessible::NativeRole()
{
if (mContent->AsElement()->AttrValueIs(kNameSpaceID_None, nsGkAtoms::type,
nsGkAtoms::password, eIgnoreCase)) {
if (mType == eHTMLTextPasswordFieldType) {
return roles::PASSWORD_TEXT;
}

View File

@ -14,5 +14,4 @@ skip-if = buildapp == 'mulet'
skip-if = buildapp == 'mulet'
[test_canvas.html]
[test_shadowroot.html]
skip-if = !stylo
support-files = test_shadowroot_subframe.html

View File

@ -15,7 +15,6 @@ support-files =
[test_bug1175913.html]
[test_bug1189277.html]
[test_bug1276857.html]
skip-if = !stylo
support-files = test_bug1276857_subframe.html
[test_canvas.html]
[test_colorpicker.xul]

View File

@ -87,6 +87,14 @@
this.__proto__ = new changeAttr(aID, "aria-multiselectable", "true");
}
function changeTypeToPassword(aID) {
this.__proto__ = new changeAttr(aID, "type", "password");
}
function changeTypeToText(aID) {
this.__proto__ = new changeAttr(aID, "type", "text");
}
// //////////////////////////////////////////////////////////////////////////
// Test
@ -113,6 +121,10 @@
// recreate an accessible by aria-multiselectable change
gQueue.push(new changeMultiselectable("div3"));
// recreate an accessible by type
gQueue.push(new changeTypeToText("password"));
gQueue.push(new changeTypeToPassword("text"));
gQueue.invoke(); // SimpleTest.finish() will be called in the end
}
@ -139,5 +151,8 @@
<div id="div3" role="listbox">list</div>
<div id="eventdump"></div>
<form><input type="password" id="password"/></form>
<form><input type="text" id="text"/></form>
</body>
</html>

View File

@ -2116,7 +2116,7 @@
aTab.mCorrespondingMenuitem = menuItem;
menuItem.tab = aTab;
this.appendChild(menuItem);
return menuItem;
]]></body>
</method>
@ -2203,10 +2203,14 @@
tabcontainer.addEventListener("TabClose", this);
let tabs = gBrowser.visibleTabs;
let fragment = document.createDocumentFragment();
for (var i = 0; i < tabs.length; i++) {
if (!tabs[i].pinned)
this._createTabMenuItem(tabs[i]);
if (!tabs[i].pinned) {
let li = this._createTabMenuItem(tabs[i]);
fragment.appendChild(li);
}
}
this.appendChild(fragment);
this._updateTabsVisibilityStatus();
}
]]></handler>

View File

@ -25,16 +25,29 @@ class AnimatedPropertyList extends PureComponent {
super(props);
this.state = {
animatedPropertyMap: null
// Map which is mapped property name and the keyframes.
animatedPropertyMap: null,
// Object which is mapped property name and the animation type
// such the "color", "discrete", "length" and so on.
animationTypes: null,
// To avoid rendering while the state is updating
// since we call an async function in updateState.
isStateUpdating: false,
};
}
componentDidMount() {
this.updateKeyframesList(this.props.animation);
// No need to set isStateUpdating state since paint sequence is finish here.
this.updateState(this.props.animation);
}
componentWillReceiveProps(nextProps) {
this.updateKeyframesList(nextProps.animation);
this.setState({ isStateUpdating: true });
this.updateState(nextProps.animation);
}
shouldComponentUpdate(nextProps, nextState) {
return !nextState.isStateUpdating;
}
getPropertyState(property) {
@ -49,7 +62,7 @@ class AnimatedPropertyList extends PureComponent {
return null;
}
async updateKeyframesList(animation) {
async updateState(animation) {
const {
getAnimatedPropertyMap,
emitEventForTest,
@ -68,7 +81,14 @@ class AnimatedPropertyList extends PureComponent {
return;
}
this.setState({ animatedPropertyMap, animationTypes });
this.setState(
{
animatedPropertyMap,
animationTypes,
isStateUpdating: false
}
);
emitEventForTest("animation-keyframes-rendered");
}

View File

@ -35,17 +35,26 @@ class SummaryGraphPath extends PureComponent {
this.state = {
// Duration which can display in one pixel.
durationPerPixel: 0,
// To avoid rendering while the state is updating
// since we call an async function in updateState.
isStateUpdating: false,
// List of keyframe which consists by only offset and easing.
keyframesList: [],
};
}
componentDidMount() {
this.updateState(this.props.animation);
// No need to set isStateUpdating state since paint sequence is finish here.
this.updateState(this.props);
}
componentWillReceiveProps(nextProps) {
this.updateState(nextProps.animation);
this.setState({ isStateUpdating: true });
this.updateState(nextProps);
}
shouldComponentUpdate(nextProps, nextState) {
return !nextState.isStateUpdating;
}
/**
@ -141,12 +150,13 @@ class SummaryGraphPath extends PureComponent {
return true;
}
async updateState(animation) {
async updateState(props) {
const {
animation,
emitEventForTest,
getAnimatedPropertyMap,
timeScale,
} = this.props;
} = props;
let animatedPropertyMap = null;
@ -165,7 +175,13 @@ class SummaryGraphPath extends PureComponent {
const totalDuration = this.getTotalDuration(animation, timeScale);
const durationPerPixel = totalDuration / thisEl.parentNode.clientWidth;
this.setState({ durationPerPixel, keyframesList });
this.setState(
{
durationPerPixel,
isStateUpdating: false,
keyframesList
}
);
emitEventForTest("animation-summary-graph-rendered");
}

View File

@ -39,6 +39,7 @@ support-files =
[browser_animation_summary-graph_animation-name.js]
[browser_animation_summary-graph_compositor.js]
[browser_animation_summary-graph_computed-timing-path.js]
[browser_animation_summary-graph_computed-timing-path_different-timescale.js]
[browser_animation_summary-graph_delay-sign.js]
[browser_animation_summary-graph_end-delay-sign.js]
[browser_animation_summary-graph_effect-timing-path.js]

View File

@ -0,0 +1,23 @@
/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
// Test the Computed Timing Path component for different time scales.
add_task(async function() {
await addTab(URL_ROOT + "doc_simple_animation.html");
const { inspector, panel } = await openAnimationInspector();
info("Checking the path for different time scale");
await selectNodeAndWaitForAnimations(".no-compositor", inspector);
const pathStringA = panel.querySelector(".animation-iteration-path").getAttribute("d");
info("Select animation which has different time scale from no-compositor");
await selectNodeAndWaitForAnimations(".endDelayed", inspector);
info("Select no-compositor again");
await selectNodeAndWaitForAnimations(".no-compositor", inspector);
const pathStringB = panel.querySelector(".animation-iteration-path").getAttribute("d");
is(pathStringA, pathStringB, "Path string should be same even change the time scale");
});

View File

@ -88,7 +88,6 @@ skip-if = os == "mac" # Full keyboard navigation on OSX only works if Full Keybo
[browser_markup_anonymous_02.js]
skip-if = e10s # scratchpad.xul is not loading in e10s window
[browser_markup_anonymous_03.js]
skip-if = !stylo
[browser_markup_anonymous_04.js]
[browser_markup_copy_image_data.js]
subsuite = clipboard

View File

@ -11,7 +11,6 @@ support-files =
[browser_webconsole_check_stubs_console_api.js]
[browser_webconsole_check_stubs_css_message.js]
skip-if = !stylo # Stubs updated for Stylo, won't match old Gecko style system
[browser_webconsole_check_stubs_evaluation_result.js]
[browser_webconsole_check_stubs_network_event.js]
[browser_webconsole_check_stubs_page_error.js]

View File

@ -51,7 +51,6 @@ support-files =
[test_getProcess.html]
[test_highlighter_paused_debugger.html]
[test_inspector-anonymous.html]
skip-if = !stylo # No shadow dom support
[test_inspector-changeattrs.html]
[test_inspector-changevalue.html]
[test_inspector-dead-nodes.html]

View File

@ -5800,9 +5800,7 @@ nsContentUtils::GetWindowProviderForContentProcess()
already_AddRefed<nsPIDOMWindowOuter>
nsContentUtils::GetMostRecentNonPBWindow()
{
nsCOMPtr<nsIWindowMediator> windowMediator =
do_GetService(NS_WINDOWMEDIATOR_CONTRACTID);
nsCOMPtr<nsIWindowMediator_44> wm = do_QueryInterface(windowMediator);
nsCOMPtr<nsIWindowMediator> wm = do_GetService(NS_WINDOWMEDIATOR_CONTRACTID);
nsCOMPtr<mozIDOMWindowProxy> window;
wm->GetMostRecentNonPBWindow(u"navigator:browser",

View File

@ -576,9 +576,7 @@ skip-if = toolkit == 'android' #bug 687032
[test_bug999456.html]
[test_bug1022229.html]
[test_bug1025933.html]
skip-if = !stylo
[test_bug1037687.html]
skip-if = !stylo
support-files = test_bug1037687_subframe.html
[test_bug1043106.html]
[test_bug1057176.html]
@ -615,7 +613,6 @@ skip-if = toolkit == 'android'
[test_bug1404385.html]
[test_bug1406102.html]
[test_bug1421568.html]
skip-if = !stylo
[test_caretPositionFromPoint.html]
[test_change_policy.html]
[test_clearTimeoutIntervalNoArg.html]

View File

@ -20,7 +20,7 @@ skip-if(Android) == webgl-clear-test.html?depth&stencil wrapper.html?green.png
skip-if(Android) == webgl-resize-test.html wrapper.html?green.png
# Check that captureStream() displays in a local video element
skip-if(Android) skip-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)&&styloVsGecko) == webgl-capturestream-test.html?preserve wrapper.html?green.png
skip-if(Android) == webgl-capturestream-test.html?preserve wrapper.html?green.png
# Some of the failure conditions are a little crazy. I'm (jgilbert) setting these based on
# failures encountered when running on Try, and then targetting the Try config by
@ -141,7 +141,7 @@ fuzzy(9,40000) skip pref(webgl.prefer-16bpp,true)
fuzzy(9,40000) skip pref(webgl.prefer-16bpp,true) pref(webgl.force-layers-readback,true) == webgl-color-test.html?16bpp&readback&premult&alpha wrapper.html?colors-premult.png
# Force native GL (Windows):
skip-if(!winWidget) skip-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)&&styloVsGecko) pref(webgl.disable-angle,true) == webgl-color-test.html?native-gl wrapper.html?colors-no-alpha.png
skip-if(!winWidget) pref(webgl.disable-angle,true) == webgl-color-test.html?native-gl wrapper.html?colors-no-alpha.png
# Non-WebGL Reftests!

View File

@ -139,9 +139,7 @@ support-files = bug1017086_inner.html
[test_bug1017086_enable.html]
support-files = bug1017086_inner.html
[test_bug1079236.html]
skip-if = !stylo
[test_bug1145910.html]
skip-if = !stylo
[test_bug1150308.html]
skip-if = true || stylo # bug 1293844, bug 1421545
[test_bug1248459.html]

View File

@ -1,7 +1,7 @@
default-preferences pref(dom.forms.number,true) pref(dom.forms.datetime,true)
fuzzy-if(skiaContent,1,3) needs-focus == input-load.html input-ref.html
fuzzy-if(skiaContent,1,3) needs-focus == input-create.html input-ref.html
fuzzy-if(skiaContent,1,3) needs-focus skip-if(styloVsGecko) == input-number.html input-number-ref.html
fuzzy-if(skiaContent,1,3) needs-focus == input-number.html input-number-ref.html
fuzzy-if(skiaContent,1,3) needs-focus == input-time.html input-time-ref.html
fuzzy-if(skiaContent,1,3) needs-focus == button-load.html button-ref.html
fuzzy-if(skiaContent,1,3) needs-focus == button-create.html button-ref.html

View File

@ -1,5 +1,4 @@
[DEFAULT]
skip-if = !stylo
support-files =
inert_style.css
dummy_page.html

View File

@ -1,6 +1,6 @@
# 468496-1 will also detect bugs in video drivers.
== 468496-1.html 468496-1-ref.html
fuzzy(175,443) skip-if(styloVsGecko) == 611498-1.html 611498-ref.html
fuzzy(175,443) == 611498-1.html 611498-ref.html
fuzzy-if(Android,8,1000) == 709477-1.html 709477-1-ref.html
skip-if(!asyncPan) == 1086723.html 1086723-ref.html
== 853889-1.html 853889-1-ref.html

View File

@ -54,7 +54,6 @@ ImageCacheKey::ImageCacheKey(nsIURI* aURI,
, mOriginAttributes(aAttrs)
, mControlledDocument(GetControlledDocumentToken(aDocument))
, mIsChrome(URISchemeIs(mURI, "chrome"))
, mIsStyloEnabled(nsLayoutUtils::StyloEnabled())
{
NS_ENSURE_SUCCESS_VOID(aRv);
@ -64,8 +63,7 @@ ImageCacheKey::ImageCacheKey(nsIURI* aURI,
mBlobSerial = BlobSerial(mURI);
}
mHash = ComputeHash(mURI, mBlobSerial, mOriginAttributes, mControlledDocument,
mIsStyloEnabled);
mHash = ComputeHash(mURI, mBlobSerial, mOriginAttributes, mControlledDocument);
}
ImageCacheKey::ImageCacheKey(ImageURL* aURI,
@ -75,7 +73,6 @@ ImageCacheKey::ImageCacheKey(ImageURL* aURI,
, mOriginAttributes(aAttrs)
, mControlledDocument(GetControlledDocumentToken(aDocument))
, mIsChrome(URISchemeIs(mURI, "chrome"))
, mIsStyloEnabled(nsLayoutUtils::StyloEnabled())
{
MOZ_ASSERT(aURI);
@ -83,8 +80,7 @@ ImageCacheKey::ImageCacheKey(ImageURL* aURI,
mBlobSerial = BlobSerial(mURI);
}
mHash = ComputeHash(mURI, mBlobSerial, mOriginAttributes, mControlledDocument,
mIsStyloEnabled);
mHash = ComputeHash(mURI, mBlobSerial, mOriginAttributes, mControlledDocument);
}
ImageCacheKey::ImageCacheKey(const ImageCacheKey& aOther)
@ -94,7 +90,6 @@ ImageCacheKey::ImageCacheKey(const ImageCacheKey& aOther)
, mControlledDocument(aOther.mControlledDocument)
, mHash(aOther.mHash)
, mIsChrome(aOther.mIsChrome)
, mIsStyloEnabled(aOther.mIsStyloEnabled)
{ }
ImageCacheKey::ImageCacheKey(ImageCacheKey&& aOther)
@ -104,15 +99,11 @@ ImageCacheKey::ImageCacheKey(ImageCacheKey&& aOther)
, mControlledDocument(aOther.mControlledDocument)
, mHash(aOther.mHash)
, mIsChrome(aOther.mIsChrome)
, mIsStyloEnabled(aOther.mIsStyloEnabled)
{ }
bool
ImageCacheKey::operator==(const ImageCacheKey& aOther) const
{
if (mIsStyloEnabled != aOther.mIsStyloEnabled) {
return false;
}
// Don't share the image cache between a controlled document and anything else.
if (mControlledDocument != aOther.mControlledDocument) {
return false;
@ -142,8 +133,7 @@ ImageCacheKey::Spec() const
ImageCacheKey::ComputeHash(ImageURL* aURI,
const Maybe<uint64_t>& aBlobSerial,
const OriginAttributes& aAttrs,
void* aControlledDocument,
bool aIsStyloEnabled)
void* aControlledDocument)
{
// Since we frequently call Hash() several times in a row on the same
// ImageCacheKey, as an optimization we compute our hash once and store it.
@ -153,8 +143,7 @@ ImageCacheKey::ComputeHash(ImageURL* aURI,
aAttrs.CreateSuffix(suffix);
return AddToHash(0, aURI->ComputeHash(aBlobSerial),
HashString(suffix), HashString(ptr),
aIsStyloEnabled);
HashString(suffix), HashString(ptr));
}
/* static */ void*

View File

@ -59,8 +59,7 @@ private:
static PLDHashNumber ComputeHash(ImageURL* aURI,
const Maybe<uint64_t>& aBlobSerial,
const OriginAttributes& aAttrs,
void* aControlledDocument,
bool aIsStyloEnabled);
void* aControlledDocument);
static void* GetControlledDocumentToken(nsIDocument* aDocument);
RefPtr<ImageURL> mURI;
@ -69,10 +68,6 @@ private:
void* mControlledDocument;
PLDHashNumber mHash;
bool mIsChrome;
// To prevent the reftests of styloVsGecko taking the same image cache after
// refreshing, we need to store different caches of stylo and gecko. So, we
// also consider the info of StyloEnabled() in ImageCacheKey.
bool mIsStyloEnabled;
};
} // namespace image

View File

@ -8,7 +8,7 @@ load 463696.bmp
load 570451.png
# Bug 1390704 - Skip on stylo+debug because it triggers a quadratic behavior that makes it take
# so much time that it can trip on the reftest timeout of 5 minutes.
skip-if(Android||((stylo||styloVsGecko)&&isDebugBuild)) load 694165-1.xhtml
skip-if(Android||(stylo&&isDebugBuild)) load 694165-1.xhtml
load 681190.html
load 732319-1.html
load 844403-1.html

View File

@ -131,6 +131,8 @@ IsThingPoisoned(T* thing)
JS_MOVED_TENURED_PATTERN,
JS_SWEPT_TENURED_PATTERN,
JS_ALLOCATED_TENURED_PATTERN,
JS_FREED_HEAP_PTR_PATTERN,
JS_SWEPT_TI_PATTERN,
JS_SWEPT_CODE_PATTERN
};
const int numPoisonBytes = sizeof(poisonBytes) / sizeof(poisonBytes[0]);

View File

@ -460,6 +460,7 @@ class BufferGrayRootsTracer final : public JS::CallbackTracer
{}
bool failed() const { return bufferingGrayRootsFailed; }
void setFailed() { bufferingGrayRootsFailed = true; }
#ifdef DEBUG
TracerKind getTracerKind() const override { return TracerKind::GrayBuffering; }
@ -477,6 +478,9 @@ js::IsBufferGrayRootsTracer(JSTracer* trc)
}
#endif
// A canary value used to check the gray buffer contents are valid.
static Cell* const GrayBufferCanary = reinterpret_cast<Cell*>(0x47726179); // "Gray"
void
js::gc::GCRuntime::bufferGrayRoots()
{
@ -490,6 +494,12 @@ js::gc::GCRuntime::bufferGrayRoots()
if (JSTraceDataOp op = grayRootTracer.op)
(*op)(&grayBufferer, grayRootTracer.data);
// Push a canary value onto the end of the list.
for (GCZonesIter zone(rt); !zone.done(); zone.next()) {
if (!zone->gcGrayRoots().empty() && !zone->gcGrayRoots().append(GrayBufferCanary))
grayBufferer.setFailed();
}
// Propagate the failure flag from the marker to the runtime.
if (grayBufferer.failed()) {
grayBufferState = GrayBufferState::Failed;
@ -531,8 +541,19 @@ GCRuntime::markBufferedGrayRoots(JS::Zone* zone)
MOZ_ASSERT(grayBufferState == GrayBufferState::Okay);
MOZ_ASSERT(zone->isGCMarkingGray() || zone->isGCCompacting());
for (auto cell : zone->gcGrayRoots())
auto& roots = zone->gcGrayRoots();
if (roots.empty())
return;
// Check for and remove canary value.
MOZ_RELEASE_ASSERT(roots.length() > 1);
MOZ_RELEASE_ASSERT(roots.back() == GrayBufferCanary);
roots.popBack();
for (auto cell : zone->gcGrayRoots()) {
MOZ_ASSERT(IsCellPointerValid(cell));
TraceManuallyBarrieredGenericPointerEdge(&marker, &cell, "buffered gray root");
}
}
void

View File

@ -266,6 +266,7 @@ PodSet(T* aDst, const T& aSrc, size_t aNElem)
#define JS_SWEPT_TENURED_PATTERN 0x4B
#define JS_ALLOCATED_TENURED_PATTERN 0x4D
#define JS_FREED_HEAP_PTR_PATTERN 0x6B
#define JS_SWEPT_TI_PATTERN 0x6F
/*
* Ensure JS_SWEPT_CODE_PATTERN is a byte pattern that will crash immediately

View File

@ -4155,6 +4155,8 @@ ConstraintTypeSet::trace(Zone* zone, JSTracer* trc)
}
MOZ_RELEASE_ASSERT(oldObjectCount == oldObjectsFound);
setBaseObjectCount(objectCount);
// Note: -1/+1 to also poison the capacity field.
JS_POISON(oldArray - 1, JS_SWEPT_TI_PATTERN, (oldCapacity + 1) * sizeof(oldArray[0]));
} else if (objectCount == 1) {
ObjectKey* key = (ObjectKey*) objectSet;
TraceObjectKey(trc, &key);
@ -4192,6 +4194,8 @@ ConstraintTypeSet::sweep(Zone* zone, AutoClearTypeInferenceStateOnOOM& oom)
unsigned oldCapacity = TypeHashSet::Capacity(objectCount);
ObjectKey** oldArray = objectSet;
MOZ_RELEASE_ASSERT(uintptr_t(oldArray[-1]) == oldCapacity);
clearObjects();
objectCount = 0;
for (unsigned i = 0; i < oldCapacity; i++) {
@ -4229,6 +4233,8 @@ ConstraintTypeSet::sweep(Zone* zone, AutoClearTypeInferenceStateOnOOM& oom)
}
}
setBaseObjectCount(objectCount);
// Note: -1/+1 to also poison the capacity field.
JS_POISON(oldArray - 1, JS_SWEPT_TI_PATTERN, (oldCapacity + 1) * sizeof(oldArray[0]));
} else if (objectCount == 1) {
ObjectKey* key = (ObjectKey*) objectSet;
if (!IsObjectKeyAboutToBeFinalized(&key)) {
@ -4261,7 +4267,9 @@ ConstraintTypeSet::sweep(Zone* zone, AutoClearTypeInferenceStateOnOOM& oom)
oom.setOOM();
}
}
constraint = constraint->next();
TypeConstraint* next = constraint->next();
JS_POISON(constraint, JS_SWEPT_TI_PATTERN, sizeof(TypeConstraint));
constraint = next;
}
}
@ -4360,13 +4368,15 @@ ObjectGroup::sweep(AutoClearTypeInferenceStateOnOOM* oom)
* (i.e. for the definite properties analysis). The contents of
* these type sets will be regenerated as necessary.
*/
JS_POISON(prop, JS_SWEPT_TI_PATTERN, sizeof(Property));
continue;
}
Property* newProp = typeLifoAlloc.new_<Property>(*prop);
JS_POISON(prop, JS_SWEPT_TI_PATTERN, sizeof(Property));
if (newProp) {
Property** pentry = TypeHashSet::Insert<jsid, Property, Property>
(typeLifoAlloc, propertySet, propertyCount, prop->id);
(typeLifoAlloc, propertySet, propertyCount, newProp->id);
if (pentry) {
*pentry = newProp;
newProp->types.sweep(zone(), *oom);
@ -4387,9 +4397,11 @@ ObjectGroup::sweep(AutoClearTypeInferenceStateOnOOM* oom)
prop->types.checkMagic();
if (singleton() && !prop->types.constraintList() && !zone()->isPreservingCode()) {
// Skip, as above.
JS_POISON(prop, JS_SWEPT_TI_PATTERN, sizeof(Property));
clearProperties();
} else {
Property* newProp = typeLifoAlloc.new_<Property>(*prop);
JS_POISON(prop, JS_SWEPT_TI_PATTERN, sizeof(Property));
if (newProp) {
propertySet = (Property**) newProp;
newProp->types.sweep(zone(), *oom);

View File

@ -495,7 +495,7 @@ load 1352380.html
load 1362423-1.html
load 1381323.html
load 1382534.html
asserts-if(!stylo,1) load 1388625-1.html # bug 1389286
load 1388625-1.html
load 1390389.html
load 1391736.html
load 1395591-1.html
@ -526,4 +526,4 @@ load 1435015.html
load 1429962.html
pref(dom.webcomponents.shadowdom.enabled,true) load 1439016.html
load 1442506.html
asserts-if(!stylo,1) load 1437155.html
load 1437155.html

View File

@ -586,7 +586,7 @@ load 1039454-1.html
load 1042489.html
load 1054010-1.html
load 1058954-1.html
asserts-if(!stylo,0-2) pref(dom.webcomponents.shadowdom.enabled,true) pref(dom.webcomponents.customelements.enabled,true) load 1059138-1.html # bug 1389936
pref(dom.webcomponents.shadowdom.enabled,true) pref(dom.webcomponents.customelements.enabled,true) load 1059138-1.html
load 1134531.html
load 1134667.html
load 1137723-1.html

View File

@ -1,5 +1,5 @@
load 1402183-1.html
skip-if(!(stylo||styloVsGecko)||Android) load 1407470-1.html
skip-if(Android) load 1407470-1.html
load 1413073-1.html
load 1413073-2.html
load 1405881-1.html

View File

@ -305,7 +305,7 @@ fuzzy-if(Android,3,50) fuzzy-if(skiaContent,1,133) == 273681-1.html 273681-1-ref
== 283686-2.html 283686-2-ref.html
== 283686-3.html about:blank
== 289384-1.xhtml 289384-ref.xhtml
random-if(d2d) fuzzy-if(Android,8,1439) skip-if(styloVsGecko) HTTP == 289480.html#top 289480-ref.html # basically-verbatim acid2 test, HTTP for a 404 page -- bug 578114 for the d2d failures, bug 1354406
random-if(d2d) fuzzy-if(Android,8,1439) HTTP == 289480.html#top 289480-ref.html # basically-verbatim acid2 test, HTTP for a 404 page -- bug 578114 for the d2d failures
== 290129-1.html 290129-1-ref.html
== 291078-1.html 291078-1-ref.html
== 291078-2.html 291078-2-ref.html
@ -1259,7 +1259,7 @@ fails == 472020-2.xul 472020-2-ref.xul
== 473847-1.xul 473847-1-ref.xul
fuzzy-if(skiaContent,1,16) == 474336-1.xul 474336-1-ref.xul
== 474417-1.html 474417-1-ref.html
fuzzy-if(skiaContent,1,5) skip-if((stylo||styloVsGecko)&&isDebugBuild&&winWidget) == 474472-1.html 474472-1-ref.html # Bug 1383845
fuzzy-if(skiaContent,1,5) == 474472-1.html 474472-1-ref.html
== 475986-1a.html 475986-1-ref.html
== 475986-1b.html 475986-1-ref.html
== 475986-1c.html 475986-1-ref.html
@ -1473,7 +1473,7 @@ random == 536061.html 536061-ref.html # fixedpoint division in blur code makes t
== 539323-3.html 539323-3-ref.html
== 539880-1.html 539880-1-ref.html
== 539880-1-dynamic.html 539880-1-ref.html
fuzzy-if(Android,12,1000) skip-if(styloVsGecko) == 539949-1.html#test2 539949-1-ref.html#test2 # bug 1354406
fuzzy-if(Android,12,1000) == 539949-1.html#test2 539949-1-ref.html#test2
== 541382-1.html 541382-1-ref.html
random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)||!haveTestPlugin) HTTP == 541406-1.html 541406-1-ref.html
needs-focus != 542116-1.html 542116-1-ref.html
@ -1504,7 +1504,7 @@ fuzzy-if(!contentSameGfxBackendAsCanvas,128,91) random-if(d2d) skip-if(azureSkia
fuzzy-if(skiaContent,4,5) == 557087-1.html 557087-ref.html
fuzzy-if(skiaContent&&!Android,2,5) == 557087-2.html 557087-ref.html
== 557736-1.html 557736-1-ref.html
fails-if(styloVsGecko) != 558011-1.xul 558011-1-ref.xul # bug 1410784
!= 558011-1.xul 558011-1-ref.xul
== 559284-1.html 559284-1-ref.html
fails-if(Android) == 560455-1.xul 560455-1-ref.xul
fuzzy-if(skiaContent,2,5) == 561981-1.html 561981-1-ref.html
@ -1598,7 +1598,7 @@ random-if(Android) == 594333-1.html 594333-1-ref.html
== 594624-1.html 594624-1-ref.html
== 594737-1.html 594737-1-ref.html
fuzzy-if(skiaContent,1,80) fuzzy-if(webrender,1,100) == 597721-1.html 597721-1-ref.html
random-if(winWidget) fuzzy-if(Android,38,539) fuzzy-if(skiaContent,1,480) needs-focus skip-if(styloVsGecko) == 598726-1.html 598726-1-ref.html # Fails on Windows, bug 782196
random-if(winWidget) fuzzy-if(Android,38,539) fuzzy-if(skiaContent,1,480) needs-focus == 598726-1.html 598726-1-ref.html # Fails on Windows, bug 782196
== 599113-1.html 599113-1-ref.html
fails-if(!haveTestPlugin) HTTP == 599476.html 599476-ref.html
== 599882-1a.html 599882-1-ref.html
@ -1786,8 +1786,8 @@ fuzzy-if(OSX,1,364) fuzzy-if(skiaContent,1,320) == 846144-1.html 846144-1-ref.ht
== 871338-1.html 871338-1-ref.html
== 875060-1.html 875060-1-ref.html
== 883987-1a.html 883987-1-ref.html
fails-if(styloVsGecko||stylo) == 883987-1b.html 883987-1-ref.html
fails-if(styloVsGecko||stylo) == 883987-1c.html 883987-1-ref.html
fails == 883987-1b.html 883987-1-ref.html # bug 1446971
fails == 883987-1c.html 883987-1-ref.html # bug 1446971
== 883987-1d.html 883987-1-ref.html
== 883987-1e.html 883987-1-ref.html
== 883987-1f.html 883987-1-ref.html
@ -1845,7 +1845,7 @@ pref(layout.css.overflow-clip-box.enabled,true) fuzzy-if(skiaContent,2,845) == 9
== 1021564-4.html 1021564-ref.html
pref(browser.display.use_document_fonts,0) == 1022481-1.html 1022481-1-ref.html
fuzzy-if(d2d,1,125200) fuzzy-if(skiaContent,1,126000) == 1022612-1.html 1022612-1-ref.html
skip-if(styloVsGecko) == 1024473-1.html 1024473-1-ref.html # skip styloVsGecko for imperceptible pixel rounding differences between Stylo and Gecko
== 1024473-1.html 1024473-1-ref.html
fuzzy-if(skiaContent,1,24000) == 1025914-1.html 1025914-1-ref.html
pref(layout.css.moz-document.content.enabled,true) == 1035091.html 1035091-ref.html
pref(layout.css.moz-document.content.enabled,false) == 1035091-2.html 1035091-ref.html
@ -1864,7 +1864,7 @@ pref(layout.css.moz-document.content.enabled,false) == 1035091-2.html 1035091-re
== 1062108-1.html 1062108-1-ref.html
== 1062792-1.html 1062792-1-ref.html
== 1062963-floatmanager-reflow.html 1062963-floatmanager-reflow-ref.html
test-pref(dom.webcomponents.shadowdom.enabled,true) fails-if(!stylo||styloVsGecko) == 1066554-1.html 1066554-1-ref.html
test-pref(dom.webcomponents.shadowdom.enabled,true) == 1066554-1.html 1066554-1-ref.html
== 1069716-1.html 1069716-1-ref.html
== 1078262-1.html about:blank
test-pref(layout.testing.overlay-scrollbars.always-visible,false) == 1081072-1.html 1081072-1-ref.html
@ -1996,7 +1996,7 @@ fuzzy(13,40000) fuzzy-if(/^Windows\x20NT\x2010\.0/.test(http.oscpu),13,40000) fa
fuzzy(13,40000) fuzzy-if(/^Windows\x20NT\x2010\.0/.test(http.oscpu),13,40000) == 1316719-1c.html 1316719-1-ref.html
skip-if(Android) != 1318769-1.html 1318769-1-ref.html
== 1322512-1.html 1322512-1-ref.html
skip-if((stylo||styloVsGecko)&&isDebugBuild&&winWidget) == 1330051.svg 1330051-ref.svg
skip-if(isDebugBuild&&winWidget) == 1330051.svg 1330051-ref.svg
== 1348481-1.html 1348481-ref.html
== 1348481-2.html 1348481-ref.html
== 1352464-1.html 1352464-1-ref.html
@ -2009,7 +2009,7 @@ skip-if((stylo||styloVsGecko)&&isDebugBuild&&winWidget) == 1330051.svg 1330051-r
== 1364280-2c.html 1364280-2-ref.html
== 1364360-1.html 1364360-1-ref.html
== 1365159-1.html 1365159-1-ref.html
fails-if(!stylo||styloVsGecko) == 1365162-1.html 1365162-1-ref.html
== 1365162-1.html 1365162-1-ref.html
== 1352306-1.html 1352306-1-ref.html
== 1366144.html 1366144-ref.html
== 1367592-1.html 1367592-1-ref.html
@ -2063,5 +2063,5 @@ test-pref(font.size.systemFontScale,200) == 1412743.html 1412743-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
== 1432541.html 1432541-ref.html
pref(layout.css.moz-document.url-prefix-hack.enabled,true) fails-if(!stylo||styloVsGecko) == 1446470.html 1035091-ref.html
pref(layout.css.moz-document.url-prefix-hack.enabled,true) == 1446470.html 1035091-ref.html
pref(layout.css.moz-document.url-prefix-hack.enabled,false) == 1446470-2.html 1035091-ref.html

View File

@ -2,7 +2,7 @@ default-preferences pref(layout.css.box-decoration-break.enabled,true)
== box-decoration-break-1.html box-decoration-break-1-ref.html
fuzzy(1,20) fuzzy-if(skiaContent,1,700) fuzzy-if(webrender,23-23,14016-14016) == box-decoration-break-with-inset-box-shadow-1.html box-decoration-break-with-inset-box-shadow-1-ref.html
fuzzy(45,460) fuzzy-if(skiaContent,57,439) fuzzy-if(Android,57,1330) fuzzy-if(styloVsGecko,45,1410) == box-decoration-break-with-outset-box-shadow-1.html box-decoration-break-with-outset-box-shadow-1-ref.html # Bug 1386543
fuzzy(45,460) fuzzy-if(skiaContent,57,439) fuzzy-if(Android,57,1330) == box-decoration-break-with-outset-box-shadow-1.html box-decoration-break-with-outset-box-shadow-1-ref.html # Bug 1386543
random-if(!gtkWidget) == box-decoration-break-border-image.html box-decoration-break-border-image-ref.html
== box-decoration-break-block-border-padding.html box-decoration-break-block-border-padding-ref.html
== box-decoration-break-block-margin.html box-decoration-break-block-margin-ref.html

View File

@ -1,3 +1,3 @@
== background-image-gradient-1.html background-image-gradient-1-ref.html
== line-height-1.html line-height-1-ref.html
fails-if(!isDebugBuild&&(!stylo||styloVsGecko)) skip-if(isDebugBuild&&(!stylo||styloVsGecko)) == line-height-2.html line-height-2-ref.html
== line-height-2.html line-height-2-ref.html

View File

@ -23,7 +23,7 @@ fuzzy-if(Android,7,3935) == display-contents-xbl.xhtml display-contents-xbl-ref.
skip == display-contents-xbl-4.xul display-contents-xbl-4-ref.xul # fails (not just asserts) due to bug 1089223
asserts(0-1) fuzzy-if(Android,8,3216) == display-contents-fieldset.html display-contents-fieldset-ref.html # bug 1089223
== display-contents-xbl-5.xul display-contents-xbl-3-ref.xul
fails-if(!stylo) == display-contents-xbl-6.xhtml display-contents-xbl-6-ref.html # bug 1345809
== display-contents-xbl-6.xhtml display-contents-xbl-6-ref.html
== display-contents-xbl-7.xhtml display-contents-xbl-7-ref.html
== display-contents-list-item-child.html display-contents-list-item-child-ref.html
== display-contents-dyn-insert-text.html display-contents-dyn-insert-text-ref.html

View File

@ -136,7 +136,7 @@ random-if(http.oscpu!="Linux\u0020i686") == grid-item-content-baseline-002.html
random-if(http.oscpu!="Linux\u0020i686") == grid-item-mixed-baseline-001.html grid-item-mixed-baseline-001-ref.html # ditto
random-if(http.oscpu!="Linux\u0020i686") == grid-item-mixed-baseline-002.html grid-item-mixed-baseline-002-ref.html # ditto
random-if(http.oscpu!="Linux\u0020i686") == grid-item-mixed-baseline-003.html grid-item-mixed-baseline-003-ref.html # ditto
skip-if(!gtkWidget) fails-if(styloVsGecko) == grid-item-mixed-baseline-004.html grid-item-mixed-baseline-004-ref.html # ditto. Also stylo bug 1396977.
skip-if(!gtkWidget) == grid-item-mixed-baseline-004.html grid-item-mixed-baseline-004-ref.html # ditto.
== grid-align-content-001.html grid-align-content-001-ref.html
== grid-justify-content-001.html grid-justify-content-001-ref.html
skip-if(Android&&isDebugBuild) == grid-justify-content-002.html grid-justify-content-002-ref.html # Bug 1245884 - slow

View File

@ -9,7 +9,9 @@
== unit-vh-vw.html unit-vh-vw-ref.html
== unit-vh-vw-zoom.html unit-vh-vw-zoom-ref.html
== unit-vh-vw-overflow-auto.html unit-vh-vw-overflow-auto-ref.html
fails-if(!Android&&(styloVsGecko||stylo)) == unit-vh-vw-overflow-scroll.html unit-vh-vw-overflow-scroll-ref.html
fails-if(!Android&&(styloVsGecko||stylo)) == unit-vh-vw-overflow-scroll-x.html unit-vh-vw-overflow-scroll-x-ref.html
fails-if(!Android&&(styloVsGecko||stylo)) == unit-vh-vw-overflow-scroll-y.html unit-vh-vw-overflow-scroll-y-ref.html
skip-if(Android) fails-if(stylo) != unit-vh-vw-overflow-auto.html unit-vh-vw-overflow-scroll.html
# These tests should probably be removed, see bug 1393603.
fails-if(!Android) == unit-vh-vw-overflow-scroll.html unit-vh-vw-overflow-scroll-ref.html
fails-if(!Android) == unit-vh-vw-overflow-scroll-x.html unit-vh-vw-overflow-scroll-x-ref.html
fails-if(!Android) == unit-vh-vw-overflow-scroll-y.html unit-vh-vw-overflow-scroll-y-ref.html
skip-if(Android) fails != unit-vh-vw-overflow-auto.html unit-vh-vw-overflow-scroll.html

View File

@ -65,9 +65,9 @@
== details-writing-mode.html details-writing-mode-ref.html
== details-in-ol.html details-in-ol-ref.html
== summary-three-columns.html summary-three-columns-ref.html
fails-if(styloVsGecko) == details-first-line.html details-first-line-ref.html
fails-if(styloVsGecko) == open-details-first-line-1.html open-details-first-line-ref.html
fails-if(styloVsGecko) == open-details-first-line-2.html open-details-first-line-ref.html
== details-first-line.html details-first-line-ref.html
== open-details-first-line-1.html open-details-first-line-ref.html
== open-details-first-line-2.html open-details-first-line-ref.html
# Dispatch mouse click to summary
== mouse-click-single-summary.html open-single-summary.html

View File

@ -22,7 +22,7 @@ fails == quote-1d.html quote-1-ref.html
fails == quote-1e.html quote-1-ref.html # bug 509685
== quote-1e.html quote-1b.html
== quote-1f.html quote-1-ref.html
fails-if(!stylo) fails-if(styloVsGecko) == dynamic-1.html dynamic-1-ref.html # bug 8253
== dynamic-1.html dynamic-1-ref.html
random-if(d2d) == dynamic-2.html dynamic-2-ref.html
== dynamic-3a.html dynamic-3-ref.html
== dynamic-3b.html dynamic-3-ref.html

View File

@ -5,7 +5,7 @@
== out-of-flow-1a.html out-of-flow-1-ref.html
== out-of-flow-1b.html out-of-flow-1-ref.html
== out-of-flow-1c.html out-of-flow-1-ref.html
fails-if(!stylo) fails-if(styloVsGecko) == out-of-flow-1d.html out-of-flow-1-ref.html # bug 396645
== out-of-flow-1d.html out-of-flow-1-ref.html
# parent style context correct
== parent-style-1.html parent-style-1-ref.html
@ -36,7 +36,7 @@ load stress-10.html # crash test
== font-styles.html font-styles-ref.html
fuzzy-if(OSX==1010,1,2) == font-styles-nooverflow.html font-styles-ref.html
fails-if(!stylo) == ib-split-1.html ib-split-1-ref.html
== ib-split-1.html ib-split-1-ref.html
== first-line-in-columnset-1.html first-line-in-columnset-1-ref.html

View File

@ -82,8 +82,8 @@ random-if(cocoaWidget) == sheet-set-switch-1.html sheet-set-switch-1-ref.html #
== insert-rule-1a.html insert-rule-1-ref.html
== insert-rule-1b.html insert-rule-1-ref.html
== delete-rule-1.html delete-rule-1-ref.html
skip-if(styloVsGecko) == media-query-add-1.html media-query-add-1-ref.html # skip styloVsGecko for imperceptible pixel rounding differences between Stylo and Gecko
skip-if(styloVsGecko) == media-query-remove-1.html media-query-remove-1-ref.html # skip styloVsGecko for imperceptible pixel rounding differences between Stylo and Gecko
== media-query-add-1.html media-query-add-1-ref.html
== media-query-remove-1.html media-query-remove-1-ref.html
!= media-query-add-1-ref.html media-query-remove-1-ref.html
== ahem-metrics-1.html ahem-metrics-1-ref.html

View File

@ -54,7 +54,7 @@
== alternates-order.html alternates-order-ref.html
# check that font-specific values line up with @font-face feature settings
skip-if((stylo||styloVsGecko)&&winWidget) == annotations.html annotations-ref.html
skip-if(winWidget) == annotations.html annotations-ref.html # bug 1447257
# font-variant subproperties
# test for specific features being on and others off, based on prop values

View File

@ -39,7 +39,7 @@ test-pref(font.size.inflation.emPerLine,15) test-pref(font.size.inflation.forceE
test-pref(font.size.inflation.emPerLine,15) test-pref(font.size.inflation.forceEnabled,true) test-pref(font.size.inflation.lineThreshold,0) fuzzy-if(webrender,0-1,0-19) == css-transform-2.html css-transform-2-ref.html
# skipped - bug 1380830
fuzzy-if(asyncPan&&!layersGPUAccelerated,102,1764) skip test-pref(font.size.inflation.emPerLine,15) test-pref(font.size.inflation.forceEnabled,true) test-pref(font.size.inflation.lineThreshold,0) == container-with-clamping.html container-with-clamping-ref.html
test-pref(font.size.inflation.emPerLine,15) test-pref(font.size.inflation.forceEnabled,true) test-pref(font.size.inflation.lineThreshold,0) skip-if(styloVsGecko) load video-1.html
test-pref(font.size.inflation.emPerLine,15) test-pref(font.size.inflation.forceEnabled,true) test-pref(font.size.inflation.lineThreshold,0) load video-1.html
test-pref(font.size.inflation.emPerLine,15) test-pref(font.size.inflation.forceEnabled,true) test-pref(font.size.inflation.lineThreshold,0) == intrinsic-min-1.html intrinsic-min-1-ref.html
test-pref(font.size.inflation.emPerLine,15) test-pref(font.size.inflation.forceEnabled,true) test-pref(font.size.inflation.lineThreshold,0) == intrinsic-max-1.html intrinsic-max-1-ref.html
test-pref(font.size.inflation.emPerLine,15) test-pref(font.size.inflation.forceEnabled,true) test-pref(font.size.inflation.lineThreshold,0) == intrinsic-fit-1a.html intrinsic-fit-1a-ref.html

View File

@ -1,4 +1,4 @@
== legend.html legend-ref.html
#bug 1418002 fuzzy-if(skiaContent,1,7) pref(dom.webcomponents.shadowdom.enabled,true) == shadow-dom.html shadow-dom-ref.html
== 1273433.html 1273433-ref.html
fails-if(styloVsGecko||stylo) == 1339287.html 1339287-ref.html
fails == 1339287.html 1339287-ref.html # bug 1383868

View File

@ -5,7 +5,7 @@ random == bug-364968.html bug-364968-ref.html
== mozsetimageelement-02.html about:blank
== image-outside-document-invalidate.html about:blank
== canvas-outside-document-invalidate-01.html about:blank
fails-if(azureSkia) fails-if(cocoaWidget) skip-if(styloVsGecko) == canvas-outside-document-invalidate-02.html about:blank # See bug 666800
fails-if(azureSkia) fails-if(cocoaWidget) == canvas-outside-document-invalidate-02.html about:blank # See bug 666800
#fails with Skia due to Skia bug http://code.google.com/p/skia/issues/detail?id=568
== element-paint-simple.html element-paint-simple-ref.html
== element-paint-repeated.html element-paint-repeated-ref.html

View File

@ -3,10 +3,10 @@ fuzzy-if(cocoaWidget,2,6) random-if(Android) == component-alpha-exit-1.html comp
fuzzy-if(cocoaWidget,2,6) random-if(Android) == component-alpha-enter-1.html component-alpha-enter-1-ref.html
!= pull-background-1.html about:blank
skip-if(styloVsGecko) != pull-background-2.html about:blank # skip styloVsGecko for imperceptible pixel rounding differences between Stylo and Gecko
!= pull-background-2.html about:blank
!= pull-background-3.html about:blank
!= pull-background-4.html about:blank
fuzzy-if(styloVsGecko,1,1) != pull-background-5.html about:blank
!= pull-background-5.html about:blank
!= pull-background-6.html about:blank
# The animated-position tests are disabled for intermittent failures / passes, bug 1150941
@ -17,10 +17,10 @@ skip != pull-background-animated-position-4.html about:blank # Fails because Pai
skip != pull-background-animated-position-5.html about:blank # Fails because ownLayer bounds don't anticipate changes of animated contents, but doesn't fail with event regions
skip-if(!asyncPan) != pull-background-displayport-1.html about:blank
skip-if(!asyncPan) skip-if(styloVsGecko) != pull-background-displayport-2.html about:blank # skip styloVsGecko for imperceptible pixel rounding differences between Stylo and Gecko
skip-if(!asyncPan) != pull-background-displayport-2.html about:blank
skip-if(!asyncPan) != pull-background-displayport-3.html about:blank # fails with non-overlay scrollbars and event regions due to bug 1148515
skip-if(!asyncPan) != pull-background-displayport-4.html about:blank # fails with non-overlay scrollbars and event regions due to bug 1148515
skip-if(!asyncPan) fuzzy-if(styloVsGecko,1,1) != pull-background-displayport-5.html about:blank
skip-if(!asyncPan) != pull-background-displayport-5.html about:blank
skip-if(!asyncPan) != pull-background-displayport-6.html about:blank # fails with non-overlay scrollbars and event regions due to bug 1148515
fuzzy(2,30150) == opacity-blending.html opacity-blending-ref.html

View File

@ -367,7 +367,7 @@ fuzzy-if(OSX,1,100) fuzzy-if(skiaContent,1,14) == mfrac-D-1.html mfrac-D-1-ref.h
== mfrac-D-3.html mfrac-D-3-ref.html
== mfrac-D-4.html mfrac-D-4-ref.html
== mfrac-E-1.html mfrac-E-1-ref.html
test-pref(dom.webcomponents.shadowdom.enabled,true) fails-if(!stylo||styloVsGecko) == shadow-dom-1.html shadow-dom-1-ref.html
test-pref(dom.webcomponents.shadowdom.enabled,true) == shadow-dom-1.html shadow-dom-1-ref.html
pref(dom.meta-viewport.enabled,true) pref(font.size.inflation.emPerLine,25) == font-inflation-1.html font-inflation-1-ref.html
test-pref(font.minimum-size.x-math,40) == default-font.html default-font-ref.html
!= radicalbar-1.html about:blank

View File

@ -39,7 +39,7 @@ skip-if(!winWidget) != 403458-winmenu-ltr.xul 403458-winmenu-rtl.xul
== 492155-1.html about:blank
== 492155-2.html about:blank
== 492155-3.html about:blank
fails-if(Android&&!asyncPan) fuzzy-if(styloVsGecko,0-1,0-1) != 492155-4.html about:blank
fails-if(Android&&!asyncPan) != 492155-4.html about:blank
!= box-shadow-input.html box-shadow-input-ref.html
!= box-shadow-button.html box-shadow-button-ref.html

View File

@ -179,5 +179,5 @@ fuzzy-if(skiaContent,1,145) == rounded-background-color-width-left-6.html rounde
== iframe-1.html iframe-1-ref.html
fuzzy-if(stylo||styloVsGecko,128,220) == viewport-units-rounding-1.html viewport-units-rounding-1-ref.html
fuzzy(128,220) == viewport-units-rounding-1.html viewport-units-rounding-1-ref.html
== viewport-units-rounding-2.html about:blank

View File

@ -111,8 +111,8 @@ require-or(true&&true,fails) script scripttest-pass.html
# tests for pref(...) syntax in manifest, including "fails" examples with incorrect prefs
# a boolean pref
pref(gfx.downloadable_fonts.enabled,true) skip-if(styloVsGecko) != font-download.html font-default.html
pref(gfx.downloadable_fonts.enabled,false) skip-if(styloVsGecko) == font-download.html font-default.html
pref(gfx.downloadable_fonts.enabled,true) != font-download.html font-default.html
pref(gfx.downloadable_fonts.enabled,false) == font-download.html font-default.html
fails pref(gfx.downloadable_fonts.enabled,0) == font-download.html font-default.html
fails pref(gfx.downloadable_fonts.enabled,"foo") == font-download.html font-default.html
# a non-existent pref
@ -132,10 +132,10 @@ pref(font.default.x-western,"sans-serif") != font-serif.html font-default.html
fails pref(font.default.x-western,true) == font-serif.html font-default.html
fails pref(font.default.x-western,0) == font-serif.html font-default.html
# tests for ref-pref, and test-pref
ref-pref(font.size.variable.x-western,16) skip-if(styloVsGecko) == font-size-16.html font-default.html
ref-pref(font.size.variable.x-western,16) skip-if(styloVsGecko) != font-size-24.html font-default.html
ref-pref(font.size.variable.x-western,24) skip-if(styloVsGecko) == font-size-24.html font-default.html
ref-pref(font.size.variable.x-western,24) skip-if(styloVsGecko) != font-size-16.html font-default.html
ref-pref(font.size.variable.x-western,16) == font-size-16.html font-default.html
ref-pref(font.size.variable.x-western,16) != font-size-24.html font-default.html
ref-pref(font.size.variable.x-western,24) == font-size-24.html font-default.html
ref-pref(font.size.variable.x-western,24) != font-size-16.html font-default.html
fails ref-pref(font.size.variable.x-western,false) == font-size-16.html font-default.html
fails ref-pref(font.size.variable.x-western,"foo") == font-size-16.html font-default.html
test-pref(font.size.variable.x-western,16) == font-default.html font-size-16.html
@ -144,9 +144,9 @@ test-pref(font.size.variable.x-western,24) == font-default.html font-size-24.htm
test-pref(font.size.variable.x-western,24) != font-default.html font-size-16.html
fails test-pref(font.size.variable.x-western,false) == font-default.html font-size-16.html
fails test-pref(font.size.variable.x-western,"foo") == font-default.html font-size-16.html
ref-pref(font.size.variable.x-western,16) test-pref(font.size.variable.x-western,24) skip-if(styloVsGecko) != font-default.html font-default.html
ref-pref(font.size.variable.x-western,24) test-pref(font.size.variable.x-western,16) skip-if(styloVsGecko) != font-default.html font-default.html
ref-pref(font.size.variable.x-western,24) test-pref(font.size.variable.x-western,24) skip-if(styloVsGecko) == font-default.html font-default.html
ref-pref(font.size.variable.x-western,16) test-pref(font.size.variable.x-western,24) != font-default.html font-default.html
ref-pref(font.size.variable.x-western,24) test-pref(font.size.variable.x-western,16) != font-default.html font-default.html
ref-pref(font.size.variable.x-western,24) test-pref(font.size.variable.x-western,24) == font-default.html font-default.html
# reftest syntax: fuzzy(maxPixelDifference,maxNumberDifferingPixels)
fuzzy(1,250000) == fuzzy.html fuzzy-ref.html
@ -154,9 +154,9 @@ fuzzy(1,250000) != too-fuzzy.html fuzzy-ref.html
fuzzy-if(true,1,250000) == fuzzy.html fuzzy-ref.html
fuzzy-if(false,2,1) == fuzzy-ref.html fuzzy-ref.html
# test some ranged fuzzes
fuzzy(1-10,1-250000) fuzzy-if(false,5-10,250000) skip-if(styloVsGecko) == fuzzy.html fuzzy-ref.html
fuzzy(0-0,250000) skip-if(styloVsGecko) != fuzzy.html fuzzy-ref.html
fuzzy(1,0-2) skip-if(styloVsGecko) != fuzzy.html fuzzy-ref.html
fuzzy(1-10,1-250000) fuzzy-if(false,5-10,250000) == fuzzy.html fuzzy-ref.html
fuzzy(0-0,250000) != fuzzy.html fuzzy-ref.html
fuzzy(1,0-2) != fuzzy.html fuzzy-ref.html
# If enabled, the following two should result in UNEXPECTED-PASS because
# they are both overfuzzed
# fuzzy(3-4,250000) == fuzzy.html fuzzy-ref.html

View File

@ -300,7 +300,7 @@ include position-dynamic-changes/reftest.list
# printing
# SkiaPDF is required for printing tests to control printing to PDF files.
skip-if(!skiaPdf||styloVsGecko) include printing/reftest.list
skip-if(!skiaPdf) include printing/reftest.list
# pagination
include pagination/reftest.list

View File

@ -1,4 +1,4 @@
skip-if(styloVsGecko) HTTP == deferred-anchor.xhtml#d deferred-anchor-ref.xhtml#d # bug 1354406
HTTP == deferred-anchor.xhtml#d deferred-anchor-ref.xhtml#d
fuzzy-if(xulRuntime.widgetToolkit=="gtk3",1,23) == deferred-anchor2.xhtml deferred-anchor-ref.xhtml#d # bug 1182632
HTTP == fixed-1.html fixed-1.html?ref
fuzzy-if(skiaContent,1,32200) HTTP == fixed-table-1.html fixed-table-1.html?ref
@ -22,7 +22,7 @@ pref(layout.css.scroll-behavior.enabled,true) pref(layout.css.scroll-behavior.pr
pref(layout.css.scroll-behavior.enabled,true) pref(layout.css.scroll-behavior.property-enabled,true) == scroll-behavior-10.html scroll-behavior-10.html?ref
pref(layout.css.scroll-behavior.enabled,true) pref(layout.css.scroll-behavior.property-enabled,true) == scroll-behavior-textarea.html scroll-behavior-textarea.html?ref
HTTP == simple-1.html simple-1.html?ref
skip-if(styloVsGecko) HTTP == subpixel-1.html#d subpixel-1-ref.html#d # bug 1354406
HTTP == subpixel-1.html#d subpixel-1-ref.html#d
fuzzy-if(Android,4,120) HTTP == text-1.html text-1.html?ref
fuzzy-if(Android,4,120) HTTP == text-2.html?up text-2.html?ref
fuzzy-if(d2d,1,4) fuzzy-if(webrender,0-1,0-42) HTTP == transformed-1.html transformed-1.html?ref

View File

@ -142,7 +142,7 @@ fuzzy-if(skiaContent,1,600) == anim-feGaussianBlur-01.svg lime.svg
fuzzy-if(Android,4,1) == anim-svg-viewBox-01.svg lime.svg
== anim-svg-viewBox-02.svg lime.svg
== anim-svg-viewBox-03.svg lime.svg
skip-if(styloVsGecko) == anim-view-01.svg#view lime.svg # bug 1354406
== anim-view-01.svg#view lime.svg
# animate some preserveAspectRatio attributes
== anim-feImage-preserveAspectRatio-01.svg lime.svg

View File

@ -53,9 +53,9 @@ fuzzy-if(skiaContent,1,580) == anim-css-fill-3-from-by-rgb-ident.svg anim-css
# clamp *final presentation values*.
# (Reference: SVG 1.1 Appendix F.4)
== anim-css-fill-overflow-1-by.svg anim-css-fill-overflow-1-ref.svg
fails-if(!stylo) == anim-css-fill-overflow-1-from-by.svg anim-css-fill-overflow-1-ref.svg # bug 515919
fails-if(!stylo) == anim-css-stopcolor-overflow-1-from-by.svg anim-css-stopcolor-overflow-1-ref.svg # bug 515919
fails-if(!stylo) == anim-css-floodcolor-overflow-1-from-by.svg anim-css-floodcolor-overflow-1-ref.svg # bug 515919
== anim-css-fill-overflow-1-from-by.svg anim-css-fill-overflow-1-ref.svg # bug 515919
== anim-css-stopcolor-overflow-1-from-by.svg anim-css-stopcolor-overflow-1-ref.svg # bug 515919
== anim-css-floodcolor-overflow-1-from-by.svg anim-css-floodcolor-overflow-1-ref.svg # bug 515919
# 'fill-opacity' property
fuzzy-if(skiaContent,1,885) == anim-css-fillopacity-1-by.svg anim-css-fillopacity-1-ref.svg

View File

@ -26,7 +26,7 @@ fuzzy-if(Android,255,30) == clipPath-html-06-extref.xhtml clipPath-html-06-ref.x
== dynamic-conditions-outer-svg-04.xhtml ../pass.svg
== filter-html-01.xhtml filter-html-01-ref.svg
== filter-html-dynamic-01.xhtml filter-html-dynamic-01-ref.xhtml
random-if(Android) skip-if(styloVsGecko) == filter-html-01-extref.xhtml filter-html-01-ref.svg # Android: bug 1198380. skip styloVsGecko for imperceptible pixel rounding differences between Stylo and Gecko
random-if(Android) == filter-html-01-extref.xhtml filter-html-01-ref.svg # Android: bug 1198380
== filter-html-zoomed-01.xhtml filter-html-01-ref.svg
fuzzy-if(webrender,1,125414) == mask-html-01.xhtml mask-html-01-ref.svg
fuzzy-if(webrender,1,125414) == mask-html-01-extref-01.xhtml mask-html-01-ref.svg

View File

@ -1,11 +1,11 @@
# these could be moved to crashtests
!= backgr_border-table-cell.html empty.html
fuzzy-if(styloVsGecko,5,330) != backgr_border-table-column-group.html empty.html # Bug 1386543
!= backgr_border-table-column-group.html empty.html
# This seems to be caused by bug 527825
fuzzy-if(styloVsGecko,5,579) asserts-if(gtkWidget,0-12) != backgr_border-table-column.html empty.html # Bug 1386543
asserts-if(gtkWidget,0-6) fuzzy-if(styloVsGecko&&(winWidget||cocoaWidget),32,88) != backgr_border-table-quirks.html empty.html
fuzzy-if(styloVsGecko,1,168) != backgr_border-table-row-group.html empty.html # Bug 1386543
fuzzy-if(styloVsGecko,1,204) != backgr_border-table-row.html empty.html # Bug 1386543
asserts-if(gtkWidget,0-12) != backgr_border-table-column.html empty.html
asserts-if(gtkWidget,0-6) != backgr_border-table-quirks.html empty.html
!= backgr_border-table-row-group.html empty.html
!= backgr_border-table-row.html empty.html
!= backgr_border-table.html empty.html
!= backgr_fixed-bg.html empty.html
!= backgr_index.html empty.html

View File

@ -151,7 +151,7 @@ random-if(cocoaWidget) random-if(gtkWidget) == zwnj-01.xhtml zwnj-01-ref.xhtml #
== initial-zwj-1.html initial-zwj-1-ref.html
== cgj-01.html cgj-01-ref.html
== 444656.html 444656-ref.html
fails-if(cocoaWidget&&styloVsGecko) == 449555-1.html 449555-1-ref.html
== 449555-1.html 449555-1-ref.html
== 467722.html 467722-ref.html
fuzzy-if(skiaContent,1,600) == 475092-sub.html 475092-ref.html
fails-if(Android) fuzzy-if(skiaContent&&!Android,90,3100) == 475092-pos.html 475092-sub.html # bug 482596
@ -327,7 +327,7 @@ fails-if(!cocoaWidget) != osx-font-smoothing.html osx-font-smoothing-ref.html
fails-if(!cocoaWidget) != osx-font-smoothing-2.html osx-font-smoothing-2-notref.html
== osx-font-smoothing-2.html osx-font-smoothing-2-ref.html
pref(layout.css.text-align-unsafe-value.enabled,true) fails-if(styloVsGecko||stylo) == text-align-unsafe.html text-align-unsafe-ref.html
pref(layout.css.text-align-unsafe-value.enabled,true) fails == text-align-unsafe.html text-align-unsafe-ref.html # bug 1388949
# stray control chars should be visible by default, bug 1099557
!= control-chars-01a.html control-chars-01-notref.html

View File

@ -142,8 +142,6 @@ pref(svg.transform-box.enabled,true) == transform-box-svg-3a.svg pass.svg
# Bug 1301500
== dynamic-add-without-change-cb-1.html dynamic-add-without-change-cb-1-ref.html
fuzzy-if(d2d,1,5) fuzzy-if(skiaContent,26,208) == table-overflowed-by-animation.html table-overflowed-by-animation-ref.html
# Bug 1392161. These tests are failed on Gecko (Bug 1396535). The viewport
# length transform test is also failed on Servo backend.
fails-if(!stylo) == translate-rounding-1.html translate-rounding-ref.html
fails-if(!stylo) == translate-rounding-2.html translate-rounding-ref.html
fails == translate-rounding-3.html translate-rounding-viewport-ref.html
== translate-rounding-1.html translate-rounding-ref.html
== translate-rounding-2.html translate-rounding-ref.html
fails == translate-rounding-3.html translate-rounding-viewport-ref.html # bug 1397146

View File

@ -35,9 +35,6 @@ fails css-values/attr-*.html
css-values/attr-*-invalid-fallback.html
css-values/attr-invalid-type-???.html
# Bug 1256575
fails-if(!stylo||styloVsGecko) css-values/calc-in-media-queries-???.html
# because of dynamic change
skip css-values/vh_not_refreshing_on_chrome.html
skip css-values/vh_not_refreshing_on_chrome_iframe.html

View File

@ -212,8 +212,8 @@ fails == css-values/attr-px-invalid-cast.html css-values/reference/200-200-green
== css-values/attr-px-invalid-fallback.html css-values/reference/200-200-green.html
fails == css-values/attr-px-valid.html css-values/reference/200-200-green.html
== css-values/calc-in-calc.html css-values/reference/all-green.html
fails-if(!stylo||styloVsGecko) == css-values/calc-in-media-queries-001.html css-values/reference/all-green.html
fails-if(!stylo||styloVsGecko) == css-values/calc-in-media-queries-002.html css-values/reference/all-green.html
== css-values/calc-in-media-queries-001.html css-values/reference/all-green.html
== css-values/calc-in-media-queries-002.html css-values/reference/all-green.html
== css-values/calc-invalid-range-clamping.html css-values/reference/200-200-green.html
== css-values/calc-parenthesis-stack.html css-values/reference/all-green.html
fuzzy-if(OSX||Android,78,197) == css-values/ch-unit-001.html css-values/reference/ch-unit-001-ref.html

View File

@ -6,11 +6,9 @@
== perspective-zero-2.html perspective-zero-2-ref.html
default-preferences pref(layout.css.individual-transform.enabled,true)
# stylo-vs-gecko comparison fails since we support individual transform on new
# style system only.
fails-if(!stylo||styloVsGecko) == individual-transform-1.html individual-transform-1-ref.html
fails-if(!stylo||styloVsGecko) == individual-transform-2a.html individual-transform-2-ref.html
fails-if(!stylo||styloVsGecko) == individual-transform-2b.html individual-transform-2-ref.html
fails-if(!stylo||styloVsGecko) == individual-transform-2c.html individual-transform-2-ref.html
fails-if(!stylo||styloVsGecko) == individual-transform-2d.html individual-transform-2-ref.html
fails-if(!stylo||styloVsGecko) == individual-transform-2e.html individual-transform-2-ref.html
== individual-transform-1.html individual-transform-1-ref.html
== individual-transform-2a.html individual-transform-2-ref.html
== individual-transform-2b.html individual-transform-2-ref.html
== individual-transform-2c.html individual-transform-2-ref.html
== individual-transform-2d.html individual-transform-2-ref.html
== individual-transform-2e.html individual-transform-2-ref.html

View File

@ -1,23 +1,23 @@
pref(dom.webcomponents.shadowdom.enabled,true) fails-if(!stylo||styloVsGecko) == cross-tree-selection-1.html cross-tree-selection-1-ref.html
pref(dom.webcomponents.shadowdom.enabled,true) fails-if(!stylo||styloVsGecko) == basic-shadow-1.html basic-shadow-1-ref.html
pref(dom.webcomponents.shadowdom.enabled,true) fails-if(!stylo||styloVsGecko) == basic-shadow-2.html basic-shadow-2-ref.html
pref(dom.webcomponents.shadowdom.enabled,true) fails-if(!stylo||styloVsGecko) == basic-shadow-3.html basic-shadow-3-ref.html
pref(dom.webcomponents.shadowdom.enabled,true) fails-if(!stylo||styloVsGecko) == basic-shadow-4.html basic-shadow-4-ref.html
pref(dom.webcomponents.shadowdom.enabled,true) fails-if(!stylo||styloVsGecko) == fallback-content-1.html fallback-content-1-ref.html
pref(dom.webcomponents.shadowdom.enabled,true) fails-if(!stylo||styloVsGecko) == remove-insertion-point-1.html remove-insertion-point-1-ref.html
pref(dom.webcomponents.shadowdom.enabled,true) fails-if(!stylo||styloVsGecko) == nested-insertion-point-1.html nested-insertion-point-1-ref.html
pref(dom.webcomponents.shadowdom.enabled,true) skip-if(!stylo||styloVsGecko) == update-dist-node-descendants-1.html update-dist-node-descendants-1-ref.html
pref(dom.webcomponents.shadowdom.enabled,true) skip-if(!stylo||styloVsGecko) fuzzy-if(Android,2,7) == input-transition-1.html input-transition-1-ref.html
pref(dom.webcomponents.shadowdom.enabled,true) skip-if(!stylo||styloVsGecko) == dynamic-insertion-point-distribution-1.html dynamic-insertion-point-distribution-1-ref.html
pref(dom.webcomponents.shadowdom.enabled,true) skip-if(!stylo||styloVsGecko) == dynamic-insertion-point-distribution-2.html dynamic-insertion-point-distribution-2-ref.html
pref(dom.webcomponents.shadowdom.enabled,true) fails-if(!stylo||styloVsGecko) == remove-append-shadow-host-1.html remove-append-shadow-host-1-ref.html
pref(dom.webcomponents.shadowdom.enabled,true) fails-if(!stylo||styloVsGecko) == reframe-shadow-child-1.html reframe-shadow-child-ref.html
pref(dom.webcomponents.shadowdom.enabled,true) fails-if(!stylo||styloVsGecko) == reframe-shadow-child-2.html reframe-shadow-child-ref.html
pref(dom.webcomponents.shadowdom.enabled,true) fails-if(!stylo||styloVsGecko) == style-sharing.html style-sharing-ref.html
pref(dom.webcomponents.shadowdom.enabled,true) skip-if(!stylo||styloVsGecko) == style-sharing-across-shadow.html style-sharing-ref.html # bug 1412400
pref(dom.webcomponents.shadowdom.enabled,true) == cross-tree-selection-1.html cross-tree-selection-1-ref.html
pref(dom.webcomponents.shadowdom.enabled,true) == basic-shadow-1.html basic-shadow-1-ref.html
pref(dom.webcomponents.shadowdom.enabled,true) == basic-shadow-2.html basic-shadow-2-ref.html
pref(dom.webcomponents.shadowdom.enabled,true) == basic-shadow-3.html basic-shadow-3-ref.html
pref(dom.webcomponents.shadowdom.enabled,true) == basic-shadow-4.html basic-shadow-4-ref.html
pref(dom.webcomponents.shadowdom.enabled,true) == fallback-content-1.html fallback-content-1-ref.html
pref(dom.webcomponents.shadowdom.enabled,true) == remove-insertion-point-1.html remove-insertion-point-1-ref.html
pref(dom.webcomponents.shadowdom.enabled,true) == nested-insertion-point-1.html nested-insertion-point-1-ref.html
pref(dom.webcomponents.shadowdom.enabled,true) == update-dist-node-descendants-1.html update-dist-node-descendants-1-ref.html
pref(dom.webcomponents.shadowdom.enabled,true) fuzzy-if(Android,2,7) == input-transition-1.html input-transition-1-ref.html
pref(dom.webcomponents.shadowdom.enabled,true) == dynamic-insertion-point-distribution-1.html dynamic-insertion-point-distribution-1-ref.html
pref(dom.webcomponents.shadowdom.enabled,true) == dynamic-insertion-point-distribution-2.html dynamic-insertion-point-distribution-2-ref.html
pref(dom.webcomponents.shadowdom.enabled,true) == remove-append-shadow-host-1.html remove-append-shadow-host-1-ref.html
pref(dom.webcomponents.shadowdom.enabled,true) == reframe-shadow-child-1.html reframe-shadow-child-ref.html
pref(dom.webcomponents.shadowdom.enabled,true) == reframe-shadow-child-2.html reframe-shadow-child-ref.html
pref(dom.webcomponents.shadowdom.enabled,true) == style-sharing.html style-sharing-ref.html
pref(dom.webcomponents.shadowdom.enabled,true) == style-sharing-across-shadow.html style-sharing-ref.html # bug 1412400
pref(dom.webcomponents.shadowdom.enabled,true) == basic-slot-1.html basic-slot-1-ref.html
pref(dom.webcomponents.shadowdom.enabled,true) == basic-slot-2.html basic-slot-2-ref.html
pref(dom.webcomponents.shadowdom.enabled,true) fails-if(!stylo||styloVsGecko) == basic-slot-3.html basic-slot-3-ref.html
pref(dom.webcomponents.shadowdom.enabled,true) fails-if(!stylo||styloVsGecko) == basic-slot-4.html basic-slot-3-ref.html
pref(dom.webcomponents.shadowdom.enabled,true) fails-if(!stylo||styloVsGecko) == basic-slot-5.html basic-slot-5-ref.html
pref(dom.webcomponents.shadowdom.enabled,true) fails-if(!stylo||styloVsGecko) == basic-slot-6.html basic-slot-6-ref.html
pref(dom.webcomponents.shadowdom.enabled,true) == basic-slot-3.html basic-slot-3-ref.html
pref(dom.webcomponents.shadowdom.enabled,true) == basic-slot-4.html basic-slot-3-ref.html
pref(dom.webcomponents.shadowdom.enabled,true) == basic-slot-5.html basic-slot-5-ref.html
pref(dom.webcomponents.shadowdom.enabled,true) == basic-slot-6.html basic-slot-6-ref.html

View File

@ -266,7 +266,7 @@ load 1415663.html
pref(dom.webcomponents.shadowdom.enabled,true) load 1415353.html
pref(dom.webcomponents.shadowdom.enabled,true) load 1415021.html
load 1418059.html
skip-if(!stylo) test-pref(dom.animations-api.core.enabled,true) load 1418867.html
test-pref(dom.animations-api.core.enabled,true) load 1418867.html
pref(dom.webcomponents.shadowdom.enabled,true) load 1419554.html
load 1426312.html
load 1439793.html

View File

@ -166,7 +166,6 @@ support-files = file_bug1375944.html Ahem.ttf
[test_bug1382568.html]
support-files = bug1382568-iframe.html
[test_bug1394302.html]
skip-if = !stylo # This is a stylo test; gecko isn't deterministic here
[test_bug1443344-1.html]
scheme = https
support-files = file_bug1443344.css
@ -186,7 +185,6 @@ skip-if = toolkit == 'android'
[test_computed_style_in_created_document.html]
[test_computed_style_min_size_auto.html]
[test_computed_style_no_flush.html]
skip-if = !stylo # gecko will fail without some hack, see bug 1401857
[test_computed_style_no_pseudo.html]
[test_computed_style_prefs.html]
[test_condition_text.html]
@ -206,7 +204,6 @@ skip-if = toolkit == 'android' #bug 536603
[test_css_supports.html]
[test_css_supports_variables.html]
[test_custom_content_inheritance.html]
skip-if = !stylo # Gecko fails this and messes up inheritance
[test_default_bidi_css.html]
[test_default_computed_style.html]
[test_descriptor_storage.html]
@ -248,7 +245,6 @@ skip-if = toolkit == 'android'
skip-if = toolkit == 'android'
[test_initial_storage.html]
[test_invalidation_basic.html]
skip-if = !stylo
[test_keyframes_rules.html]
[test_keyframes_vendor_prefix.html]
[test_load_events_on_stylesheets.html]
@ -309,7 +305,6 @@ support-files = file_specified_value_serialization_individual_transforms.html
[test_style_attribute_standards.html]
[test_style_struct_copy_constructors.html]
[test_stylesheet_additions.html]
skip-if = !stylo
[test_stylesheet_clone_font_face.html]
[test_supports_rules.html]
[test_system_font_serialization.html]

View File

@ -70,7 +70,6 @@ for (let [key, val] of Object.entries({
contentGfxInfo: null,
focusFilterMode: "all",
compareRetainedDisplayLists: false,
compareStyloToGecko: false,
browser: undefined,
// Are we testing web content loaded in a separate process?

View File

@ -68,10 +68,6 @@ function ReadManifest(aURL, aFilter)
AddRetainedDisplayListTestPrefs(sandbox, defaultTestPrefSettings,
defaultRefPrefSettings);
}
if (g.compareStyloToGecko) {
AddStyloTestPrefs(sandbox, defaultTestPrefSettings,
defaultRefPrefSettings);
}
for (var str of lines) {
++lineNo;
if (str.charAt(0) == "#")
@ -110,10 +106,6 @@ function ReadManifest(aURL, aFilter)
AddRetainedDisplayListTestPrefs(sandbox, defaultTestPrefSettings,
defaultRefPrefSettings);
}
if (g.compareStyloToGecko) {
AddStyloTestPrefs(sandbox, defaultTestPrefSettings,
defaultRefPrefSettings);
}
continue;
}
@ -327,7 +319,7 @@ function ReadManifest(aURL, aFilter)
}
var type = items[0];
if (g.compareStyloToGecko || g.compareRetainedDisplayLists) {
if (g.compareRetainedDisplayLists) {
type = TYPE_REFTEST_EQUAL;
// We expect twice as many assertion failures when running in
@ -501,11 +493,9 @@ sandbox.compareRetainedDisplayLists = g.compareRetainedDisplayLists;
} else {
styloEnabled = prefs.getBoolPref("layout.css.servo.enabled", false);
}
sandbox.stylo = styloEnabled && !g.compareStyloToGecko;
sandbox.styloVsGecko = g.compareStyloToGecko;
sandbox.stylo = styloEnabled;
#else
sandbox.stylo = false;
sandbox.styloVsGecko = false;
#endif
sandbox.skiaPdf = false;
@ -583,13 +573,6 @@ function AddRetainedDisplayListTestPrefs(aSandbox, aTestPrefSettings,
aTestPrefSettings, aRefPrefSettings);
}
function AddStyloTestPrefs(aSandbox, aTestPrefSettings, aRefPrefSettings) {
AddPrefSettings("test-", "layout.css.servo.enabled", "true", aSandbox,
aTestPrefSettings, aRefPrefSettings);
AddPrefSettings("ref-", "layout.css.servo.enabled", "false", aSandbox,
aTestPrefSettings, aRefPrefSettings);
}
function AddPrefSettings(aWhere, aPrefName, aPrefValExpression, aSandbox, aTestPrefSettings, aRefPrefSettings) {
var prefVal = Cu.evalInSandbox("(" + aPrefValExpression + ")", aSandbox);
var prefType;
@ -607,8 +590,7 @@ function AddPrefSettings(aWhere, aPrefName, aPrefValExpression, aSandbox, aTestP
type: prefType,
value: prefVal };
if ((g.compareStyloToGecko && aPrefName != "layout.css.servo.enabled") ||
(g.compareRetainedDisplayLists && aPrefName != "layout.display-list.retain")) {
if (g.compareRetainedDisplayLists && aPrefName != "layout.display-list.retain") {
// ref-pref() is ignored, test-pref() and pref() are added to both
if (aWhere != "ref-") {
aTestPrefSettings.push(setting);
@ -690,8 +672,6 @@ function CreateUrls(test) {
let files = [test.url1, test.url2];
[test.url1, test.url2] = files.map(FileToURI);
if (test.url2 && g.compareStyloToGecko)
test.url2 = test.url1;
return test;
}

View File

@ -265,11 +265,6 @@ function InitAndStartRefTests()
try {
g.compareRetainedDisplayLists = prefs.getBoolPref("reftest.compareRetainedDisplayLists");
} catch (e) {}
#ifdef MOZ_STYLO
try {
g.compareStyloToGecko = prefs.getBoolPref("reftest.compareStyloToGecko");
} catch(e) {}
#endif
#ifdef MOZ_ENABLE_SKIA_PDF
try {

View File

@ -3590,10 +3590,29 @@ ToIPCSegment(const nsStandardURL::URLSegment& aSegment)
}
inline
nsStandardURL::URLSegment
FromIPCSegment(const ipc::StandardURLSegment& aSegment)
MOZ_MUST_USE bool
FromIPCSegment(const nsACString& aSpec, const ipc::StandardURLSegment& aSegment, nsStandardURL::URLSegment& aTarget)
{
return nsStandardURL::URLSegment(aSegment.position(), aSegment.length());
// This seems to be just an empty segment.
if (aSegment.length() == -1) {
aTarget = nsStandardURL::URLSegment();
return true;
}
// A value of -1 means an empty segment, but < -1 is undefined.
if (NS_WARN_IF(aSegment.length() < -1)) {
return false;
}
// Make sure the segment does not extend beyond the spec.
if (NS_WARN_IF(aSegment.position() + aSegment.length() > aSpec.Length())) {
return false;
}
aTarget.mPos = aSegment.position();
aTarget.mLen = aSegment.length();
return true;
}
void
@ -3660,22 +3679,37 @@ nsStandardURL::Deserialize(const URIParams& aParams)
mPort = params.port();
mDefaultPort = params.defaultPort();
mSpec = params.spec();
mScheme = FromIPCSegment(params.scheme());
mAuthority = FromIPCSegment(params.authority());
mUsername = FromIPCSegment(params.username());
mPassword = FromIPCSegment(params.password());
mHost = FromIPCSegment(params.host());
mPath = FromIPCSegment(params.path());
mFilepath = FromIPCSegment(params.filePath());
mDirectory = FromIPCSegment(params.directory());
mBasename = FromIPCSegment(params.baseName());
mExtension = FromIPCSegment(params.extension());
mQuery = FromIPCSegment(params.query());
mRef = FromIPCSegment(params.ref());
NS_ENSURE_TRUE(mSpec.Length() <= (uint32_t) net_GetURLMaxLength(), false);
NS_ENSURE_TRUE(FromIPCSegment(mSpec, params.scheme(), mScheme), false);
NS_ENSURE_TRUE(FromIPCSegment(mSpec, params.authority(), mAuthority), false);
NS_ENSURE_TRUE(FromIPCSegment(mSpec, params.username(), mUsername), false);
NS_ENSURE_TRUE(FromIPCSegment(mSpec, params.password(), mPassword), false);
NS_ENSURE_TRUE(FromIPCSegment(mSpec, params.host(), mHost), false);
NS_ENSURE_TRUE(FromIPCSegment(mSpec, params.path(), mPath), false);
NS_ENSURE_TRUE(FromIPCSegment(mSpec, params.filePath(), mFilepath), false);
NS_ENSURE_TRUE(FromIPCSegment(mSpec, params.directory(), mDirectory), false);
NS_ENSURE_TRUE(FromIPCSegment(mSpec, params.baseName(), mBasename), false);
NS_ENSURE_TRUE(FromIPCSegment(mSpec, params.extension(), mExtension), false);
NS_ENSURE_TRUE(FromIPCSegment(mSpec, params.query(), mQuery), false);
NS_ENSURE_TRUE(FromIPCSegment(mSpec, params.ref(), mRef), false);
mMutable = params.isMutable();
mSupportsFileURL = params.supportsFileURL();
// mSpecEncoding and mDisplayHost are just caches that can be recovered as needed.
// Some sanity checks
NS_ENSURE_TRUE(mScheme.mPos == 0, false);
NS_ENSURE_TRUE(mScheme.mLen > 0, false);
// Make sure scheme is followed by :// (3 characters)
NS_ENSURE_TRUE(mScheme.mLen < INT32_MAX - 3, false); // avoid overflow
NS_ENSURE_TRUE(mSpec.Length() >= (uint32_t) mScheme.mLen + 3, false);
NS_ENSURE_TRUE(nsDependentCSubstring(mSpec, mScheme.mLen, 3).EqualsLiteral("://"), false);
NS_ENSURE_TRUE(mPath.mLen != -1 && mSpec.CharAt(mPath.mPos) == '/', false);
NS_ENSURE_TRUE(mPath.mPos == mFilepath.mPos, false);
NS_ENSURE_TRUE(mQuery.mLen == -1 || mSpec.CharAt(mQuery.mPos - 1) == '?', false);
NS_ENSURE_TRUE(mRef.mLen == -1 || mSpec.CharAt(mRef.mPos - 1) == '#', false);
return true;
}

View File

@ -217,6 +217,7 @@ HttpBaseChannel::HttpBaseChannel()
, mRequireCORSPreflight(false)
, mReportCollector(new ConsoleReportCollector())
, mAltDataLength(0)
, mAltDataForChild(false)
, mForceMainDocumentChannel(false)
, mIsTrackingResource(false)
, mLastRedirectFlags(0)
@ -3689,6 +3690,8 @@ HttpBaseChannel::SetupReplacementChannel(nsIURI *newURI,
// Preserve Integrity metadata.
rv = httpInternal->SetIntegrityMetadata(mIntegrityMetadata);
MOZ_ASSERT(NS_SUCCEEDED(rv));
httpInternal->SetAltDataForChild(mAltDataForChild);
}
// transfer application cache information
@ -4438,6 +4441,12 @@ HttpBaseChannel::SetCorsPreflightParameters(const nsTArray<nsCString>& aUnsafeHe
mUnsafeHeaders = aUnsafeHeaders;
}
void
HttpBaseChannel::SetAltDataForChild(bool aIsForChild)
{
mAltDataForChild = aIsForChild;
}
NS_IMETHODIMP
HttpBaseChannel::GetBlockAuthPrompt(bool* aValue)
{

View File

@ -263,6 +263,7 @@ public:
NS_IMETHOD SetTopWindowURIIfUnknown(nsIURI *aTopWindowURI) override;
NS_IMETHOD GetProxyURI(nsIURI **proxyURI) override;
virtual void SetCorsPreflightParameters(const nsTArray<nsCString>& unsafeHeaders) override;
virtual void SetAltDataForChild(bool aIsForChild) override;
NS_IMETHOD GetConnectionInfoHashKey(nsACString& aConnectionInfoHashKey) override;
NS_IMETHOD GetIntegrityMetadata(nsAString& aIntegrityMetadata) override;
NS_IMETHOD SetIntegrityMetadata(const nsAString& aIntegrityMetadata) override;
@ -704,6 +705,9 @@ protected:
// Holds the name of the alternative data type the channel returned.
nsCString mAvailableCachedAltDataType;
int64_t mAltDataLength;
// This flag will be true if the consumer is requesting alt-data AND the
// consumer is in the child process.
bool mAltDataForChild;
bool mForceMainDocumentChannel;
Atomic<bool, ReleaseAcquire> mIsTrackingResource;

View File

@ -699,8 +699,14 @@ HttpChannelParent::DoAsyncOpen( const URIParams& aURI,
cacheChannel->PreferAlternativeDataType(aPreferredAlternativeType);
cacheChannel->SetAllowStaleCacheContent(aAllowStaleCacheContent);
// This is to mark that the results are going to the content process.
if (httpChannelImpl) {
httpChannelImpl->SetAltDataForChild(true);
}
}
httpChannel->SetContentType(aContentTypeHint);
if (priority != nsISupportsPriority::PRIORITY_NORMAL) {
@ -2276,7 +2282,11 @@ HttpChannelParent::OpenAlternativeOutputStream(const nsACString & type, nsIOutpu
if (!mCacheEntry) {
return NS_ERROR_NOT_AVAILABLE;
}
return mCacheEntry->OpenAlternativeOutputStream(type, _retval);
nsresult rv = mCacheEntry->OpenAlternativeOutputStream(type, _retval);
if (NS_SUCCEEDED(rv)) {
mCacheEntry->SetMetaDataElement("alt-data-from-child", "1");
}
return rv;
}
NS_IMETHODIMP

View File

@ -4788,7 +4788,16 @@ nsHttpChannel::OpenCacheInputStream(nsICacheEntry* cacheEntry, bool startBufferi
// If an alternate representation was requested, try to open the alt
// input stream.
if (!mPreferredCachedAltDataType.IsEmpty()) {
// If the entry has a "is-from-child" metadata, then only open the altdata stream if the consumer is also from child.
bool altDataFromChild = false;
{
nsCString value;
rv = cacheEntry->GetMetaDataElement("alt-data-from-child",
getter_Copies(value));
altDataFromChild = !value.IsEmpty();
}
if (!mPreferredCachedAltDataType.IsEmpty() && (altDataFromChild == mAltDataForChild)) {
rv = cacheEntry->OpenAlternativeInputStream(mPreferredCachedAltDataType,
getter_AddRefs(stream));
if (NS_SUCCEEDED(rv)) {
@ -7874,7 +7883,13 @@ nsHttpChannel::OpenAlternativeOutputStream(const nsACString & type, nsIOutputStr
if (!cacheEntry) {
return NS_ERROR_NOT_AVAILABLE;
}
return cacheEntry->OpenAlternativeOutputStream(type, _retval);
nsresult rv = cacheEntry->OpenAlternativeOutputStream(type, _retval);
if (NS_SUCCEEDED(rv)) {
// Clear this metadata flag in case it exists.
// The caller of this method may set it again.
cacheEntry->SetMetaDataElement("alt-data-from-child", nullptr);
}
return rv;
}
//-----------------------------------------------------------------------------

View File

@ -302,6 +302,9 @@ interface nsIHttpChannelInternal : nsISupports
[noscript, notxpcom, nostdcall]
void setCorsPreflightParameters(in StringArrayRef unsafeHeaders);
[noscript, notxpcom, nostdcall]
void setAltDataForChild(in boolean aIsForChild);
/**
* When set to true, the channel will not pop any authentication prompts up
* to the user. When provided or cached credentials lead to an

View File

@ -1119,6 +1119,12 @@ nsViewSourceChannel::SetCorsPreflightParameters(const nsTArray<nsCString>& aUnsa
mHttpChannelInternal->SetCorsPreflightParameters(aUnsafeHeaders);
}
void
nsViewSourceChannel::SetAltDataForChild(bool aIsForChild)
{
mHttpChannelInternal->SetAltDataForChild(aIsForChild);
}
NS_IMETHODIMP
nsViewSourceChannel::LogBlockedCORSRequest(const nsAString& aMessage)
{

View File

@ -0,0 +1,141 @@
/**
* Test for the "alternative data stream" stored withing a cache entry.
*
* - we load a URL with preference for an alt data (check what we get is the raw data,
* since there was nothing previously cached)
* - we store the alt data along the channel (to the cache entry)
* - we flush the HTTP cache
* - we reload the same URL using a new channel, again prefering the alt data be loaded
* - this time the alt data must arive
*/
ChromeUtils.import("resource://testing-common/httpd.js");
ChromeUtils.import("resource://gre/modules/NetUtil.jsm");
ChromeUtils.import("resource://gre/modules/Services.jsm");
XPCOMUtils.defineLazyGetter(this, "URL", function() {
return "http://localhost:" + httpServer.identity.primaryPort + "/content";
});
var httpServer = null;
function make_channel(url, callback, ctx) {
return NetUtil.newChannel({uri: url, loadUsingSystemPrincipal: true});
}
function inChildProcess() {
return Cc["@mozilla.org/xre/app-info;1"]
.getService(Ci.nsIXULRuntime)
.processType != Ci.nsIXULRuntime.PROCESS_TYPE_DEFAULT;
}
const responseContent = "response body";
const responseContent2 = "response body 2";
const altContent = "!@#$%^&*()";
const altContentType = "text/binary";
var servedNotModified = false;
var shouldPassRevalidation = true;
var cache_storage = null;
function contentHandler(metadata, response)
{
response.setHeader("Content-Type", "text/plain");
response.setHeader("Cache-Control", "no-cache");
response.setHeader("ETag", "test-etag1");
try {
var etag = metadata.getHeader("If-None-Match");
} catch(ex) {
var etag = "";
}
if (etag == "test-etag1" && shouldPassRevalidation) {
response.setStatusLine(metadata.httpVersion, 304, "Not Modified");
servedNotModified = true;
} else {
var content = shouldPassRevalidation ? responseContent : responseContent2;
response.bodyOutputStream.write(content, content.length);
}
}
function check_has_alt_data_in_index(aHasAltData)
{
if (inChildProcess()) {
return;
}
var hasAltData = {};
cache_storage.getCacheIndexEntryAttrs(createURI(URL), "", hasAltData, {});
Assert.equal(hasAltData.value, aHasAltData);
}
function run_test()
{
httpServer = new HttpServer();
httpServer.registerPathHandler("/content", contentHandler);
httpServer.start(-1);
do_test_pending();
asyncOpen();
}
function asyncOpen()
{
var chan = make_channel(URL);
var cc = chan.QueryInterface(Ci.nsICacheInfoChannel);
cc.preferAlternativeDataType(altContentType);
chan.asyncOpen2(new ChannelListener(readServerContent, null));
}
function readServerContent(request, buffer)
{
var cc = request.QueryInterface(Ci.nsICacheInfoChannel);
Assert.equal(buffer, responseContent);
Assert.equal(cc.alternativeDataType, "");
check_has_alt_data_in_index(false);
executeSoon(() => {
var os = cc.openAlternativeOutputStream(altContentType);
os.write(altContent, altContent.length);
os.close();
executeSoon(flushAndOpenAltChannel);
});
}
function flushAndOpenAltChannel()
{
// We need to do a GC pass to ensure the cache entry has been freed.
gc();
do_send_remote_message('flush');
do_await_remote_message('flushed').then(() => {
openAltChannel();
});
}
function openAltChannel() {
var chan = make_channel(URL);
var cc = chan.QueryInterface(Ci.nsICacheInfoChannel);
cc.preferAlternativeDataType(altContentType);
chan.asyncOpen2(new ChannelListener(readAltContent, null));
}
function readAltContent(request, buffer)
{
var cc = request.QueryInterface(Ci.nsICacheInfoChannel);
Assert.equal(servedNotModified, true);
Assert.equal(cc.alternativeDataType, altContentType);
Assert.equal(buffer, altContent);
// FINISH
do_send_remote_message('done');
do_await_remote_message('finish').then(() => {
httpServer.stop(do_test_finished);
});
}

View File

@ -20,6 +20,7 @@ support-files =
test_link.desktop
test_link.url
../../dns/effective_tld_names.dat
test_alt-data_cross_process.js
[test_network_activity.js]
[test_nsIBufferedOutputStream_writeFrom_block.js]

View File

@ -0,0 +1,81 @@
ChromeUtils.import("resource://gre/modules/Services.jsm");
ChromeUtils.import("resource://gre/modules/NetUtil.jsm");
// needs to be rooted
var cacheFlushObserver = { observe: function() {
cacheFlushObserver = null;
do_send_remote_message('flushed');
}};
// We get this from the child a bit later
var URL = null;
// needs to be rooted
var cacheFlushObserver2 = { observe: function() {
cacheFlushObserver2 = null;
openAltChannel();
}};
function run_test() {
do_get_profile();
do_await_remote_message('flush').then(() => {
Services.cache2.QueryInterface(Ci.nsICacheTesting).flush(cacheFlushObserver);
});
do_await_remote_message('done').then(() => { sendCommand("URL;", load_channel); });
run_test_in_child("../unit/test_alt-data_cross_process.js");
}
function load_channel(url) {
ok(url);
URL = url; // save this to open the alt data channel later
var chan = make_channel(url);
var cc = chan.QueryInterface(Ci.nsICacheInfoChannel);
cc.preferAlternativeDataType("text/binary");
chan.asyncOpen2(new ChannelListener(readTextData, null));
}
function make_channel(url, callback, ctx) {
return NetUtil.newChannel({uri: url, loadUsingSystemPrincipal: true});
}
function readTextData(request, buffer)
{
var cc = request.QueryInterface(Ci.nsICacheInfoChannel);
// Since we are in a different process from what that generated the alt-data,
// we should receive the original data, not processed content.
Assert.equal(cc.alternativeDataType, "");
Assert.equal(buffer, "response body");
// Now let's generate some alt-data in the parent, and make sure we can get it
var altContent = "altContentParentGenerated";
executeSoon(() => {
var os = cc.openAlternativeOutputStream("text/parent-binary");
os.write(altContent, altContent.length);
os.close();
executeSoon(() => {
Services.cache2.QueryInterface(Ci.nsICacheTesting).flush(cacheFlushObserver2);
});
});
}
function openAltChannel() {
var chan = make_channel(URL);
var cc = chan.QueryInterface(Ci.nsICacheInfoChannel);
cc.preferAlternativeDataType("text/parent-binary");
chan.asyncOpen2(new ChannelListener(readAltData, null));
}
function readAltData(request, buffer)
{
var cc = request.QueryInterface(Ci.nsICacheInfoChannel);
// This was generated in the parent, so it's OK to get it.
Assert.equal(buffer, "altContentParentGenerated");
Assert.equal(cc.alternativeDataType, "text/parent-binary");
// FINISH
do_send_remote_message('finish');
}

View File

@ -59,6 +59,7 @@ support-files =
!/netwerk/test/unit/test_channel_priority.js
!/netwerk/test/unit/test_multipart_streamconv.js
!/netwerk/test/unit/test_original_sent_received_head.js
!/netwerk/test/unit/test_alt-data_cross_process.js
[test_bug528292_wrap.js]
[test_bug248970_cookie_wrap.js]
@ -106,3 +107,4 @@ skip-if = true
[test_trackingProtection_annotateChannels_wrap2.js]
[test_channel_priority_wrap.js]
[test_multipart_streamconv_wrap.js]
[test_alt-data_cross_process_wrap.js]

View File

@ -1 +1 @@
fails-if(styloVsGecko) == test1.html test1-ref.html
== test1.html test1-ref.html

View File

@ -1,2 +1,2 @@
fails-if(styloVsGecko) == reftest1.html reftest1-ref.html
== reftest1.html reftest1-ref.html
include included-reftest.list

View File

@ -1 +1 @@
fails-if(styloVsGecko) == reftest1.html reftest1-ref.html
== reftest1.html reftest1-ref.html

View File

@ -28,6 +28,7 @@
#include <algorithm>
#include "mozilla/Assertions.h"
#include "mozilla/Unused.h"
namespace logging {
@ -115,6 +116,9 @@ LogMessage::LogMessage(const char* file, int line, LogSeverity severity,
}
LogMessage::~LogMessage() {
if (severity_ == LOG_FATAL) {
MOZ_CRASH("Hit fatal chromium sandbox condition.");
}
}
SystemErrorCode GetLastSystemErrorCode() {

View File

@ -1,170 +0,0 @@
# HG changeset patch
# User Bob Owen <bobowencode@gmail.com>
# Date 1486465183 0
# Tue Feb 07 10:59:43 2017 +0000
# Node ID 69c8c415e87bd14843e26488e9cff30e39d69750
# Parent 945bec53811d358e3c668405bc1feb63e671782a
Change USER_NON_ADMIN access token level from whitelist to blacklist containing Admin SIDs. r=jimm
Originally landed in changeset:
https://hg.mozilla.org/mozilla-central/rev/0e6bf137521e
diff --git a/security/sandbox/chromium/sandbox/win/src/restricted_token.cc b/security/sandbox/chromium/sandbox/win/src/restricted_token.cc
--- a/security/sandbox/chromium/sandbox/win/src/restricted_token.cc
+++ b/security/sandbox/chromium/sandbox/win/src/restricted_token.cc
@@ -254,16 +254,50 @@ DWORD RestrictedToken::AddAllSidsForDeny
reinterpret_cast<SID*>(token_groups->Groups[i].Sid));
}
}
}
return ERROR_SUCCESS;
}
+DWORD RestrictedToken::AddDenyOnlySids(const std::vector<Sid>& deny_only_sids) {
+ DCHECK(init_);
+ if (!init_) {
+ return ERROR_NO_TOKEN;
+ }
+
+ DWORD error;
+ std::unique_ptr<BYTE[]> buffer =
+ GetTokenInfo(effective_token_, TokenGroups, &error);
+
+ if (!buffer) {
+ return error;
+ }
+
+ TOKEN_GROUPS* token_groups = reinterpret_cast<TOKEN_GROUPS*>(buffer.get());
+
+ // Build the list of the deny only group SIDs
+ for (unsigned int i = 0; i < token_groups->GroupCount ; ++i) {
+ if ((token_groups->Groups[i].Attributes & SE_GROUP_INTEGRITY) == 0 &&
+ (token_groups->Groups[i].Attributes & SE_GROUP_LOGON_ID) == 0) {
+ for (unsigned int j = 0; j < deny_only_sids.size(); ++j) {
+ if (::EqualSid(const_cast<SID*>(deny_only_sids[j].GetPSID()),
+ token_groups->Groups[i].Sid)) {
+ sids_for_deny_only_.push_back(
+ reinterpret_cast<SID*>(token_groups->Groups[i].Sid));
+ break;
+ }
+ }
+ }
+ }
+
+ return ERROR_SUCCESS;
+}
+
DWORD RestrictedToken::AddSidForDenyOnly(const Sid &sid) {
DCHECK(init_);
if (!init_)
return ERROR_NO_TOKEN;
sids_for_deny_only_.push_back(sid);
return ERROR_SUCCESS;
}
diff --git a/security/sandbox/chromium/sandbox/win/src/restricted_token.h b/security/sandbox/chromium/sandbox/win/src/restricted_token.h
--- a/security/sandbox/chromium/sandbox/win/src/restricted_token.h
+++ b/security/sandbox/chromium/sandbox/win/src/restricted_token.h
@@ -83,16 +83,27 @@ class RestrictedToken {
// std::vector<Sid> sid_exceptions;
// sid_exceptions.push_back(ATL::Sids::Users().GetPSID());
// sid_exceptions.push_back(ATL::Sids::World().GetPSID());
// restricted_token.AddAllSidsForDenyOnly(&sid_exceptions);
// Note: A Sid marked for Deny Only in a token cannot be used to grant
// access to any resource. It can only be used to deny access.
DWORD AddAllSidsForDenyOnly(std::vector<Sid> *exceptions);
+ // Lists all sids in the token and mark them as Deny Only if present in the
+ // deny_only_sids parameter.
+ //
+ // If the function succeeds, the return value is ERROR_SUCCESS. If the
+ // function fails, the return value is the win32 error code corresponding to
+ // the error.
+ //
+ // Note: A Sid marked for Deny Only in a token cannot be used to grant
+ // access to any resource. It can only be used to deny access.
+ DWORD AddDenyOnlySids(const std::vector<Sid>& deny_only_sids);
+
// Adds a user or group SID for Deny Only in the restricted token.
// Parameter: sid is the SID to add in the Deny Only list.
// The return value is always ERROR_SUCCESS.
//
// Sample Usage:
// restricted_token.AddSidForDenyOnly(ATL::Sids::Admins().GetPSID());
DWORD AddSidForDenyOnly(const Sid &sid);
diff --git a/security/sandbox/chromium/sandbox/win/src/restricted_token_utils.cc b/security/sandbox/chromium/sandbox/win/src/restricted_token_utils.cc
--- a/security/sandbox/chromium/sandbox/win/src/restricted_token_utils.cc
+++ b/security/sandbox/chromium/sandbox/win/src/restricted_token_utils.cc
@@ -26,16 +26,17 @@ DWORD CreateRestrictedToken(TokenLevel s
base::win::ScopedHandle* token) {
RestrictedToken restricted_token;
restricted_token.Init(NULL); // Initialized with the current process token
if (lockdown_default_dacl)
restricted_token.SetLockdownDefaultDacl();
std::vector<base::string16> privilege_exceptions;
std::vector<Sid> sid_exceptions;
+ std::vector<Sid> deny_only_sids;
bool deny_sids = true;
bool remove_privileges = true;
switch (security_level) {
case USER_UNPROTECTED: {
deny_sids = false;
remove_privileges = false;
@@ -50,20 +51,26 @@ DWORD CreateRestrictedToken(TokenLevel s
if (ERROR_SUCCESS != err_code) {
return err_code;
}
}
break;
}
case USER_NON_ADMIN: {
- sid_exceptions.push_back(WinBuiltinUsersSid);
- sid_exceptions.push_back(WinWorldSid);
- sid_exceptions.push_back(WinInteractiveSid);
- sid_exceptions.push_back(WinAuthenticatedUserSid);
+ deny_sids = false;
+ deny_only_sids.push_back(WinBuiltinAdministratorsSid);
+ deny_only_sids.push_back(WinAccountAdministratorSid);
+ deny_only_sids.push_back(WinAccountDomainAdminsSid);
+ deny_only_sids.push_back(WinAccountCertAdminsSid);
+ deny_only_sids.push_back(WinAccountSchemaAdminsSid);
+ deny_only_sids.push_back(WinAccountEnterpriseAdminsSid);
+ deny_only_sids.push_back(WinAccountPolicyAdminsSid);
+ deny_only_sids.push_back(WinBuiltinHyperVAdminsSid);
+ deny_only_sids.push_back(WinLocalAccountAndAdministratorSid);
privilege_exceptions.push_back(SE_CHANGE_NOTIFY_NAME);
break;
}
case USER_INTERACTIVE: {
sid_exceptions.push_back(WinBuiltinUsersSid);
sid_exceptions.push_back(WinWorldSid);
sid_exceptions.push_back(WinInteractiveSid);
sid_exceptions.push_back(WinAuthenticatedUserSid);
@@ -116,16 +123,21 @@ DWORD CreateRestrictedToken(TokenLevel s
}
}
DWORD err_code = ERROR_SUCCESS;
if (deny_sids) {
err_code = restricted_token.AddAllSidsForDenyOnly(&sid_exceptions);
if (ERROR_SUCCESS != err_code)
return err_code;
+ } else if (!deny_only_sids.empty()) {
+ err_code = restricted_token.AddDenyOnlySids(deny_only_sids);
+ if (ERROR_SUCCESS != err_code) {
+ return err_code;
+ }
}
if (remove_privileges) {
err_code = restricted_token.DeleteAllPrivileges(&privilege_exceptions);
if (ERROR_SUCCESS != err_code)
return err_code;
}

View File

@ -1,7 +1,6 @@
add_interception_logging.patch
allow_rules_for_network_drive_and_non_file_devices.patch
add_WOW64_flags_to_allowed_registry_read_flags.patch
change_USER_NON_ADMIN_to_blacklist.patch
consult_PermissionsService_for_file_access.patch
allow_flash_temporary_files.patch
use_STARTF_FORCEOFFFEEDBACK_flag.patch

View File

@ -259,40 +259,6 @@ DWORD RestrictedToken::AddAllSidsForDenyOnly(std::vector<Sid> *exceptions) {
return ERROR_SUCCESS;
}
DWORD RestrictedToken::AddDenyOnlySids(const std::vector<Sid>& deny_only_sids) {
DCHECK(init_);
if (!init_) {
return ERROR_NO_TOKEN;
}
DWORD error;
std::unique_ptr<BYTE[]> buffer =
GetTokenInfo(effective_token_, TokenGroups, &error);
if (!buffer) {
return error;
}
TOKEN_GROUPS* token_groups = reinterpret_cast<TOKEN_GROUPS*>(buffer.get());
// Build the list of the deny only group SIDs
for (unsigned int i = 0; i < token_groups->GroupCount ; ++i) {
if ((token_groups->Groups[i].Attributes & SE_GROUP_INTEGRITY) == 0 &&
(token_groups->Groups[i].Attributes & SE_GROUP_LOGON_ID) == 0) {
for (unsigned int j = 0; j < deny_only_sids.size(); ++j) {
if (::EqualSid(const_cast<SID*>(deny_only_sids[j].GetPSID()),
token_groups->Groups[i].Sid)) {
sids_for_deny_only_.push_back(
reinterpret_cast<SID*>(token_groups->Groups[i].Sid));
break;
}
}
}
}
return ERROR_SUCCESS;
}
DWORD RestrictedToken::AddSidForDenyOnly(const Sid &sid) {
DCHECK(init_);
if (!init_)

View File

@ -88,17 +88,6 @@ class RestrictedToken {
// access to any resource. It can only be used to deny access.
DWORD AddAllSidsForDenyOnly(std::vector<Sid> *exceptions);
// Lists all sids in the token and mark them as Deny Only if present in the
// deny_only_sids parameter.
//
// If the function succeeds, the return value is ERROR_SUCCESS. If the
// function fails, the return value is the win32 error code corresponding to
// the error.
//
// Note: A Sid marked for Deny Only in a token cannot be used to grant
// access to any resource. It can only be used to deny access.
DWORD AddDenyOnlySids(const std::vector<Sid>& deny_only_sids);
// Adds a user or group SID for Deny Only in the restricted token.
// Parameter: sid is the SID to add in the Deny Only list.
// The return value is always ERROR_SUCCESS.

View File

@ -31,7 +31,6 @@ DWORD CreateRestrictedToken(TokenLevel security_level,
std::vector<base::string16> privilege_exceptions;
std::vector<Sid> sid_exceptions;
std::vector<Sid> deny_only_sids;
bool deny_sids = true;
bool remove_privileges = true;
@ -56,16 +55,10 @@ DWORD CreateRestrictedToken(TokenLevel security_level,
break;
}
case USER_NON_ADMIN: {
deny_sids = false;
deny_only_sids.push_back(WinBuiltinAdministratorsSid);
deny_only_sids.push_back(WinAccountAdministratorSid);
deny_only_sids.push_back(WinAccountDomainAdminsSid);
deny_only_sids.push_back(WinAccountCertAdminsSid);
deny_only_sids.push_back(WinAccountSchemaAdminsSid);
deny_only_sids.push_back(WinAccountEnterpriseAdminsSid);
deny_only_sids.push_back(WinAccountPolicyAdminsSid);
deny_only_sids.push_back(WinBuiltinHyperVAdminsSid);
deny_only_sids.push_back(WinLocalAccountAndAdministratorSid);
sid_exceptions.push_back(WinBuiltinUsersSid);
sid_exceptions.push_back(WinWorldSid);
sid_exceptions.push_back(WinInteractiveSid);
sid_exceptions.push_back(WinAuthenticatedUserSid);
privilege_exceptions.push_back(SE_CHANGE_NOTIFY_NAME);
break;
}
@ -128,11 +121,6 @@ DWORD CreateRestrictedToken(TokenLevel security_level,
err_code = restricted_token.AddAllSidsForDenyOnly(&sid_exceptions);
if (ERROR_SUCCESS != err_code)
return err_code;
} else if (!deny_only_sids.empty()) {
err_code = restricted_token.AddDenyOnlySids(deny_only_sids);
if (ERROR_SUCCESS != err_code) {
return err_code;
}
}
if (remove_privileges) {

View File

@ -170,10 +170,3 @@ reftest-no-accel:
by-test-platform:
windows10-64-asan.*: 3
default: default
reftest-stylo:
description: "Reftest run in Stylo vs. Gecko mode"
suite: reftest/reftest-stylo
treeherder-symbol: R(Rs)
virtualization: virtual-with-gpu
chunks: 8

View File

@ -40,7 +40,6 @@ linux64/debug:
test-sets:
- common-tests
- web-platform-tests
- reftest-stylo
- mochitest-headless
linux64/opt:
build-platform: linux64/opt
@ -48,7 +47,6 @@ linux64/opt:
- common-tests
- web-platform-tests
- opt-only-tests
- reftest-stylo
- desktop-screenshot-capture
- talos
- awsy
@ -84,26 +82,6 @@ linux64-asan/opt:
test-sets:
- common-tests
# Stylo disabled mode only runs a subset of tests.
linux32-stylo-disabled/debug:
build-platform: linux/debug
test-sets:
- stylo-disabled-tests
linux32-stylo-disabled/opt:
build-platform: linux/opt
test-sets:
- stylo-disabled-tests
linux64-stylo-disabled/debug:
build-platform: linux64/debug
test-sets:
- stylo-disabled-tests
- devtools-tests
linux64-stylo-disabled/opt:
build-platform: linux64/opt
test-sets:
- stylo-disabled-tests
- devtools-tests
# Stylo sequential runs check memory and performance when using a single thread.
linux64-stylo-sequential/opt:
build-platform: linux64/opt

View File

@ -83,25 +83,6 @@ awsy-stylo-sequential:
##
# Limited test sets for specific platforms
stylo-disabled-tests:
- cppunit
- crashtest
- reftest
- web-platform-tests
- web-platform-tests-reftests
- mochitest
- mochitest-a11y
- mochitest-browser-chrome
- browser-screenshots
- mochitest-chrome
- mochitest-clipboard
- mochitest-gpu
- mochitest-media
- mochitest-webgl
reftest-stylo:
- reftest-stylo
linux-qr-talos:
- talos-chrome
- talos-dromaeojs

View File

@ -231,13 +231,13 @@ class TestTryOptionSyntax(unittest.TestCase):
]))
def test_u_platforms_pretty(self):
"""-u gtest[Ubuntu] selects the linux, linux64, linux64-asan, linux64-stylo-disabled,
"""-u gtest[Ubuntu] selects the linux, linux64, linux64-asan
and linux64-stylo-sequential platforms for gtest"""
parameters = {'try_options': parse_message('try: -u gtest[Ubuntu]')}
tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG)
self.assertEqual(sorted(tos.unittests), sorted([
{'test': 'gtest', 'platforms': ['linux32', 'linux64', 'linux64-asan',
'linux64-stylo-disabled', 'linux64-stylo-sequential']},
'linux64-stylo-sequential']},
]))
def test_u_platforms_negated(self):

View File

@ -69,11 +69,6 @@ WINDOWS_WORKER_TYPES = {
'virtual-with-gpu': 'aws-provisioner-v1/gecko-t-win7-32-gpu',
'hardware': 'releng-hardware/gecko-t-win7-32-hw',
},
'windows7-32-stylo-disabled': {
'virtual': 'aws-provisioner-v1/gecko-t-win7-32',
'virtual-with-gpu': 'aws-provisioner-v1/gecko-t-win7-32-gpu',
'hardware': 'releng-hardware/gecko-t-win7-32-hw',
},
'windows10-64': {
'virtual': 'aws-provisioner-v1/gecko-t-win10-64',
'virtual-with-gpu': 'aws-provisioner-v1/gecko-t-win10-64-gpu',
@ -99,11 +94,6 @@ WINDOWS_WORKER_TYPES = {
'virtual-with-gpu': 'aws-provisioner-v1/gecko-t-win10-64-gpu',
'hardware': 'releng-hardware/gecko-t-win10-64-hw',
},
'windows10-64-stylo-disabled': {
'virtual': 'aws-provisioner-v1/gecko-t-win10-64',
'virtual-with-gpu': 'aws-provisioner-v1/gecko-t-win10-64-gpu',
'hardware': 'releng-hardware/gecko-t-win10-64-hw',
},
'windows10-64-asan': {
'virtual': 'aws-provisioner-v1/gecko-t-win10-64',
'virtual-with-gpu': 'aws-provisioner-v1/gecko-t-win10-64-gpu',
@ -551,18 +541,8 @@ def set_treeherder_machine_platform(config, tests):
'android-api-16-gradle/opt': 'android-api-16-gradle/opt',
}
for test in tests:
# For most desktop platforms, the above table is not used for "regular"
# builds, so we'll always pick the test platform here.
# On macOS though, the regular builds are in the table. This causes a
# conflict in `verify_task_graph_symbol` once you add a new test
# platform based on regular macOS builds, such as for Stylo.
# Since it's unclear if the regular macOS builds can be removed from
# the table, workaround the issue for Stylo.
if '-stylo-disabled' in test['test-platform']:
test['treeherder-machine-platform'] = test['test-platform']
else:
test['treeherder-machine-platform'] = translation.get(
test['build-platform'], test['test-platform'])
test['treeherder-machine-platform'] = translation.get(
test['build-platform'], test['test-platform'])
yield test
@ -580,36 +560,26 @@ def set_tier(config, tests):
'linux32/debug',
'linux32-nightly/opt',
'linux32-devedition/opt',
'linux32-stylo-disabled/debug',
'linux32-stylo-disabled/opt',
'linux64/opt',
'linux64-nightly/opt',
'linux64/debug',
'linux64-pgo/opt',
'linux64-devedition/opt',
'linux64-asan/opt',
'linux64-stylo-disabled/debug',
'linux64-stylo-disabled/opt',
'windows7-32/debug',
'windows7-32/opt',
'windows7-32-pgo/opt',
'windows7-32-devedition/opt',
'windows7-32-nightly/opt',
'windows7-32-stylo-disabled/debug',
'windows7-32-stylo-disabled/opt',
'windows10-64/debug',
'windows10-64/opt',
'windows10-64-pgo/opt',
'windows10-64-devedition/opt',
'windows10-64-nightly/opt',
'windows10-64-stylo-disabled/debug',
'windows10-64-stylo-disabled/opt',
'macosx64/opt',
'macosx64/debug',
'macosx64-nightly/opt',
'macosx64-devedition/opt',
'macosx64-stylo-disabled/debug',
'macosx64-stylo-disabled/opt',
'android-4.3-arm7-api-16/opt',
'android-4.3-arm7-api-16/debug',
'android-4.2-x86/opt']:
@ -889,21 +859,6 @@ def set_test_type(config, tests):
yield test
@transforms.add
def disable_stylo(config, tests):
"""
Disable Stylo for all jobs on `-stylo-disabled` platforms.
"""
for test in tests:
if '-stylo-disabled' not in test['test-platform']:
yield test
continue
test['mozharness'].setdefault('extra-options', []).append('--disable-stylo')
yield test
@transforms.add
def single_stylo_traversal_tests(config, tests):
"""Enable single traversal for all tests on the sequential Stylo platform."""

View File

@ -98,7 +98,6 @@ UNITTEST_ALIASES = {
'reftest-no-accel': alias_matches(r'^(plain-)?reftest-no-accel.*$'),
'reftests': alias_matches(r'^(plain-)?reftest.*$'),
'reftests-e10s': alias_matches(r'^(plain-)?reftest-e10s.*$'),
'reftest-stylo': alias_matches(r'^(plain-)?reftest-stylo.*$'),
'reftest-gpu': alias_matches(r'^(plain-)?reftest-gpu.*$'),
'robocop': alias_prefix('robocop'),
'web-platform-test': alias_prefix('web-platform-tests'),
@ -126,13 +125,11 @@ UNITTEST_PLATFORM_PRETTY_NAMES = {
'linux32',
'linux64',
'linux64-asan',
'linux64-stylo-disabled',
'linux64-stylo-sequential'
],
'x64': [
'linux64',
'linux64-asan',
'linux64-stylo-disabled',
'linux64-stylo-sequential'
],
'Android 4.3': ['android-4.3-arm7-api-16'],

View File

@ -69,8 +69,6 @@ def create_suite(name, node, data_path):
}
if 'STYLO_FORCE_ENABLED' in os.environ and os.environ['STYLO_FORCE_ENABLED']:
suite['extraOptions'] = ["stylo"]
if 'STYLO_FORCE_DISABLED' in os.environ and os.environ['STYLO_FORCE_DISABLED']:
suite['extraOptions'] = ["stylo-disabled"]
if 'STYLO_THREADS' in os.environ and os.environ['STYLO_THREADS'] == '1':
suite['extraOptions'] = ["stylo-sequential"]
update_checkpoint_paths(glob.glob(os.path.join(data_path, "memory-report*")))

View File

@ -64,14 +64,6 @@ class MachCommands(MachCommandBase):
kwargs['perTabPause'] = 1
kwargs['settleWaitTime'] = 1
if 'disable_stylo' in kwargs and kwargs['disable_stylo']:
if 'single_stylo_traversal' in kwargs and kwargs['single_stylo_traversal']:
print("--disable-stylo conflicts with --single-stylo-traversal")
return 1
if 'enable_stylo' in kwargs and kwargs['enable_stylo']:
print("--disable-stylo conflicts with --enable-stylo")
return 1
if 'single_stylo_traversal' in kwargs and kwargs['single_stylo_traversal']:
os.environ['STYLO_THREADS'] = '1'
else:
@ -79,8 +71,6 @@ class MachCommands(MachCommandBase):
if 'enable_stylo' in kwargs and kwargs['enable_stylo']:
os.environ['STYLO_FORCE_ENABLED'] = '1'
if 'disable_stylo' in kwargs and kwargs['disable_stylo']:
os.environ['STYLO_FORCE_DISABLED'] = '1'
if 'enable_webrender' in kwargs and kwargs['enable_webrender']:
os.environ['MOZ_WEBRENDER'] = '1'
@ -218,9 +208,6 @@ class MachCommands(MachCommandBase):
@CommandArgument('--enable-stylo', group='AWSY', action='store_true',
dest='enable_stylo', default=False,
help='Enable Stylo.')
@CommandArgument('--disable-stylo', group='AWSY', action='store_true',
dest='disable_stylo', default=False,
help='Disable Stylo.')
@CommandArgument('--single-stylo-traversal', group='AWSY', action='store_true',
dest='single_stylo_traversal', default=False,
help='Set STYLO_THREADS=1.')

View File

@ -1427,8 +1427,6 @@ toolbar#nav-bar {
mozinfo.update(options.extra_mozinfo_json)
if 'STYLO_FORCE_ENABLED' in os.environ:
mozinfo.update({'stylo': True})
if 'STYLO_FORCE_DISABLED' in os.environ:
mozinfo.update({'stylo': False})
info = mozinfo.info

View File

@ -215,11 +215,6 @@ config = {
"--setpref=layers.acceleration.disabled=true"],
"tests": ["tests/reftest/tests/layout/reftests/reftest.list"]
},
"reftest-stylo": {
"options": ["--suite=reftest",
"--setpref=reftest.compareStyloToGecko=true"],
"tests": ["tests/reftest/tests/layout/reftests/reftest.list"],
},
},
"all_xpcshell_suites": {
"xpcshell": {

View File

@ -171,11 +171,6 @@ config = {
'options': ["--suite=reftest"],
'tests': ["tests/reftest/tests/layout/reftests/reftest.list"]
},
"reftest-stylo": {
"options": ["--suite=reftest",
"--setpref=reftest.compareStyloToGecko=true"],
"tests": ["tests/reftest/tests/layout/reftests/reftest.list"],
},
},
"all_xpcshell_suites": {
"xpcshell": {

View File

@ -204,11 +204,6 @@ config = {
"--setpref=layers.acceleration.disabled=true"],
"tests": ["tests/reftest/tests/layout/reftests/reftest.list"]
},
"reftest-stylo": {
"options": ["--suite=reftest",
"--setpref=reftest.compareStyloToGecko=true"],
"tests": ["tests/reftest/tests/layout/reftests/reftest.list"],
},
},
"all_xpcshell_suites": {
"xpcshell": {

Some files were not shown because too many files have changed in this diff Show More