mirror of
https://github.com/roytam1/UXP.git
synced 2026-05-26 14:54:25 +00:00
Merge remote-tracking branch 'origin/tracking' into custom
This commit is contained in:
@@ -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"
|
||||
|
||||
@@ -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).
|
||||
|
||||
@@ -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**
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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
@@ -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
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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
@@ -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.
|
||||
|
||||
@@ -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
@@ -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)
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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()) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
|
||||
== test_bug920877.html test_bug920877.html
|
||||
@@ -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() {}
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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,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) {
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
@@ -138,7 +138,7 @@ SVGDocument::EnsureNonSVGUserAgentStyleSheetsLoaded()
|
||||
}
|
||||
}
|
||||
|
||||
auto cache = nsLayoutStylesheetCache::For(GetStyleBackendType());
|
||||
auto cache = nsLayoutStylesheetCache::Get();
|
||||
|
||||
StyleSheet* sheet = cache->NumberControlSheet();
|
||||
if (sheet) {
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
@@ -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;
|
||||
|
||||
@@ -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*
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
@@ -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);
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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 isn’t
|
||||
# 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. I’m not sure that the gamma and chromaticity values in this
|
||||
# file are sensible, because I can’t 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 don’t 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 I’m 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 aren’t 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. That’s because they’re 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. It’s not clear if this is valid,
|
||||
# but I can’t find anything that suggests it isn’t."
|
||||
== 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 (they’re 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 it’s
|
||||
# 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 don’t 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
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user