Merge remote-tracking branch 'origin/tracking' into custom

This commit is contained in:
2024-04-02 22:57:21 +08:00
276 changed files with 1076 additions and 11112 deletions
+11 -9
View File
@@ -176,22 +176,24 @@ if test "$GNU_CC"; then
CFLAGS="$CFLAGS -ffunction-sections -fdata-sections"
CXXFLAGS="$CXXFLAGS -ffunction-sections -fdata-sections"
fi
CFLAGS="$CFLAGS -fno-math-errno"
CXXFLAGS="$CXXFLAGS -fno-exceptions -fno-math-errno"
CFLAGS="$CFLAGS -fno-math-errno -pipe"
CXXFLAGS="$CXXFLAGS -fno-exceptions -fno-math-errno -pipe"
if test "$CPU_ARCH" = "x86" -o "$CPU_ARCH" = "x86_64"; then
CFLAGS="$CFLAGS -msse2 -mfpmath=sse"
CXXFLAGS="$CXXFLAGS -msse2 -mfpmath=sse"
fi
case "${host_cpu}" in
i*86)
CFLAGS="$CFLAGS -msse2 -mfpmath=sse"
CXXFLAGS="$CXXFLAGS -msse2 -mfpmath=sse"
;;
esac
if test -z "$CLANG_CC"; then
case "$CC_VERSION" in
4.* | 5.*)
;;
*)
# Lifetime Dead Store Elimination level 2 (default in GCC6+) breaks Gecko.
# Instead of completely disabling this optimization on newer GCC's,
# we'll force them to use level 1 optimization with -flifetime-dse=1.
# Lifetime Dead Store Elimination level 2 (default in GCC) breaks Goanna.
# Instead of completely disabling this optimization, we force level 1
# optimization instead with -flifetime-dse=1.
# Add it first so that a mozconfig can override by setting CFLAGS/CXXFLAGS.
CFLAGS="-flifetime-dse=1 $CFLAGS"
CXXFLAGS="-flifetime-dse=1 $CXXFLAGS"
+3 -10
View File
@@ -14,8 +14,7 @@
#include "mozilla/AnimationUtils.h"
#include "mozilla/EffectSet.h"
#include "mozilla/LayerAnimationInfo.h"
#include "mozilla/RestyleManagerHandle.h"
#include "mozilla/RestyleManagerHandleInlines.h"
#include "mozilla/RestyleManager.h"
#include "nsComputedDOMStyle.h" // nsComputedDOMStyle::GetPresShellForContent
#include "nsCSSPropertyIDSet.h"
#include "nsCSSProps.h"
@@ -202,10 +201,7 @@ EffectCompositor::RequestRestyle(dom::Element* aElement,
if (aRestyleType == RestyleType::Layer) {
// Prompt layers to re-sync their animations.
MOZ_ASSERT(mPresContext->RestyleManager()->IsGecko(),
"stylo: Servo-backed style system should not be using "
"EffectCompositor");
mPresContext->RestyleManager()->AsGecko()->IncrementAnimationGeneration();
mPresContext->RestyleManager()->IncrementAnimationGeneration();
EffectSet* effectSet =
EffectSet::GetEffectSet(aElement, aPseudoType);
if (effectSet) {
@@ -317,10 +313,7 @@ EffectCompositor::GetAnimationRule(dom::Element* aElement,
return nullptr;
}
MOZ_ASSERT(mPresContext->RestyleManager()->IsGecko(),
"stylo: Servo-backed style system should not be using "
"EffectCompositor");
if (mPresContext->RestyleManager()->AsGecko()->SkipAnimationRules()) {
if (mPresContext->RestyleManager()->SkipAnimationRules()) {
// We don't need to worry about updating mElementsToRestyle in this case
// since this is not the animation restyle we requested when we called
// PostRestyleForAnimation (see comment at start of this method).
+2 -6
View File
@@ -5,8 +5,7 @@
#include "EffectSet.h"
#include "mozilla/dom/Element.h" // For Element
#include "mozilla/RestyleManagerHandle.h"
#include "mozilla/RestyleManagerHandleInlines.h"
#include "mozilla/RestyleManager.h"
#include "nsCSSPseudoElements.h" // For CSSPseudoElementType
#include "nsCycleCollectionNoteChild.h" // For CycleCollectionNoteChild
#include "nsPresContext.h"
@@ -110,11 +109,8 @@ EffectSet::DestroyEffectSet(dom::Element* aElement,
void
EffectSet::UpdateAnimationGeneration(nsPresContext* aPresContext)
{
MOZ_ASSERT(aPresContext->RestyleManager()->IsGecko(),
"stylo: Servo-backed style system should not be using "
"EffectSet");
mAnimationGeneration =
aPresContext->RestyleManager()->AsGecko()->GetAnimationGeneration();
aPresContext->RestyleManager()->GetAnimationGeneration();
}
/* static */ nsIAtom**
+6 -29
View File
@@ -15,7 +15,6 @@
#include "mozilla/FloatingPoint.h" // For IsFinite
#include "mozilla/LookAndFeel.h" // For LookAndFeel::GetInt
#include "mozilla/KeyframeUtils.h"
#include "mozilla/ServoBindings.h"
#include "mozilla/StyleAnimationValue.h"
#include "Layers.h" // For Layer
#include "nsComputedDOMStyle.h" // nsComputedDOMStyle::GetStyleContextForElement
@@ -32,17 +31,7 @@ namespace mozilla {
bool
PropertyValuePair::operator==(const PropertyValuePair& aOther) const
{
if (mProperty != aOther.mProperty || mValue != aOther.mValue) {
return false;
}
if (mServoDeclarationBlock == aOther.mServoDeclarationBlock) {
return true;
}
if (!mServoDeclarationBlock || !aOther.mServoDeclarationBlock) {
return false;
}
return Servo_DeclarationBlock_Equals(mServoDeclarationBlock,
aOther.mServoDeclarationBlock);
return mProperty == aOther.mProperty && mValue == aOther.mValue;
}
namespace dom {
@@ -296,10 +285,7 @@ KeyframeEffectReadOnly::UpdateProperties(nsStyleContext* aStyleContext)
runningOnCompositorProperties.HasProperty(property.mProperty);
}
// FIXME (bug 1303235): Do this for Servo too
if (aStyleContext->PresContext()->StyleSet()->IsGecko()) {
CalculateCumulativeChangeHint(aStyleContext);
}
CalculateCumulativeChangeHint(aStyleContext);
MarkCascadeNeedsUpdate();
@@ -936,13 +922,8 @@ KeyframeEffectReadOnly::GetKeyframes(JSContext*& aCx,
: propertyValue.mProperty;
nsAutoString stringValue;
if (propertyValue.mServoDeclarationBlock) {
Servo_DeclarationBlock_SerializeOneValue(
propertyValue.mServoDeclarationBlock, &stringValue);
} else {
propertyValue.mValue.AppendToString(
propertyForSerializing, stringValue, nsCSSValue::eNormalized);
}
propertyValue.mValue.AppendToString(
propertyForSerializing, stringValue, nsCSSValue::eNormalized);
JS::Rooted<JS::Value> value(aCx);
if (!ToJSValue(aCx, stringValue, &value) ||
@@ -1286,10 +1267,8 @@ CreateStyleContextForAnimationValue(nsCSSPropertyID aProperty,
nsCOMArray<nsIStyleRule> rules;
rules.AppendObject(styleRule);
MOZ_ASSERT(aBaseStyleContext->PresContext()->StyleSet()->IsGecko(),
"ServoStyleSet should not use StyleAnimationValue for animations");
nsStyleSet* styleSet =
aBaseStyleContext->PresContext()->StyleSet()->AsGecko();
aBaseStyleContext->PresContext()->StyleSet();
RefPtr<nsStyleContext> styleContext =
styleSet->ResolveStyleByAddingRules(aBaseStyleContext, rules);
@@ -1362,10 +1341,8 @@ KeyframeEffectReadOnly::CanIgnoreIfNotVisible() const
return false;
}
// FIXME (bug 1303235): We don't calculate mCumulativeChangeHint for
// the Servo backend yet
nsPresContext* presContext = GetPresContext();
if (!presContext || presContext->StyleSet()->IsServo()) {
if (!presContext) {
return false;
}
-7
View File
@@ -19,8 +19,6 @@
#include "mozilla/EffectCompositor.h"
#include "mozilla/KeyframeEffectParams.h"
#include "mozilla/LayerAnimationInfo.h" // LayerAnimations::kRecords
#include "mozilla/ServoBindingTypes.h" // RawServoDeclarationBlock and
// associated RefPtrTraits
#include "mozilla/StyleAnimationValue.h"
#include "mozilla/dom/AnimationEffectReadOnly.h"
#include "mozilla/dom/Element.h"
@@ -63,11 +61,6 @@ struct PropertyValuePair
// (string).
nsCSSValue mValue;
// The specified value when using the Servo backend. However, even when
// using the Servo backend, we still fill in |mValue| in the case where we
// fail to parse the value since we use it to store the original string.
RefPtr<RawServoDeclarationBlock> mServoDeclarationBlock;
bool operator==(const PropertyValuePair&) const;
};
+23 -83
View File
@@ -9,7 +9,6 @@
#include "mozilla/Move.h"
#include "mozilla/Preferences.h"
#include "mozilla/RangedArray.h"
#include "mozilla/ServoBindings.h"
#include "mozilla/StyleAnimationValue.h"
#include "mozilla/TimingParams.h"
#include "mozilla/dom/BaseKeyframeTypesBinding.h" // For FastBaseKeyframe etc.
@@ -319,12 +318,8 @@ public:
// ------------------------------------------------------------------
inline bool
IsInvalidValuePair(const PropertyValuePair& aPair, StyleBackendType aBackend)
IsInvalidValuePair(const PropertyValuePair& aPair)
{
if (aBackend == StyleBackendType::Servo) {
return !aPair.mServoDeclarationBlock;
}
// There are three types of values we store as token streams:
//
// * Shorthand values (where we manually extract the token stream's string
@@ -600,8 +595,6 @@ KeyframeUtils::GetComputedKeyframeValues(const nsTArray<Keyframe>& aKeyframes,
MOZ_ASSERT(aStyleContext);
MOZ_ASSERT(aElement);
StyleBackendType styleBackend = aElement->OwnerDoc()->GetStyleBackendType();
const size_t len = aKeyframes.Length();
nsTArray<ComputedKeyframeValues> result(len);
@@ -610,12 +603,7 @@ KeyframeUtils::GetComputedKeyframeValues(const nsTArray<Keyframe>& aKeyframes,
ComputedKeyframeValues* computedValues = result.AppendElement();
for (const PropertyValuePair& pair :
PropertyPriorityIterator(frame.mPropertyValues)) {
MOZ_ASSERT(!pair.mServoDeclarationBlock ||
styleBackend == StyleBackendType::Servo,
"Animation values were parsed using Servo backend but target"
" element is not using Servo backend?");
if (IsInvalidValuePair(pair, styleBackend)) {
if (IsInvalidValuePair(pair)) {
continue;
}
@@ -623,33 +611,25 @@ KeyframeUtils::GetComputedKeyframeValues(const nsTArray<Keyframe>& aKeyframes,
// a KeyframeValueEntry for each value.
nsTArray<PropertyStyleAnimationValuePair> values;
if (styleBackend == StyleBackendType::Servo) {
// For shorthands, we store the string as a token stream so we need to
// extract that first.
if (nsCSSProps::IsShorthand(pair.mProperty)) {
nsCSSValueTokenStream* tokenStream = pair.mValue.GetTokenStreamValue();
if (!StyleAnimationValue::ComputeValues(pair.mProperty,
CSSEnabledState::eForAllContent, aStyleContext,
*pair.mServoDeclarationBlock, values)) {
CSSEnabledState::eForAllContent, aElement, aStyleContext,
tokenStream->mTokenStream, /* aUseSVGMode */ false, values) ||
IsComputeValuesFailureKey(pair)) {
continue;
}
} else {
// For shorthands, we store the string as a token stream so we need to
// extract that first.
if (nsCSSProps::IsShorthand(pair.mProperty)) {
nsCSSValueTokenStream* tokenStream = pair.mValue.GetTokenStreamValue();
if (!StyleAnimationValue::ComputeValues(pair.mProperty,
CSSEnabledState::eForAllContent, aElement, aStyleContext,
tokenStream->mTokenStream, /* aUseSVGMode */ false, values) ||
IsComputeValuesFailureKey(pair)) {
continue;
}
} else {
if (!StyleAnimationValue::ComputeValues(pair.mProperty,
CSSEnabledState::eForAllContent, aElement, aStyleContext,
pair.mValue, /* aUseSVGMode */ false, values)) {
continue;
}
MOZ_ASSERT(values.Length() == 1,
"Longhand properties should produce a single"
" StyleAnimationValue");
if (!StyleAnimationValue::ComputeValues(pair.mProperty,
CSSEnabledState::eForAllContent, aElement, aStyleContext,
pair.mValue, /* aUseSVGMode */ false, values)) {
continue;
}
MOZ_ASSERT(values.Length() == 1,
"Longhand properties should produce a single"
" StyleAnimationValue");
}
for (auto& value : values) {
@@ -999,30 +979,6 @@ MakePropertyValuePair(nsCSSPropertyID aProperty, const nsAString& aStringValue,
result.mProperty = aProperty;
if (aDocument->GetStyleBackendType() == StyleBackendType::Servo) {
nsCString name = nsCSSProps::GetStringValue(aProperty);
NS_ConvertUTF16toUTF8 value(aStringValue);
RefPtr<ThreadSafeURIHolder> base =
new ThreadSafeURIHolder(aDocument->GetDocumentURI());
RefPtr<ThreadSafeURIHolder> referrer =
new ThreadSafeURIHolder(aDocument->GetDocumentURI());
RefPtr<ThreadSafePrincipalHolder> principal =
new ThreadSafePrincipalHolder(aDocument->NodePrincipal());
nsCString baseString;
aDocument->GetDocumentURI()->GetSpec(baseString);
RefPtr<RawServoDeclarationBlock> servoDeclarationBlock =
Servo_ParseProperty(&name, &value, &baseString,
base, referrer, principal).Consume();
if (servoDeclarationBlock) {
result.mServoDeclarationBlock = servoDeclarationBlock.forget();
return result;
}
}
nsCSSValue value;
if (!nsCSSProps::IsShorthand(aProperty)) {
aParser.ParseLonghandProperty(aProperty,
@@ -1054,13 +1010,6 @@ MakePropertyValuePair(nsCSSPropertyID aProperty, const nsAString& aStringValue,
"The shorthand property of a token stream should be initialized"
" to unknown");
value.SetTokenStreamValue(tokenStream);
} else {
// If we succeeded in parsing with Gecko, but not Servo the animation is
// not going to work since, for the purposes of animation, we're going to
// ignore |mValue| when the backend is Servo.
NS_WARNING_ASSERTION(aDocument->GetStyleBackendType() !=
StyleBackendType::Servo,
"Gecko succeeded in parsing where Servo failed");
}
result.mValue = value;
@@ -1412,8 +1361,6 @@ HasImplicitKeyframeValues(const nsTArray<Keyframe>& aKeyframes,
}
};
StyleBackendType styleBackend = aDocument->GetStyleBackendType();
for (size_t i = 0, len = aKeyframes.Length(); i < len; i++) {
const Keyframe& frame = aKeyframes[i];
@@ -1429,25 +1376,18 @@ HasImplicitKeyframeValues(const nsTArray<Keyframe>& aKeyframes,
: computedOffset;
for (const PropertyValuePair& pair : frame.mPropertyValues) {
if (IsInvalidValuePair(pair, styleBackend)) {
if (IsInvalidValuePair(pair)) {
continue;
}
if (nsCSSProps::IsShorthand(pair.mProperty)) {
if (styleBackend == StyleBackendType::Gecko) {
nsCSSValueTokenStream* tokenStream =
pair.mValue.GetTokenStreamValue();
nsCSSParser parser(aDocument->CSSLoader());
if (!parser.IsValueValidForProperty(pair.mProperty,
tokenStream->mTokenStream)) {
continue;
}
nsCSSValueTokenStream* tokenStream =
pair.mValue.GetTokenStreamValue();
nsCSSParser parser(aDocument->CSSLoader());
if (!parser.IsValueValidForProperty(pair.mProperty,
tokenStream->mTokenStream)) {
continue;
}
// For the Servo backend, invalid shorthand values are represented by
// a null mServoDeclarationBlock member which we skip above in
// IsInvalidValuePair.
MOZ_ASSERT(styleBackend != StyleBackendType::Servo ||
pair.mServoDeclarationBlock);
CSSPROPS_FOR_SHORTHAND_SUBPROPERTIES(
prop, pair.mProperty, CSSEnabledState::eForAllContent) {
addToPropertySets(*prop, offsetToUse);
+1 -4
View File
@@ -474,10 +474,7 @@ IsNativeAnonymousImplementationOfPseudoElement(nsIContent* aContent)
// Unlike regular nodes, native anonymous content (NAC) gets created during
// frame construction, which happens after the main style traversal. This
// means that we have to manually resolve style for those nodes shortly after
// they're created, either by (a) invoking ResolvePseudoElementStyle (for PE
// NAC), or (b) handing the subtree off to Servo for a mini-traversal (for
// non-PE NAC). We have assertions in nsCSSFrameConstructor that we don't do
// both.
// they're created by invoking ResolvePseudoElementStyle (for PE NAC).
//
// Once that happens, the NAC has a frame. So if we have no frame here,
// we're either not NAC, or in the process of doing (b). Either way, this
+39
View File
@@ -117,6 +117,17 @@ ValidateAndFixupMatrixInit(DOMMatrixInit& aMatrixInit, ErrorResult& aRv)
#undef Check3DField
}
void
DOMMatrixReadOnly::SetDataFromMatrix2DInit(const DOMMatrix2DInit& aMatrixInit) {
MOZ_ASSERT(Is2D());
mMatrix2D->_11 = aMatrixInit.mM11.Value();
mMatrix2D->_12 = aMatrixInit.mM12.Value();
mMatrix2D->_21 = aMatrixInit.mM21.Value();
mMatrix2D->_22 = aMatrixInit.mM22.Value();
mMatrix2D->_31 = aMatrixInit.mM41.Value();
mMatrix2D->_32 = aMatrixInit.mM42.Value();
}
void
DOMMatrixReadOnly::SetDataFromMatrixInit(DOMMatrixInit& aMatrixInit)
{
@@ -149,6 +160,34 @@ DOMMatrixReadOnly::SetDataFromMatrixInit(DOMMatrixInit& aMatrixInit)
}
}
already_AddRefed<DOMMatrixReadOnly> DOMMatrixReadOnly::FromMatrix(
nsISupports* aParent, const DOMMatrix2DInit& aMatrixInit,
ErrorResult& aRv) {
DOMMatrix2DInit matrixInit(aMatrixInit);
if (!ValidateAndFixupMatrix2DInit(matrixInit, aRv)) {
return nullptr;
};
RefPtr<DOMMatrixReadOnly> matrix =
new DOMMatrixReadOnly(aParent, /* is2D */ true);
matrix->SetDataFromMatrix2DInit(matrixInit);
return matrix.forget();
}
already_AddRefed<DOMMatrixReadOnly> DOMMatrixReadOnly::FromMatrix(
nsISupports* aParent, const DOMMatrixInit& aMatrixInit, ErrorResult& aRv) {
DOMMatrixInit matrixInit(aMatrixInit);
if (!ValidateAndFixupMatrixInit(matrixInit, aRv)) {
return nullptr;
};
RefPtr<DOMMatrixReadOnly> rval =
new DOMMatrixReadOnly(aParent, matrixInit.mIs2D.Value());
rval->SetDataFromMatrixInit(matrixInit);
return rval.forget();
}
already_AddRefed<DOMMatrixReadOnly>
DOMMatrixReadOnly::FromMatrix(const GlobalObject& aGlobal, const DOMMatrixInit& aMatrixInit, ErrorResult& aRv)
{
+14
View File
@@ -26,6 +26,7 @@ class DOMPoint;
class StringOrUnrestrictedDoubleSequence;
struct DOMPointInit;
struct DOMMatrixInit;
struct DOMMatrix2DInit;
class DOMMatrixReadOnly : public nsWrapperCache
{
@@ -57,6 +58,12 @@ public:
nsISupports* GetParentObject() const { return mParent; }
virtual JSObject* WrapObject(JSContext* cx, JS::Handle<JSObject*> aGivenProto) override;
static already_AddRefed<DOMMatrixReadOnly>
FromMatrix(nsISupports* aParent, const DOMMatrix2DInit& aMatrixInit, ErrorResult& aRv);
static already_AddRefed<DOMMatrixReadOnly>
FromMatrix(nsISupports* aParent, const DOMMatrixInit& aMatrixInit, ErrorResult& aRv);
static already_AddRefed<DOMMatrixReadOnly>
FromMatrix(const GlobalObject& aGlobal, const DOMMatrixInit& aMatrixInit, ErrorResult& aRv);
@@ -207,6 +214,12 @@ public:
ErrorResult& aRv) const;
void Stringify(nsAString& aResult);
bool WriteStructuredClone(JSStructuredCloneWriter* aWriter) const;
const gfx::Matrix* GetInternal2D() const {
if (Is2D()) {
return mMatrix2D;
}
return nullptr;
}
protected:
nsCOMPtr<nsISupports> mParent;
@@ -220,6 +233,7 @@ protected:
* where all of its members are properly defined.
* The init dictionary's dimension must match the matrix one.
*/
void SetDataFromMatrix2DInit(const DOMMatrix2DInit& aMatrixInit);
void SetDataFromMatrixInit(DOMMatrixInit& aMatrixInit);
DOMMatrixReadOnly* SetMatrixValue(const nsAString& aTransformList, ErrorResult& aRv);
+28 -29
View File
@@ -56,7 +56,6 @@
#include "mozilla/AnimationComparator.h"
#include "mozilla/AsyncEventDispatcher.h"
#include "mozilla/ContentEvents.h"
#include "mozilla/DeclarationBlockInlines.h"
#include "mozilla/EffectSet.h"
#include "mozilla/EventDispatcher.h"
#include "mozilla/EventListenerManager.h"
@@ -108,6 +107,7 @@
#include "nsViewManager.h"
#include "nsIScrollableFrame.h"
#include "mozilla/css/StyleRule.h" /* For nsCSSSelectorList */
#include "mozilla/css/Declaration.h"
#include "nsCSSRuleProcessor.h"
#include "nsRuleProcessorData.h"
#include "nsTextNode.h"
@@ -1485,6 +1485,27 @@ Element::GetElementsByClassName(const nsAString& aClassNames,
return NS_OK;
}
CSSPseudoElementType
Element::GetPseudoElementType() const {
if (!HasProperties()) {
return CSSPseudoElementType::NotPseudo;
}
nsresult rv = NS_OK;
auto raw = GetProperty(nsGkAtoms::pseudoProperty, &rv);
if (rv == NS_PROPTABLE_PROP_NOT_THERE) {
return CSSPseudoElementType::NotPseudo;
}
return CSSPseudoElementType(reinterpret_cast<uintptr_t>(raw));
}
void
Element::SetPseudoElementType(CSSPseudoElementType aPseudo) {
static_assert(sizeof(CSSPseudoElementType) <= sizeof(uintptr_t),
"Need to be able to store this in a void*");
MOZ_ASSERT(aPseudo != CSSPseudoElementType::NotPseudo);
SetProperty(nsGkAtoms::pseudoProperty, reinterpret_cast<void*>(aPseudo));
}
/**
* Returns the count of descendants (inclusive of aContent) in
* the uncomposed document that are explicitly set as editable.
@@ -1615,7 +1636,7 @@ Element::BindToTree(nsIDocument* aDocument, nsIContent* aParent,
// And clear the lazy frame construction bits.
NODE_NEEDS_FRAME | NODE_DESCENDANTS_NEED_FRAMES);
// And the restyle bits
UnsetRestyleFlagsIfGecko();
UnsetRestyleFlags();
} else if (IsInShadowTree()) {
// We're not in a document, but we did get inserted into a shadow tree.
// Since we won't have any restyle data in the document's restyle trackers,
@@ -1625,7 +1646,7 @@ Element::BindToTree(nsIDocument* aDocument, nsIContent* aParent,
// inserted into a document.
UnsetFlags(NODE_FORCE_XBL_BINDINGS |
NODE_NEEDS_FRAME | NODE_DESCENDANTS_NEED_FRAMES);
UnsetRestyleFlagsIfGecko();
UnsetRestyleFlags();
} else {
// If we're not in the doc and not in a shadow tree,
// update our subtree pointer.
@@ -1766,18 +1787,6 @@ Element::BindToTree(nsIDocument* aDocument, nsIContent* aParent,
}
}
// It would be cleanest to mark nodes as dirty when (a) they're created and
// (b) they're unbound from a tree. However, we can't easily do (a) right now,
// because IsStyledByServo() is not always easy to check at node creation time,
// and the bits have different meaning in the non-IsStyledByServo case.
//
// So for now, we just mark nodes as dirty when they're inserted into a
// document or shadow tree.
if (IsStyledByServo() && IsInComposedDoc()) {
MOZ_ASSERT(!HasServoData());
SetIsDirtyForServo();
}
// XXXbz script execution during binding can trigger some of these
// postcondition asserts.... But we do want that, since things will
// generally be quite broken when that happens.
@@ -1904,16 +1913,6 @@ Element::UnbindFromTree(bool aDeep, bool aNullParent)
ClearInDocument();
// Computed styled data isn't useful for detached nodes, and we'll need to
// recomputed it anyway if we ever insert the nodes back into a document.
if (IsStyledByServo()) {
ClearServoData();
} else {
#ifdef MOZ_STYLO
MOZ_ASSERT(!HasServoData());
#endif
}
// Editable descendant count only counts descendants that
// are in the uncomposed document.
ResetEditableDescendantCount();
@@ -2025,7 +2024,7 @@ Element::GetSMILOverrideStyle()
return slots->mSMILOverrideStyle;
}
DeclarationBlock*
css::Declaration*
Element::GetSMILOverrideStyleDeclaration()
{
Element::nsExtendedDOMSlots* slots = GetExistingExtendedDOMSlots();
@@ -2033,7 +2032,7 @@ Element::GetSMILOverrideStyleDeclaration()
}
nsresult
Element::SetSMILOverrideStyleDeclaration(DeclarationBlock* aDeclaration,
Element::SetSMILOverrideStyleDeclaration(css::Declaration* aDeclaration,
bool aNotify)
{
Element::nsExtendedDOMSlots* slots = ExtendedDOMSlots();
@@ -2073,14 +2072,14 @@ Element::IsInteractiveHTMLContent(bool aIgnoreTabindex) const
return false;
}
DeclarationBlock*
css::Declaration*
Element::GetInlineStyleDeclaration()
{
return nullptr;
}
nsresult
Element::SetInlineStyleDeclaration(DeclarationBlock* aDeclaration,
Element::SetInlineStyleDeclaration(css::Declaration* aDeclaration,
const nsAString* aSerialized,
bool aNotify)
{
+18 -31
View File
@@ -57,7 +57,9 @@ class nsDocument;
class nsDOMStringMap;
namespace mozilla {
class DeclarationBlock;
namespace css {
class Declaration;
} // namespace css
namespace dom {
struct AnimationFilter;
struct ScrollIntoViewOptions;
@@ -79,27 +81,27 @@ NS_GetContentList(nsINode* aRootNode,
// Element-specific flags
enum {
// Set if the element has a pending style change.
ELEMENT_HAS_PENDING_RESTYLE = NODE_SHARED_RESTYLE_BIT_1,
ELEMENT_HAS_PENDING_RESTYLE = ELEMENT_FLAG_BIT(0),
// Set if the element is a potential restyle root (that is, has a style
// change pending _and_ that style change will attempt to restyle
// descendants).
ELEMENT_IS_POTENTIAL_RESTYLE_ROOT = NODE_SHARED_RESTYLE_BIT_2,
ELEMENT_IS_POTENTIAL_RESTYLE_ROOT = ELEMENT_FLAG_BIT(1),
// Set if the element has a pending animation-only style change as
// part of an animation-only style update (where we update styles from
// animation to the current refresh tick, but leave everything else as
// it was).
ELEMENT_HAS_PENDING_ANIMATION_ONLY_RESTYLE = ELEMENT_FLAG_BIT(0),
ELEMENT_HAS_PENDING_ANIMATION_ONLY_RESTYLE = ELEMENT_FLAG_BIT(2),
// Set if the element is a potential animation-only restyle root (that
// is, has an animation-only style change pending _and_ that style
// change will attempt to restyle descendants).
ELEMENT_IS_POTENTIAL_ANIMATION_ONLY_RESTYLE_ROOT = ELEMENT_FLAG_BIT(1),
ELEMENT_IS_POTENTIAL_ANIMATION_ONLY_RESTYLE_ROOT = ELEMENT_FLAG_BIT(3),
// Set if this element has a pending restyle with an eRestyle_SomeDescendants
// restyle hint.
ELEMENT_IS_CONDITIONAL_RESTYLE_ANCESTOR = ELEMENT_FLAG_BIT(2),
ELEMENT_IS_CONDITIONAL_RESTYLE_ANCESTOR = ELEMENT_FLAG_BIT(4),
// Just the HAS_PENDING bits, for convenience
ELEMENT_PENDING_RESTYLE_FLAGS =
@@ -117,10 +119,10 @@ enum {
ELEMENT_IS_CONDITIONAL_RESTYLE_ANCESTOR,
// Set if this element is marked as 'scrollgrab' (see bug 912666)
ELEMENT_HAS_SCROLLGRAB = ELEMENT_FLAG_BIT(3),
ELEMENT_HAS_SCROLLGRAB = ELEMENT_FLAG_BIT(5),
// Remaining bits are for subclasses
ELEMENT_TYPE_SPECIFIC_BITS_OFFSET = NODE_TYPE_SPECIFIC_BITS_OFFSET + 4
ELEMENT_TYPE_SPECIFIC_BITS_OFFSET = NODE_TYPE_SPECIFIC_BITS_OFFSET + 6
};
#undef ELEMENT_FLAG_BIT
@@ -274,13 +276,13 @@ public:
/**
* Get the inline style declaration, if any, for this element.
*/
virtual DeclarationBlock* GetInlineStyleDeclaration();
virtual css::Declaration* GetInlineStyleDeclaration();
/**
* Set the inline style declaration for this element. This will send
* an appropriate AttributeChanged notification if aNotify is true.
*/
virtual nsresult SetInlineStyleDeclaration(DeclarationBlock* aDeclaration,
virtual nsresult SetInlineStyleDeclaration(css::Declaration* aDeclaration,
const nsAString* aSerialized,
bool aNotify);
@@ -288,7 +290,7 @@ public:
* Get the SMIL override style declaration for this element. If the
* rule hasn't been created, this method simply returns null.
*/
virtual DeclarationBlock* GetSMILOverrideStyleDeclaration();
virtual css::Declaration* GetSMILOverrideStyleDeclaration();
/**
* Set the SMIL override style declaration for this element. If
@@ -296,7 +298,7 @@ public:
* context, so that the style changes will be noticed.
*/
virtual nsresult SetSMILOverrideStyleDeclaration(
DeclarationBlock* aDeclaration, bool aNotify);
css::Declaration* aDeclaration, bool aNotify);
/**
* Returns a new nsISMILAttr that allows the caller to animate the given
@@ -814,24 +816,9 @@ public:
already_AddRefed<nsIHTMLCollection>
GetElementsByClassName(const nsAString& aClassNames);
CSSPseudoElementType GetPseudoElementType() const {
if (!HasProperties()) {
return CSSPseudoElementType::NotPseudo;
}
nsresult rv = NS_OK;
auto raw = GetProperty(nsGkAtoms::pseudoProperty, &rv);
if (rv == NS_PROPTABLE_PROP_NOT_THERE) {
return CSSPseudoElementType::NotPseudo;
}
return CSSPseudoElementType(reinterpret_cast<uintptr_t>(raw));
}
CSSPseudoElementType GetPseudoElementType() const;
void SetPseudoElementType(CSSPseudoElementType aPseudo) {
static_assert(sizeof(CSSPseudoElementType) <= sizeof(uintptr_t),
"Need to be able to store this in a void*");
MOZ_ASSERT(aPseudo != CSSPseudoElementType::NotPseudo);
SetProperty(nsGkAtoms::pseudoProperty, reinterpret_cast<void*>(aPseudo));
}
void SetPseudoElementType(CSSPseudoElementType aPseudo);
private:
/**
@@ -1662,9 +1649,9 @@ inline const mozilla::dom::Element* nsINode::AsElement() const
return static_cast<const mozilla::dom::Element*>(this);
}
inline void nsINode::UnsetRestyleFlagsIfGecko()
inline void nsINode::UnsetRestyleFlags()
{
if (IsElement() && !IsStyledByServo()) {
if (IsElement()) {
UnsetFlags(ELEMENT_ALL_RESTYLE_FLAGS);
}
}
+1 -49
View File
@@ -17,7 +17,6 @@
#include "mozilla/dom/FragmentOrElement.h"
#include "mozilla/AsyncEventDispatcher.h"
#include "mozilla/DeclarationBlockInlines.h"
#include "mozilla/EffectSet.h"
#include "mozilla/EventDispatcher.h"
#include "mozilla/EventListenerManager.h"
@@ -99,6 +98,7 @@
#include "nsIScrollableFrame.h"
#include "ChildIterator.h"
#include "mozilla/css/StyleRule.h" /* For nsCSSSelectorList */
#include "mozilla/css/Declaration.h"
#include "nsRuleProcessorData.h"
#include "nsTextNode.h"
#include "mozilla/dom/NodeListBinding.h"
@@ -2531,51 +2531,3 @@ FragmentOrElement::SetIsElementInStyleScopeFlagOnShadowTree(bool aInStyleScope)
shadowRoot->SetIsElementInStyleScopeFlagOnSubtree(aInStyleScope);
}
}
#ifdef DEBUG
static void
AssertDirtyDescendantsBitPropagated(nsINode* aNode)
{
MOZ_ASSERT(aNode->HasDirtyDescendantsForServo());
nsINode* parent = aNode->GetFlattenedTreeParentNode();
if (!parent->IsContent()) {
MOZ_ASSERT(parent == aNode->OwnerDoc());
MOZ_ASSERT(parent->HasDirtyDescendantsForServo());
} else {
AssertDirtyDescendantsBitPropagated(parent);
}
}
#else
static void AssertDirtyDescendantsBitPropagated(nsINode* aNode) {}
#endif
void
nsIContent::MarkAncestorsAsHavingDirtyDescendantsForServo()
{
MOZ_ASSERT(IsInComposedDoc());
// Get the parent in the flattened tree.
nsINode* parent = GetFlattenedTreeParentNode();
// Loop until we hit a base case.
while (true) {
// Base case: the document.
if (!parent->IsContent()) {
MOZ_ASSERT(parent == OwnerDoc());
parent->SetHasDirtyDescendantsForServo();
return;
}
// Base case: the parent is already marked, and therefore
// so are all its ancestors.
if (parent->HasDirtyDescendantsForServo()) {
AssertDirtyDescendantsBitPropagated(parent);
return;
}
// Mark the parent and iterate.
parent->SetHasDirtyDescendantsForServo();
parent = parent->GetFlattenedTreeParentNode();
}
}
+4 -2
View File
@@ -35,7 +35,9 @@ class nsDOMStringMap;
class nsIURI;
namespace mozilla {
class DeclarationBlock;
namespace css {
class Declaration;
}
namespace dom {
struct CustomElementData;
class DOMIntersectionObserver;
@@ -265,7 +267,7 @@ public:
/**
* Holds any SMIL override style declaration for this element.
*/
RefPtr<mozilla::DeclarationBlock> mSMILOverrideStyleDeclaration;
RefPtr<mozilla::css::Declaration> mSMILOverrideStyleDeclaration;
/**
* The nearest enclosing content node with a binding that created us.
+1 -2
View File
@@ -109,9 +109,8 @@ ShadowRoot::CloneInternalDataFrom(ShadowRoot* aOther)
for (size_t i = 0; i < sheetCount; ++i) {
StyleSheet* sheet = aOther->SheetAt(i);
if (sheet && sheet->IsApplicable()) {
// TODO: Remove AsGecko() call once Stylo is removed.
RefPtr<CSSStyleSheet> clonedSheet =
sheet->AsGecko()->Clone(nullptr, nullptr, nullptr, nullptr);
sheet->AsConcrete()->Clone(nullptr, nullptr, nullptr, nullptr);
if (clonedSheet) {
AppendStyleSheet(*clonedSheet);
}
+1 -3
View File
@@ -43,9 +43,7 @@ ShouldExposeChildWindow(nsString& aNameBeingResolved, nsPIDOMWindowOuter* aChild
//
// This is problematic because it allows possibly-malicious and unrelated
// cross-origin subframes to pollute the global namespace of their parent in
// unpredictable ways (see bug 860494). This is also problematic for browser
// engines like Servo that want to run cross-origin script on different
// threads.
// unpredictable ways (see bug 860494).
//
// The naive solution here would be to filter out any cross-origin subframes
// obtained when doing named lookup in global scope. But that is unlikely to
+9 -16
View File
@@ -16,8 +16,7 @@
#include "nsIAtom.h"
#include "nsUnicharUtils.h"
#include "mozilla/MemoryReporting.h"
#include "mozilla/ServoBindingTypes.h"
#include "mozilla/DeclarationBlockInlines.h"
#include "mozilla/css/Declaration.h"
#include "nsContentUtils.h"
#include "nsReadableUtils.h"
#include "prprf.h"
@@ -150,7 +149,7 @@ nsAttrValue::nsAttrValue(nsIAtom* aValue)
SetTo(aValue);
}
nsAttrValue::nsAttrValue(already_AddRefed<DeclarationBlock> aValue,
nsAttrValue::nsAttrValue(already_AddRefed<css::Declaration> aValue,
const nsAString* aSerialized)
: mBits(0)
{
@@ -420,7 +419,7 @@ nsAttrValue::SetTo(double aValue, const nsAString* aSerialized)
}
void
nsAttrValue::SetTo(already_AddRefed<DeclarationBlock> aValue,
nsAttrValue::SetTo(already_AddRefed<css::Declaration> aValue,
const nsAString* aSerialized)
{
MiscContainer* cont = EnsureEmptyMiscContainer();
@@ -643,7 +642,7 @@ nsAttrValue::ToString(nsAString& aResult) const
{
aResult.Truncate();
MiscContainer *container = GetMiscContainer();
if (DeclarationBlock* decl = container->mValue.mCSSDeclaration) {
if (css::Declaration* decl = container->mValue.mCSSDeclaration) {
decl->ToString(aResult);
}
const_cast<nsAttrValue*>(this)->SetMiscAtomOrString(&aResult);
@@ -1748,15 +1747,11 @@ nsAttrValue::ParseStyleAttribute(const nsAString& aString,
}
}
RefPtr<DeclarationBlock> decl;
if (ownerDoc->GetStyleBackendType() == StyleBackendType::Servo) {
decl = ServoDeclarationBlock::FromCssText(aString);
} else {
css::Loader* cssLoader = ownerDoc->CSSLoader();
nsCSSParser cssParser(cssLoader);
decl = cssParser.ParseStyleAttribute(aString, docURI, baseURI,
aElement->NodePrincipal());
}
RefPtr<css::Declaration> decl;
css::Loader* cssLoader = ownerDoc->CSSLoader();
nsCSSParser cssParser(cssLoader);
decl = cssParser.ParseStyleAttribute(aString, docURI, baseURI,
aElement->NodePrincipal());
if (!decl) {
return false;
}
@@ -1988,8 +1983,6 @@ nsAttrValue::SizeOfExcludingThis(MallocSizeOf aMallocSizeOf) const
if (Type() == eCSSDeclaration && container->mValue.mCSSDeclaration) {
// TODO: mCSSDeclaration might be owned by another object which
// would make us count them twice, bug 677493.
// Bug 1281964: For ServoDeclarationBlock if we do measure we'll
// need a way to call the Servo heap_size_of function.
//n += container->mCSSDeclaration->SizeOfIncludingThis(aMallocSizeOf);
} else if (Type() == eAtomArray && container->mValue.mAtomArray) {
// Don't measure each nsIAtom, they are measured separatly.
+4 -4
View File
@@ -36,8 +36,8 @@ class nsStyledElement;
struct MiscContainer;
namespace mozilla {
class DeclarationBlock;
namespace css {
class Declaration;
struct URLValue;
struct ImageValue;
} // namespace css
@@ -122,7 +122,7 @@ public:
nsAttrValue(const nsAttrValue& aOther);
explicit nsAttrValue(const nsAString& aValue);
explicit nsAttrValue(nsIAtom* aValue);
nsAttrValue(already_AddRefed<mozilla::DeclarationBlock> aValue,
nsAttrValue(already_AddRefed<mozilla::css::Declaration> aValue,
const nsAString* aSerialized);
explicit nsAttrValue(const nsIntMargin& aValue);
~nsAttrValue();
@@ -148,7 +148,7 @@ public:
void SetTo(int16_t aInt);
void SetTo(int32_t aInt, const nsAString* aSerialized);
void SetTo(double aValue, const nsAString* aSerialized);
void SetTo(already_AddRefed<mozilla::DeclarationBlock> aValue,
void SetTo(already_AddRefed<mozilla::css::Declaration> aValue,
const nsAString* aSerialized);
void SetTo(mozilla::css::URLValue* aValue, const nsAString* aSerialized);
void SetTo(const nsIntMargin& aValue);
@@ -200,7 +200,7 @@ public:
inline int16_t GetEnumValue() const;
inline float GetPercentValue() const;
inline AtomArray* GetAtomArrayValue() const;
inline mozilla::DeclarationBlock* GetCSSDeclarationValue() const;
inline mozilla::css::Declaration* GetCSSDeclarationValue() const;
inline mozilla::css::URLValue* GetURLValue() const;
inline mozilla::css::ImageValue* GetImageValue() const;
inline double GetDoubleValue() const;
+2 -2
View File
@@ -30,7 +30,7 @@ struct MiscContainer final
nscolor mColor;
uint32_t mEnumValue;
int32_t mPercent;
mozilla::DeclarationBlock* mCSSDeclaration;
mozilla::css::Declaration* mCSSDeclaration;
mozilla::css::URLValue* mURL;
mozilla::css::ImageValue* mImage;
nsAttrValue::AtomArray* mAtomArray;
@@ -145,7 +145,7 @@ nsAttrValue::GetAtomArrayValue() const
return GetMiscContainer()->mValue.mAtomArray;
}
inline mozilla::DeclarationBlock*
inline mozilla::css::Declaration*
nsAttrValue::GetCSSDeclarationValue() const
{
NS_PRECONDITION(Type() == eCSSDeclaration, "wrong type");
+47 -126
View File
@@ -245,8 +245,6 @@
#include "mozilla/dom/BoxObject.h"
#include "gfxPrefs.h"
#include "nsISupportsPrimitives.h"
#include "mozilla/StyleSetHandle.h"
#include "mozilla/StyleSetHandleInlines.h"
#include "mozilla/StyleSheet.h"
#include "mozilla/StyleSheetInlines.h"
#include "mozilla/dom/SVGSVGElement.h"
@@ -1152,12 +1150,7 @@ nsDOMStyleSheetSetList::EnsureFresh()
for (size_t index = 0; index < count; index++) {
StyleSheet* sheet = mDocument->SheetAt(index);
NS_ASSERTION(sheet, "Null sheet in sheet list!");
// XXXheycam ServoStyleSheets don't expose their title yet.
if (sheet->IsServo()) {
NS_ERROR("stylo: ServoStyleSets don't expose their title yet");
continue;
}
sheet->AsGecko()->GetTitle(title);
sheet->AsConcrete()->GetTitle(title);
if (!title.IsEmpty() && !mNames.Contains(title) && !Add(title)) {
return;
}
@@ -2078,7 +2071,7 @@ nsDocument::RemoveDocStyleSheetsFromStyleSets()
if (sheet->IsApplicable()) {
nsCOMPtr<nsIPresShell> shell = GetShell();
if (shell) {
shell->StyleSet()->RemoveDocStyleSheet(sheet);
shell->StyleSet()->RemoveDocStyleSheet(sheet->AsConcrete());
}
}
// XXX Tell observers?
@@ -2097,7 +2090,7 @@ nsDocument::RemoveStyleSheetsFromStyleSets(
if (sheet->IsApplicable()) {
nsCOMPtr<nsIPresShell> shell = GetShell();
if (shell) {
shell->StyleSet()->RemoveStyleSheet(aType, sheet);
shell->StyleSet()->RemoveStyleSheet(aType, sheet->AsConcrete());
}
}
// XXX Tell observers?
@@ -2112,21 +2105,16 @@ nsDocument::ResetStylesheetsToURI(nsIURI* aURI)
mozAutoDocUpdate upd(this, UPDATE_STYLE, true);
if (mStyleSetFilled) {
// Skip removing style sheets from the style set if we know we haven't
// filled the style set. (This allows us to avoid calling
// GetStyleBackendType() too early.)
// filled the style set.
RemoveDocStyleSheetsFromStyleSets();
RemoveStyleSheetsFromStyleSets(mOnDemandBuiltInUASheets, SheetType::Agent);
RemoveStyleSheetsFromStyleSets(mAdditionalSheets[eAgentSheet], SheetType::Agent);
RemoveStyleSheetsFromStyleSets(mAdditionalSheets[eUserSheet], SheetType::User);
RemoveStyleSheetsFromStyleSets(mAdditionalSheets[eAuthorSheet], SheetType::Doc);
if (GetStyleBackendType() == StyleBackendType::Gecko) {
nsStyleSheetService *sheetService = nsStyleSheetService::GetInstance();
if (sheetService) {
RemoveStyleSheetsFromStyleSets(*sheetService->AuthorStyleSheets(), SheetType::Doc);
}
} else {
NS_ERROR("stylo: nsStyleSheetService doesn't handle ServoStyleSheets yet");
nsStyleSheetService *sheetService = nsStyleSheetService::GetInstance();
if (sheetService) {
RemoveStyleSheetsFromStyleSets(*sheetService->AuthorStyleSheets(), SheetType::Doc);
}
mStyleSetFilled = false;
@@ -2168,18 +2156,18 @@ nsDocument::ResetStylesheetsToURI(nsIURI* aURI)
}
static void
AppendSheetsToStyleSet(StyleSetHandle aStyleSet,
AppendSheetsToStyleSet(nsStyleSet* aStyleSet,
const nsTArray<RefPtr<StyleSheet>>& aSheets,
SheetType aType)
{
for (StyleSheet* sheet : Reversed(aSheets)) {
aStyleSet->AppendStyleSheet(aType, sheet);
aStyleSet->AppendStyleSheet(aType, sheet->AsConcrete());
}
}
void
nsDocument::FillStyleSet(StyleSetHandle aStyleSet)
nsDocument::FillStyleSet(nsStyleSet* aStyleSet)
{
NS_PRECONDITION(aStyleSet, "Must have a style set");
NS_PRECONDITION(aStyleSet->SheetCount(SheetType::Doc) == 0,
@@ -2189,27 +2177,22 @@ nsDocument::FillStyleSet(StyleSetHandle aStyleSet)
for (StyleSheet* sheet : Reversed(mStyleSheets)) {
if (sheet->IsApplicable()) {
aStyleSet->AddDocStyleSheet(sheet, this);
aStyleSet->AddDocStyleSheet(sheet->AsConcrete(), this);
}
}
if (aStyleSet->IsGecko()) {
nsStyleSheetService *sheetService = nsStyleSheetService::GetInstance();
if (sheetService) {
for (StyleSheet* sheet : *sheetService->AuthorStyleSheets()) {
aStyleSet->AppendStyleSheet(SheetType::Doc, sheet);
}
nsStyleSheetService *sheetService = nsStyleSheetService::GetInstance();
if (sheetService) {
for (StyleSheet* sheet : *sheetService->AuthorStyleSheets()) {
aStyleSet->AppendStyleSheet(SheetType::Doc, sheet->AsConcrete());
}
}
// Iterate backwards to maintain order
for (StyleSheet* sheet : Reversed(mOnDemandBuiltInUASheets)) {
if (sheet->IsApplicable()) {
aStyleSet->PrependStyleSheet(SheetType::Agent, sheet);
}
// Iterate backwards to maintain order
for (StyleSheet* sheet : Reversed(mOnDemandBuiltInUASheets)) {
if (sheet->IsApplicable()) {
aStyleSet->PrependStyleSheet(SheetType::Agent, sheet->AsConcrete());
}
} else {
NS_WARNING("stylo: Not yet checking nsStyleSheetService for Servo-backed "
"documents. See bug 1290224");
}
AppendSheetsToStyleSet(aStyleSet, mAdditionalSheets[eAgentSheet],
@@ -2286,11 +2269,6 @@ nsDocument::IsWebComponentsEnabled(JSContext* aCx, JSObject* aObject)
do_QueryInterface(nsJSUtils::GetStaticScriptGlobal(global));
nsIDocument* doc = window ? window->GetExtantDoc() : nullptr;
if (doc && doc->IsStyledByServo()) {
NS_WARNING("stylo: Web Components not supported yet");
return false;
}
return true;
}
@@ -3451,7 +3429,7 @@ nsDocument::TryChannelCharset(nsIChannel *aChannel,
already_AddRefed<nsIPresShell>
nsDocument::CreateShell(nsPresContext* aContext, nsViewManager* aViewManager,
StyleSetHandle aStyleSet)
nsStyleSet* aStyleSet)
{
// Don't add anything here. Add it to |doCreateShell| instead.
// This exists so that subclasses can pass other values for the 4th
@@ -3461,7 +3439,7 @@ nsDocument::CreateShell(nsPresContext* aContext, nsViewManager* aViewManager,
already_AddRefed<nsIPresShell>
nsDocument::doCreateShell(nsPresContext* aContext,
nsViewManager* aViewManager, StyleSetHandle aStyleSet)
nsViewManager* aViewManager, nsStyleSet* aStyleSet)
{
NS_ASSERTION(!mPresShell, "We have a presshell already!");
@@ -3829,7 +3807,7 @@ nsDocument::AddOnDemandBuiltInUASheet(StyleSheet* aSheet)
// do not override Firefox OS/Mobile's content.css sheet. Maybe we should
// have an insertion point to match the order of
// nsDocumentViewer::CreateStyleSet though?
shell->StyleSet()->PrependStyleSheet(SheetType::Agent, aSheet);
shell->StyleSet()->PrependStyleSheet(SheetType::Agent, aSheet->AsConcrete());
}
}
@@ -3841,7 +3819,7 @@ nsDocument::AddStyleSheetToStyleSets(StyleSheet* aSheet)
{
nsCOMPtr<nsIPresShell> shell = GetShell();
if (shell) {
shell->StyleSet()->AddDocStyleSheet(aSheet, this);
shell->StyleSet()->AddDocStyleSheet(aSheet->AsConcrete(), this);
}
}
@@ -3850,11 +3828,7 @@ nsDocument::AddStyleSheetToStyleSets(StyleSheet* aSheet)
className##Init init; \
init.mBubbles = true; \
init.mCancelable = true; \
/* XXXheycam ServoStyleSheet doesn't implement DOM interfaces yet */ \
if (aSheet->IsServo()) { \
NS_ERROR("stylo: can't dispatch events for ServoStyleSheets yet"); \
} \
init.mStylesheet = aSheet->IsGecko() ? aSheet->AsGecko() : nullptr; \
init.mStylesheet = aSheet->AsConcrete(); \
init.memberName = argName; \
\
RefPtr<className> event = \
@@ -3912,7 +3886,7 @@ nsDocument::RemoveStyleSheetFromStyleSets(StyleSheet* aSheet)
{
nsCOMPtr<nsIPresShell> shell = GetShell();
if (shell) {
shell->StyleSet()->RemoveDocStyleSheet(aSheet);
shell->StyleSet()->RemoveDocStyleSheet(aSheet->AsConcrete());
}
}
@@ -4083,7 +4057,7 @@ nsDocument::LoadAdditionalStyleSheet(additionalSheetType aType,
return NS_ERROR_INVALID_ARG;
// Loading the sheet sync.
RefPtr<css::Loader> loader = new css::Loader(GetStyleBackendType());
RefPtr<css::Loader> loader = new css::Loader();
css::SheetParsingMode parsingMode;
switch (aType) {
@@ -4128,7 +4102,7 @@ nsDocument::AddAdditionalStyleSheet(additionalSheetType aType, StyleSheet* aShee
nsCOMPtr<nsIPresShell> shell = GetShell();
if (shell) {
SheetType type = ConvertAdditionalSheetType(aType);
shell->StyleSet()->AppendStyleSheet(type, aSheet);
shell->StyleSet()->AppendStyleSheet(type, aSheet->AsConcrete());
}
// Passing false, so documet.styleSheets.length will not be affected by
@@ -4156,7 +4130,7 @@ nsDocument::RemoveAdditionalStyleSheet(additionalSheetType aType, nsIURI* aSheet
nsCOMPtr<nsIPresShell> shell = GetShell();
if (shell) {
SheetType type = ConvertAdditionalSheetType(aType);
shell->StyleSet()->RemoveStyleSheet(type, sheetRef);
shell->StyleSet()->RemoveStyleSheet(type, sheetRef->AsConcrete());
}
}
@@ -5623,20 +5597,14 @@ nsIDocument::GetSelectedStyleSheetSet(nsAString& aSheetSet)
StyleSheet* sheet = SheetAt(index);
NS_ASSERTION(sheet, "Null sheet in sheet list!");
// XXXheycam Make this work with ServoStyleSheets.
if (sheet->IsServo()) {
NS_ERROR("stylo: can't handle alternate ServoStyleSheets yet");
continue;
}
bool disabled;
sheet->AsGecko()->GetDisabled(&disabled);
sheet->AsConcrete()->GetDisabled(&disabled);
if (disabled) {
// Disabled sheets don't affect the currently selected set
continue;
}
sheet->AsGecko()->GetTitle(title);
sheet->AsConcrete()->GetTitle(title);
if (aSheetSet.IsEmpty()) {
aSheetSet = title;
@@ -5743,15 +5711,9 @@ nsDocument::EnableStyleSheetsForSetInternal(const nsAString& aSheetSet,
StyleSheet* sheet = SheetAt(index);
NS_ASSERTION(sheet, "Null sheet in sheet list!");
// XXXheycam Make this work with ServoStyleSheets.
if (sheet->IsServo()) {
NS_ERROR("stylo: can't handle alternate ServoStyleSheets yet");
continue;
}
sheet->AsGecko()->GetTitle(title);
sheet->AsConcrete()->GetTitle(title);
if (!title.IsEmpty()) {
sheet->AsGecko()->SetEnabled(title.Equals(aSheetSet));
sheet->AsConcrete()->SetEnabled(title.Equals(aSheetSet));
}
}
if (aUpdateCSSLoader) {
@@ -9471,17 +9433,12 @@ nsIDocument::CreateStaticClone(nsIDocShell* aCloneContainer)
RefPtr<StyleSheet> sheet = SheetAt(i);
if (sheet) {
if (sheet->IsApplicable()) {
// XXXheycam Need to make ServoStyleSheet cloning work.
if (sheet->IsGecko()) {
RefPtr<CSSStyleSheet> clonedSheet =
sheet->AsGecko()->Clone(nullptr, nullptr, clonedDoc, nullptr);
NS_WARNING_ASSERTION(clonedSheet,
"Cloning a stylesheet didn't work!");
if (clonedSheet) {
clonedDoc->AddStyleSheet(clonedSheet);
}
} else {
NS_ERROR("stylo: ServoStyleSheet doesn't support cloning");
RefPtr<CSSStyleSheet> clonedSheet =
sheet->AsConcrete()->Clone(nullptr, nullptr, clonedDoc, nullptr);
NS_WARNING_ASSERTION(clonedSheet,
"Cloning a stylesheet didn't work!");
if (clonedSheet) {
clonedDoc->AddStyleSheet(clonedSheet);
}
}
}
@@ -9491,17 +9448,12 @@ nsIDocument::CreateStaticClone(nsIDocShell* aCloneContainer)
for (StyleSheet* sheet : Reversed(thisAsDoc->mOnDemandBuiltInUASheets)) {
if (sheet) {
if (sheet->IsApplicable()) {
// XXXheycam Need to make ServoStyleSheet cloning work.
if (sheet->IsGecko()) {
RefPtr<CSSStyleSheet> clonedSheet =
sheet->AsGecko()->Clone(nullptr, nullptr, clonedDoc, nullptr);
NS_WARNING_ASSERTION(clonedSheet,
"Cloning a stylesheet didn't work!");
if (clonedSheet) {
clonedDoc->AddOnDemandBuiltInUASheet(clonedSheet);
}
} else {
NS_ERROR("stylo: ServoStyleSheet doesn't support cloning");
RefPtr<CSSStyleSheet> clonedSheet =
sheet->AsConcrete()->Clone(nullptr, nullptr, clonedDoc, nullptr);
NS_WARNING_ASSERTION(clonedSheet,
"Cloning a stylesheet didn't work!");
if (clonedSheet) {
clonedDoc->AddOnDemandBuiltInUASheet(clonedSheet);
}
}
}
@@ -12203,14 +12155,8 @@ nsIDocument::FlushUserFontSet()
nsTArray<nsFontFaceRuleContainer> rules;
nsIPresShell* shell = GetShell();
if (shell) {
// XXXheycam ServoStyleSets don't support exposing @font-face rules yet.
if (shell->StyleSet()->IsGecko()) {
if (!shell->StyleSet()->AsGecko()->AppendFontFaceRules(rules)) {
return;
}
} else {
NS_WARNING("stylo: ServoStyleSets cannot handle @font-face rules yet. "
"See bug 1290237.");
if (!shell->StyleSet()->AppendFontFaceRules(rules)) {
return;
}
}
@@ -12294,31 +12240,6 @@ nsIDocument::ReportHasScrollLinkedEffect()
"ScrollLinkedEffectFound2");
}
void
nsIDocument::UpdateStyleBackendType()
{
MOZ_ASSERT(mStyleBackendType == StyleBackendType(0),
"no need to call UpdateStyleBackendType now");
// Assume Gecko by default.
mStyleBackendType = StyleBackendType::Gecko;
#ifdef MOZ_STYLO
// XXX For now we use a Servo-backed style set only for (X)HTML documents
// in content docshells. This should let us avoid implementing XUL-specific
// CSS features. And apart from not supporting SVG properties in Servo
// yet, the root SVG element likes to create a style sheet for an SVG
// document before we have a pres shell (i.e. before we make the decision
// here about whether to use a Gecko- or Servo-backed style system), so
// we avoid Servo-backed style sets for SVG documents.
if (!mDocumentContainer) {
NS_WARNING("stylo: No docshell yet, assuming Gecko style system");
} else if (nsLayoutUtils::SupportsServoStyleBackend(this)) {
mStyleBackendType = StyleBackendType::Servo;
}
#endif
}
Selection*
nsIDocument::GetSelection(ErrorResult& aRv)
{
+4 -4
View File
@@ -43,7 +43,7 @@
#include "nsGkAtoms.h"
#include "nsIApplicationCache.h"
#include "nsIApplicationCacheContainer.h"
#include "mozilla/StyleSetHandle.h"
#include "nsStyleSet.h"
#include "PLDHashTable.h"
#include "nsAttrAndChildArray.h"
#include "nsDOMAttributeMap.h"
@@ -426,7 +426,7 @@ public:
virtual already_AddRefed<nsIPresShell> CreateShell(
nsPresContext* aContext,
nsViewManager* aViewManager,
mozilla::StyleSetHandle aStyleSet) override;
nsStyleSet* aStyleSet) override;
virtual void DeleteShell() override;
virtual nsresult GetAllowPlugins(bool* aAllowPlugins) override;
@@ -1113,14 +1113,14 @@ public:
protected:
already_AddRefed<nsIPresShell> doCreateShell(nsPresContext* aContext,
nsViewManager* aViewManager,
mozilla::StyleSetHandle aStyleSet);
nsStyleSet* aStyleSet);
void RemoveDocStyleSheetsFromStyleSets();
void RemoveStyleSheetsFromStyleSets(
const nsTArray<RefPtr<mozilla::StyleSheet>>& aSheets,
mozilla::SheetType aType);
void ResetStylesheetsToURI(nsIURI* aURI);
void FillStyleSet(mozilla::StyleSetHandle aStyleSet);
void FillStyleSet(nsStyleSet* aStyleSet);
// Return whether all the presshells for this document are safe to flush
bool IsSafeToFlush() const;
-22
View File
@@ -555,18 +555,6 @@ nsGenericDOMDataNode::BindToTree(nsIDocument* aDocument, nsIContent* aParent,
UpdateEditableState(false);
// It would be cleanest to mark nodes as dirty when (a) they're created and
// (b) they're unbound from a tree. However, we can't easily do (a) right now,
// because IsStyledByServo() is not always easy to check at node creation time,
// and the bits have different meaning in the non-IsStyledByServo case.
//
// So for now, we just mark nodes as dirty when they're inserted into a
// document or shadow tree.
if (IsStyledByServo() && IsInComposedDoc()) {
MOZ_ASSERT(!HasServoData());
SetIsDirtyForServo();
}
NS_POSTCONDITION(aDocument == GetUncomposedDoc(), "Bound to wrong document");
NS_POSTCONDITION(aParent == GetParent(), "Bound to wrong parent");
NS_POSTCONDITION(aBindingParent == GetBindingParent(),
@@ -598,16 +586,6 @@ nsGenericDOMDataNode::UnbindFromTree(bool aDeep, bool aNullParent)
}
ClearInDocument();
// Computed styled data isn't useful for detached nodes, and we'll need to
// recomputed it anyway if we ever insert the nodes back into a document.
if (IsStyledByServo()) {
ClearServoData();
} else {
#ifdef MOZ_STYLO
MOZ_ASSERT(!HasServoData());
#endif
}
if (aNullParent || !mParent->IsInShadowTree()) {
UnsetFlags(NODE_IS_IN_SHADOW_TREE);
-7
View File
@@ -933,13 +933,6 @@ public:
mozilla::dom::Element* GetEditingHost();
/**
* Set NODE_HAS_DIRTY_DESCENDANTS_FOR_SERVO all the way up the flattened
* parent chain to the document. If an ancestor is found with the bit already
* set, this method asserts that all of its ancestors also have the bit set.
*/
void MarkAncestorsAsHavingDirtyDescendantsForServo();
/**
* Determining language. Look at the nearest ancestor element that has a lang
* attribute in the XML namespace or is an HTML/SVG element and has a lang in
+2 -21
View File
@@ -34,7 +34,6 @@
#include "mozilla/CORSMode.h"
#include "mozilla/dom/DocumentOrShadowRoot.h"
#include "mozilla/LinkedList.h"
#include "mozilla/StyleBackendType.h"
#include "mozilla/StyleSheet.h"
#include "mozilla/TimeStamp.h"
#include <bitset> // for member
@@ -97,6 +96,7 @@ class nsWindowSizes;
class nsDOMCaretPosition;
class nsViewportInfo;
class nsIGlobalObject;
class nsStyleSet;
struct nsCSSSelectorList;
namespace mozilla {
@@ -104,7 +104,6 @@ class CSSStyleSheet;
class ErrorResult;
class EventStates;
class PendingAnimationTracker;
class StyleSetHandle;
class SVGAttrAnimationRuleProcessor;
template<typename> class OwningNonNull;
@@ -782,7 +781,7 @@ public:
virtual already_AddRefed<nsIPresShell> CreateShell(
nsPresContext* aContext,
nsViewManager* aViewManager,
mozilla::StyleSetHandle aStyleSet) = 0;
nsStyleSet* aStyleSet) = 0;
virtual void DeleteShell() = 0;
nsIPresShell* GetShell() const
@@ -1148,20 +1147,6 @@ public:
return mCSSLoader;
}
mozilla::StyleBackendType GetStyleBackendType() const {
if (mStyleBackendType == mozilla::StyleBackendType(0)) {
const_cast<nsIDocument*>(this)->UpdateStyleBackendType();
}
MOZ_ASSERT(mStyleBackendType != mozilla::StyleBackendType(0));
return mStyleBackendType;
}
void UpdateStyleBackendType();
bool IsStyledByServo() const {
return GetStyleBackendType() == mozilla::StyleBackendType::Servo;
}
/**
* Get this document's StyleImageLoader. This is guaranteed to not return null.
*/
@@ -2978,10 +2963,6 @@ protected:
uint32_t mDummy;
#endif
// Whether this document has (or will have, once we have a pres shell) a
// Gecko- or Servo-backed style system.
mozilla::StyleBackendType mStyleBackendType;
// True if BIDI is enabled.
bool mBidiEnabled : 1;
// True if a MathML element has ever been owned by this document.
-21
View File
@@ -19,7 +19,6 @@
#include "mozilla/InternalMutationEvent.h"
#include "mozilla/Likely.h"
#include "mozilla/MemoryReporting.h"
#include "mozilla/ServoBindings.h"
#include "mozilla/TimeStamp.h"
#include "mozilla/css/StyleRule.h"
#include "mozilla/dom/Element.h"
@@ -152,9 +151,6 @@ nsINode::~nsINode()
{
MOZ_ASSERT(!HasSlots(), "nsNodeUtils::LastRelease was not called?");
MOZ_ASSERT(mSubtreeRoot == this, "Didn't restore state properly?");
#ifdef MOZ_STYLO
ClearServoData();
#endif
}
void*
@@ -1443,15 +1439,6 @@ nsINode::UnoptimizableCCNode() const
AsElement()->IsInNamespace(kNameSpaceID_XBL));
}
void
nsINode::ClearServoData() {
#ifdef MOZ_STYLO
Servo_Node_ClearNodeData(this);
#else
MOZ_CRASH("Accessing servo node data in non-stylo build");
#endif
}
/* static */
bool
nsINode::Traverse(nsINode *tmp, nsCycleCollectionTraversalCallback &cb)
@@ -3193,14 +3180,6 @@ nsINode::IsNodeApzAwareInternal() const
return EventTarget::IsApzAware();
}
#ifdef MOZ_STYLO
bool
nsINode::IsStyledByServo() const
{
return OwnerDoc()->IsStyledByServo();
}
#endif
DocGroup*
nsINode::GetDocGroup() const
{
+2 -82
View File
@@ -7,7 +7,6 @@
#define nsINode_h___
#include "mozilla/Likely.h"
#include "mozilla/ServoTypes.h"
#include "mozilla/UniquePtr.h"
#include "nsCOMPtr.h" // for member, local
#include "nsGkAtoms.h" // for nsGkAtoms::baseURIProperty
@@ -203,20 +202,8 @@ enum {
NODE_IS_ROOT_OF_CHROME_ONLY_ACCESS = NODE_FLAG_BIT(20),
// These two bits are shared by Gecko's and Servo's restyle systems for
// different purposes. They should not be accessed directly, and access to
// them should be properly guarded by asserts.
NODE_SHARED_RESTYLE_BIT_1 = NODE_FLAG_BIT(21),
NODE_SHARED_RESTYLE_BIT_2 = NODE_FLAG_BIT(22),
// Whether this node is dirty for Servo's style system.
NODE_IS_DIRTY_FOR_SERVO = NODE_SHARED_RESTYLE_BIT_1,
// Whether this node has dirty descendants for Servo's style system.
NODE_HAS_DIRTY_DESCENDANTS_FOR_SERVO = NODE_SHARED_RESTYLE_BIT_2,
// Remaining bits are node type specific.
NODE_TYPE_SPECIFIC_BITS_OFFSET = 23
NODE_TYPE_SPECIFIC_BITS_OFFSET = 21
};
// Make sure we have space for our bits
@@ -1018,59 +1005,7 @@ public:
virtual nsPIDOMWindowOuter* GetOwnerGlobalForBindings() override;
virtual nsIGlobalObject* GetOwnerGlobal() const override;
/**
* Returns true if this is a node belonging to a document that uses the Servo
* style system.
*/
#ifdef MOZ_STYLO
bool IsStyledByServo() const;
#else
bool IsStyledByServo() const { return false; }
#endif
bool IsDirtyForServo() const
{
MOZ_ASSERT(IsStyledByServo());
return HasFlag(NODE_IS_DIRTY_FOR_SERVO);
}
bool HasDirtyDescendantsForServo() const
{
MOZ_ASSERT(IsStyledByServo());
return HasFlag(NODE_HAS_DIRTY_DESCENDANTS_FOR_SERVO);
}
void SetIsDirtyForServo() {
MOZ_ASSERT(IsStyledByServo());
SetFlags(NODE_IS_DIRTY_FOR_SERVO);
}
void SetHasDirtyDescendantsForServo() {
MOZ_ASSERT(IsStyledByServo());
SetFlags(NODE_HAS_DIRTY_DESCENDANTS_FOR_SERVO);
}
void SetIsDirtyAndHasDirtyDescendantsForServo() {
MOZ_ASSERT(IsStyledByServo());
SetFlags(NODE_HAS_DIRTY_DESCENDANTS_FOR_SERVO | NODE_IS_DIRTY_FOR_SERVO);
}
void UnsetIsDirtyForServo() {
MOZ_ASSERT(IsStyledByServo());
UnsetFlags(NODE_IS_DIRTY_FOR_SERVO);
}
void UnsetHasDirtyDescendantsForServo() {
MOZ_ASSERT(IsStyledByServo());
UnsetFlags(NODE_HAS_DIRTY_DESCENDANTS_FOR_SERVO);
}
void UnsetIsDirtyAndHasDirtyDescendantsForServo() {
MOZ_ASSERT(IsStyledByServo());
UnsetFlags(NODE_HAS_DIRTY_DESCENDANTS_FOR_SERVO | NODE_IS_DIRTY_FOR_SERVO);
}
inline void UnsetRestyleFlagsIfGecko();
inline void UnsetRestyleFlags();
/**
* Adds a mutation observer to be notified when this node, or any of its
@@ -2138,16 +2073,6 @@ public:
#undef TOUCH_EVENT
#undef EVENT
bool HasServoData() {
#ifdef MOZ_STYLO
return !!mServoData.Get();
#else
MOZ_CRASH("Accessing servo node data in non-stylo build");
#endif
}
void ClearServoData();
protected:
static bool Traverse(nsINode *tmp, nsCycleCollectionTraversalCallback &cb);
static void Unlink(nsINode *tmp);
@@ -2185,11 +2110,6 @@ protected:
// Storage for more members that are usually not needed; allocated lazily.
nsSlots* mSlots;
#ifdef MOZ_STYLO
// Per-node data managed by Servo.
mozilla::ServoCell<ServoNodeData*> mServoData;
#endif
};
inline nsIDOMNode* GetAsDOMNode(nsINode* aNode)
-15
View File
@@ -41,21 +41,6 @@ public:
virtual nsresult GetNameSpaceURI(int32_t aNameSpaceID, nsAString& aURI);
// Returns the atom for the namespace URI associated with the given ID. The
// ID must be within range and not be kNameSpaceID_None (i.e. zero);
nsIAtom* NameSpaceURIAtom(int32_t aNameSpaceID) {
MOZ_ASSERT(aNameSpaceID > 0);
return NameSpaceURIAtomForServo(aNameSpaceID);
}
// NB: This function should only be called by Servo code (and the above
// accessor), which uses the empty atom to represent kNameSpaceID_None.
nsIAtom* NameSpaceURIAtomForServo(int32_t aNameSpaceID) {
MOZ_ASSERT(aNameSpaceID >= 0);
MOZ_ASSERT((int64_t) aNameSpaceID < (int64_t) mURIArray.Length());
return mURIArray.ElementAt(aNameSpaceID);
}
int32_t GetNameSpaceID(const nsAString& aURI,
bool aInChromeDoc);
int32_t GetNameSpaceID(nsIAtom* aURI,
+2 -13
View File
@@ -319,14 +319,9 @@ nsStyleLinkElement::DoUpdateStyleSheet(nsIDocument* aOldDocument,
return NS_OK;
}
// XXXheycam ServoStyleSheets do not support <style scoped>.
Element* oldScopeElement = nullptr;
if (mStyleSheet) {
if (mStyleSheet->IsServo()) {
NS_WARNING("stylo: ServoStyleSheets don't support <style scoped>");
} else {
oldScopeElement = mStyleSheet->AsGecko()->GetScopeElement();
}
oldScopeElement = mStyleSheet->AsConcrete()->GetScopeElement();
}
if (mStyleSheet && (aOldDocument || aOldShadowRoot)) {
@@ -488,13 +483,7 @@ nsStyleLinkElement::UpdateStyleSheetScopedness(bool aIsNowScoped)
return;
}
if (mStyleSheet->IsServo()) {
// XXXheycam ServoStyleSheets don't support <style scoped>.
NS_ERROR("stylo: ServoStyleSheets don't support <style scoped>");
return;
}
CSSStyleSheet* sheet = mStyleSheet->AsGecko();
CSSStyleSheet* sheet = mStyleSheet->AsConcrete();
nsCOMPtr<nsIContent> thisContent;
CallQueryInterface(this, getter_AddRefs(thisContent));
+3 -3
View File
@@ -14,9 +14,9 @@
#include "nsDOMCSSAttrDeclaration.h"
#include "nsServiceManagerUtils.h"
#include "nsIDocument.h"
#include "mozilla/DeclarationBlockInlines.h"
#include "nsCSSParser.h"
#include "mozilla/css/Loader.h"
#include "mozilla/css/Declaration.h"
#include "nsIDOMMutationEvent.h"
#include "nsXULElement.h"
#include "nsContentUtils.h"
@@ -64,7 +64,7 @@ nsStyledElement::BeforeSetAttr(int32_t aNamespaceID, nsIAtom* aName,
}
nsresult
nsStyledElement::SetInlineStyleDeclaration(DeclarationBlock* aDeclaration,
nsStyledElement::SetInlineStyleDeclaration(css::Declaration* aDeclaration,
const nsAString* aSerialized,
bool aNotify)
{
@@ -113,7 +113,7 @@ nsStyledElement::SetInlineStyleDeclaration(DeclarationBlock* aDeclaration,
document, updateBatch);
}
DeclarationBlock*
css::Declaration*
nsStyledElement::GetInlineStyleDeclaration()
{
if (!MayHaveStyle()) {
+5 -3
View File
@@ -17,7 +17,9 @@
#include "mozilla/dom/Element.h"
namespace mozilla {
class DeclarationBlock;
namespace css {
class Declaration;
} // namespace css
} // namespace mozilla
// IID for nsStyledElement interface
@@ -43,8 +45,8 @@ public:
NS_IMETHOD QueryInterface(REFNSIID aIID, void** aInstancePtr) override;
// Element interface methods
virtual mozilla::DeclarationBlock* GetInlineStyleDeclaration() override;
virtual nsresult SetInlineStyleDeclaration(mozilla::DeclarationBlock* aDeclaration,
virtual mozilla::css::Declaration* GetInlineStyleDeclaration() override;
virtual nsresult SetInlineStyleDeclaration(mozilla::css::Declaration* aDeclaration,
const nsAString* aSerialized,
bool aNotify) override;
-2
View File
@@ -1,2 +0,0 @@
# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
== test_bug920877.html test_bug920877.html
+3 -3
View File
@@ -16,7 +16,7 @@ namespace mozilla {
namespace dom {
enum class CanvasWindingRule : uint32_t;
class SVGMatrix;
struct DOMMatrix2DInit;
class CanvasPath final :
public nsWrapperCache
@@ -69,8 +69,8 @@ public:
CanvasPath(nsISupports* aParent,
already_AddRefed<gfx::PathBuilder> aPathBuilder);
void AddPath(CanvasPath& aCanvasPath,
const Optional<NonNull<SVGMatrix>>& aMatrix);
void AddPath(CanvasPath& aCanvasPath, const DOMMatrix2DInit& aInit,
ErrorResult& aError);
private:
virtual ~CanvasPath() {}
+22 -22
View File
@@ -80,6 +80,7 @@
#include "mozilla/CheckedInt.h"
#include "mozilla/DebugOnly.h"
#include "mozilla/dom/ContentParent.h"
#include "mozilla/dom/DOMMatrix.h"
#include "mozilla/dom/ImageBitmap.h"
#include "mozilla/dom/ImageData.h"
#include "mozilla/dom/PBrowserParent.h"
@@ -120,8 +121,7 @@
#include "nsFontMetrics.h"
#include "Units.h"
#include "CanvasUtils.h"
#include "mozilla/StyleSetHandle.h"
#include "mozilla/StyleSetHandleInlines.h"
#include "nsStyleSet.h"
#include "mozilla/layers/CanvasClient.h"
#undef free // apparently defined by some windows header, clashing with a free()
@@ -2669,11 +2669,8 @@ GetFontParentStyleContext(Element* aElement, nsIPresShell* aPresShell,
// otherwise inherit from default (10px sans-serif)
nsStyleSet* styleSet = aPresShell->StyleSet()->GetAsGecko();
nsStyleSet* styleSet = aPresShell->StyleSet();
if (!styleSet) {
// XXXheycam ServoStyleSets do not support resolving style from a list of
// rules yet.
NS_ERROR("stylo: cannot resolve style for canvas from a ServoStyleSet yet");
aError.Throw(NS_ERROR_FAILURE);
return nullptr;
}
@@ -2713,11 +2710,8 @@ GetFontStyleContext(Element* aElement, const nsAString& aFont,
nsAString& aOutUsedFont,
ErrorResult& aError)
{
nsStyleSet* styleSet = aPresShell->StyleSet()->GetAsGecko();
nsStyleSet* styleSet = aPresShell->StyleSet();
if (!styleSet) {
// XXXheycam ServoStyleSets do not support resolving style from a list of
// rules yet.
NS_ERROR("stylo: cannot resolve style for canvas from a ServoStyleSet yet");
aError.Throw(NS_ERROR_FAILURE);
return nullptr;
}
@@ -2790,11 +2784,8 @@ ResolveStyleForFilter(const nsAString& aFilterString,
nsStyleContext* aParentContext,
ErrorResult& aError)
{
nsStyleSet* styleSet = aPresShell->StyleSet()->GetAsGecko();
nsStyleSet* styleSet = aPresShell->StyleSet();
if (!styleSet) {
// XXXheycam ServoStyleSets do not support resolving style from a list of
// rules yet.
NS_ERROR("stylo: cannot resolve style for canvas from a ServoStyleSet yet");
aError.Throw(NS_ERROR_FAILURE);
return nullptr;
}
@@ -6591,19 +6582,28 @@ CanvasPath::BezierTo(const gfx::Point& aCP1,
}
void
CanvasPath::AddPath(CanvasPath& aCanvasPath, const Optional<NonNull<SVGMatrix>>& aMatrix)
CanvasPath::AddPath(CanvasPath& aCanvasPath, const DOMMatrix2DInit& aInit,
ErrorResult& aError)
{
RefPtr<gfx::Path> tempPath = aCanvasPath.GetPath(CanvasWindingRule::Nonzero,
gfxPlatform::GetPlatform()->ScreenReferenceDrawTarget());
if (aMatrix.WasPassed()) {
const SVGMatrix& m = aMatrix.Value();
Matrix transform(m.A(), m.B(), m.C(), m.D(), m.E(), m.F());
RefPtr<DOMMatrixReadOnly> matrix =
DOMMatrixReadOnly::FromMatrix(GetParentObject(), aInit, aError);
if (aError.Failed()) {
return;
}
if (!transform.IsIdentity()) {
RefPtr<PathBuilder> tempBuilder = tempPath->TransformedCopyToBuilder(transform, FillRule::FILL_WINDING);
tempPath = tempBuilder->Finish();
}
Matrix transform(*(matrix->GetInternal2D()));
if (!transform.IsFinite()) {
return;
}
if (!transform.IsIdentity()) {
RefPtr<PathBuilder> tempBuilder = tempPath->TransformedCopyToBuilder(transform, FillRule::FILL_WINDING);
tempPath = tempBuilder->Finish();
}
EnsurePathBuilder(); // in case a path is added to itself
@@ -1,21 +0,0 @@
# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
default-preferences pref(canvas.filters.enabled,true)
== default-color.html default-color.html
== drop-shadow.html drop-shadow.html
== drop-shadow-transformed.html drop-shadow-transformed.html
fuzzy-if(azureSkia,1,1500) == global-alpha.html global-alpha.html
== global-composite-operation.html global-composite-operation.html
== liveness.html liveness.html
== multiple-drop-shadows.html multiple-drop-shadows.html
== shadow.html shadow.html
== subregion-fill-paint.html subregion-fill-paint.html
== subregion-stroke-paint.html subregion-stroke-paint.html
== svg-bbox.html svg-bbox.html
== svg-inline.html svg-inline.html
== svg-liveness.html svg-liveness.html
== svg-off-screen.html svg-off-screen.html
== units.html units.html
== units-em.html units-em.html
== units-ex.html units-ex.html
== units-off-screen.html units-off-screen.html
-169
View File
@@ -1,169 +0,0 @@
# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
# WebGL Reftests!
default-preferences pref(webgl.force-enabled,true) pref(media.useAudioChannelAPI,true) pref(dom.audiochannel.mutedByDefault,false)
# Check that disabling works:
== webgl-disable-test.html?nogl webgl-disable-test.html?nogl
pref(webgl.disabled,true) == webgl-disable-test.html webgl-disable-test.html
# Basic WebGL tests:
# Do we get pixels to the screen at all?
# Neither of these should ever break.
== webgl-clear-test.html webgl-clear-test.html
pref(webgl.force-layers-readback,true) == webgl-clear-test.html?readback webgl-clear-test.html?readback
# Make sure that our choice of attribs doesn't break rendering.
== webgl-clear-test.html?depth webgl-clear-test.html?depth
== webgl-clear-test.html?stencil webgl-clear-test.html?stencil
== webgl-clear-test.html?depth&stencil webgl-clear-test.html?depth&stencil
# Check that resize works:
== webgl-resize-test.html webgl-resize-test.html
# Check that captureStream() displays in a local video element
== webgl-capturestream-test.html?preserve webgl-capturestream-test.html?preserve
# 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
# differences in the `sandbox` contents. That is, I'm labeling based on symptoms rather
# than cause.
# WinXP R: winWidget && layersGPUAccelerated && !d3d11
# Win7+ R: winWidget && layersGPUAccelerated && d3d11
# Win7+ Ru: winWidget && !layersGPUAccelerated && d3d11
# (Note that we have to remove spaces when used below)
# IMPORTANT: Expected outcomes are evaluated left-to-right, and they replace eachother.
# That means that if an unconditional status (`fuzzy()`) is to the right of another status
# (such as fails-if), it will overwrite the old status.
#
# As such, all unconditional statuses should be to the left of conditional statuses.
# (See /layout/tools/reftest/reftest.js:945)
# Does we draw the correct colors in the correct places?
# Combinations: PowerSet([readback, aa, preserve, premult, alpha]) x [frame=1,frame=6]
# This is 2^6 = 64 combinations.
== webgl-color-test.html?frame=1&__&________&_______&_____ webgl-color-test.html?frame=1&__&________&_______&_____
== webgl-color-test.html?frame=1&aa&________&_______&_____ webgl-color-test.html?frame=1&aa&________&_______&_____
== webgl-color-test.html?frame=1&__&preserve&_______&_____ webgl-color-test.html?frame=1&__&preserve&_______&_____
== webgl-color-test.html?frame=1&aa&preserve&_______&_____ webgl-color-test.html?frame=1&aa&preserve&_______&_____
== webgl-color-test.html?frame=1&__&________&premult&_____ webgl-color-test.html?frame=1&__&________&premult&_____
== webgl-color-test.html?frame=1&aa&________&premult&_____ webgl-color-test.html?frame=1&aa&________&premult&_____
== webgl-color-test.html?frame=1&__&preserve&premult&_____ webgl-color-test.html?frame=1&__&preserve&premult&_____
== webgl-color-test.html?frame=1&aa&preserve&premult&_____ webgl-color-test.html?frame=1&aa&preserve&premult&_____
fuzzy(1,30000) fails-if(winWidget&&layersGPUAccelerated&&!d3d11) == webgl-color-test.html?frame=1&__&________&_______&alpha webgl-color-test.html?frame=1&__&________&_______&alpha
fuzzy(1,30000) fails-if(winWidget&&layersGPUAccelerated&&!d3d11) == webgl-color-test.html?frame=1&aa&________&_______&alpha webgl-color-test.html?frame=1&aa&________&_______&alpha
fuzzy(1,30000) fails-if(winWidget&&layersGPUAccelerated&&!d3d11) == webgl-color-test.html?frame=1&__&preserve&_______&alpha webgl-color-test.html?frame=1&__&preserve&_______&alpha
fuzzy(1,30000) fails-if(winWidget&&layersGPUAccelerated&&!d3d11) == webgl-color-test.html?frame=1&aa&preserve&_______&alpha webgl-color-test.html?frame=1&aa&preserve&_______&alpha
== webgl-color-test.html?frame=1&__&________&premult&alpha webgl-color-test.html?frame=1&__&________&premult&alpha
== webgl-color-test.html?frame=1&aa&________&premult&alpha webgl-color-test.html?frame=1&aa&________&premult&alpha
== webgl-color-test.html?frame=1&__&preserve&premult&alpha webgl-color-test.html?frame=1&__&preserve&premult&alpha
== webgl-color-test.html?frame=1&aa&preserve&premult&alpha webgl-color-test.html?frame=1&aa&preserve&premult&alpha
== webgl-color-test.html?frame=6&__&________&_______&_____ webgl-color-test.html?frame=6&__&________&_______&_____
== webgl-color-test.html?frame=6&aa&________&_______&_____ webgl-color-test.html?frame=6&aa&________&_______&_____
== webgl-color-test.html?frame=6&__&preserve&_______&_____ webgl-color-test.html?frame=6&__&preserve&_______&_____
== webgl-color-test.html?frame=6&aa&preserve&_______&_____ webgl-color-test.html?frame=6&aa&preserve&_______&_____
== webgl-color-test.html?frame=6&__&________&premult&_____ webgl-color-test.html?frame=6&__&________&premult&_____
== webgl-color-test.html?frame=6&aa&________&premult&_____ webgl-color-test.html?frame=6&aa&________&premult&_____
== webgl-color-test.html?frame=6&__&preserve&premult&_____ webgl-color-test.html?frame=6&__&preserve&premult&_____
== webgl-color-test.html?frame=6&aa&preserve&premult&_____ webgl-color-test.html?frame=6&aa&preserve&premult&_____
fuzzy(1,30000) fails-if(winWidget&&layersGPUAccelerated&&!d3d11) == webgl-color-test.html?frame=6&__&________&_______&alpha webgl-color-test.html?frame=6&__&________&_______&alpha
fuzzy(1,30000) fails-if(winWidget&&layersGPUAccelerated&&!d3d11) == webgl-color-test.html?frame=6&aa&________&_______&alpha webgl-color-test.html?frame=6&aa&________&_______&alpha
fuzzy(1,30000) fails-if(winWidget&&layersGPUAccelerated&&!d3d11) == webgl-color-test.html?frame=6&__&preserve&_______&alpha webgl-color-test.html?frame=6&__&preserve&_______&alpha
fuzzy(1,30000) fails-if(winWidget&&layersGPUAccelerated&&!d3d11) == webgl-color-test.html?frame=6&aa&preserve&_______&alpha webgl-color-test.html?frame=6&aa&preserve&_______&alpha
== webgl-color-test.html?frame=6&__&________&premult&alpha webgl-color-test.html?frame=6&__&________&premult&alpha
== webgl-color-test.html?frame=6&aa&________&premult&alpha webgl-color-test.html?frame=6&aa&________&premult&alpha
== webgl-color-test.html?frame=6&__&preserve&premult&alpha webgl-color-test.html?frame=6&__&preserve&premult&alpha
== webgl-color-test.html?frame=6&aa&preserve&premult&alpha webgl-color-test.html?frame=6&aa&preserve&premult&alpha
pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=1&readback&__&________&_______&_____ webgl-color-test.html?frame=1&readback&__&________&_______&_____
pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=1&readback&aa&________&_______&_____ webgl-color-test.html?frame=1&readback&aa&________&_______&_____
pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=1&readback&__&preserve&_______&_____ webgl-color-test.html?frame=1&readback&__&preserve&_______&_____
pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=1&readback&aa&preserve&_______&_____ webgl-color-test.html?frame=1&readback&aa&preserve&_______&_____
pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=1&readback&__&________&premult&_____ webgl-color-test.html?frame=1&readback&__&________&premult&_____
pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=1&readback&aa&________&premult&_____ webgl-color-test.html?frame=1&readback&aa&________&premult&_____
pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=1&readback&__&preserve&premult&_____ webgl-color-test.html?frame=1&readback&__&preserve&premult&_____
pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=1&readback&aa&preserve&premult&_____ webgl-color-test.html?frame=1&readback&aa&preserve&premult&_____
fuzzy(1,30000) fails-if(winWidget&&layersGPUAccelerated&&!d3d11) pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=1&readback&__&________&_______&alpha webgl-color-test.html?frame=1&readback&__&________&_______&alpha
fuzzy(1,30000) fails-if(winWidget&&layersGPUAccelerated&&!d3d11) pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=1&readback&aa&________&_______&alpha webgl-color-test.html?frame=1&readback&aa&________&_______&alpha
fuzzy(1,30000) fails-if(winWidget&&layersGPUAccelerated&&!d3d11) pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=1&readback&__&preserve&_______&alpha webgl-color-test.html?frame=1&readback&__&preserve&_______&alpha
fuzzy(1,30000) fails-if(winWidget&&layersGPUAccelerated&&!d3d11) pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=1&readback&aa&preserve&_______&alpha webgl-color-test.html?frame=1&readback&aa&preserve&_______&alpha
pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=1&readback&__&________&premult&alpha webgl-color-test.html?frame=1&readback&__&________&premult&alpha
pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=1&readback&aa&________&premult&alpha webgl-color-test.html?frame=1&readback&aa&________&premult&alpha
pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=1&readback&__&preserve&premult&alpha webgl-color-test.html?frame=1&readback&__&preserve&premult&alpha
pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=1&readback&aa&preserve&premult&alpha webgl-color-test.html?frame=1&readback&aa&preserve&premult&alpha
pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=6&readback&__&________&_______&_____ webgl-color-test.html?frame=6&readback&__&________&_______&_____
pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=6&readback&aa&________&_______&_____ webgl-color-test.html?frame=6&readback&aa&________&_______&_____
pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=6&readback&__&preserve&_______&_____ webgl-color-test.html?frame=6&readback&__&preserve&_______&_____
pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=6&readback&aa&preserve&_______&_____ webgl-color-test.html?frame=6&readback&aa&preserve&_______&_____
pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=6&readback&__&________&premult&_____ webgl-color-test.html?frame=6&readback&__&________&premult&_____
pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=6&readback&aa&________&premult&_____ webgl-color-test.html?frame=6&readback&aa&________&premult&_____
pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=6&readback&__&preserve&premult&_____ webgl-color-test.html?frame=6&readback&__&preserve&premult&_____
pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=6&readback&aa&preserve&premult&_____ webgl-color-test.html?frame=6&readback&aa&preserve&premult&_____
fuzzy(1,30000) fails-if(winWidget&&layersGPUAccelerated&&!d3d11) pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=6&readback&__&________&_______&alpha webgl-color-test.html?frame=6&readback&__&________&_______&alpha
fuzzy(1,30000) fails-if(winWidget&&layersGPUAccelerated&&!d3d11) pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=6&readback&aa&________&_______&alpha webgl-color-test.html?frame=6&readback&aa&________&_______&alpha
fuzzy(1,30000) fails-if(winWidget&&layersGPUAccelerated&&!d3d11) pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=6&readback&__&preserve&_______&alpha webgl-color-test.html?frame=6&readback&__&preserve&_______&alpha
fuzzy(1,30000) fails-if(winWidget&&layersGPUAccelerated&&!d3d11) pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=6&readback&aa&preserve&_______&alpha webgl-color-test.html?frame=6&readback&aa&preserve&_______&alpha
pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=6&readback&__&________&premult&alpha webgl-color-test.html?frame=6&readback&__&________&premult&alpha
pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=6&readback&aa&________&premult&alpha webgl-color-test.html?frame=6&readback&aa&________&premult&alpha
pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=6&readback&__&preserve&premult&alpha webgl-color-test.html?frame=6&readback&__&preserve&premult&alpha
pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=6&readback&aa&preserve&premult&alpha webgl-color-test.html?frame=6&readback&aa&preserve&premult&alpha
# Check for hanging bindings/state settings:
== webgl-hanging-fb-test.html?__&________ webgl-hanging-fb-test.html?__&________
== webgl-hanging-fb-test.html?aa&________ webgl-hanging-fb-test.html?aa&________
== webgl-hanging-fb-test.html?__&preserve webgl-hanging-fb-test.html?__&preserve
== webgl-hanging-fb-test.html?aa&preserve webgl-hanging-fb-test.html?aa&preserve
pref(webgl.force-layers-readback,true) == webgl-hanging-fb-test.html?readback&__&________ webgl-hanging-fb-test.html?readback&__&________
pref(webgl.force-layers-readback,true) == webgl-hanging-fb-test.html?readback&aa&________ webgl-hanging-fb-test.html?readback&aa&________
pref(webgl.force-layers-readback,true) == webgl-hanging-fb-test.html?readback&__&preserve webgl-hanging-fb-test.html?readback&__&preserve
pref(webgl.force-layers-readback,true) == webgl-hanging-fb-test.html?readback&aa&preserve webgl-hanging-fb-test.html?readback&aa&preserve
== webgl-hanging-scissor-test.html?__ webgl-hanging-scissor-test.html?__
== webgl-hanging-scissor-test.html?aa webgl-hanging-scissor-test.html?aa
pref(webgl.force-layers-readback,true) == webgl-hanging-scissor-test.html?readback&__ webgl-hanging-scissor-test.html?readback&__
pref(webgl.force-layers-readback,true) == webgl-hanging-scissor-test.html?readback&aa webgl-hanging-scissor-test.html?readback&aa
# Check that our experimental prefs still work:
# 16bpp for Android/B2G: [16bpp] * PowerSet([readback, premult, alpha])
# RGB565 dithers 127 to [123,132]. (Max error: 5)
# RGBA4444 dithers 128 to [119,136], and 191 to [192]. (Max error: 9)
fuzzy(5,30000) skip-if(!(Android||B2G)) pref(webgl.prefer-16bpp,true) == webgl-color-test.html?16bpp&________&_______&_____ webgl-color-test.html?16bpp&________&_______&_____
fuzzy(5,30000) skip-if(!(Android||B2G)) pref(webgl.prefer-16bpp,true) pref(webgl.force-layers-readback,true) == webgl-color-test.html?16bpp&readback&_______&_____ webgl-color-test.html?16bpp&readback&_______&_____
fuzzy(5,30000) skip-if(!(Android||B2G)) pref(webgl.prefer-16bpp,true) == webgl-color-test.html?16bpp&________&premult&_____ webgl-color-test.html?16bpp&________&premult&_____
fuzzy(5,30000) skip-if(!(Android||B2G)) pref(webgl.prefer-16bpp,true) pref(webgl.force-layers-readback,true) == webgl-color-test.html?16bpp&readback&premult&_____ webgl-color-test.html?16bpp&readback&premult&_____
fuzzy(9,40000) skip-if(!(Android||B2G)) pref(webgl.prefer-16bpp,true) == webgl-color-test.html?16bpp&________&_______&alpha webgl-color-test.html?16bpp&________&_______&alpha
fuzzy(9,40000) skip-if(!(Android||B2G)) pref(webgl.prefer-16bpp,true) pref(webgl.force-layers-readback,true) == webgl-color-test.html?16bpp&readback&_______&alpha webgl-color-test.html?16bpp&readback&_______&alpha
fuzzy(9,40000) skip-if(!(Android||B2G)) pref(webgl.prefer-16bpp,true) == webgl-color-test.html?16bpp&________&premult&alpha webgl-color-test.html?16bpp&________&premult&alpha
fuzzy(9,40000) skip-if(!(Android||B2G)) pref(webgl.prefer-16bpp,true) pref(webgl.force-layers-readback,true) == webgl-color-test.html?16bpp&readback&premult&alpha webgl-color-test.html?16bpp&readback&premult&alpha
# Force native GL (Windows):
skip-if(!winWidget) pref(webgl.disable-angle,true) == webgl-color-test.html?native-gl webgl-color-test.html?native-gl
# Non-WebGL Reftests!
# Do we correctly handle multiple clip paths?
== clip-multiple-paths.html clip-multiple-paths.html
# Bug 1255062
== clip-multiple-move-1.html clip-multiple-move-1.html
== clip-multiple-move-2.html clip-multiple-move-2.html
# Bug 815648
== stroketext-shadow.html stroketext-shadow.html
# focus rings
pref(canvas.focusring.enabled,true) skip-if(B2G) skip-if(cocoaWidget) skip-if(winWidget) needs-focus == drawFocusIfNeeded.html drawFocusIfNeeded.html
pref(canvas.customfocusring.enabled,true) skip-if(B2G) skip-if(cocoaWidget) skip-if(Android) skip-if(winWidget) fuzzy-if(gtkWidget,64,410) needs-focus == drawCustomFocusRing.html drawCustomFocusRing.html
# Check that captureStream() displays in a local video element
skip == capturestream.html capturestream.html
fuzzy-if(azureSkia,16,2) fuzzy-if(Android,3,40) fuzzy-if(/^Windows\x20NT\x2010\.0/.test(http.oscpu),1,1) == 1177726-text-stroke-bounds.html 1177726-text-stroke-bounds.html
# Canvas Filter Reftests
include filters/reftest-stylo.list
@@ -1,6 +0,0 @@
# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
== bug863728-1.html bug863728-1.html
skip fuzzy-if(skiaContent,1,10) == bug863728-2.html bug863728-2.html
== bug863728-3.html bug863728-3.html
== bug945215-1.html bug945215-1.html
skip fuzzy-if(skiaContent,1,10) == bug945215-2.html bug945215-2.html
+4 -32
View File
@@ -11,8 +11,6 @@
namespace mozilla {
#define NS_EVENT_STATE_HIGHEST_SERVO_BIT 6
/**
* EventStates is the class used to represent the event states of nsIContent
* instances. These states are calculated by IntrinsicState() and
@@ -24,7 +22,6 @@ class EventStates
{
public:
typedef uint64_t InternalType;
typedef uint8_t ServoType;
EventStates()
: mStates(0)
@@ -157,14 +154,6 @@ public:
return mStates;
}
/**
* Method used to get the appropriate state representation for Servo.
*/
ServoType ServoValue() const
{
return mStates & ((1 << (NS_EVENT_STATE_HIGHEST_SERVO_BIT + 1)) - 1);
}
private:
InternalType mStates;
};
@@ -182,19 +171,6 @@ private:
#define NS_DEFINE_EVENT_STATE_MACRO(_val) \
(mozilla::EventStates(mozilla::EventStates::InternalType(1) << _val))
/*
* In order to efficiently convert Gecko EventState values into Servo
* ElementState values [1], we maintain the invariant that the low bits of
* EventState can be masked off to form an ElementState (this works so
* long as Servo never supports a state that Gecko doesn't).
*
* This is unfortunately rather fragile for now, but we should soon have
* the infrastructure to statically-assert that these match up. If you
* need to change these, please notify somebody involved with Stylo.
*
* [1] https://github.com/servo/servo/blob/master/components/style/element_state.rs
*/
// Mouse is down on content.
#define NS_EVENT_STATE_ACTIVE NS_DEFINE_EVENT_STATE_MACRO(0)
// Content has focus.
@@ -209,14 +185,6 @@ private:
#define NS_EVENT_STATE_CHECKED NS_DEFINE_EVENT_STATE_MACRO(5)
// Content is in the indeterminate state.
#define NS_EVENT_STATE_INDETERMINATE NS_DEFINE_EVENT_STATE_MACRO(6)
/*
* Bits below here do not have Servo-related ordering constraints.
*
* Remember to change NS_EVENT_STATE_HIGHEST_SERVO_BIT at the top of the file if
* this changes!
*/
// Drag is hovering over content.
#define NS_EVENT_STATE_DRAGOVER NS_DEFINE_EVENT_STATE_MACRO(7)
// Content is URL's target (ref).
@@ -285,10 +253,14 @@ private:
#define NS_EVENT_STATE_VULNERABLE_UPDATABLE NS_DEFINE_EVENT_STATE_MACRO(39)
// Handler for click to play plugin (vulnerable w/no update)
#define NS_EVENT_STATE_VULNERABLE_NO_UPDATE NS_DEFINE_EVENT_STATE_MACRO(40)
// This bit is currently free.
// #define NS_EVENT_STATE_?????????? NS_DEFINE_EVENT_STATE_MACRO(41)
// Element is ltr (for :dir pseudo-class)
#define NS_EVENT_STATE_LTR NS_DEFINE_EVENT_STATE_MACRO(42)
// Element is rtl (for :dir pseudo-class)
#define NS_EVENT_STATE_RTL NS_DEFINE_EVENT_STATE_MACRO(43)
// This bit is currently free.
// #define NS_EVENT_STATE_?????????? NS_DEFINE_EVENT_STATE_MACRO(44)
// Element is highlighted (devtools inspector)
#define NS_EVENT_STATE_DEVTOOLS_HIGHLIGHTED NS_DEFINE_EVENT_STATE_MACRO(45)
// States for tracking the state of the "dir" attribute for HTML elements. We
+4 -6
View File
@@ -4,7 +4,6 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "mozilla/ArrayUtils.h"
#include "mozilla/DeclarationBlockInlines.h"
#include "mozilla/EventDispatcher.h"
#include "mozilla/EventListenerManager.h"
#include "mozilla/EventStateManager.h"
@@ -104,8 +103,7 @@
#include "mozilla/dom/HTMLBodyElement.h"
#include "imgIContainer.h"
#include "nsComputedDOMStyle.h"
#include "mozilla/StyleSetHandle.h"
#include "mozilla/StyleSetHandleInlines.h"
#include "nsStyleSet.h"
#include "ReferrerPolicy.h"
#include "mozilla/dom/HTMLLabelElement.h"
@@ -189,11 +187,11 @@ nsGenericHTMLElement::CopyInnerTo(Element* aDst)
if (name->Equals(nsGkAtoms::style, kNameSpaceID_None) &&
value->Type() == nsAttrValue::eCSSDeclaration) {
DeclarationBlock* decl = value->GetCSSDeclarationValue();
css::Declaration* decl = value->GetCSSDeclarationValue();
// We can't just set this as a string, because that will fail
// to reparse the string into style data until the node is
// inserted into the document. Clone the Rule instead.
RefPtr<DeclarationBlock> declClone = decl->Clone();
RefPtr<css::Declaration> declClone = decl->Clone();
rv = aDst->SetInlineStyleDeclaration(declClone, &valStr, false);
NS_ENSURE_SUCCESS(rv, rv);
@@ -3020,7 +3018,7 @@ IsOrHasAncestorWithDisplayNone(Element* aElement, nsIPresShell* aPresShell)
return false;
}
StyleSetHandle styleSet = aPresShell->StyleSet();
nsStyleSet* styleSet = aPresShell->StyleSet();
RefPtr<nsStyleContext> sc;
for (int32_t i = elementsToCheck.Length() - 1; i >= 0; --i) {
if (sc) {
+3 -3
View File
@@ -273,7 +273,7 @@ nsHTMLDocument::ResetToURI(nsIURI *aURI, nsILoadGroup *aLoadGroup,
already_AddRefed<nsIPresShell>
nsHTMLDocument::CreateShell(nsPresContext* aContext,
nsViewManager* aViewManager,
StyleSetHandle aStyleSet)
nsStyleSet* aStyleSet)
{
return doCreateShell(aContext, aViewManager, aStyleSet);
}
@@ -2380,7 +2380,7 @@ nsHTMLDocument::TearingDownEditor(nsIEditor *aEditor)
nsTArray<RefPtr<StyleSheet>> agentSheets;
presShell->GetAgentStyleSheets(agentSheets);
auto cache = nsLayoutStylesheetCache::For(GetStyleBackendType());
auto cache = nsLayoutStylesheetCache::Get();
agentSheets.RemoveElement(cache->ContentEditableSheet());
if (oldState == eDesignMode)
@@ -2524,7 +2524,7 @@ nsHTMLDocument::EditingStateChanged()
rv = presShell->GetAgentStyleSheets(agentSheets);
NS_ENSURE_SUCCESS(rv, rv);
auto cache = nsLayoutStylesheetCache::For(GetStyleBackendType());
auto cache = nsLayoutStylesheetCache::Get();
StyleSheet* contentEditableSheet = cache->ContentEditableSheet();
+1 -1
View File
@@ -55,7 +55,7 @@ public:
virtual already_AddRefed<nsIPresShell> CreateShell(
nsPresContext* aContext,
nsViewManager* aViewManager,
mozilla::StyleSetHandle aStyleSet) override;
nsStyleSet* aStyleSet) override;
virtual nsresult StartDocumentLoad(const char* aCommand,
nsIChannel* aChannel,
@@ -1,36 +0,0 @@
# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
default-preferences pref(dom.forms.number,true)
fails skip-if(B2G||Mulet) fuzzy-if(skiaContent,1,3) needs-focus == input-load.html input-load.html
# B2G timed out waiting for reftest-wait to be removed
# Initial mulet triage: parity with B2G/B2G Desktop
fails skip-if(B2G||Mulet) fuzzy-if(skiaContent,1,3) needs-focus == input-create.html input-create.html
# B2G timed out waiting for reftest-wait to be removed
# Initial mulet triage: parity with B2G/B2G Desktop
# skip skip-if(B2G||Mulet) fuzzy-if(skiaContent,1,3) needs-focus == input-number.html input-number.html
# B2G timed out waiting for reftest-wait to be removed
# Initial mulet triage: parity with B2G/B2G Desktop
fails skip-if(B2G||Mulet) fuzzy-if(skiaContent,1,3) needs-focus == button-load.html button-load.html
# B2G timed out waiting for reftest-wait to be removed
# Initial mulet triage: parity with B2G/B2G Desktop
random needs-focus == button-create.html button-create.html
# B2G timed out waiting for reftest-wait to be removed
# Initial mulet triage: parity with B2G/B2G Desktop
random needs-focus == textarea-load.html textarea-load.html
# B2G timed out waiting for reftest-wait to be removed
# Initial mulet triage: parity with B2G/B2G Desktop
random needs-focus == textarea-create.html textarea-create.html
# B2G timed out waiting for reftest-wait to be removed
# Initial mulet triage: parity with B2G/B2G Desktop
fails skip-if(B2G||Mulet) fuzzy-if(skiaContent,2,4) needs-focus == select-load.html select-load.html
# B2G timed out waiting for reftest-wait to be removed
# Initial mulet triage: parity with B2G/B2G Desktop
fails skip-if(B2G||Mulet) fuzzy-if(skiaContent,2,4) needs-focus == select-create.html select-create.html
# B2G timed out waiting for reftest-wait to be removed
# Initial mulet triage: parity with B2G/B2G Desktop
needs-focus == autofocus-after-load.html autofocus-after-load.html
fails-if(B2G||Mulet) fuzzy-if(skiaContent,2,5) needs-focus == autofocus-leaves-iframe.html autofocus-leaves-iframe.html
# B2G focus difference between test and reference
# Initial mulet triage: parity with B2G/B2G Desktop
skip == autofocus-after-body-focus.html autofocus-after-body-focus.html
# bug 773482
# Initial mulet triage: parity with B2G/B2G Desktop
@@ -1,17 +0,0 @@
# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
fuzzy-if(Android,105,482) == toblob-quality-0.html toblob-quality-0.html
fuzzy-if(Android,38,2024) == toblob-quality-25.html toblob-quality-25.html
fuzzy-if(Android,29,2336) == toblob-quality-50.html toblob-quality-50.html
fuzzy-if(Android,23,3533) == toblob-quality-75.html toblob-quality-75.html
fuzzy-if(Android,16,4199) == toblob-quality-92.html toblob-quality-92.html
fuzzy-if(Android,8,2461) == toblob-quality-100.html toblob-quality-100.html
fuzzy-if(Android,16,4199) == toblob-quality-undefined.html toblob-quality-undefined.html
fuzzy-if(Android,16,4199) == toblob-quality-default.html toblob-quality-default.html
fuzzy-if(Android,105,482) == todataurl-quality-0.html todataurl-quality-0.html
fails fuzzy-if(Android,38,2024) == todataurl-quality-25.html todataurl-quality-25.html
fuzzy-if(Android,29,2336) == todataurl-quality-50.html todataurl-quality-50.html
fuzzy-if(Android,23,3533) == todataurl-quality-75.html todataurl-quality-75.html
fails fuzzy-if(Android,16,4199) == todataurl-quality-92.html todataurl-quality-92.html
fuzzy-if(Android,8,2461) == todataurl-quality-100.html todataurl-quality-100.html
fuzzy-if(Android,16,4199) == todataurl-quality-undefined.html todataurl-quality-undefined.html
fuzzy-if(Android,16,4199) == todataurl-quality-default.html todataurl-quality-default.html
@@ -1,59 +0,0 @@
# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
# THIS FILE IS AUTOGENERATED BY importTestsuite.py - DO NOT EDIT
== dir_auto-contained-bdi-L.html dir_auto-contained-bdi-L.html
== dir_auto-contained-bdi-R.html dir_auto-contained-bdi-R.html
== dir_auto-contained-dir_auto-L.html dir_auto-contained-dir_auto-L.html
== dir_auto-contained-dir_auto-R.html dir_auto-contained-dir_auto-R.html
== dir_auto-contained-dir-L.html dir_auto-contained-dir-L.html
== dir_auto-contained-dir-R.html dir_auto-contained-dir-R.html
== dir_auto-contained-L.html dir_auto-contained-L.html
== dir_auto-contained-R.html dir_auto-contained-R.html
== dir_auto-contained-script-L.html dir_auto-contained-script-L.html
== dir_auto-contained-script-R.html dir_auto-contained-script-R.html
== dir_auto-contained-style-L.html dir_auto-contained-style-L.html
== dir_auto-contained-style-R.html dir_auto-contained-style-R.html
== dir_auto-contained-textarea-L.html dir_auto-contained-textarea-L.html
== dir_auto-contained-textarea-R.html dir_auto-contained-textarea-R.html
== dir_auto-EN-L.html dir_auto-EN-L.html
== dir_auto-EN-R.html dir_auto-EN-R.html
== dir_auto-input-EN-L.html dir_auto-input-EN-L.html
== dir_auto-input-EN-R.html dir_auto-input-EN-R.html
== dir_auto-input-L.html dir_auto-input-L.html
== dir_auto-input-N-EN.html dir_auto-input-N-EN.html
== dir_auto-input-N-EN-L.html dir_auto-input-N-EN-L.html
== dir_auto-input-N-EN-R.html dir_auto-input-N-EN-R.html
== dir_auto-input-N-L.html dir_auto-input-N-L.html
== dir_auto-input-N-R.html dir_auto-input-N-R.html
== dir_auto-input-R.html dir_auto-input-R.html
== dir_auto-input-script-EN-L.html dir_auto-input-script-EN-L.html
== dir_auto-input-script-EN-R.html dir_auto-input-script-EN-R.html
== dir_auto-input-script-L.html dir_auto-input-script-L.html
== dir_auto-input-script-N-EN.html dir_auto-input-script-N-EN.html
== dir_auto-input-script-N-EN-L.html dir_auto-input-script-N-EN-L.html
== dir_auto-input-script-N-EN-R.html dir_auto-input-script-N-EN-R.html
== dir_auto-input-script-N-L.html dir_auto-input-script-N-L.html
== dir_auto-input-script-N-R.html dir_auto-input-script-N-R.html
== dir_auto-input-script-R.html dir_auto-input-script-R.html
== dir_auto-isolate.html dir_auto-isolate.html
== dir_auto-L.html dir_auto-L.html
== dir_auto-N-EN.html dir_auto-N-EN.html
== dir_auto-N-EN-L.html dir_auto-N-EN-L.html
== dir_auto-N-EN-R.html dir_auto-N-EN-R.html
== dir_auto-N-L.html dir_auto-N-L.html
== dir_auto-N-R.html dir_auto-N-R.html
== dir_auto-pre-mixed.html dir_auto-pre-mixed.html
== dir_auto-pre-N-between-Rs.html dir_auto-pre-N-between-Rs.html
== dir_auto-pre-N-EN.html dir_auto-pre-N-EN.html
== dir_auto-R.html dir_auto-R.html
== dir_auto-textarea-mixed.html dir_auto-textarea-mixed.html
fails-if(B2G||Mulet||(Android&&asyncPan)) == dir_auto-textarea-N-between-Rs.html dir_auto-textarea-N-between-Rs.html
# B2G scrollbar on opposite side
== dir_auto-textarea-N-EN.html dir_auto-textarea-N-EN.html
== dir_auto-textarea-script-mixed.html dir_auto-textarea-script-mixed.html
fails-if(B2G||Mulet||(Android&&asyncPan)) == dir_auto-textarea-script-N-between-Rs.html dir_auto-textarea-script-N-between-Rs.html
# B2G scrollbar on reference only
== dir_auto-textarea-script-N-EN.html dir_auto-textarea-script-N-EN.html
== lang-xyzzy.html lang-xyzzy.html
== lang-xmllang-01.html lang-xmllang-01.html
== style-01.html style-01.html
+1 -4
View File
@@ -2084,10 +2084,7 @@ static void
PreloadSlowThings()
{
// This fetches and creates all the built-in stylesheets.
//
// XXXheycam In the future we might want to preload the Servo-flavoured
// UA sheets too, but for now that will be a waste of time.
nsLayoutStylesheetCache::For(StyleBackendType::Gecko)->UserContentSheet();
nsLayoutStylesheetCache::Get()->UserContentSheet();
TabChild::PreloadSlowThings();
+1 -1
View File
@@ -2659,7 +2659,7 @@ ContentParent::RecvGetXPCOMProcessAttributes(bool* aIsOffline,
// Content processes have no permission to access profile directory, so we
// send the file URL instead.
StyleSheet* ucs = nsLayoutStylesheetCache::For(StyleBackendType::Gecko)->UserContentSheet();
StyleSheet* ucs = nsLayoutStylesheetCache::Get()->UserContentSheet();
if (ucs) {
SerializeURI(ucs->GetSheetURI(), *aUserContentCSSURL);
} else {
+1 -1
View File
@@ -111,7 +111,7 @@ nsMathMLElement::BindToTree(nsIDocument* aDocument, nsIContent* aParent,
// Enable MathML and setup the style sheet during binding, not element
// construction, because we could move a MathML element from the document
// that created it to another document.
auto cache = nsLayoutStylesheetCache::For(doc->GetStyleBackendType());
auto cache = nsLayoutStylesheetCache::Get();
doc->SetMathMLEnabled();
doc->EnsureOnDemandBuiltInUASheet(cache->MathMLSheet());
@@ -1,33 +0,0 @@
# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
# basic sanity checking
# fails random-if(!haveTestPlugin) == plugin-sanity.html plugin-sanity.html
# fails-if(!haveTestPlugin) == plugin-sanity.html plugin-sanity.html
skip fails-if(!haveTestPlugin) fuzzy-if(skiaContent,1,160000) == plugin-alpha-zindex.html plugin-alpha-zindex.html
fails-if(!haveTestPlugin) fuzzy-if(skiaContent,1,164000) == plugin-alpha-opacity.html plugin-alpha-opacity.html
random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fails-if(!haveTestPlugin) == windowless-clipping-1.html windowless-clipping-1.html
# bug 631832
# fuzzy because of anti-aliasing in dashed border
random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fails-if(!haveTestPlugin) == border-padding-1.html border-padding-1.html
# bug 629430
skip random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fails-if(!haveTestPlugin) == border-padding-2.html border-padding-2.html
# bug 629430
skip random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) skip-if(!haveTestPlugin) skip-if(Android||B2G) == border-padding-3.html border-padding-3.html
# bug 629430
# bug 773482
# The following two "pluginproblemui-direction" tests are unreliable on all platforms. They should be re-written or replaced.
#random-if(cocoaWidget||d2d||/^Windows\x20NT\x205\.1/.test(http.oscpu)) fails-if(!haveTestPlugin&&!Android) == pluginproblemui-direction-1.html pluginproblemui-direction-1.html
# bug 567367
#random-if(cocoaWidget) fails-if(!haveTestPlugin&&!Android) == pluginproblemui-direction-2.html pluginproblemui-direction-2.html
fails-if(!haveTestPlugin) fuzzy-if(skiaContent,1,160000) == plugin-canvas-alpha-zindex.html plugin-canvas-alpha-zindex.html
fails fails-if(!haveTestPlugin) fuzzy-if(skiaContent,1,160000) == plugin-transform-alpha-zindex.html plugin-transform-alpha-zindex.html
skip == plugin-busy-alpha-zindex.html plugin-busy-alpha-zindex.html
skip == plugin-background.html plugin-background.html
skip == plugin-background-1-step.html plugin-background-1-step.html
skip == plugin-background-2-step.html plugin-background-2-step.html
skip == plugin-background-5-step.html plugin-background-5-step.html
skip == plugin-background-10-step.html plugin-background-10-step.html
skip == plugin-transform-1.html plugin-transform-1.html
skip == plugin-transform-2.html plugin-transform-2.html
skip == shrink-1.html shrink-1.html
skip skip-if(!haveTestPlugin) == update-1.html update-1.html
skip skip-if(!haveTestPlugin) == windowless-layers.html windowless-layers.html
+1 -1
View File
@@ -138,7 +138,7 @@ SVGDocument::EnsureNonSVGUserAgentStyleSheetsLoaded()
}
}
auto cache = nsLayoutStylesheetCache::For(GetStyleBackendType());
auto cache = nsLayoutStylesheetCache::Get();
StyleSheet* sheet = cache->NumberControlSheet();
if (sheet) {
+1 -1
View File
@@ -751,7 +751,7 @@ SVGSVGElement::BindToTree(nsIDocument* aDocument,
// Setup the style sheet during binding, not element construction,
// because we could move the root SVG element from the document
// that created it to another document.
auto cache = nsLayoutStylesheetCache::For(doc->GetStyleBackendType());
auto cache = nsLayoutStylesheetCache::Get();
doc->EnsureOnDemandBuiltInUASheet(cache->SVGSheet());
}
+3 -7
View File
@@ -54,8 +54,7 @@
#include "nsSMILAnimationController.h"
#include "mozilla/dom/SVGElementBinding.h"
#include "mozilla/Unused.h"
#include "mozilla/RestyleManagerHandle.h"
#include "mozilla/RestyleManagerHandleInlines.h"
#include "mozilla/RestyleManager.h"
using namespace mozilla;
using namespace mozilla::dom;
@@ -927,12 +926,9 @@ nsSVGElement::WalkAnimatedContentStyleRules(nsRuleWalker* aRuleWalker)
// whether this is a "no-animation restyle". (This should match the check
// in nsHTMLCSSStyleSheet::RulesMatching(), where we determine whether to
// apply the SMILOverrideStyle.)
RestyleManagerHandle restyleManager =
RestyleManager* restyleManager =
aRuleWalker->PresContext()->RestyleManager();
MOZ_ASSERT(restyleManager->IsGecko(),
"stylo: Servo-backed style system should not be calling "
"WalkAnimatedContentStyleRules");
if (!restyleManager->AsGecko()->SkipAnimationRules()) {
if (!restyleManager->SkipAnimationRules()) {
// update/walk the animated content style rule.
css::StyleRule* animContentStyleRule = GetAnimatedContentStyleRule();
if (!animContentStyleRule) {
-20
View File
@@ -1,20 +0,0 @@
# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
== bug453105.html bug453105.html
== optiontext.html optiontext.html
== bug456008.xhtml bug456008.xhtml
fails fuzzy-if(skiaContent,2,3) == bug439965.html bug439965.html
== bug427779.xml bug427779.xml
fails skip-if(B2G||Mulet) fuzzy-if(skiaContent,1,5) == bug559996.html bug559996.html
# bug 773482
# Initial mulet triage: parity with B2G/B2G Desktop
skip == bug591981-1.html bug591981-1.html
# Initial mulet triage: parity with B2G/B2G Desktop
skip == bug591981-2.html bug591981-2.html
skip == bug592366-1.html bug592366-1.html
skip == bug592366-2.html bug592366-2.html
# Initial mulet triage: parity with B2G/B2G Desktop
skip == bug592366-1.xhtml bug592366-1.xhtml
# Initial mulet triage: parity with B2G/B2G Desktop
skip == bug592366-2.xhtml bug592366-2.xhtml
# Initial mulet triage: parity with B2G/B2G Desktop
== bug798068.xhtml bug798068.xhtml
@@ -1,13 +0,0 @@
# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
== css_relative_href.xml css_relative_href.xml
HTTP == css_relative_href_also_external.xml css_relative_href_also_external.xml
HTTP == css_relative_href_also_external_override.xml css_relative_href_also_external_override.xml
== embedded_dtd_id.svg embedded_dtd_id.svg
== error_no_href.svg error_no_href.svg
== lreas_selflink_dtd_id.svg lreas_selflink_dtd_id.svg
== lreas_selflink_empty_href.svg lreas_selflink_empty_href.svg
== lreas_selflink_relative_href.svg lreas_selflink_relative_href.svg
== xslt_relative_href.svg xslt_relative_href.svg
== xslt_selflink_dtd_id.xml xslt_selflink_dtd_id.xml
== xslt_selflink_empty_href.xml xslt_selflink_empty_href.xml
== xslt_selflink_relative_href.xml xslt_selflink_relative_href.xml
+1 -1
View File
@@ -335,6 +335,6 @@ interface TextMetrics {
Constructor(DOMString pathString)]
interface Path2D
{
void addPath(Path2D path, optional SVGMatrix transformation);
[Throws] void addPath(Path2D path, optional DOMMatrix2DInit transformation);
};
Path2D implements CanvasPathMethods;
-10
View File
@@ -57,7 +57,6 @@
#include "mozilla/dom/Element.h"
#include "mozilla/dom/ScriptSettings.h"
#include "mozilla/dom/ShadowRoot.h"
#include "mozilla/ServoStyleSet.h"
using namespace mozilla;
using namespace mozilla::dom;
@@ -420,15 +419,6 @@ nsXBLBinding::GenerateAnonymousContent()
if (mContent)
mContent->UnsetAttr(namespaceID, name, false);
}
// Now that we've finished shuffling the tree around, go ahead and restyle it
// since frame construction is about to happen.
nsIPresShell* presShell = mBoundElement->OwnerDoc()->GetShell();
ServoStyleSet* servoSet = presShell->StyleSet()->GetAsServo();
if (servoSet) {
mBoundElement->SetHasDirtyDescendantsForServo();
servoSet->StyleNewChildren(mBoundElement);
}
}
nsIURI*
+1 -5
View File
@@ -147,11 +147,7 @@ nsXBLPrototypeResources::GatherRuleProcessor()
{
nsTArray<RefPtr<CSSStyleSheet>> sheets(mStyleSheetList.Length());
for (StyleSheet* sheet : mStyleSheetList) {
MOZ_ASSERT(sheet->IsGecko(),
"GatherRuleProcessor must only be called for "
"nsXBLPrototypeResources objects with Gecko-flavored style "
"backends");
sheets.AppendElement(sheet->AsGecko());
sheets.AppendElement(sheet->AsConcrete());
}
mRuleProcessor = new nsCSSRuleProcessor(Move(sheets),
SheetType::Doc,
+6 -6
View File
@@ -38,7 +38,6 @@
#include "mozilla/EventListenerManager.h"
#include "mozilla/EventStateManager.h"
#include "mozilla/EventStates.h"
#include "mozilla/DeclarationBlockInlines.h"
#include "nsFocusManager.h"
#include "nsHTMLStyleSheet.h"
#include "nsNameSpaceManager.h"
@@ -54,6 +53,7 @@
#include "nsIScriptSecurityManager.h"
#include "nsIServiceManager.h"
#include "mozilla/css/StyleRule.h"
#include "mozilla/css/Declaration.h"
#include "nsIURL.h"
#include "nsViewManager.h"
#include "nsIWidget.h"
@@ -348,9 +348,9 @@ nsXULElement::Clone(mozilla::dom::NodeInfo *aNodeInfo, nsINode **aResult) const
// Style rules need to be cloned.
if (originalValue->Type() == nsAttrValue::eCSSDeclaration) {
DeclarationBlock* decl = originalValue->GetCSSDeclarationValue();
css::Declaration* decl = originalValue->GetCSSDeclarationValue();
RefPtr<css::Declaration>
declClone = new css::Declaration(*decl->AsGecko());
declClone = new css::Declaration(*decl);
nsString stringValue;
originalValue->ToString(stringValue);
@@ -825,7 +825,7 @@ nsXULElement::BindToTree(nsIDocument* aDocument,
// can be moved from the document that creates them to another document.
if (!XULElementsRulesInMinimalXULSheet(NodeInfo()->NameAtom())) {
auto cache = nsLayoutStylesheetCache::For(doc->GetStyleBackendType());
auto cache = nsLayoutStylesheetCache::Get();
doc->EnsureOnDemandBuiltInUASheet(cache->XULSheet());
// To keep memory usage down it is important that we try and avoid
// pulling xul.css into non-XUL documents. That should be very rare, and
@@ -1900,9 +1900,9 @@ nsXULElement::MakeHeavyweight(nsXULPrototypeElement* aPrototype)
// Style rules need to be cloned.
if (protoattr->mValue.Type() == nsAttrValue::eCSSDeclaration) {
DeclarationBlock* decl = protoattr->mValue.GetCSSDeclarationValue();
css::Declaration* decl = protoattr->mValue.GetCSSDeclarationValue();
RefPtr<css::Declaration>
declClone = new css::Declaration(*decl->AsGecko());
declClone = new css::Declaration(*decl);
nsString stringValue;
protoattr->mValue.ToString(stringValue);
+3 -7
View File
@@ -9,8 +9,8 @@
#include "mozilla/ChangeStyleTransaction.h"
#include "mozilla/HTMLEditor.h"
#include "mozilla/Preferences.h"
#include "mozilla/DeclarationBlockInlines.h"
#include "mozilla/css/StyleRule.h"
#include "mozilla/css/Declaration.h"
#include "mozilla/dom/Element.h"
#include "mozilla/mozalloc.h"
#include "nsAString.h"
@@ -548,19 +548,15 @@ CSSEditUtils::GetCSSInlinePropertyBase(nsINode* aNode,
}
MOZ_ASSERT(aStyleType == eSpecified);
RefPtr<DeclarationBlock> decl = element->GetInlineStyleDeclaration();
RefPtr<css::Declaration> decl = element->GetInlineStyleDeclaration();
if (!decl) {
return NS_OK;
}
if (decl->IsServo()) {
MOZ_CRASH("stylo: not implemented");
return NS_ERROR_NOT_IMPLEMENTED;
}
nsCSSPropertyID prop =
nsCSSProps::LookupProperty(nsDependentAtomString(aProperty),
CSSEnabledState::eForAllContent);
MOZ_ASSERT(prop != eCSSProperty_UNKNOWN);
decl->AsGecko()->GetPropertyValueByID(prop, aValue);
decl->GetPropertyValueByID(prop, aValue);
return NS_OK;
}
+2 -12
View File
@@ -2907,12 +2907,7 @@ HTMLEditor::EnableStyleSheet(const nsAString& aURL,
nsCOMPtr<nsIDocument> document = GetDocument();
sheet->SetAssociatedDocument(document, StyleSheet::NotOwnedByDocument);
if (sheet->IsServo()) {
// XXXheycam ServoStyleSheets don't support being enabled/disabled yet.
NS_ERROR("stylo: ServoStyleSheets can't be disabled yet");
return NS_ERROR_FAILURE;
}
return sheet->AsGecko()->SetDisabled(!aEnable);
return sheet->AsConcrete()->SetDisabled(!aEnable);
}
bool
@@ -2929,12 +2924,7 @@ HTMLEditor::EnableExistingStyleSheet(const nsAString& aURL)
nsCOMPtr<nsIDocument> document = GetDocument();
sheet->SetAssociatedDocument(document, StyleSheet::NotOwnedByDocument);
if (sheet->IsServo()) {
// XXXheycam ServoStyleSheets don't support being enabled/disabled yet.
NS_ERROR("stylo: ServoStyleSheets can't be disabled yet");
return true;
}
sheet->AsGecko()->SetDisabled(false);
sheet->AsConcrete()->SetDisabled(false);
return true;
}
-177
View File
@@ -1,177 +0,0 @@
# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
# include the XUL reftests
include xul/reftest-stylo.list
== newline-1.html newline-1.html
== newline-2.html newline-2.html
== newline-3.html newline-3.html
== newline-4.html newline-4.html
== dynamic-1.html dynamic-1.html
== dynamic-type-1.html dynamic-type-1.html
== dynamic-type-2.html dynamic-type-2.html
== dynamic-type-3.html dynamic-type-3.html
== dynamic-type-4.html dynamic-type-4.html
== passwd-1.html passwd-1.html
== passwd-2.html passwd-2.html
== passwd-3.html passwd-3.html
needs-focus == passwd-4.html passwd-4.html
== emptypasswd-1.html emptypasswd-1.html
== emptypasswd-2.html emptypasswd-2.html
== caret_on_positioned.html caret_on_positioned.html
skip-if(B2G||Mulet) fails-if(Android) needs-focus == spellcheck-input-disabled.html spellcheck-input-disabled.html
# Initial mulet triage: parity with B2G/B2G Desktop
== spellcheck-input-attr-before.html spellcheck-input-attr-before.html
skip-if(B2G||Mulet) fails-if(Android) needs-focus == spellcheck-input-attr-before.html spellcheck-input-attr-before.html
# Initial mulet triage: parity with B2G/B2G Desktop
== spellcheck-input-attr-after.html spellcheck-input-attr-after.html
skip-if(B2G||Mulet) fails-if(Android) needs-focus == spellcheck-input-attr-after.html spellcheck-input-attr-after.html
# Initial mulet triage: parity with B2G/B2G Desktop
== spellcheck-input-attr-inherit.html spellcheck-input-attr-inherit.html
skip-if(B2G||Mulet) fails-if(Android) needs-focus == spellcheck-input-attr-inherit.html spellcheck-input-attr-inherit.html
# Initial mulet triage: parity with B2G/B2G Desktop
== spellcheck-input-attr-dynamic.html spellcheck-input-attr-dynamic.html
skip-if(B2G||Mulet) fails-if(Android) needs-focus == spellcheck-input-attr-dynamic.html spellcheck-input-attr-dynamic.html
# Initial mulet triage: parity with B2G/B2G Desktop
== spellcheck-input-attr-dynamic-inherit.html spellcheck-input-attr-dynamic-inherit.html
skip-if(B2G||Mulet) fails-if(Android) needs-focus == spellcheck-input-attr-dynamic-inherit.html spellcheck-input-attr-dynamic-inherit.html
# Initial mulet triage: parity with B2G/B2G Desktop
== spellcheck-input-property-dynamic.html spellcheck-input-property-dynamic.html
skip-if(B2G||Mulet) fails-if(Android) needs-focus == spellcheck-input-property-dynamic.html spellcheck-input-property-dynamic.html
# Initial mulet triage: parity with B2G/B2G Desktop
== spellcheck-input-property-dynamic-inherit.html spellcheck-input-property-dynamic-inherit.html
skip-if(B2G||Mulet) fails-if(Android) needs-focus == spellcheck-input-property-dynamic-inherit.html spellcheck-input-property-dynamic-inherit.html
# Initial mulet triage: parity with B2G/B2G Desktop
== spellcheck-input-attr-dynamic-override.html spellcheck-input-attr-dynamic-override.html
skip-if(B2G||Mulet) fails-if(Android) needs-focus == spellcheck-input-attr-dynamic-override.html spellcheck-input-attr-dynamic-override.html
# Initial mulet triage: parity with B2G/B2G Desktop
== spellcheck-input-attr-dynamic-override-inherit.html spellcheck-input-attr-dynamic-override-inherit.html
skip-if(B2G||Mulet) fails-if(Android) needs-focus == spellcheck-input-attr-dynamic-override-inherit.html spellcheck-input-attr-dynamic-override-inherit.html
# Initial mulet triage: parity with B2G/B2G Desktop
== spellcheck-input-property-dynamic-override.html spellcheck-input-property-dynamic-override.html
skip-if(B2G||Mulet) fails-if(Android) needs-focus == spellcheck-input-property-dynamic-override.html spellcheck-input-property-dynamic-override.html
# Initial mulet triage: parity with B2G/B2G Desktop
== spellcheck-input-property-dynamic-override-inherit.html spellcheck-input-property-dynamic-override-inherit.html
skip-if(B2G||Mulet) fails-if(Android) needs-focus == spellcheck-input-property-dynamic-override-inherit.html spellcheck-input-property-dynamic-override-inherit.html
# Initial mulet triage: parity with B2G/B2G Desktop
== spellcheck-textarea-attr.html spellcheck-textarea-attr.html
#the random-if(Android) tests pass on android native, but fail on android-xul, see bug 728942
skip-if(B2G||Mulet) random-if(Android) needs-focus == spellcheck-textarea-attr.html spellcheck-textarea-attr.html
# Initial mulet triage: parity with B2G/B2G Desktop
needs-focus == spellcheck-textarea-focused.html spellcheck-textarea-focused.html
needs-focus == spellcheck-textarea-focused-reframe.html spellcheck-textarea-focused-reframe.html
needs-focus == spellcheck-textarea-focused-notreadonly.html spellcheck-textarea-focused-notreadonly.html
skip-if(B2G||Mulet) random-if(Android) needs-focus == spellcheck-textarea-nofocus.html spellcheck-textarea-nofocus.html
# Initial mulet triage: parity with B2G/B2G Desktop
skip-if(B2G||Mulet) random-if(Android) needs-focus == spellcheck-textarea-disabled.html spellcheck-textarea-disabled.html
# Initial mulet triage: parity with B2G/B2G Desktop
skip-if(B2G||Mulet) random-if(Android) needs-focus == spellcheck-textarea-attr-inherit.html spellcheck-textarea-attr-inherit.html
# Initial mulet triage: parity with B2G/B2G Desktop
skip-if(B2G||Mulet) random-if(Android) needs-focus == spellcheck-textarea-attr-dynamic.html spellcheck-textarea-attr-dynamic.html
# Initial mulet triage: parity with B2G/B2G Desktop
skip-if(B2G||Mulet) random-if(Android) needs-focus == spellcheck-textarea-attr-dynamic-inherit.html spellcheck-textarea-attr-dynamic-inherit.html
# Initial mulet triage: parity with B2G/B2G Desktop
skip-if(B2G||Mulet) random-if(Android) needs-focus == spellcheck-textarea-property-dynamic.html spellcheck-textarea-property-dynamic.html
# Initial mulet triage: parity with B2G/B2G Desktop
skip-if(B2G||Mulet) random-if(Android) needs-focus == spellcheck-textarea-property-dynamic-inherit.html spellcheck-textarea-property-dynamic-inherit.html
# Initial mulet triage: parity with B2G/B2G Desktop
skip-if(B2G||Mulet) random-if(Android) needs-focus == spellcheck-textarea-attr-dynamic-override.html spellcheck-textarea-attr-dynamic-override.html
# Initial mulet triage: parity with B2G/B2G Desktop
skip-if(B2G||Mulet) random-if(Android) needs-focus == spellcheck-textarea-attr-dynamic-override-inherit.html spellcheck-textarea-attr-dynamic-override-inherit.html
# Initial mulet triage: parity with B2G/B2G Desktop
skip-if(B2G||Mulet) random-if(Android) needs-focus == spellcheck-textarea-property-dynamic-override.html spellcheck-textarea-property-dynamic-override.html
# Initial mulet triage: parity with B2G/B2G Desktop
skip-if(B2G||Mulet) random-if(Android) needs-focus == spellcheck-textarea-property-dynamic-override-inherit.html spellcheck-textarea-property-dynamic-override-inherit.html
# Initial mulet triage: parity with B2G/B2G Desktop
needs-focus == caret_on_focus.html caret_on_focus.html
needs-focus == caret_on_textarea_lastline.html caret_on_textarea_lastline.html
needs-focus == input-text-onfocus-reframe.html input-text-onfocus-reframe.html
needs-focus == input-text-notheme-onfocus-reframe.html input-text-notheme-onfocus-reframe.html
skip-if(B2G||Mulet) needs-focus == caret_after_reframe.html caret_after_reframe.html
# B2G timed out waiting for reftest-wait to be removed
# Initial mulet triage: parity with B2G/B2G Desktop
== nobogusnode-1.html nobogusnode-1.html
== nobogusnode-2.html nobogusnode-2.html
== spellcheck-hyphen-valid.html spellcheck-hyphen-valid.html
skip-if(B2G||Mulet) fails-if(Android) needs-focus == spellcheck-hyphen-invalid.html spellcheck-hyphen-invalid.html
# Initial mulet triage: parity with B2G/B2G Desktop
== spellcheck-slash-valid.html spellcheck-slash-valid.html
== spellcheck-period-valid.html spellcheck-period-valid.html
== spellcheck-space-valid.html spellcheck-space-valid.html
== spellcheck-comma-valid.html spellcheck-comma-valid.html
== spellcheck-hyphen-multiple-valid.html spellcheck-hyphen-multiple-valid.html
skip-if(B2G||Mulet) fails-if(Android) needs-focus == spellcheck-hyphen-multiple-invalid.html spellcheck-hyphen-multiple-invalid.html
# Initial mulet triage: parity with B2G/B2G Desktop
== spellcheck-dotafterquote-valid.html spellcheck-dotafterquote-valid.html
== spellcheck-url-valid.html spellcheck-url-valid.html
needs-focus == spellcheck-non-latin-arabic.html spellcheck-non-latin-arabic.html
needs-focus == spellcheck-non-latin-chinese-simplified.html spellcheck-non-latin-chinese-simplified.html
needs-focus == spellcheck-non-latin-chinese-traditional.html spellcheck-non-latin-chinese-traditional.html
needs-focus == spellcheck-non-latin-hebrew.html spellcheck-non-latin-hebrew.html
needs-focus == spellcheck-non-latin-japanese.html spellcheck-non-latin-japanese.html
needs-focus == spellcheck-non-latin-korean.html spellcheck-non-latin-korean.html
== unneeded_scroll.html unneeded_scroll.html
skip-if(B2G||Mulet) == caret_on_presshell_reinit.html caret_on_presshell_reinit.html
# Initial mulet triage: parity with B2G/B2G Desktop
fuzzy-if(browserIsRemote,255,3) asserts-if(browserIsRemote,0-1) skip-if(B2G||Mulet) fuzzy-if(skiaContent,1,5) == caret_on_presshell_reinit-2.html caret_on_presshell_reinit-2.html
# Initial mulet triage: parity with B2G/B2G Desktop
skip-if(B2G||Mulet) fuzzy-if(asyncPan&&!layersGPUAccelerated,102,2824) == 642800.html 642800.html
# Initial mulet triage: parity with B2G/B2G Desktop
== selection_visibility_after_reframe.html selection_visibility_after_reframe.html
== selection_visibility_after_reframe-2.html selection_visibility_after_reframe-2.html
== selection_visibility_after_reframe-3.html selection_visibility_after_reframe-3.html
== 672709.html 672709.html
== 338427-1.html 338427-1.html
skip-if(Android||B2G||Mulet) needs-focus == 674212-spellcheck.html 674212-spellcheck.html
# Initial mulet triage: parity with B2G/B2G Desktop
skip-if(Android||B2G||Mulet) needs-focus == 338427-2.html 338427-2.html
# Initial mulet triage: parity with B2G/B2G Desktop
skip-if(Android||B2G||Mulet) needs-focus == 338427-3.html 338427-3.html
# Initial mulet triage: parity with B2G/B2G Desktop
skip-if(Android||B2G||Mulet) needs-focus == 462758-grabbers-resizers.html 462758-grabbers-resizers.html
# Initial mulet triage: parity with B2G/B2G Desktop
== readwrite-non-editable.html readwrite-non-editable.html
== readwrite-editable.html readwrite-editable.html
== readonly-non-editable.html readonly-non-editable.html
== readonly-editable.html readonly-editable.html
== dynamic-overflow-change.html dynamic-overflow-change.html
== 694880-1.html 694880-1.html
== 694880-2.html 694880-2.html
== 694880-3.html 694880-3.html
skip == 388980-1.html 388980-1.html
needs-focus == spellcheck-superscript-1.html spellcheck-superscript-1.html
skip-if(B2G||Mulet) fails-if(Android) needs-focus == spellcheck-superscript-2.html spellcheck-superscript-2.html
# bug 783658
# Initial mulet triage: parity with B2G/B2G Desktop
fuzzy-if(skiaContent,1,3400) needs-focus pref(layout.accessiblecaret.enabled,false) == 824080-1.html 824080-1.html
needs-focus pref(layout.accessiblecaret.enabled,false) == 824080-2.html 824080-2.html
needs-focus pref(layout.accessiblecaret.enabled,false) == 824080-3.html 824080-3.html
needs-focus == 824080-2.html 824080-2.html
fuzzy-if(skiaContent,1,3200) needs-focus pref(layout.accessiblecaret.enabled,false) == 824080-4.html 824080-4.html
fails fuzzy-if(skiaContent,2,1800) needs-focus pref(layout.accessiblecaret.enabled,false) == 824080-5.html 824080-5.html
needs-focus == 824080-4.html 824080-4.html
needs-focus == 824080-6.html 824080-6.html
needs-focus pref(layout.accessiblecaret.enabled,false) == 824080-7.html 824080-7.html
needs-focus == 824080-6.html 824080-6.html
# Bug 674927: copy spellcheck-textarea tests to contenteditable
== spellcheck-contenteditable-attr.html spellcheck-contenteditable-attr.html
fails-if(Android||B2G||Mulet) needs-focus == spellcheck-contenteditable-attr.html spellcheck-contenteditable-attr.html
# B2G no spellcheck underline
# Initial mulet triage: parity with B2G/B2G Desktop
needs-focus == spellcheck-contenteditable-focused.html spellcheck-contenteditable-focused.html
needs-focus == spellcheck-contenteditable-focused-reframe.html spellcheck-contenteditable-focused-reframe.html
== spellcheck-contenteditable-nofocus.html spellcheck-contenteditable-nofocus.html
== spellcheck-contenteditable-disabled.html spellcheck-contenteditable-disabled.html
== spellcheck-contenteditable-disabled-partial.html spellcheck-contenteditable-disabled-partial.html
== spellcheck-contenteditable-attr-inherit.html spellcheck-contenteditable-attr-inherit.html
== spellcheck-contenteditable-attr-dynamic.html spellcheck-contenteditable-attr-dynamic.html
== spellcheck-contenteditable-attr-dynamic-inherit.html spellcheck-contenteditable-attr-dynamic-inherit.html
== spellcheck-contenteditable-property-dynamic.html spellcheck-contenteditable-property-dynamic.html
== spellcheck-contenteditable-property-dynamic-inherit.html spellcheck-contenteditable-property-dynamic-inherit.html
== spellcheck-contenteditable-attr-dynamic-override.html spellcheck-contenteditable-attr-dynamic-override.html
== spellcheck-contenteditable-attr-dynamic-override-inherit.html spellcheck-contenteditable-attr-dynamic-override-inherit.html
== spellcheck-contenteditable-property-dynamic-override.html spellcheck-contenteditable-property-dynamic-override.html
== spellcheck-contenteditable-property-dynamic-override-inherit.html spellcheck-contenteditable-property-dynamic-override-inherit.html
== 911201.html 911201.html
needs-focus == 969773.html 969773.html
fails fuzzy-if(skiaContent,1,220) == 997805.html 997805.html
fails fuzzy-if(skiaContent,1,220) == 1088158.html 1088158.html
-67
View File
@@ -1,67 +0,0 @@
# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
fails-if(Android||B2G) skip-if((B2G&&browserIsRemote)||Mulet||((browserIsRemote&&winWidget))) == empty-1.xul empty-1.xul
# bug 783658
# Initial mulet triage: parity with B2G/B2G Desktop, Windows: bug 1239170
skip-if((B2G&&browserIsRemote)||Mulet) == empty-2.xul empty-2.xul
# Initial mulet triage: parity with B2G/B2G Desktop
# There is no way to simulate an autocomplete textbox in windows XP/Vista/7/8/10 default theme using CSS.
# Therefore, the equlity tests below should be marked as failing.
fails-if(Android||B2G) fails-if(windowsDefaultTheme&&/^Windows\x20NT\x20(5\.[12]|6\.[012]|10\.0)/.test(http.oscpu)) skip-if((B2G&&browserIsRemote)||Mulet) == autocomplete-1.xul autocomplete-1.xul
# bug 783658
# Initial mulet triage: parity with B2G/B2G Desktop
fails-if(Android||B2G) fails-if(windowsDefaultTheme&&/^Windows\x20NT\x20(5\.[12]|6\.[012]|10\.0)/.test(http.oscpu)) skip-if((B2G&&browserIsRemote)||Mulet) == emptyautocomplete-1.xul emptyautocomplete-1.xul
# bug 783658
# Initial mulet triage: parity with B2G/B2G Desktop
skip-if((B2G&&browserIsRemote)||Mulet) == emptymultiline-1.xul emptymultiline-1.xul
# Initial mulet triage: parity with B2G/B2G Desktop
fails-if(Android||B2G) skip-if((B2G&&browserIsRemote)||Mulet) == emptymultiline-2.xul emptymultiline-2.xul
# bug 783658
# Initial mulet triage: parity with B2G/B2G Desktop
fails-if(Android||B2G) skip-if((B2G&&browserIsRemote)||Mulet||((browserIsRemote&&winWidget))) == emptytextbox-1.xul emptytextbox-1.xul
# bug 783658
# Initial mulet triage: parity with B2G/B2G Desktop, Windows: bug 1239170
fails-if(Android||B2G) skip-if((B2G&&browserIsRemote)||Mulet||((browserIsRemote&&winWidget))) == emptytextbox-2.xul emptytextbox-2.xul
# bug 783658
# Initial mulet triage: parity with B2G/B2G Desktop, Windows: bug 1239170
fails skip-if((B2G&&browserIsRemote)||Mulet) == emptytextbox-3.xul emptytextbox-3.xul
# Initial mulet triage: parity with B2G/B2G Desktop
skip-if((B2G&&browserIsRemote)||Mulet) == emptytextbox-4.xul emptytextbox-4.xul
# Initial mulet triage: parity with B2G/B2G Desktop
fails-if(Android||B2G) skip-if((B2G&&browserIsRemote)||Mulet||((browserIsRemote&&winWidget))) == emptytextbox-5.xul emptytextbox-5.xul
# bug 783658
# Initial mulet triage: parity with B2G/B2G Desktop, Windows: bug 1239170
# There is no way to simulate a number textbox in windows XP/Vista/7 default theme using CSS.
# Therefore, the equlity tests below should be marked as failing.
skip-if((B2G&&browserIsRemote)||Mulet) == number-1.xul number-1.xul
# Initial mulet triage: parity with B2G/B2G Desktop
skip-if((B2G&&browserIsRemote)||Mulet) == number-2.xul number-2.xul
# Initial mulet triage: parity with B2G/B2G Desktop
fails-if(Android||B2G) fails-if(windowsDefaultTheme&&/^Windows\x20NT\x20(5\.[12]|6\.[012]|10\.0)/.test(http.oscpu)) skip-if((B2G&&browserIsRemote)||Mulet) == number-3.xul number-3.xul
# bug 783658
# Initial mulet triage: parity with B2G/B2G Desktop
skip-if((B2G&&browserIsRemote)||Mulet) == number-4.xul number-4.xul
# Initial mulet triage: parity with B2G/B2G Desktop
fails-if(Android||B2G) fails-if(windowsDefaultTheme&&/^Windows\x20NT\x20(5\.[12]|6\.[012]|10\.0)/.test(http.oscpu)) skip-if((B2G&&browserIsRemote)||Mulet) == number-5.xul number-5.xul
# bug 783658
# Initial mulet triage: parity with B2G/B2G Desktop
fails-if(Android||B2G) fails-if(windowsDefaultTheme&&/^Windows\x20NT\x20(5\.[12]|6\.[012]|10\.0)/.test(http.oscpu)) skip-if((B2G&&browserIsRemote)||Mulet) == numberwithvalue-1.xul numberwithvalue-1.xul
# bug 783658
# Initial mulet triage: parity with B2G/B2G Desktop
fails-if(Android||B2G) skip-if((B2G&&browserIsRemote)||Mulet||((browserIsRemote&&winWidget))) == passwd-1.xul passwd-1.xul
# bug 783658
# Initial mulet triage: parity with B2G/B2G Desktop, Windows: bug 1239170
fails-if(Android||B2G) skip-if((B2G&&browserIsRemote)||Mulet||((browserIsRemote&&winWidget))) == passwd-2.xul passwd-2.xul
# bug 783658
# Initial mulet triage: parity with B2G/B2G Desktop, Windows: bug 1239170
skip-if((B2G&&browserIsRemote)||Mulet) == passwd-3.xul passwd-3.xul
# Initial mulet triage: parity with B2G/B2G Desktop
fails-if(Android||B2G) skip-if((B2G&&browserIsRemote)||Mulet) == plain-1.xul plain-1.xul
# bug 783658
# Initial mulet triage: parity with B2G/B2G Desktop
fails-if(Android||B2G) skip-if((B2G&&browserIsRemote)||Mulet||(browserIsRemote&&winWidget)) == textbox-1.xul textbox-1.xul
# Initial mulet triage: parity with B2G/B2G Desktop, Windows: bug 1239170
skip-if((B2G&&browserIsRemote)||Mulet) == textbox-disabled.xul textbox-disabled.xul
# Initial mulet triage: parity with B2G/B2G Desktop
# Read-only textboxes look like normal textboxes in windows Vista/7 default theme
fails-if(windowsDefaultTheme&&/^Windows\x20NT\x20(6\.[012]|10\.0)/.test(http.oscpu)) skip-if((B2G&&browserIsRemote)||Mulet||(browserIsRemote&&winWidget)) == textbox-readonly.xul textbox-readonly.xul
# Initial mulet triage: parity with B2G/B2G Desktop, Windows: bug 1239170
@@ -1,20 +0,0 @@
# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
# The following tests test the async positioning of the scrollbars.
# Basic root-frame scrollbar with async scrolling
skip-if(!asyncPan) fuzzy-if(Android,6,8) == async-scrollbar-1-v.html async-scrollbar-1-v.html
skip-if(!asyncPan) fuzzy-if(Android,6,8) == async-scrollbar-1-h.html async-scrollbar-1-h.html
skip-if(!asyncPan) fuzzy-if(Android,6,8) == async-scrollbar-1-vh.html async-scrollbar-1-vh.html
skip-if(!asyncPan) fuzzy-if(Android,6,8) == async-scrollbar-1-v-rtl.html async-scrollbar-1-v-rtl.html
skip-if(!asyncPan) fuzzy-if(Android,13,8) == async-scrollbar-1-h-rtl.html async-scrollbar-1-h-rtl.html
skip-if(!asyncPan) fuzzy-if(Android,8,10) == async-scrollbar-1-vh-rtl.html async-scrollbar-1-vh-rtl.html
# Different async zoom levels. Since the scrollthumb gets async-scaled in the
# compositor, the border-radius ends of the scrollthumb are going to be a little
# off, hence the fuzzy-if clauses.
skip-if(!asyncZoom) fuzzy-if(B2G,98,82) == async-scrollbar-zoom-1.html async-scrollbar-zoom-1.html
skip-if(!asyncZoom) fuzzy-if(B2G,94,146) == async-scrollbar-zoom-2.html async-scrollbar-zoom-2.html
# Meta-viewport tag support
skip-if(!asyncZoom) == initial-scale-1.html initial-scale-1.html
skip-if(!asyncPan) == frame-reconstruction-scroll-clamping.html frame-reconstruction-scroll-clamping.html
+1 -3
View File
@@ -6,8 +6,6 @@
#include "ActiveElementManager.h"
#include "mozilla/EventStateManager.h"
#include "mozilla/EventStates.h"
#include "mozilla/StyleSetHandle.h"
#include "mozilla/StyleSetHandleInlines.h"
#include "mozilla/Preferences.h"
#include "base/message_loop.h"
#include "base/task.h"
@@ -166,7 +164,7 @@ ElementHasActiveStyle(dom::Element* aElement)
if (!pc) {
return false;
}
StyleSetHandle styleSet = pc->StyleSet();
nsStyleSet* styleSet = pc->StyleSet();
for (dom::Element* e = aElement; e; e = e->GetParentElement()) {
if (styleSet->HasStateDependentStyle(e, NS_EVENT_STATE_ACTIVE)) {
AEM_LOG("Element %p's style is dependent on the active state\n", e);
-12
View File
@@ -1,12 +0,0 @@
# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
# 468496-1 will also detect bugs in video drivers.
== 468496-1.html 468496-1.html
skip == 611498-1.html 611498-1.html
skip == 709477-1.html 709477-1.html
# bug 773482
skip-if(!asyncPan) == 1086723.html 1086723.html
== 853889-1.html 853889-1.html
skip-if(Android) fuzzy-if(skiaContent,1,587) == 1143303-1.svg 1143303-1.svg
== 1149923.html 1149923.html
# use fuzzy due to few distorted pixels caused by border-radius
== 1131264-1.svg 1131264-1.svg
+6 -7
View File
@@ -212,13 +212,12 @@ gfxPlatformGtk::GetCommonFallbackFonts(uint32_t aCh, uint32_t aNextCh,
nsTArray<const char*>& aFontList)
{
EmojiPresentation emoji = GetEmojiPresentation(aCh);
if (emoji != EmojiPresentation::TextOnly) {
if (aNextCh == kVariationSelector16 ||
(aNextCh != kVariationSelector15 &&
emoji == EmojiPresentation::EmojiDefault)) {
// if char is followed by VS16, try for a color emoji glyph
aFontList.AppendElement(kFontTwemojiMozilla);
}
EmojiPresentation eNext = GetEmojiPresentation(aNextCh);
if (aNextCh != kVariationSelector15 &&
emoji != EmojiPresentation::TextOnly &&
(emoji != EmojiPresentation::TextDefault ||
eNext == EmojiPresentation::EmojiComponent)) {
aFontList.AppendElement(kFontTwemojiMozilla);
}
aFontList.AppendElement(kFontDejaVuSerif);
+6 -7
View File
@@ -191,13 +191,12 @@ gfxPlatformMac::GetCommonFallbackFonts(uint32_t aCh, uint32_t aNextCh,
nsTArray<const char*>& aFontList)
{
EmojiPresentation emoji = GetEmojiPresentation(aCh);
if (emoji != EmojiPresentation::TextOnly) {
if (aNextCh == kVariationSelector16 ||
(aNextCh != kVariationSelector15 &&
emoji == EmojiPresentation::EmojiDefault)) {
// if char is followed by VS16, try for a color emoji glyph
aFontList.AppendElement(kFontAppleColorEmoji);
}
EmojiPresentation eNext = GetEmojiPresentation(aNextCh);
if (aNextCh != kVariationSelector15 &&
emoji != EmojiPresentation::TextOnly &&
(emoji != EmojiPresentation::TextDefault ||
eNext == EmojiPresentation::EmojiComponent)) {
aFontList.AppendElement(kFontAppleColorEmoji);
}
aFontList.AppendElement(kFontLucidaGrande);
+77 -73
View File
@@ -2672,8 +2672,9 @@ gfxFontGroup::FindFontForChar(uint32_t aCh, uint32_t aPrevCh, uint32_t aNextCh,
bool isJoinControl = gfxFontUtils::IsJoinControl(aCh);
bool wasJoinCauser = gfxFontUtils::IsJoinCauser(aPrevCh);
bool isVarSelector = gfxFontUtils::IsVarSelector(aCh);
bool willEmoji = (aNextCh == gfxFontUtils::kUnicodeVS16 || aNextCh == 0x20E3);
if (!isJoinControl && !wasJoinCauser && !isVarSelector) {
if (!isJoinControl && !wasJoinCauser && !isVarSelector && !willEmoji) {
RefPtr<gfxFont> firstFont = GetFontAt(0, aCh);
if (firstFont) {
if (firstFont->HasCharacter(aCh)) {
@@ -2744,93 +2745,95 @@ gfxFontGroup::FindFontForChar(uint32_t aCh, uint32_t aPrevCh, uint32_t aNextCh,
}
// 1. check remaining fonts in the font group
uint32_t fontListLength = mFonts.Length();
for (uint32_t i = nextIndex; i < fontListLength; i++) {
FamilyFace& ff = mFonts[i];
if (ff.IsInvalid() || ff.IsLoading()) {
continue;
}
// if available, use already made gfxFont and check for character
RefPtr<gfxFont> font = ff.Font();
if (font) {
if (font->HasCharacter(aCh)) {
return font.forget();
}
continue;
}
// don't have a gfxFont yet, test before building
gfxFontEntry *fe = ff.FontEntry();
if (fe->mIsUserFontContainer) {
// for userfonts, need to test both the unicode range map and
// the cmap of the platform font entry
gfxUserFontEntry* ufe = static_cast<gfxUserFontEntry*>(fe);
// never match a character outside the defined unicode range
if (!ufe->CharacterInUnicodeRange(aCh)) {
if (!willEmoji) {
uint32_t fontListLength = mFonts.Length();
for (uint32_t i = nextIndex; i < fontListLength; i++) {
FamilyFace& ff = mFonts[i];
if (ff.IsInvalid() || ff.IsLoading()) {
continue;
}
// load if not already loaded but only if no other font in similar
// range within family is loading
if (ufe->LoadState() == gfxUserFontEntry::STATUS_NOT_LOADED &&
!FontLoadingForFamily(ff.Family(), aCh)) {
ufe->Load();
ff.CheckState(mSkipDrawing);
// if available, use already made gfxFont and check for character
RefPtr<gfxFont> font = ff.Font();
if (font) {
if (font->HasCharacter(aCh)) {
return font.forget();
}
continue;
}
gfxFontEntry* pfe = ufe->GetPlatformFontEntry();
if (pfe && pfe->HasCharacter(aCh)) {
// don't have a gfxFont yet, test before building
gfxFontEntry *fe = ff.FontEntry();
if (fe->mIsUserFontContainer) {
// for userfonts, need to test both the unicode range map and
// the cmap of the platform font entry
gfxUserFontEntry* ufe = static_cast<gfxUserFontEntry*>(fe);
// never match a character outside the defined unicode range
if (!ufe->CharacterInUnicodeRange(aCh)) {
continue;
}
// load if not already loaded but only if no other font in similar
// range within family is loading
if (ufe->LoadState() == gfxUserFontEntry::STATUS_NOT_LOADED &&
!FontLoadingForFamily(ff.Family(), aCh)) {
ufe->Load();
ff.CheckState(mSkipDrawing);
}
gfxFontEntry* pfe = ufe->GetPlatformFontEntry();
if (pfe && pfe->HasCharacter(aCh)) {
font = GetFontAt(i, aCh);
if (font) {
*aMatchType = gfxTextRange::kFontGroup;
return font.forget();
}
}
} else if (fe->HasCharacter(aCh)) {
// for normal platform fonts, after checking the cmap
// build the font via GetFontAt
font = GetFontAt(i, aCh);
if (font) {
*aMatchType = gfxTextRange::kFontGroup;
return font.forget();
}
}
} else if (fe->HasCharacter(aCh)) {
// for normal platform fonts, after checking the cmap
// build the font via GetFontAt
font = GetFontAt(i, aCh);
if (font) {
*aMatchType = gfxTextRange::kFontGroup;
return font.forget();
}
}
// check other family faces if needed
if (ff.CheckForFallbackFaces()) {
NS_ASSERTION(i == 0 ? true :
!mFonts[i-1].CheckForFallbackFaces() ||
!mFonts[i-1].Family()->Name().Equals(ff.Family()->Name()),
"should only do fallback once per font family");
font = FindFallbackFaceForChar(ff.Family(), aCh, aRunScript);
if (font) {
*aMatchType = gfxTextRange::kFontGroup;
return font.forget();
}
} else {
// For platform fonts, but not user fonts, consider intra-family
// fallback to handle styles with reduced character sets (see
// also above).
fe = ff.FontEntry();
if (!fe->mIsUserFontContainer && !fe->IsUserFont() &&
(!fe->IsUpright() ||
fe->Weight() != NS_FONT_WEIGHT_NORMAL ||
fe->Stretch() != NS_FONT_STRETCH_NORMAL)) {
// check other family faces if needed
if (ff.CheckForFallbackFaces()) {
NS_ASSERTION(i == 0 ? true :
!mFonts[i-1].CheckForFallbackFaces() ||
!mFonts[i-1].Family()->Name().Equals(ff.Family()->Name()),
"should only do fallback once per font family");
font = FindFallbackFaceForChar(ff.Family(), aCh, aRunScript);
if (font) {
*aMatchType = gfxTextRange::kFontGroup;
return font.forget();
}
} else {
// For platform fonts, but not user fonts, consider intra-family
// fallback to handle styles with reduced character sets (see
// also above).
fe = ff.FontEntry();
if (!fe->mIsUserFontContainer && !fe->IsUserFont() &&
(!fe->IsUpright() ||
fe->Weight() != NS_FONT_WEIGHT_NORMAL ||
fe->Stretch() != NS_FONT_STRETCH_NORMAL)) {
font = FindFallbackFaceForChar(ff.Family(), aCh, aRunScript);
if (font) {
*aMatchType = gfxTextRange::kFontGroup;
return font.forget();
}
}
}
}
}
if (fontListLength == 0) {
RefPtr<gfxFont> defaultFont = GetDefaultFont();
if (defaultFont->HasCharacter(aCh)) {
*aMatchType = gfxTextRange::kFontGroup;
return defaultFont.forget();
if (fontListLength == 0) {
RefPtr<gfxFont> defaultFont = GetDefaultFont();
if (defaultFont->HasCharacter(aCh)) {
*aMatchType = gfxTextRange::kFontGroup;
return defaultFont.forget();
}
}
}
@@ -3113,10 +3116,11 @@ gfxFontGroup::WhichPrefFontSupportsChar(uint32_t aCh, uint32_t aNextCh)
gfxPlatformFontList* pfl = gfxPlatformFontList::PlatformFontList();
EmojiPresentation emoji = GetEmojiPresentation(aCh);
if ((emoji != EmojiPresentation::TextOnly &&
(aNextCh == kVariationSelector16 ||
(emoji == EmojiPresentation::EmojiDefault &&
aNextCh != kVariationSelector15)))) {
EmojiPresentation eNext = GetEmojiPresentation(aNextCh);
if (aNextCh != kVariationSelector15 &&
emoji != EmojiPresentation::TextOnly &&
(emoji != EmojiPresentation::TextDefault ||
eNext == EmojiPresentation::EmojiComponent)) {
charLang = eFontPrefLang_Emoji;
} else {
// get the pref font list if it hasn't been set up already
+6 -8
View File
@@ -638,14 +638,12 @@ gfxWindowsPlatform::GetCommonFallbackFonts(uint32_t aCh, uint32_t aNextCh,
nsTArray<const char*>& aFontList)
{
EmojiPresentation emoji = GetEmojiPresentation(aCh);
if (emoji != EmojiPresentation::TextOnly) {
if (aNextCh == kVariationSelector16 ||
(aNextCh != kVariationSelector15 &&
emoji == EmojiPresentation::EmojiDefault)) {
// if char is followed by VS16, try for a color emoji glyph
// XXX: For Win8+ native, aFontList.AppendElement(kFontSegoeUIEmoji);
aFontList.AppendElement(kFontTwemojiMozilla);
}
EmojiPresentation eNext = GetEmojiPresentation(aNextCh);
if (aNextCh != kVariationSelector15 &&
emoji != EmojiPresentation::TextOnly &&
(emoji != EmojiPresentation::TextDefault ||
eNext == EmojiPresentation::EmojiComponent)) {
aFontList.AppendElement(kFontTwemojiMozilla);
}
// Arial is used as the default fallback for system fallback
@@ -1,7 +0,0 @@
# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
# APNG tests
#
# delaytest.html delays the reftest snapshot to allow time for the
# animation to complete.
random == delaytest.html?bug411852-1.png delaytest.html?bug411852-1.png
random == delaytest.html?bug546272.png delaytest.html?bug546272.png
@@ -1,8 +0,0 @@
# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
# Blob URI tests
# Test that blob URIs don't get merged if they have different ref params.
# (We run the test twice to check both cached and non-cached cases.)
default-preferences pref(image.mozsamplesize.enabled,true)
== blob-uri-with-ref-param.html blob-uri-with-ref-param.html
== blob-uri-with-ref-param.html blob-uri-with-ref-param.html
@@ -1,22 +0,0 @@
# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
# BMP 1BPP tests
# Images of various sizes
fails == bmp-size-1x1-1bpp.bmp bmp-size-1x1-1bpp.bmp
fails == bmp-size-2x2-1bpp.bmp bmp-size-2x2-1bpp.bmp
fails == bmp-size-3x3-1bpp.bmp bmp-size-3x3-1bpp.bmp
fails == bmp-size-4x4-1bpp.bmp bmp-size-4x4-1bpp.bmp
fails == bmp-size-5x5-1bpp.bmp bmp-size-5x5-1bpp.bmp
fails == bmp-size-6x6-1bpp.bmp bmp-size-6x6-1bpp.bmp
fails == bmp-size-7x7-1bpp.bmp bmp-size-7x7-1bpp.bmp
fails == bmp-size-8x8-1bpp.bmp bmp-size-8x8-1bpp.bmp
fails == bmp-size-9x9-1bpp.bmp bmp-size-9x9-1bpp.bmp
fails == bmp-size-15x15-1bpp.bmp bmp-size-15x15-1bpp.bmp
fails == bmp-size-16x16-1bpp.bmp bmp-size-16x16-1bpp.bmp
fails == bmp-size-17x17-1bpp.bmp bmp-size-17x17-1bpp.bmp
fails == bmp-size-31x31-1bpp.bmp bmp-size-31x31-1bpp.bmp
fails == bmp-size-32x32-1bpp.bmp bmp-size-32x32-1bpp.bmp
fails == bmp-size-33x33-1bpp.bmp bmp-size-33x33-1bpp.bmp
fails == bmp-not-square-1bpp.bmp bmp-not-square-1bpp.bmp
fails == os2bmp-size-32x32-1bpp.bmp os2bmp-size-32x32-1bpp.bmp
fails == top-to-bottom-16x16-1bpp.bmp top-to-bottom-16x16-1bpp.bmp
@@ -1,22 +0,0 @@
# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
# BMP 24BPP tests
# Images of various sizes
fails == bmp-size-1x1-24bpp.bmp bmp-size-1x1-24bpp.bmp
fails == bmp-size-2x2-24bpp.bmp bmp-size-2x2-24bpp.bmp
fails == bmp-size-3x3-24bpp.bmp bmp-size-3x3-24bpp.bmp
fails == bmp-size-4x4-24bpp.bmp bmp-size-4x4-24bpp.bmp
fails == bmp-size-5x5-24bpp.bmp bmp-size-5x5-24bpp.bmp
fails == bmp-size-6x6-24bpp.bmp bmp-size-6x6-24bpp.bmp
fails == bmp-size-7x7-24bpp.bmp bmp-size-7x7-24bpp.bmp
fails == bmp-size-8x8-24bpp.bmp bmp-size-8x8-24bpp.bmp
fails == bmp-size-9x9-24bpp.bmp bmp-size-9x9-24bpp.bmp
fails == bmp-size-15x15-24bpp.bmp bmp-size-15x15-24bpp.bmp
fails == bmp-size-16x16-24bpp.bmp bmp-size-16x16-24bpp.bmp
fails == bmp-size-17x17-24bpp.bmp bmp-size-17x17-24bpp.bmp
fails == bmp-size-31x31-24bpp.bmp bmp-size-31x31-24bpp.bmp
fails == bmp-size-32x32-24bpp.bmp bmp-size-32x32-24bpp.bmp
fails == bmp-size-33x33-24bpp.bmp bmp-size-33x33-24bpp.bmp
fails == bmp-not-square-24bpp.bmp bmp-not-square-24bpp.bmp
fails == os2bmp-size-32x32-24bpp.bmp os2bmp-size-32x32-24bpp.bmp
fails == top-to-bottom-16x16-24bpp.bmp top-to-bottom-16x16-24bpp.bmp
@@ -1,25 +0,0 @@
# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
# BMP 4BPP tests
# Images of various sizes
fails == bmp-size-1x1-4bpp.bmp bmp-size-1x1-4bpp.bmp
fails == bmp-size-2x2-4bpp.bmp bmp-size-2x2-4bpp.bmp
fails == bmp-size-3x3-4bpp.bmp bmp-size-3x3-4bpp.bmp
fails == bmp-size-4x4-4bpp.bmp bmp-size-4x4-4bpp.bmp
fails == bmp-size-5x5-4bpp.bmp bmp-size-5x5-4bpp.bmp
fails == bmp-size-6x6-4bpp.bmp bmp-size-6x6-4bpp.bmp
fails == bmp-size-7x7-4bpp.bmp bmp-size-7x7-4bpp.bmp
fails == bmp-size-8x8-4bpp.bmp bmp-size-8x8-4bpp.bmp
fails == bmp-size-9x9-4bpp.bmp bmp-size-9x9-4bpp.bmp
fails == bmp-size-15x15-4bpp.bmp bmp-size-15x15-4bpp.bmp
skip == bmp-size-16x16-4bpp.bmp bmp-size-16x16-4bpp.bmp
fails == bmp-size-17x17-4bpp.bmp bmp-size-17x17-4bpp.bmp
fails == bmp-size-31x31-4bpp.bmp bmp-size-31x31-4bpp.bmp
fails == bmp-size-32x32-4bpp.bmp bmp-size-32x32-4bpp.bmp
fails == bmp-size-33x33-4bpp.bmp bmp-size-33x33-4bpp.bmp
fails == bmp-not-square-4bpp.bmp bmp-not-square-4bpp.bmp
fails == os2bmp-size-32x32-4bpp.bmp os2bmp-size-32x32-4bpp.bmp
fails == top-to-bottom-16x16-4bpp.bmp top-to-bottom-16x16-4bpp.bmp
# test that delta skips are drawn as transparent
# taken from http://bmptestsuite.sourceforge.net/
== rle4-delta-320x240.bmp rle4-delta-320x240.bmp
@@ -1,25 +0,0 @@
# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
# BMP 8BPP tests
# Images of various sizes
fails == bmp-size-1x1-8bpp.bmp bmp-size-1x1-8bpp.bmp
fails == bmp-size-2x2-8bpp.bmp bmp-size-2x2-8bpp.bmp
fails == bmp-size-3x3-8bpp.bmp bmp-size-3x3-8bpp.bmp
fails == bmp-size-4x4-8bpp.bmp bmp-size-4x4-8bpp.bmp
fails == bmp-size-5x5-8bpp.bmp bmp-size-5x5-8bpp.bmp
fails == bmp-size-6x6-8bpp.bmp bmp-size-6x6-8bpp.bmp
fails == bmp-size-7x7-8bpp.bmp bmp-size-7x7-8bpp.bmp
fails == bmp-size-8x8-8bpp.bmp bmp-size-8x8-8bpp.bmp
fails == bmp-size-9x9-8bpp.bmp bmp-size-9x9-8bpp.bmp
fails == bmp-size-15x15-8bpp.bmp bmp-size-15x15-8bpp.bmp
fails == bmp-size-16x16-8bpp.bmp bmp-size-16x16-8bpp.bmp
fails == bmp-size-17x17-8bpp.bmp bmp-size-17x17-8bpp.bmp
fails == bmp-size-31x31-8bpp.bmp bmp-size-31x31-8bpp.bmp
fails == bmp-size-32x32-8bpp.bmp bmp-size-32x32-8bpp.bmp
fails == bmp-size-33x33-8bpp.bmp bmp-size-33x33-8bpp.bmp
fails == bmp-not-square-8bpp.bmp bmp-not-square-8bpp.bmp
random == rle-bmp-not-square-8bpp.bmp rle-bmp-not-square-8bpp.bmp
fails == os2-bmp-size-32x32-8bpp.bmp os2-bmp-size-32x32-8bpp.bmp
random == rle-bmp-size-32x32-8bpp.bmp rle-bmp-size-32x32-8bpp.bmp
== top-to-bottom-rle-bmp-size-32x32-8bpp.bmp top-to-bottom-rle-bmp-size-32x32-8bpp.bmp
fails == top-to-bottom-16x16-8bpp.bmp top-to-bottom-16x16-8bpp.bmp
@@ -1,19 +0,0 @@
# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
# Corrupted BMP tests
skip == wrapper.html?invalid-signature.bmp wrapper.html?invalid-signature.bmp
skip == wrapper.html?invalid-bpp.bmp wrapper.html?invalid-bpp.bmp
skip == wrapper.html?os2-invalid-bpp.bmp wrapper.html?os2-invalid-bpp.bmp
# Tests for an unsupported compression value
skip == wrapper.html?invalid-compression.bmp wrapper.html?invalid-compression.bmp
# Tests for RLE4 with an invalid BPP
skip == wrapper.html?invalid-compression-RLE4.bmp wrapper.html?invalid-compression-RLE4.bmp
# Tests for RLE8 with an invalid BPP
skip == wrapper.html?invalid-compression-RLE8.bmp wrapper.html?invalid-compression-RLE8.bmp
# Test for BITFIELDS with an invalid BIH size. (This is the obscure
# BITMAPV3INFOHEADER variant mentioned in
# https://en.wikipedia.org/wiki/BMP_file_format which we don't accept.)
skip == wrapper.html?invalid-compression-BITFIELDS.bmp wrapper.html?invalid-compression-BITFIELDS.bmp
skip == wrapper.html?invalid-truncated-metadata.bmp wrapper.html?invalid-truncated-metadata.bmp
@@ -1,85 +0,0 @@
# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
# bmpsuite "bad" tests
# See ../README.mozilla for details.
# BMP: bihsize=40, 127 x 64, bpp=30000, compression=0, colors=2
# "Header indicates an absurdly large number of bits/pixel."
# [We reject it. So does Chromium.]
skip == wrapper.html?badbitcount.bmp wrapper.html?badbitcount.bmp
# BMP: bihsize=40, 127 x 64, bpp=1, compression=0, colors=2
# "Header incorrectly indicates that the bitmap is several GB in size."
# [We accept it. So does Chromium.]
fails == badbitssize.bmp badbitssize.bmp
# BMP: bihsize=40, 127 x 64, bpp=1, compression=0, colors=2
# BMP: bihsize=40, 127 x 64, bpp=1, compression=0, colors=2
# "Density (pixels per meter) suggests the image is much larger in one
# dimension than the other."
# [We accept them. So does Chromium.]
fails == baddens1.bmp baddens1.bmp
fails == baddens2.bmp baddens2.bmp
# BMP: bihsize=40, 127 x 64, bpp=1, compression=0, colors=2
# "Header incorrectly indicates that the file is several GB in size."
# [We accept it. So does Chromium.]
fails == badfilesize.bmp badfilesize.bmp
# BMP: <no "BMP:" output is produced for files with bad header sizes>
# "Header size is 66 bytes, which is not a valid size for any known BMP
# version."
# [We reject it. So does Chromium.]
skip == wrapper.html?badheadersize.bmp wrapper.html?badheadersize.bmp
# BMP: bihsize=40, 127 x 64, bpp=8, compression=0, colors=305402420
# "Header incorrectly indicates that the palette contains an absurdly large
# number of colors."
# [We reject it. Chromium accepts it but draws nothing. Rejecting seems
# preferable give that the data is clearly untrustworthy.]
skip == wrapper.html?badpalettesize.bmp wrapper.html?badpalettesize.bmp
# BMP: bihsize=40, 127 x 64, bpp=1, compression=0, colors=2
# "The 'planes' setting, which is required to be 1, is not 1."
# [We accept it. So does Chromium.]
fails == badplanes.bmp badplanes.bmp
# BMP: bihsize=40, 127 x 64, bpp=8, compression=1, colors=253
# "An invalid RLE-compressed image that tries to cause buffer overruns."
# [We accept it, drawing the valid first part and leaving the rest black.
# Chromium accepts it, drawing the valid first part and leaving the rest
# transparent. Using black for the invalid part is arguably better because it
# makes the image edges more obvious.]
== badrle.bmp badrle.bmp
# BMP: bihsize=40, -127 x 64, bpp=1, compression=0, colors=2
# "The image claims to be a negative number of pixels in width."
# [We reject it. So does Chromium.]
skip == wrapper.html?badwidth.bmp wrapper.html?badwidth.bmp
# BMP: bihsize=40, 127 x 64, bpp=8, compression=0, colors=101
# "Many of the palette indices used in the image are not present in the
# palette."
# [We accept it and use black for the missing colors. So does Chromium.]
fails == pal8badindex.bmp pal8badindex.bmp
# BMP: bihsize=40, 3000000 x 2000000, bpp=24, compression=0, colors=0
# "An image with a very large reported width and height."
# [We reject it. So does Chromium.]
skip == wrapper.html?reallybig.bmp wrapper.html?reallybig.bmp
# BMP: bihsize=40, 127 x -64, bpp=8, compression=1, colors=252
# "An RLE-compressed image that tries to use top-down orientation, which isnt
# allowed."
# [We accept it. Chromium rejects it. Accepting seems better given that we can
# decode it perfectly well.]
== rletopdown.bmp rletopdown.bmp
# BMP: bihsize=40, 127 x 64, bpp=1, compression=0, colors=2
# "A file that has been truncated in the middle of the bitmap."
# [We accept it, drawing the part that is present and leaving the rest black.
# Chromium draws the part that is present and leaves the rest transparent.
# Using black for the invalid part is arguably better because it makes the
# image edges more obvious.]
fails == shortfile.bmp shortfile.bmp
@@ -1,113 +0,0 @@
# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
# bmpsuite "good" tests
# See ../README.mozilla for details.
# BMP: bihsize=40, 127 x 64, bpp=1, compression=0, colors=2
# "1 bit/pixel paletted image, in which black is the first color in the
# palette."
fails == pal1.bmp pal1.bmp
# BMP: bihsize=40, 127 x 64, bpp=1, compression=0, colors=2
# "1 bit/pixel paletted image, in which white is the first color in the
# palette."
fails == pal1wb.bmp pal1wb.bmp
# BMP: bihsize=40, 127 x 64, bpp=1, compression=0, colors=2
# "1 bit/pixel paletted image, with colors other than black and white."
fails == pal1bg.bmp pal1bg.bmp
# BMP: bihsize=40, 127 x 64, bpp=4, compression=0, colors=12
# "Paletted image with 12 palette colors, and 4 bits/pixel."
fails == pal4.bmp pal4.bmp
# BMP: bihsize=40, 127 x 64, bpp=4, compression=2, colors=12
# "4-bit image that uses RLE compression."
== pal4rle.bmp pal4rle.bmp
# BMP: bihsize=40, 127 x 64, bpp=8, compression=0, colors=252
# "Our standard paletted image, with 252 palette colors, and 8 bits/pixel."
fails == pal8.bmp pal8.bmp
# BMP: bihsize=40, 127 x 64, bpp=8, compression=0, colors=0
# "Every field that can be set to 0 is set to 0: pixels/meter=0; colors used=0
# (meaning the default 256); size-of-image=0."
fails == pal8-0.bmp pal8-0.bmp
# BMP: bihsize=40, 127 x 64, bpp=8, compression=1, colors=252
# "8-bit image that uses RLE compression."
== pal8rle.bmp pal8rle.bmp
# BMP: bihsize=40, 126 x 63, bpp=8, compression=0, colors=252
# BMP: bihsize=40, 125 x 62, bpp=8, compression=0, colors=252
# BMP: bihsize=40, 124 x 61, bpp=8, compression=0, colors=252
# "Images with different widths and heights. In BMP format, rows are padded to
# a multiple of four bytes, so we test all four possibilities."
fails == pal8w126.bmp pal8w126.bmp
fails == pal8w125.bmp pal8w125.bmp
fails == pal8w124.bmp pal8w124.bmp
# BMP: bihsize=40, 127 x -64, bpp=8, compression=0, colors=252
# "BMP images are normally stored from the bottom up, but there is a way to
# store them from the top down."
fails == pal8topdown.bmp pal8topdown.bmp
# BMP: bihsize=40, 127 x 32, bpp=8, compression=0, colors=252
# "An image with non-square pixels: the X pixels/meter is twice the Y
# pixels/meter. Image editors can be expected to leave the image 'squashed';
# image viewers should consider stretching it to its correct proportions."
# [We leave it squashed, as does Chromium.]
fails == pal8nonsquare.bmp pal8nonsquare.bmp
# BMP: bihsize=12, 127 x 64, bpp=8, compression=0, colors=0
# "An OS/2-style bitmap."
fails == pal8os2.bmp pal8os2.bmp
# BMP: bihsize=108, 127 x 64, bpp=8, compression=0, colors=252
# "A v4 bitmap. Im not sure that the gamma and chromaticity values in this
# file are sensible, because I cant find any detailed documentation of them."
fails == pal8v4.bmp pal8v4.bmp
# BMP: bihsize=124, 127 x 64, bpp=8, compression=0, colors=252
# "A v5 bitmap. Version 5 has additional colorspace options over v4, so it is
# easier to create, and ought to be more portable."
fails == pal8v5.bmp pal8v5.bmp
# BMP: bihsize=40, 127 x 64, bpp=16, compression=0, colors=0
# "A 16-bit image with the default color format: 5 bits each for red, green, and
# blue, and 1 unused bit. The whitest colors should (I assume) be displayed as
# pure white: (255,255,255), not (248,248,248)."
fails == rgb16.bmp rgb16.bmp
# BMP: bihsize=40, 127 x 64, bpp=16, compression=3, colors=0
# "A 16-bit image with a BITFIELDS segment indicating 5 red, 6 green, and 5 blue
# bits. This is a standard 16-bit format, even supported by old versions of
# Windows that dont support any other non-default 16-bit formats. The whitest
# colors should be displayed as pure white: (255,255,255), not (248,252,248)."
== rgb16.bmp rgb16.bmp
# BMP: bihsize=40, 127 x 64, bpp=16, compression=3, colors=256
# "A 16-bit image with both a BITFIELDS segment and a palette."
== rgb16.bmp rgb16.bmp
# BMP: bihsize=40, 127 x 64, bpp=24, compression=0, colors=0
# "A perfectly ordinary 24-bit (truecolor) image."
fails == rgb24.bmp rgb24.bmp
# BMP: bihsize=40, 127 x 64, bpp=24, compression=0, colors=256
# "A 24-bit image, with a palette containing 256 colors. There is little if any
# reason for a truecolor image to contain a palette, but it is legal."
fails == rgb24pal.bmp rgb24pal.bmp
# BMP: bihsize=40, 127 x 64, bpp=32, compression=0, colors=0
# "A 32-bit image using the default color format for 32-bit images (no
# BITFIELDS segment). There are 8 bits per color channel, and 8 unused bits.
# The unused bits are set to 0."
skip == rgb32.bmp rgb32.bmp
# BMP: bihsize=40, 127 x 64, bpp=32, compression=3, colors=0
# "A 32-bit image with a BITFIELDS segment. As usual, there are 8 bits per color
# channel, and 8 unused bits. But the color channels are in an unusual order,
# so the viewer must read the BITFIELDS, and not just guess."
fails == rgb32bf.bmp rgb32bf.bmp
@@ -1,131 +0,0 @@
# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
# bmpsuite "questionable" tests
# See ../README.mozilla for details.
# BMP: bihsize=40, 127 x 64, bpp=1, compression=0, colors=1
# "1 bit/pixel paletted image, with only one color in the palette. The
# documentation says that 1-bpp images have a palette size of 2 (not 'up to
# 2'), but it would be silly for a viewer not to support a size of 1."
# [We accept it. So does Chromium.]
fails == pal1p1.bmp pal1p1.bmp
# BMP: bihsize=40, 127 x 64, bpp=2, compression=0, colors=4
# "A paletted image with 2 bits/pixel. Usually only 1, 4, and 8 are allowed,
# but 2 is legal on Windows CE."
# [We reject it. So does Chromium.]
skip == wrapper.html?pal2.bmp wrapper.html?pal2.bmp
# BMP: bihsize=40, 127 x 64, bpp=4, compression=2, colors=13
# "An RLE-compressed image that used 'delta' codes to skip over some pixels,
# leaving them undefined. Some viewers make undefined pixels transparent,
# others make them black, and others assign them palette color 0 (purple, in
# this case)."
# [We make the undefined pixels transparent. So does Chromium.]
== pal4rletrns.bmp pal4rletrns.bmp
# BMP: bihsize=40, 127 x 64, bpp=8, compression=1, colors=253
# "8-bit version of q/pal4rletrns.bmp."
# [Ditto.]
== pal8rletrns.bmp pal8rletrns.bmp
# BMP: bihsize=40, 127 x 64, bpp=8, compression=0, colors=252
# "A file with some unused bytes between the palette and the image. This is
# probably valid, but Im not 100% sure."
# [We accept it. So does Chromium.]
fails == pal8offs.bmp pal8offs.bmp
# BMP: bihsize=40, 127 x 64, bpp=8, compression=0, colors=300
# "An 8-bit image with 300 palette colors. This may be invalid, because the
# documentation could be interpreted to imply that 8-bit images arent allowed
# to have more than 256 colors."
# [We accept it. So does Chromium.]
fails == pal8oversizepal.bmp pal8oversizepal.bmp
# BMP: bihsize=12, 127 x 64, bpp=8, compression=0, colors=0
# "An OS/2v1 with a less-than-full-sized palette. Probably not valid, but such
# files have been seen in the wild."
# [We reject it. Chromium accepts it but draws nothing. Rejecting seems
# preferable given that the color and pixel data must overlap, which can only
# lead to rubbish results.]
skip == wrapper.html?pal8os2sp.bmp wrapper.html?pal8os2sp.bmp
# BMP: bihsize=64, 127 x 64, bpp=8, compression=0, colors=252
# "My attempt to make an OS/2v2 bitmap."
# [We accept it. So does Chromium.]
fails == pal8os2v2.bmp pal8os2v2.bmp
# BMP: bihsize=16, 127 x 64, bpp=8, compression=0, colors=0
# "An OS/2v2 bitmap whose header has only 16 bytes, instead of the full 64."
# [We accept it. So does Chromium.]
fails == pal8os2v2-16.bmp pal8os2v2-16.bmp
# BMP: bihsize=40, 127 x 64, bpp=16, compression=3, colors=0
# "An unusual and silly 16-bit image, with 2 red bits, 3 green bits, and 1 blue
# bit. Most viewers do support this image, but the colors may be darkened with
# a yellow-green shadow. Thats because theyre doing simple bit-shifting
# (possibly including one round of bit replication), instead of proper
# scaling."
fails == rgb16-231.bmp rgb16-231.bmp
# BMP: bihsize=124, 127 x 64, bpp=16, compression=3, colors=0
# "A 16-bit image with an alpha channel. There are 4 bits for each color
# channel, and 4 bits for the alpha channel. Its not clear if this is valid,
# but I cant find anything that suggests it isnt."
== rgba16-4444.bmp rgba16-4444.bmp
# BMP: bihsize=40, 127 x 64, bpp=24, compression=0, colors=300
# "A 24-bit image, with a palette containing 300 colors. The fact that the
# palette has more than 256 colors may cause some viewers to complain, but the
# documentation does not mention a size limit."
# [We accept it. So does Chromium.]
fails == rgb24largepal.bmp rgb24largepal.bmp
# BMP: bihsize=124, 127 x 64, bpp=24, compression=0, colors=0
# "My attempt to make a BMP file with an embedded color profile."
# [We support it, though we don't do anything with the color profile. Chromium
# also handles it.]
fails == rgb24prof.bmp rgb24prof.bmp
# BMP: bihsize=124, 127 x 64, bpp=24, compression=0, colors=0
# "My attempt to make a BMP file with a linked color profile."
# [We accept it, though we don't do anything with the color profile. Chromium
# also handles it.]
fails == rgb24lprof.bmp rgb24lprof.bmp
# BMP: bihsize=124, 127 x 64, bpp=0, compression=4, colors=0
# BMP: bihsize=124, 127 x 64, bpp=0, compression=5, colors=0
# "My attempt to make BMP files with embedded JPEG and PNG images. These are
# not likely to be supported by much of anything (theyre intended for
# printers)."
# [We reject them. So does Chromium.]
skip == wrapper.html?rgb24jpeg.bmp wrapper.html?rgb24jpeg.bmp
skip == wrapper.html?rgb24png.bmp wrapper.html?rgb24png.bmp
# BMP: bihsize=40, 127 x 64, bpp=32, compression=0, colors=0
# "Same as g/rgb32.bmp, except that the unused bits are set to something other
# than 0. If the image becomes transparent toward the bottom, it probably means
# the viewer uses heuristics to guess whether the undefined data represents
# transparency."
# [We don't apply transparency here. Chromium does the same.]
fails == rgb32fakealpha.bmp rgb32fakealpha.bmp
# BMP: bihsize=40, 127 x 64, bpp=32, compression=3, colors=0
# "A 32 bits/pixel image, with all 32 bits used: 11 each for red and green, and
# 10 for blue. As far as I know, this is perfectly valid, but it is unusual."
fails == rgb32-111110.bmp rgb32-111110.bmp
# BMP: bihsize=124, 127 x 64, bpp=32, compression=3, colors=0
# "A BMP with an alpha channel. Transparency is barely documented, so its
# possible that this file is not correctly formed. The color channels are in an
# unusual order, to prevent viewers from passing this test by making a lucky
# guess."
== rgba32.bmp rgba32.bmp
# BMP: bihsize=40, 127 x 64, bpp=32, compression=6, colors=0
# "An image of type BI_ALPHABITFIELDS. Supposedly, this was used on Windows CE.
# I dont know whether it is constructed correctly."
# [We reject it. So does Chromium.]
skip == wrapper.html?rgba32abf.bmp wrapper.html?rgba32abf.bmp
@@ -1,8 +0,0 @@
# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
# bmpsuite tests
# See README.mozilla for details about these tests.
include g/reftest-stylo.list
include q/reftest-stylo.list
include b/reftest-stylo.list
-17
View File
@@ -1,17 +0,0 @@
# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
# BMP tests
include bmp-1bpp/reftest-stylo.list
include bmp-4bpp/reftest-stylo.list
include bmp-8bpp/reftest-stylo.list
include bmp-24bpp/reftest-stylo.list
include bmp-corrupted/reftest-stylo.list
include bmpsuite/reftest-stylo.list
# Two bmp files where the offset to the start of the image data in the file
# is past the end of the file. In 1240629-1.bmp the offset us uint32_max,
# so we are testing that we don't try to allocate a buffer that size (and
# fail on 32 bit platforms) and declare the image in error state. If in the
# future we decide that such bmps (offset past the end of the file) are
# invalid the test will still pass, but won't be testing much.
fails == 1240629-1.bmp 1240629-1.bmp
@@ -1,8 +0,0 @@
# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
# Colormangement
# test for bug 489133, test for bug 460520
fails == invalid-chrm.png invalid-chrm.png
fails == invalid-whitepoint.png invalid-whitepoint.png
# test for bug 488955
== trc-type.html trc-type.html
@@ -1,195 +0,0 @@
# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
# Reftests for downscaling
#
# Downscaling can be a lossy process, so a bit of mismatch is acceptable here,
# as long as it's barely noticable visually. When necessary, this can be
# explicitly allowed via 'fuzzy'/'fuzzy-if' annotations.
#
# Many of these tests check primarily that we don't lose rows or columns of
# pixels when downscaling by making sure that the result isn't too similar to
# about:blank. A small amount of fuzziness is used to ensure that the tests
# don't pass because of very slight deviations; passing tests should be
# substantially different from about:blank. This fuzziness should *not* be
# removed as doing so would make the tests pass in situations where they
# shouldn't.
#
# IMPORTANT: For robustness, each test should be listed *twice* in this
# manifest -- once with the high quality downscaling pref disabled, and once
# with this pref enabled. The pref is set via "default-preferences", so
# simply appending a new test to the lists below each of those lines should be
# sufficient.
#
# Also note that Mac OS X has its own system-level downscaling algorithm, so
# tests here may need Mac-specific "fuzzy-if(cocoaWidget,...)" annotations.
# Similarly, modern versions of Windows have slightly different downscaling
# behavior than other platforms, and may require "fuzzy-if(winWidget,...)".
# RUN TESTS NOT AFFECTED BY DOWNSCALE-DURING-DECODE:
# #
fails fuzzy-if(skiaContent,14,416) == downscale-svg-1a.html downscale-svg-1a.html
== downscale-svg-1b.html downscale-svg-1b.html
fails fuzzy-if(skiaContent,8,292) == downscale-svg-1c.html downscale-svg-1c.html
fuzzy-if(B2G,255,207) == downscale-svg-1d.html downscale-svg-1d.html
# right side is 1 pixel off for B2G, probably regression from 974242
fails fuzzy-if(skiaContent,110,181) == downscale-svg-1e.html downscale-svg-1e.html
fails fuzzy-if(skiaContent,142,77) == downscale-svg-1f.html downscale-svg-1f.html
# RUN TESTS WITH DOWNSCALE-DURING-DECODE DISABLED:
# #
default-preferences pref(image.downscale-during-decode.enabled,false)
fuzzy-if(winWidget,16,20) fuzzy-if(cocoaWidget,106,31) == downscale-1.html downscale-1.html
== downscale-2a.html?203,52,left downscale-2a.html?203,52,left
== downscale-2b.html?203,52,left downscale-2b.html?203,52,left
skip == downscale-2c.html?203,52,left downscale-2c.html?203,52,left
== downscale-2d.html?203,52,left downscale-2d.html?203,52,left
== downscale-2e.html?203,52,left downscale-2e.html?203,52,left
== downscale-2a.html?205,53,left downscale-2a.html?205,53,left
== downscale-2b.html?205,53,left downscale-2b.html?205,53,left
== downscale-2c.html?205,53,left downscale-2c.html?205,53,left
skip == downscale-2d.html?205,53,left downscale-2d.html?205,53,left
== downscale-2e.html?205,53,left downscale-2e.html?205,53,left
== downscale-2a.html?203,52,right downscale-2a.html?203,52,right
== downscale-2b.html?203,52,right downscale-2b.html?203,52,right
== downscale-2c.html?203,52,right downscale-2c.html?203,52,right
== downscale-2d.html?203,52,right downscale-2d.html?203,52,right
== downscale-2e.html?203,52,right downscale-2e.html?203,52,right
== downscale-2a.html?205,53,right downscale-2a.html?205,53,right
== downscale-2b.html?205,53,right downscale-2b.html?205,53,right
== downscale-2c.html?205,53,right downscale-2c.html?205,53,right
== downscale-2d.html?205,53,right downscale-2d.html?205,53,right
== downscale-2e.html?205,53,right downscale-2e.html?205,53,right
== downscale-2a.html?203,52,top downscale-2a.html?203,52,top
== downscale-2b.html?203,52,top downscale-2b.html?203,52,top
== downscale-2c.html?203,52,top downscale-2c.html?203,52,top
skip == downscale-2d.html?203,52,top downscale-2d.html?203,52,top
== downscale-2e.html?203,52,top downscale-2e.html?203,52,top
== downscale-2a.html?205,53,top downscale-2a.html?205,53,top
== downscale-2b.html?205,53,top downscale-2b.html?205,53,top
== downscale-2c.html?205,53,top downscale-2c.html?205,53,top
== downscale-2d.html?205,53,top downscale-2d.html?205,53,top
== downscale-2e.html?205,53,top downscale-2e.html?205,53,top
== downscale-2a.html?203,52,bottom downscale-2a.html?203,52,bottom
== downscale-2b.html?203,52,bottom downscale-2b.html?203,52,bottom
== downscale-2c.html?203,52,bottom downscale-2c.html?203,52,bottom
== downscale-2d.html?203,52,bottom downscale-2d.html?203,52,bottom
skip == downscale-2e.html?203,52,bottom downscale-2e.html?203,52,bottom
== downscale-2a.html?205,53,bottom downscale-2a.html?205,53,bottom
== downscale-2b.html?205,53,bottom downscale-2b.html?205,53,bottom
== downscale-2c.html?205,53,bottom downscale-2c.html?205,53,bottom
== downscale-2d.html?205,53,bottom downscale-2d.html?205,53,bottom
fails-if(OSX>=1008&&!skiaContent) == downscale-2e.html?205,53,bottom downscale-2e.html?205,53,bottom
== downscale-moz-icon-1.html downscale-moz-icon-1.html
== downscale-png.html?16,16,interlaced downscale-png.html?16,16,interlaced
== downscale-png.html?24,24,interlaced downscale-png.html?24,24,interlaced
# Non-transparent and transparent ICO images
random == downscale-16px.html?ff-0RGB.ico downscale-16px.html?ff-0RGB.ico
random == downscale-16px.html?ff-ARGB.ico downscale-16px.html?ff-ARGB.ico
# Upside-down (negative height) BMP
random == downscale-8px.html?top-to-bottom-16x16-24bpp.bmp downscale-8px.html?top-to-bottom-16x16-24bpp.bmp
# Test downscaling from all supported formats from 256 to 32.
== downscale-32px.html?.bmp downscale-32px.html?.bmp
== downscale-32px.html?.gif downscale-32px.html?.gif
== downscale-32px.html?.jpg downscale-32px.html?.jpg
== downscale-32px.html?.png downscale-32px.html?.png
== downscale-32px.html?.svg downscale-32px.html?.svg
== downscale-32px.html?-bmp-in.ico downscale-32px.html?-bmp-in.ico
== downscale-32px.html?-png-in.ico downscale-32px.html?-png-in.ico
# RUN TESTS WITH DOWNSCALE-DURING-DECODE ENABLED:
# #
default-preferences pref(image.downscale-during-decode.enabled,true)
fuzzy-if(d2d,31,147) == downscale-1.html downscale-1.html
# intermittently 147 pixels on win7 accelerated only (not win8)
== downscale-2a.html?203,52,left downscale-2a.html?203,52,left
== downscale-2b.html?203,52,left downscale-2b.html?203,52,left
skip == downscale-2c.html?203,52,left downscale-2c.html?203,52,left
== downscale-2d.html?203,52,left downscale-2d.html?203,52,left
== downscale-2e.html?203,52,left downscale-2e.html?203,52,left
== downscale-2f.html?203,52,left downscale-2f.html?203,52,left
== downscale-2a.html?205,53,left downscale-2a.html?205,53,left
== downscale-2b.html?205,53,left downscale-2b.html?205,53,left
== downscale-2c.html?205,53,left downscale-2c.html?205,53,left
skip == downscale-2d.html?205,53,left downscale-2d.html?205,53,left
== downscale-2e.html?205,53,left downscale-2e.html?205,53,left
== downscale-2f.html?205,53,left downscale-2f.html?205,53,left
== downscale-2a.html?203,52,right downscale-2a.html?203,52,right
== downscale-2b.html?203,52,right downscale-2b.html?203,52,right
== downscale-2c.html?203,52,right downscale-2c.html?203,52,right
== downscale-2d.html?203,52,right downscale-2d.html?203,52,right
== downscale-2e.html?203,52,right downscale-2e.html?203,52,right
== downscale-2f.html?203,52,right downscale-2f.html?203,52,right
== downscale-2a.html?205,53,right downscale-2a.html?205,53,right
== downscale-2b.html?205,53,right downscale-2b.html?205,53,right
== downscale-2c.html?205,53,right downscale-2c.html?205,53,right
== downscale-2d.html?205,53,right downscale-2d.html?205,53,right
== downscale-2e.html?205,53,right downscale-2e.html?205,53,right
== downscale-2f.html?205,53,right downscale-2f.html?205,53,right
== downscale-2a.html?203,52,top downscale-2a.html?203,52,top
== downscale-2b.html?203,52,top downscale-2b.html?203,52,top
== downscale-2c.html?203,52,top downscale-2c.html?203,52,top
skip == downscale-2d.html?203,52,top downscale-2d.html?203,52,top
== downscale-2e.html?203,52,top downscale-2e.html?203,52,top
== downscale-2f.html?203,52,top downscale-2f.html?203,52,top
== downscale-2a.html?205,53,top downscale-2a.html?205,53,top
== downscale-2b.html?205,53,top downscale-2b.html?205,53,top
== downscale-2c.html?205,53,top downscale-2c.html?205,53,top
== downscale-2d.html?205,53,top downscale-2d.html?205,53,top
== downscale-2e.html?205,53,top downscale-2e.html?205,53,top
== downscale-2f.html?205,53,top downscale-2f.html?205,53,top
== downscale-2a.html?203,52,bottom downscale-2a.html?203,52,bottom
== downscale-2b.html?203,52,bottom downscale-2b.html?203,52,bottom
== downscale-2c.html?203,52,bottom downscale-2c.html?203,52,bottom
== downscale-2d.html?203,52,bottom downscale-2d.html?203,52,bottom
skip == downscale-2e.html?203,52,bottom downscale-2e.html?203,52,bottom
== downscale-2f.html?203,52,bottom downscale-2f.html?203,52,bottom
== downscale-2a.html?205,53,bottom downscale-2a.html?205,53,bottom
== downscale-2b.html?205,53,bottom downscale-2b.html?205,53,bottom
== downscale-2c.html?205,53,bottom downscale-2c.html?205,53,bottom
== downscale-2d.html?205,53,bottom downscale-2d.html?205,53,bottom
== downscale-2e.html?205,53,bottom downscale-2e.html?205,53,bottom
== downscale-2f.html?205,53,bottom downscale-2f.html?205,53,bottom
== downscale-moz-icon-1.html downscale-moz-icon-1.html
== downscale-png.html?16,16,interlaced downscale-png.html?16,16,interlaced
== downscale-png.html?24,24,interlaced downscale-png.html?24,24,interlaced
# Non-transparent and transparent ICO images
random == downscale-16px.html?ff-0RGB.ico downscale-16px.html?ff-0RGB.ico
random == downscale-16px.html?ff-ARGB.ico downscale-16px.html?ff-ARGB.ico
# Upside-down (negative height) BMP
random == downscale-8px.html?top-to-bottom-16x16-24bpp.bmp downscale-8px.html?top-to-bottom-16x16-24bpp.bmp
# Test downscaling from all supported formats from 256 to 32.
== downscale-32px.html?.bmp downscale-32px.html?.bmp
== downscale-32px.html?.gif downscale-32px.html?.gif
== downscale-32px.html?.jpg downscale-32px.html?.jpg
== downscale-32px.html?.png downscale-32px.html?.png
== downscale-32px.html?.svg downscale-32px.html?.svg
== downscale-32px.html?-bmp-in.ico downscale-32px.html?-bmp-in.ico
== downscale-32px.html?-png-in.ico downscale-32px.html?-png-in.ico
@@ -1,160 +0,0 @@
# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
# Encoder ref tests
# These reftests must be run as HTTP because of canvas' origin-clean security
# file:// URLs are always considered from a different origin unless same URL
#
# The test will copy a PNG image to a canvas, then use canvas.toDataUrl to get
# the data, then set the data to a new image hence invoking the appropriate
# encoder.
#
# The tests should only be used with lossless encoders.
#
# Valid arguments for encoder.html in the query string:
# - img=<reference image to use>
# - mime=<mime type>
# - options=<canvas toDataURL encoder options>
# Example:
# encoder.html?img=escape(reference_image.png)
# &mime=escape(image/vnd.microsoft.icon)
# &options=escape(-moz-parse-options:bpp=24;format=png)
# PNG
skip HTTP == size-1x1.png size-1x1.png
HTTP == size-2x2.png size-2x2.png
skip HTTP == size-3x3.png size-3x3.png
skip HTTP == size-4x4.png size-4x4.png
skip HTTP == size-5x5.png size-5x5.png
skip HTTP == size-6x6.png size-6x6.png
HTTP == size-7x7.png size-7x7.png
fails skip HTTP == size-8x8.png size-8x8.png
skip HTTP == size-9x9.png size-9x9.png
skip HTTP == size-15x15.png size-15x15.png
skip HTTP == size-16x16.png size-16x16.png
skip HTTP == size-17x17.png size-17x17.png
skip HTTP == size-31x31.png size-31x31.png
skip HTTP == size-32x32.png size-32x32.png
skip HTTP == size-33x33.png size-33x33.png
# BMP using default parse options
skip HTTP == size-1x1.png size-1x1.png
HTTP == size-2x2.png size-2x2.png
skip HTTP == size-3x3.png size-3x3.png
skip HTTP == size-4x4.png size-4x4.png
skip HTTP == size-5x5.png size-5x5.png
skip HTTP == size-6x6.png size-6x6.png
HTTP == size-7x7.png size-7x7.png
fails skip HTTP == size-8x8.png size-8x8.png
skip HTTP == size-9x9.png size-9x9.png
skip HTTP == size-15x15.png size-15x15.png
skip HTTP == size-16x16.png size-16x16.png
skip HTTP == size-17x17.png size-17x17.png
skip HTTP == size-31x31.png size-31x31.png
skip HTTP == size-32x32.png size-32x32.png
skip HTTP == size-33x33.png size-33x33.png
# BMP using image/bmp mime type and 32bpp parse options
skip HTTP == size-1x1.png size-1x1.png
HTTP == size-2x2.png size-2x2.png
skip HTTP == size-3x3.png size-3x3.png
skip HTTP == size-4x4.png size-4x4.png
skip HTTP == size-5x5.png size-5x5.png
skip HTTP == size-6x6.png size-6x6.png
HTTP == size-7x7.png size-7x7.png
fails skip HTTP == size-8x8.png size-8x8.png
skip HTTP == size-9x9.png size-9x9.png
skip HTTP == size-15x15.png size-15x15.png
skip HTTP == size-16x16.png size-16x16.png
skip HTTP == size-17x17.png size-17x17.png
skip HTTP == size-31x31.png size-31x31.png
skip HTTP == size-32x32.png size-32x32.png
skip HTTP == size-33x33.png size-33x33.png
# BMP using image/bmp mime type and 24bpp parse options
skip HTTP == size-1x1.png size-1x1.png
HTTP == size-2x2.png size-2x2.png
skip HTTP == size-3x3.png size-3x3.png
skip HTTP == size-4x4.png size-4x4.png
skip HTTP == size-5x5.png size-5x5.png
skip HTTP == size-6x6.png size-6x6.png
HTTP == size-7x7.png size-7x7.png
fails skip HTTP == size-8x8.png size-8x8.png
skip HTTP == size-9x9.png size-9x9.png
skip HTTP == size-15x15.png size-15x15.png
skip HTTP == size-16x16.png size-16x16.png
skip HTTP == size-17x17.png size-17x17.png
skip HTTP == size-31x31.png size-31x31.png
skip HTTP == size-32x32.png size-32x32.png
skip HTTP == size-33x33.png size-33x33.png
# ICO using default parse options
skip HTTP == size-1x1.png size-1x1.png
HTTP == size-2x2.png size-2x2.png
skip HTTP == size-3x3.png size-3x3.png
skip HTTP == size-4x4.png size-4x4.png
skip HTTP == size-5x5.png size-5x5.png
skip HTTP == size-6x6.png size-6x6.png
HTTP == size-7x7.png size-7x7.png
fails skip HTTP == size-8x8.png size-8x8.png
skip HTTP == size-9x9.png size-9x9.png
skip HTTP == size-15x15.png size-15x15.png
skip HTTP == size-16x16.png size-16x16.png
skip HTTP == size-17x17.png size-17x17.png
skip HTTP == size-31x31.png size-31x31.png
skip HTTP == size-32x32.png size-32x32.png
skip HTTP == size-33x33.png size-33x33.png
# skip HTTP == size-256x256.png size-256x256.png
# ICO using image/vnd.microsoft.icon mime type and 32bpp parse options with bmp
skip HTTP == size-1x1.png size-1x1.png
HTTP == size-2x2.png size-2x2.png
skip HTTP == size-3x3.png size-3x3.png
skip HTTP == size-4x4.png size-4x4.png
skip HTTP == size-5x5.png size-5x5.png
skip HTTP == size-6x6.png size-6x6.png
HTTP == size-7x7.png size-7x7.png
fails skip HTTP == size-8x8.png size-8x8.png
skip HTTP == size-9x9.png size-9x9.png
skip HTTP == size-15x15.png size-15x15.png
skip HTTP == size-16x16.png size-16x16.png
skip HTTP == size-17x17.png size-17x17.png
skip HTTP == size-31x31.png size-31x31.png
skip HTTP == size-32x32.png size-32x32.png
skip HTTP == size-33x33.png size-33x33.png
# skip HTTP == size-256x256.png size-256x256.png
# ICO using image/vnd.microsoft.icon mime type and 24bpp parse options with bmp
skip HTTP == size-1x1.png size-1x1.png
HTTP == size-2x2.png size-2x2.png
skip HTTP == size-3x3.png size-3x3.png
skip HTTP == size-4x4.png size-4x4.png
skip HTTP == size-5x5.png size-5x5.png
skip HTTP == size-6x6.png size-6x6.png
HTTP == size-7x7.png size-7x7.png
fails skip HTTP == size-8x8.png size-8x8.png
skip HTTP == size-9x9.png size-9x9.png
skip HTTP == size-15x15.png size-15x15.png
skip HTTP == size-16x16.png size-16x16.png
skip HTTP == size-17x17.png size-17x17.png
skip HTTP == size-31x31.png size-31x31.png
skip HTTP == size-32x32.png size-32x32.png
skip HTTP == size-33x33.png size-33x33.png
# skip HTTP == size-256x256.png size-256x256.png
# ICO using image/vnd.microsoft.icon mime type png
skip HTTP == size-1x1.png size-1x1.png
HTTP == size-2x2.png size-2x2.png
skip HTTP == size-3x3.png size-3x3.png
skip HTTP == size-4x4.png size-4x4.png
skip HTTP == size-5x5.png size-5x5.png
skip HTTP == size-6x6.png size-6x6.png
HTTP == size-7x7.png size-7x7.png
fails skip HTTP == size-8x8.png size-8x8.png
skip HTTP == size-9x9.png size-9x9.png
skip HTTP == size-15x15.png size-15x15.png
skip HTTP == size-16x16.png size-16x16.png
skip HTTP == size-17x17.png size-17x17.png
skip HTTP == size-31x31.png size-31x31.png
skip HTTP == size-32x32.png size-32x32.png
skip HTTP == size-33x33.png size-33x33.png
# skip HTTP == size-256x256.png size-256x256.png
@@ -1,2 +0,0 @@
# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
HTTP == accept-image-catchall.html accept-image-catchall.html
-57
View File
@@ -1,57 +0,0 @@
# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
# GIF tests
# tests for bug 519589
== 1bit-255-trans.gif 1bit-255-trans.gif
== in-colormap-trans.gif in-colormap-trans.gif
== out-of-colormap-trans.gif out-of-colormap-trans.gif
# a GIF file that uses the comment extension
fails == comment.gif comment.gif
# a GIF file with a background smaller than the size of the canvas
== small-background-size.gif small-background-size.gif
== small-background-size-2.gif small-background-size-2.gif
# a transparent gif that disposes previous frames with clear; we must properly
# clear each frame to pass.
random == delaytest.html?transparent-animation.gif delaytest.html?transparent-animation.gif
# incorrect timing dependence (bug 558678)
# test for bug 641198
skip == test_bug641198.html test_bug641198.html
# Disabled; see bug 1120144.
# Bug 1062886: a gif with a single color and an offset
== one-color-offset.gif one-color-offset.gif
# Bug 1068230
== tile-transform.html tile-transform.html
# Bug 1234077
== truncated-framerect.html truncated-framerect.html
# webcam-simulacrum.mgif is a hand-edited file containing red.gif and blue.gif,
# concatenated together with the relevant headers for
# multipart/x-mixed-replace. Specifically, with the headers in
# webcam-simulacrum.mjpg^headers^, the web browser will get the following:
#
# HTTP 200 OK
# Content-Type: multipart/x-mixed-replace;boundary=BOUNDARYOMG
#
# --BOUNDARYOMG\r\n
# Content-Type: image/gif\r\n
# \r\n
# <contents of red.gif> (no newline)
# --BOUNDARYOMG\r\n
# Content-Type: image/gif\r\n
# \r\n
# <contents of blue.gif> (no newline)
# --BOUNDARYOMG--\r\n
#
# (The boundary is arbitrary, and just has to be defined as something that
# won't be in the text of the contents themselves. --$(boundary)\r\n means
# "Here is the beginning of a boundary," and --$(boundary)-- means "All done
# sending you parts.")
skip-if(B2G) HTTP == webcam.html webcam.html
# bug 773482
@@ -1,5 +0,0 @@
# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
# ICO BMP and PNG mixed tests
skip == wrapper.html?pointer.cur wrapper.html?pointer.cur
@@ -1,25 +0,0 @@
# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
# ICO BMP 1BPP tests
# Images of various sizes
== ico-size-1x1-1bpp.ico ico-size-1x1-1bpp.ico
== ico-size-2x2-1bpp.ico ico-size-2x2-1bpp.ico
== ico-size-3x3-1bpp.ico ico-size-3x3-1bpp.ico
== ico-size-4x4-1bpp.ico ico-size-4x4-1bpp.ico
== ico-size-5x5-1bpp.ico ico-size-5x5-1bpp.ico
== ico-size-6x6-1bpp.ico ico-size-6x6-1bpp.ico
== ico-size-7x7-1bpp.ico ico-size-7x7-1bpp.ico
== ico-size-8x8-1bpp.ico ico-size-8x8-1bpp.ico
== ico-size-9x9-1bpp.ico ico-size-9x9-1bpp.ico
== ico-size-15x15-1bpp.ico ico-size-15x15-1bpp.ico
== ico-size-16x16-1bpp.ico ico-size-16x16-1bpp.ico
== ico-size-17x17-1bpp.ico ico-size-17x17-1bpp.ico
== ico-size-31x31-1bpp.ico ico-size-31x31-1bpp.ico
== ico-size-32x32-1bpp.ico ico-size-32x32-1bpp.ico
== ico-size-33x33-1bpp.ico ico-size-33x33-1bpp.ico
skip-if(B2G) == ico-size-256x256-1bpp.ico ico-size-256x256-1bpp.ico
# bug 773482
== ico-partial-transparent-1bpp.ico ico-partial-transparent-1bpp.ico
== ico-transparent-1bpp.ico ico-transparent-1bpp.ico
== ico-not-square-transparent-1bpp.ico ico-not-square-transparent-1bpp.ico
@@ -1,24 +0,0 @@
# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
# ICO BMP 24BPP tests
# Images of various sizes
== ico-size-1x1-24bpp.ico ico-size-1x1-24bpp.ico
== ico-size-2x2-24bpp.ico ico-size-2x2-24bpp.ico
== ico-size-3x3-24bpp.ico ico-size-3x3-24bpp.ico
== ico-size-4x4-24bpp.ico ico-size-4x4-24bpp.ico
skip == ico-size-5x5-24bpp.ico ico-size-5x5-24bpp.ico
== ico-size-6x6-24bpp.ico ico-size-6x6-24bpp.ico
== ico-size-7x7-24bpp.ico ico-size-7x7-24bpp.ico
== ico-size-8x8-24bpp.ico ico-size-8x8-24bpp.ico
== ico-size-9x9-24bpp.ico ico-size-9x9-24bpp.ico
== ico-size-15x15-24bpp.ico ico-size-15x15-24bpp.ico
== ico-size-16x16-24bpp.ico ico-size-16x16-24bpp.ico
== ico-size-17x17-24bpp.ico ico-size-17x17-24bpp.ico
== ico-size-31x31-24bpp.ico ico-size-31x31-24bpp.ico
fails == ico-size-32x32-24bpp.ico ico-size-32x32-24bpp.ico
== ico-size-33x33-24bpp.ico ico-size-33x33-24bpp.ico
== ico-size-256x256-24bpp.ico ico-size-256x256-24bpp.ico
== ico-partial-transparent-24bpp.ico ico-partial-transparent-24bpp.ico
== ico-transparent-24bpp.ico ico-transparent-24bpp.ico
== ico-not-square-transparent-24bpp.ico ico-not-square-transparent-24bpp.ico
@@ -1,23 +0,0 @@
# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
# ICO BMP 32BPP tests
# Images of various sizes
== ico-size-1x1-32bpp.ico ico-size-1x1-32bpp.ico
== ico-size-2x2-32bpp.ico ico-size-2x2-32bpp.ico
== ico-size-3x3-32bpp.ico ico-size-3x3-32bpp.ico
== ico-size-4x4-32bpp.ico ico-size-4x4-32bpp.ico
== ico-size-5x5-32bpp.ico ico-size-5x5-32bpp.ico
== ico-size-6x6-32bpp.ico ico-size-6x6-32bpp.ico
== ico-size-7x7-32bpp.ico ico-size-7x7-32bpp.ico
== ico-size-8x8-32bpp.ico ico-size-8x8-32bpp.ico
== ico-size-9x9-32bpp.ico ico-size-9x9-32bpp.ico
== ico-size-15x15-32bpp.ico ico-size-15x15-32bpp.ico
== ico-size-16x16-32bpp.ico ico-size-16x16-32bpp.ico
== ico-size-17x17-32bpp.ico ico-size-17x17-32bpp.ico
== ico-size-31x31-32bpp.ico ico-size-31x31-32bpp.ico
== ico-size-32x32-32bpp.ico ico-size-32x32-32bpp.ico
== ico-size-33x33-32bpp.ico ico-size-33x33-32bpp.ico
== ico-size-256x256-32bpp.ico ico-size-256x256-32bpp.ico
== ico-partial-transparent-32bpp.ico ico-partial-transparent-32bpp.ico
== ico-transparent-32bpp.ico ico-transparent-32bpp.ico
== ico-not-square-transparent-32bpp.ico ico-not-square-transparent-32bpp.ico
@@ -1,24 +0,0 @@
# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
# ICO BMP 4BPP tests
# Images of various sizes
== ico-size-1x1-4bpp.ico ico-size-1x1-4bpp.ico
== ico-size-2x2-4bpp.ico ico-size-2x2-4bpp.ico
== ico-size-3x3-4bpp.ico ico-size-3x3-4bpp.ico
== ico-size-4x4-4bpp.ico ico-size-4x4-4bpp.ico
== ico-size-5x5-4bpp.ico ico-size-5x5-4bpp.ico
== ico-size-6x6-4bpp.ico ico-size-6x6-4bpp.ico
== ico-size-7x7-4bpp.ico ico-size-7x7-4bpp.ico
== ico-size-8x8-4bpp.ico ico-size-8x8-4bpp.ico
== ico-size-9x9-4bpp.ico ico-size-9x9-4bpp.ico
== ico-size-15x15-4bpp.ico ico-size-15x15-4bpp.ico
== ico-size-16x16-4bpp.ico ico-size-16x16-4bpp.ico
== ico-size-17x17-4bpp.ico ico-size-17x17-4bpp.ico
== ico-size-31x31-4bpp.ico ico-size-31x31-4bpp.ico
== ico-size-32x32-4bpp.ico ico-size-32x32-4bpp.ico
== ico-size-33x33-4bpp.ico ico-size-33x33-4bpp.ico
== ico-size-256x256-4bpp.ico ico-size-256x256-4bpp.ico
== ico-partial-transparent-4bpp.ico ico-partial-transparent-4bpp.ico
== ico-transparent-4bpp.ico ico-transparent-4bpp.ico
== ico-not-square-transparent-4bpp.ico ico-not-square-transparent-4bpp.ico
@@ -1,25 +0,0 @@
# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
# ICO BMP 8BPP tests
# Images of various sizes
== ico-size-1x1-8bpp.ico ico-size-1x1-8bpp.ico
== ico-size-2x2-8bpp.ico ico-size-2x2-8bpp.ico
== ico-size-3x3-8bpp.ico ico-size-3x3-8bpp.ico
== ico-size-4x4-8bpp.ico ico-size-4x4-8bpp.ico
== ico-size-5x5-8bpp.ico ico-size-5x5-8bpp.ico
skip == ico-size-6x6-8bpp.ico ico-size-6x6-8bpp.ico
== ico-size-7x7-8bpp.ico ico-size-7x7-8bpp.ico
== ico-size-8x8-8bpp.ico ico-size-8x8-8bpp.ico
== ico-size-9x9-8bpp.ico ico-size-9x9-8bpp.ico
== ico-size-15x15-8bpp.ico ico-size-15x15-8bpp.ico
== ico-size-16x16-8bpp.ico ico-size-16x16-8bpp.ico
== ico-size-17x17-8bpp.ico ico-size-17x17-8bpp.ico
== ico-size-31x31-8bpp.ico ico-size-31x31-8bpp.ico
== ico-size-32x32-8bpp.ico ico-size-32x32-8bpp.ico
== ico-size-33x33-8bpp.ico ico-size-33x33-8bpp.ico
skip-if(B2G) == ico-size-256x256-8bpp.ico ico-size-256x256-8bpp.ico
# bug 773482
== ico-partial-transparent-8bpp.ico ico-partial-transparent-8bpp.ico
== ico-transparent-8bpp.ico ico-transparent-8bpp.ico
== ico-not-square-transparent-8bpp.ico ico-not-square-transparent-8bpp.ico
@@ -1,11 +0,0 @@
# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
# ICOs containing corrupted BMP tests
# Invalid value for bits per pixel (BPP) - detected when decoding the header.
skip == wrapper.html?invalid-bpp.ico wrapper.html?invalid-bpp.ico
# Invalid BPP values for RLE4 - detected when decoding the image data.
skip == wrapper.html?invalid-compression-RLE4.ico wrapper.html?invalid-compression-RLE4.ico
# Invalid BPP values for RLE8 - detected when decoding the image data.
skip == wrapper.html?invalid-compression-RLE8.ico wrapper.html?invalid-compression-RLE8.ico
# Invalid compression value - detected when decoding the image data.
skip == wrapper.html?invalid-compression.ico wrapper.html?invalid-compression.ico
@@ -1,4 +0,0 @@
# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
# ICO BMP and PNG mixed tests
skip == mixed-bmp-png.ico mixed-bmp-png.ico
@@ -1,30 +0,0 @@
# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
# ICO PNG tests
# Images of various sizes
skip == ico-size-1x1-png.ico ico-size-1x1-png.ico
== ico-size-2x2-png.ico ico-size-2x2-png.ico
skip == ico-size-3x3-png.ico ico-size-3x3-png.ico
skip == ico-size-4x4-png.ico ico-size-4x4-png.ico
skip == ico-size-5x5-png.ico ico-size-5x5-png.ico
skip == ico-size-6x6-png.ico ico-size-6x6-png.ico
== ico-size-7x7-png.ico ico-size-7x7-png.ico
fails skip == ico-size-8x8-png.ico ico-size-8x8-png.ico
skip == ico-size-9x9-png.ico ico-size-9x9-png.ico
skip == ico-size-15x15-png.ico ico-size-15x15-png.ico
skip == ico-size-16x16-png.ico ico-size-16x16-png.ico
skip == ico-size-17x17-png.ico ico-size-17x17-png.ico
skip == ico-size-31x31-png.ico ico-size-31x31-png.ico
skip == ico-size-32x32-png.ico ico-size-32x32-png.ico
skip == ico-size-33x33-png.ico ico-size-33x33-png.ico
# skip == ico-size-256x256-png.ico ico-size-256x256-png.ico
# Corrupted files so no image should be loaded
# x00n0g01 - empty 0x0 grayscale file
skip == wrapper.html?x00n0g01.ico wrapper.html?x00n0g01.ico
# xcrn0g04 - added cr bytes
skip == wrapper.html?xcrn0g04.ico wrapper.html?xcrn0g04.ico
# Test ICO PNG transparency
== transparent-png.ico transparent-png.ico
-13
View File
@@ -1,13 +0,0 @@
# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
# ICO tests
# bmp tests cause lots of intermittents
# include ico-bmp-1bpp/reftest-stylo.list
# include ico-bmp-4bpp/reftest-stylo.list
# include ico-bmp-8bpp/reftest-stylo.list
# include ico-bmp-24bpp/reftest-stylo.list
# include ico-bmp-32bpp/reftest-stylo.list
# include ico-bmp-corrupted/reftest-stylo.list
include ico-png/reftest-stylo.list
include ico-mixed/reftest-stylo.list
include cur/reftest-stylo.list
@@ -1,57 +0,0 @@
# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
# JPEG tests
# Images of various sizes.
fails == jpg-size-1x1.jpg jpg-size-1x1.jpg
fails == jpg-size-2x2.jpg jpg-size-2x2.jpg
fails == jpg-size-3x3.jpg jpg-size-3x3.jpg
fails == jpg-size-4x4.jpg jpg-size-4x4.jpg
fails == jpg-size-5x5.jpg jpg-size-5x5.jpg
== jpg-size-6x6.jpg jpg-size-6x6.jpg
fails == jpg-size-7x7.jpg jpg-size-7x7.jpg
fails == jpg-size-8x8.jpg jpg-size-8x8.jpg
fails == jpg-size-9x9.jpg jpg-size-9x9.jpg
fails == jpg-size-15x15.jpg jpg-size-15x15.jpg
fails == jpg-size-16x16.jpg jpg-size-16x16.jpg
fails == jpg-size-17x17.jpg jpg-size-17x17.jpg
fails == jpg-size-31x31.jpg jpg-size-31x31.jpg
fails == jpg-size-32x32.jpg jpg-size-32x32.jpg
fails == jpg-size-33x33.jpg jpg-size-33x33.jpg
# Progressive encoding
fails == jpg-progressive.jpg jpg-progressive.jpg
# Grayscale colorspace
fails == jpg-gray.jpg jpg-gray.jpg
# CMYK colorspace
fails == jpg-cmyk-1.jpg jpg-cmyk-1.jpg
fails == jpg-cmyk-2.jpg jpg-cmyk-2.jpg
# This intermittently fails on Android due to async image decoding (bug #685516)
# Sometimes the image decodes in time and the test passes, other times the image
# appears blank and the test fails. This only seems to be triggered since the
# switch to 24-bit colour (bug #803299).
fails random-if(Android) == jpg-srgb-icc.jpg jpg-srgb-icc.jpg
# webcam-simulacrum.mjpg is a hand-edited file containing red.jpg and blue.jpg,
# concatenated together with the relevant headers for
# multipart/x-mixed-replace. Specifically, with the headers in
# webcam-simulacrum.mjpg^headers^, the web browser will get the following:
#
# HTTP 200 OK
# Content-Type: multipart/x-mixed-replace;boundary=BOUNDARYOMG
#
# --BOUNDARYOMG\r\n
# Content-Type: image/jpeg\r\n
# \r\n
# <contents of red.jpg> (no newline)
# --BOUNDARYOMG\r\n
# Content-Type: image/jpeg\r\n
# \r\n
# <contents of blue.jpg> (no newline)
# --BOUNDARYOMG--\r\n
#
# (The boundary is arbitrary, and just has to be defined as something that
# won't be in the text of the contents themselves. --$(boundary)\r\n means
# "Here is the beginning of a boundary," and --$(boundary)-- means "All done
# sending you parts.")
skip HTTP == webcam-simulacrum.mjpg webcam-simulacrum.mjpg
skip pref(image.mozsamplesize.enabled,true) == jpg-size-32x32.jpg#-moz-samplesize=2 jpg-size-32x32.jpg#-moz-samplesize=2
skip pref(image.mozsamplesize.enabled,true) == jpg-size-32x32.jpg#-moz-samplesize=8 jpg-size-32x32.jpg#-moz-samplesize=8
@@ -1,63 +0,0 @@
# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
# PngSuite - Ancillary chunks
# cHRM chunks
#
# ccwn2c08 - gamma 1.0000 chunk, chroma chunk w:0.3127,0.3290 r:0.64,0.33 g:0.30,0.60 b:0.15,0.06
fails fails-if(prefs.getIntPref("gfx.color_management.mode")!=2) fuzzy-if(winWidget,8,569) == ccwn2c08.png ccwn2c08.png
# ccwn3p08 - gamma 1.0000 chunk, chroma chunk w:0.3127,0.3290 r:0.64,0.33 g:0.30,0.60 b:0.15,0.06
fails fails-if(prefs.getIntPref("gfx.color_management.mode")!=2) fuzzy-if(winWidget,8,577) == ccwn3p08.png ccwn3p08.png
# pHYs chunks
#
# PngSuite implies these first 3 should end up as 32x32 bitmaps, but
# per discussion in bug 408622 that's not actually true.
#
# cdfn2c08 - physical pixel dimensions, 8x32 flat pixels
fails == cdfn2c08.png cdfn2c08.png
# cdhn2c08 - physical pixel dimensions, 32x8 high pixels
fails == cdhn2c08.png cdhn2c08.png
# cdsn2c08 - physical pixel dimensions, 8x8 square pixels
fails == cdsn2c08.png cdsn2c08.png
# cdun2c08 - physical pixel dimensions, 1000 pixels per 1 meter
fails == cdun2c08.png cdun2c08.png
# hISt chunks (shouldn't affect display on 24bit systems)
#
# ch1n3p04 - histogram 15 colors
fails == ch1n3p04.png ch1n3p04.png
# ch2n3p08 - histogram 256 colors
fails == ch2n3p08.png ch2n3p08.png
# tIME chunks (doesn't affect display)
#
# cm0n0g04 - modification time, 01-jan-2000 12:34:56
fails == cm0n0g04.png cm0n0g04.png
# cm7n0g04 - modification time, 01-jan-1970 00:00:00
fails == cm7n0g04.png cm7n0g04.png
# cm9n0g04 - modification time, 31-dec-1999 23:59:59
fails == cm9n0g04.png cm9n0g04.png
# sBIT chunks
#
# cs3n2c16 - color, 13 significant bits
fails == cs3n2c16.png cs3n2c16.png
# cs3n3p08 - paletted, 3 significant bits
fails == cs3n3p08.png cs3n3p08.png
# cs5n2c08 - color, 5 significant bits
fails == cs5n2c08.png cs5n2c08.png
# cs5n3p08 - paletted, 5 significant bits
fails == cs5n3p08.png cs5n3p08.png
# cs8n2c08 - color, 8 significant bits (reference)
fails == cs8n2c08.png cs8n2c08.png
# cs8n3p08 - paletted, 8 significant bits (reference)
fails == cs8n3p08.png cs8n3p08.png
# tEXt chunks (doesn't affect display)
#
# ct0n0g04 - no textual data
fails == ct0n0g04.png ct0n0g04.png
# ct1n0g04 - with textual data
fails == ct1n0g04.png ct1n0g04.png
# ctzn0g04 - with compressed textual data
fails == ctzn0g04.png ctzn0g04.png
@@ -1,23 +0,0 @@
# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
# PngSuite - Background colors
#
# Note 1: The first 4 images have no bKGD chunk, the last 4 do. The background
# color indicated by bKGD isn't used, so the two sets of images are rendered
# identically and thus share common reference HTML files.
# bgai4a08 - 8 bit grayscale, alpha, no background chunk, interlaced
skip fuzzy-if(cocoaWidget||skiaContent,1,1024) == wrapper.html?bgai4a08.png wrapper.html?bgai4a08.png
# bgai4a16 - 16 bit grayscale, alpha, no background chunk, interlaced
skip fuzzy-if(cocoaWidget||skiaContent,1,1024) == wrapper.html?bgai4a16.png wrapper.html?bgai4a16.png
# bgan6a08 - 3x8 bits rgb color, alpha, no background chunk
skip fuzzy-if(cocoaWidget||skiaContent,1,1024) == wrapper.html?bgan6a08.png wrapper.html?bgan6a08.png
# bgan6a16 - 3x16 bits rgb color, alpha, no background chunk
skip fuzzy-if(cocoaWidget||skiaContent,1,1024) == wrapper.html?bgan6a16.png wrapper.html?bgan6a16.png
# bgbn4a08 - 8 bit grayscale, alpha, black background chunk
skip fuzzy-if(cocoaWidget||skiaContent,1,1024) == wrapper.html?bgbn4a08.png wrapper.html?bgbn4a08.png
# bggn4a16 - 16 bit grayscale, alpha, gray background chunk
skip fuzzy-if(cocoaWidget||skiaContent,1,1024) == wrapper.html?bggn4a16.png wrapper.html?bggn4a16.png
# bgwn6a08 - 3x8 bits rgb color, alpha, white background chunk
skip fuzzy-if(cocoaWidget||skiaContent,1,1024) == wrapper.html?bgwn6a08.png wrapper.html?bgwn6a08.png
# bgyn6a16 - 3x16 bits rgb color, alpha, yellow background chunk
skip fuzzy-if(cocoaWidget||skiaContent,1,1024) == wrapper.html?bgyn6a16.png wrapper.html?bgyn6a16.png
@@ -1,34 +0,0 @@
# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
# PngSuite - Basic formats (interlaced)
# basi0g01 - black & white
fails == basi0g01.png basi0g01.png
# basi0g02 - 2 bit (4 level) grayscale
fails == basi0g02.png basi0g02.png
# basi0g04 - 4 bit (16 level) grayscale
fails == basi0g04.png basi0g04.png
# basi0g08 - 8 bit (256 level) grayscale
fails == basi0g08.png basi0g08.png
# basi0g16 - 16 bit (64k level) grayscale
fails == basi0g16.png basi0g16.png
# basi2c08 - 3x8 bits rgb color
fails == basi2c08.png basi2c08.png
# basi2c16 - 3x16 bits rgb color
fails == basi2c16.png basi2c16.png
# basi3p01 - 1 bit (2 color) paletted
fails == basi3p01.png basi3p01.png
# basi3p02 - 2 bit (4 color) paletted
fails == basi3p02.png basi3p02.png
# basi3p04 - 4 bit (16 color) paletted
fails == basi3p04.png basi3p04.png
# basi3p08 - 8 bit (256 color) paletted
# fails == basi3p08.png basi3p08.png
# basi4a08 - 8 bit grayscale + 8 bit alpha-channel
#== basi4a08.png basi4a08.png
# basi4a16 - 16 bit grayscale + 16 bit alpha-channel
#== basi4a16.png basi4a16.png
# basi6a08 - 3x8 bits rgb color + 8 bit alpha-channel
#== basi6a08.png basi6a08.png
# basi6a16 - 3x16 bits rgb color + 16 bit alpha-channel
#== basi6a16.png basi6a16.png
@@ -1,34 +0,0 @@
# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
# PngSuite - Basic formats (non-interlaced)
# basn0g01 - black & white
fails == basn0g01.png basn0g01.png
# basn0g02 - 2 bit (4 level) grayscale
fails == basn0g02.png basn0g02.png
# basn0g04 - 4 bit (16 level) grayscale
fails == basn0g04.png basn0g04.png
# basn0g08 - 8 bit (256 level) grayscale
fails == basn0g08.png basn0g08.png
# basn0g16 - 16 bit (64k level) grayscale
fails == basn0g16.png basn0g16.png
# basn2c08 - 3x8 bits rgb color
fails == basn2c08.png basn2c08.png
# basn2c16 - 3x16 bits rgb color
fails == basn2c16.png basn2c16.png
# basn3p01 - 1 bit (2 color) paletted
fails == basn3p01.png basn3p01.png
# basn3p02 - 2 bit (4 color) paletted
fails == basn3p02.png basn3p02.png
# basn3p04 - 4 bit (16 color) paletted
fails == basn3p04.png basn3p04.png
# basn3p08 - 8 bit (256 color) paletted
fails == basn3p08.png basn3p08.png
# basn4a08 - 8 bit grayscale + 8 bit alpha-channel
#== basn4a08.png basn4a08.png
# basn4a16 - 16 bit grayscale + 16 bit alpha-channel
#== basn4a16.png basn4a16.png
# basn6a08 - 3x8 bits rgb color + 8 bit alpha-channel
#== basn6a08.png basn6a08.png
# basn6a16 - 3x16 bits rgb color + 16 bit alpha-channel
#== basn6a16.png basn6a16.png
@@ -1,22 +0,0 @@
# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
# PngSuite - Chunk ordering
#
# The resulting images of a type (color or grayscale) should all look the
# same, so they share common HTML reference files.
# oi1n0g16 - grayscale mother image with 1 idat-chunk
fails == oi1n0g16.png oi1n0g16.png
# oi1n2c16 - color mother image with 1 idat-chunk
fails == oi1n2c16.png oi1n2c16.png
# oi2n0g16 - grayscale image with 2 idat-chunks
fails == oi2n0g16.png oi2n0g16.png
# oi2n2c16 - color image with 2 idat-chunks
fails == oi2n2c16.png oi2n2c16.png
# oi4n0g16 - grayscale image with 4 unequal sized idat-chunks
fails == oi4n0g16.png oi4n0g16.png
# oi4n2c16 - color image with 4 unequal sized idat-chunks
fails == oi4n2c16.png oi4n2c16.png
# oi9n0g16 - grayscale image with all idat-chunks length one
fails == oi9n0g16.png oi9n0g16.png
# oi9n2c16 - color image with all idat-chunks length one
fails == oi9n2c16.png oi9n2c16.png
@@ -1,11 +0,0 @@
# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
# PngSuite - Corrupted files
#
# Note: these are corrupt files, and so no image should be rendered.
# x00n0g01 - empty 0x0 grayscale file
skip == wrapper.html?x00n0g01.png wrapper.html?x00n0g01.png
# xcrn0g04 - added cr bytes
skip == wrapper.html?xcrn0g04.png wrapper.html?xcrn0g04.png
# xlfn0g04 - added lf bytes
skip == wrapper.html?xlfn0g04.png wrapper.html?xlfn0g04.png

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