зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1360475: Use union for DOMMatrix constructor r=bzbarsky
Differential Revision: https://phabricator.services.mozilla.com/D35211 --HG-- extra : moz-landing-system : lando
This commit is contained in:
Родитель
7d7ca018fd
Коммит
d75e9f219f
|
@ -219,7 +219,7 @@ already_AddRefed<DOMMatrixReadOnly> DOMMatrixReadOnly::FromFloat64Array(
|
|||
|
||||
already_AddRefed<DOMMatrixReadOnly> DOMMatrixReadOnly::Constructor(
|
||||
const GlobalObject& aGlobal,
|
||||
const Optional<StringOrUnrestrictedDoubleSequence>& aArg,
|
||||
const Optional<StringOrUnrestrictedDoubleSequenceOrDOMMatrixReadOnly>& aArg,
|
||||
ErrorResult& aRv) {
|
||||
if (!aArg.WasPassed()) {
|
||||
RefPtr<DOMMatrixReadOnly> rval =
|
||||
|
@ -240,6 +240,11 @@ already_AddRefed<DOMMatrixReadOnly> DOMMatrixReadOnly::Constructor(
|
|||
rval->SetMatrixValue(arg.GetAsString(), aRv);
|
||||
return rval.forget();
|
||||
}
|
||||
if (arg.IsDOMMatrixReadOnly()) {
|
||||
RefPtr<DOMMatrixReadOnly> obj = new DOMMatrixReadOnly(
|
||||
aGlobal.GetAsSupports(), arg.GetAsDOMMatrixReadOnly());
|
||||
return obj.forget();
|
||||
}
|
||||
|
||||
const auto& sequence = arg.GetAsUnrestrictedDoubleSequence();
|
||||
const int length = sequence.Length();
|
||||
|
@ -658,30 +663,39 @@ already_AddRefed<DOMMatrix> DOMMatrix::FromFloat64Array(
|
|||
return obj.forget();
|
||||
}
|
||||
|
||||
already_AddRefed<DOMMatrix> DOMMatrix::Constructor(const GlobalObject& aGlobal,
|
||||
ErrorResult& aRv) {
|
||||
RefPtr<DOMMatrix> obj = new DOMMatrix(aGlobal.GetAsSupports());
|
||||
return obj.forget();
|
||||
}
|
||||
|
||||
already_AddRefed<DOMMatrix> DOMMatrix::Constructor(
|
||||
const GlobalObject& aGlobal, const nsAString& aTransformList,
|
||||
const GlobalObject& aGlobal,
|
||||
const Optional<StringOrUnrestrictedDoubleSequenceOrDOMMatrixReadOnly>& aArg,
|
||||
ErrorResult& aRv) {
|
||||
nsCOMPtr<nsPIDOMWindowInner> win = do_QueryInterface(aGlobal.GetAsSupports());
|
||||
if (!win) {
|
||||
aRv.ThrowTypeError<MSG_ILLEGAL_CONSTRUCTOR>();
|
||||
return nullptr;
|
||||
if (!aArg.WasPassed()) {
|
||||
RefPtr<DOMMatrix> rval = new DOMMatrix(aGlobal.GetAsSupports());
|
||||
return rval.forget();
|
||||
}
|
||||
RefPtr<DOMMatrix> obj = new DOMMatrix(aGlobal.GetAsSupports());
|
||||
obj = obj->SetMatrixValue(aTransformList, aRv);
|
||||
return obj.forget();
|
||||
}
|
||||
|
||||
already_AddRefed<DOMMatrix> DOMMatrix::Constructor(
|
||||
const GlobalObject& aGlobal, const DOMMatrixReadOnly& aOther,
|
||||
ErrorResult& aRv) {
|
||||
RefPtr<DOMMatrix> obj = new DOMMatrix(aGlobal.GetAsSupports(), aOther);
|
||||
return obj.forget();
|
||||
const auto& arg = aArg.Value();
|
||||
if (arg.IsString()) {
|
||||
nsCOMPtr<nsPIDOMWindowInner> win =
|
||||
do_QueryInterface(aGlobal.GetAsSupports());
|
||||
if (!win) {
|
||||
aRv.ThrowTypeError<MSG_ILLEGAL_CONSTRUCTOR>();
|
||||
return nullptr;
|
||||
}
|
||||
RefPtr<DOMMatrix> rval = new DOMMatrix(aGlobal.GetAsSupports());
|
||||
rval->SetMatrixValue(arg.GetAsString(), aRv);
|
||||
return rval.forget();
|
||||
}
|
||||
if (arg.IsDOMMatrixReadOnly()) {
|
||||
RefPtr<DOMMatrix> obj =
|
||||
new DOMMatrix(aGlobal.GetAsSupports(), arg.GetAsDOMMatrixReadOnly());
|
||||
return obj.forget();
|
||||
}
|
||||
|
||||
const auto& sequence = arg.GetAsUnrestrictedDoubleSequence();
|
||||
const int length = sequence.Length();
|
||||
const bool is2D = length == 6;
|
||||
RefPtr<DOMMatrix> rval = new DOMMatrix(aGlobal.GetAsSupports(), is2D);
|
||||
SetDataInMatrix(rval, sequence.Elements(), length, aRv);
|
||||
return rval.forget();
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
|
@ -718,29 +732,6 @@ static void SetDataInMatrix(DOMMatrixReadOnly* aMatrix, const T* aData,
|
|||
}
|
||||
}
|
||||
|
||||
already_AddRefed<DOMMatrix> DOMMatrix::Constructor(const GlobalObject& aGlobal,
|
||||
const Float32Array& aArray32,
|
||||
ErrorResult& aRv) {
|
||||
return FromFloat32Array(aGlobal, aArray32, aRv);
|
||||
}
|
||||
|
||||
already_AddRefed<DOMMatrix> DOMMatrix::Constructor(const GlobalObject& aGlobal,
|
||||
const Float64Array& aArray64,
|
||||
ErrorResult& aRv) {
|
||||
return FromFloat64Array(aGlobal, aArray64, aRv);
|
||||
}
|
||||
|
||||
already_AddRefed<DOMMatrix> DOMMatrix::Constructor(
|
||||
const GlobalObject& aGlobal, const Sequence<double>& aNumberSequence,
|
||||
ErrorResult& aRv) {
|
||||
const int length = aNumberSequence.Length();
|
||||
const bool is2D = length == 6;
|
||||
RefPtr<DOMMatrix> obj = new DOMMatrix(aGlobal.GetAsSupports(), is2D);
|
||||
SetDataInMatrix(obj, aNumberSequence.Elements(), length, aRv);
|
||||
|
||||
return obj.forget();
|
||||
}
|
||||
|
||||
already_AddRefed<DOMMatrix> DOMMatrix::ReadStructuredClone(
|
||||
JSContext* aCx, nsIGlobalObject* aGlobal,
|
||||
JSStructuredCloneReader* aReader) {
|
||||
|
|
|
@ -26,7 +26,7 @@ namespace dom {
|
|||
class GlobalObject;
|
||||
class DOMMatrix;
|
||||
class DOMPoint;
|
||||
class StringOrUnrestrictedDoubleSequence;
|
||||
class StringOrUnrestrictedDoubleSequenceOrDOMMatrixReadOnly;
|
||||
struct DOMPointInit;
|
||||
struct DOMMatrixInit;
|
||||
struct DOMMatrix2DInit;
|
||||
|
@ -83,7 +83,8 @@ class DOMMatrixReadOnly : public nsWrapperCache {
|
|||
|
||||
static already_AddRefed<DOMMatrixReadOnly> Constructor(
|
||||
const GlobalObject& aGlobal,
|
||||
const Optional<StringOrUnrestrictedDoubleSequence>& aArg,
|
||||
const Optional<StringOrUnrestrictedDoubleSequenceOrDOMMatrixReadOnly>&
|
||||
aArg,
|
||||
ErrorResult& aRv);
|
||||
|
||||
static already_AddRefed<DOMMatrixReadOnly> ReadStructuredClone(
|
||||
|
@ -288,22 +289,10 @@ class DOMMatrix : public DOMMatrixReadOnly {
|
|||
const GlobalObject& aGlobal, const Float64Array& aArray64,
|
||||
ErrorResult& aRv);
|
||||
|
||||
static already_AddRefed<DOMMatrix> Constructor(const GlobalObject& aGlobal,
|
||||
ErrorResult& aRv);
|
||||
static already_AddRefed<DOMMatrix> Constructor(
|
||||
const GlobalObject& aGlobal, const nsAString& aTransformList,
|
||||
ErrorResult& aRv);
|
||||
static already_AddRefed<DOMMatrix> Constructor(
|
||||
const GlobalObject& aGlobal, const DOMMatrixReadOnly& aOther,
|
||||
ErrorResult& aRv);
|
||||
static already_AddRefed<DOMMatrix> Constructor(const GlobalObject& aGlobal,
|
||||
const Float32Array& aArray32,
|
||||
ErrorResult& aRv);
|
||||
static already_AddRefed<DOMMatrix> Constructor(const GlobalObject& aGlobal,
|
||||
const Float64Array& aArray64,
|
||||
ErrorResult& aRv);
|
||||
static already_AddRefed<DOMMatrix> Constructor(
|
||||
const GlobalObject& aGlobal, const Sequence<double>& aNumberSequence,
|
||||
const GlobalObject& aGlobal,
|
||||
const Optional<StringOrUnrestrictedDoubleSequenceOrDOMMatrixReadOnly>&
|
||||
aArg,
|
||||
ErrorResult& aRv);
|
||||
|
||||
static already_AddRefed<DOMMatrix> ReadStructuredClone(
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
*/
|
||||
|
||||
[Pref="layout.css.DOMMatrix.enabled",
|
||||
Constructor(optional (DOMString or sequence<unrestricted double>) init),
|
||||
Constructor(optional (DOMString or sequence<unrestricted double> or DOMMatrixReadOnly) init),
|
||||
Exposed=(Window,Worker),
|
||||
Serializable]
|
||||
interface DOMMatrixReadOnly {
|
||||
|
@ -88,12 +88,7 @@ interface DOMMatrixReadOnly {
|
|||
};
|
||||
|
||||
[Pref="layout.css.DOMMatrix.enabled",
|
||||
Constructor,
|
||||
Constructor(DOMString transformList),
|
||||
Constructor(DOMMatrixReadOnly other),
|
||||
Constructor(Float32Array array32),
|
||||
Constructor(Float64Array array64),
|
||||
Constructor(sequence<unrestricted double> numberSequence),
|
||||
Constructor(optional (DOMString or sequence<unrestricted double> or DOMMatrixReadOnly) init),
|
||||
Exposed=(Window,Worker),
|
||||
Serializable,
|
||||
LegacyWindowAlias=WebKitCSSMatrix]
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
[DOMMatrix-001.html]
|
||||
[new DOMMatrix(undefined)]
|
||||
expected: FAIL
|
Загрузка…
Ссылка в новой задаче