зеркало из https://github.com/mozilla/gecko-dev.git
Bug 855597: Make SVGTransform not inherit nsISupports r=longsonr
This commit is contained in:
Родитель
5356c64ce3
Коммит
0d49bfddd3
|
@ -20,7 +20,6 @@ using namespace dom;
|
||||||
static nsSVGAttrTearoffTable<DOMSVGTransform, SVGMatrix> sSVGMatrixTearoffTable;
|
static nsSVGAttrTearoffTable<DOMSVGTransform, SVGMatrix> sSVGMatrixTearoffTable;
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
// nsISupports methods:
|
|
||||||
|
|
||||||
// We could use NS_IMPL_CYCLE_COLLECTION_1, except that in Unlink() we need to
|
// We could use NS_IMPL_CYCLE_COLLECTION_1, except that in Unlink() we need to
|
||||||
// clear our list's weak ref to us to be safe. (The other option would be to
|
// clear our list's weak ref to us to be safe. (The other option would be to
|
||||||
|
@ -43,19 +42,8 @@ NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mList)
|
||||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_SCRIPT_OBJECTS
|
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_SCRIPT_OBJECTS
|
||||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
|
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
|
||||||
|
|
||||||
NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN(DOMSVGTransform)
|
NS_IMPL_CYCLE_COLLECTION_ROOT_NATIVE(DOMSVGTransform, AddRef)
|
||||||
NS_IMPL_CYCLE_COLLECTION_TRACE_PRESERVED_WRAPPER
|
NS_IMPL_CYCLE_COLLECTION_UNROOT_NATIVE(DOMSVGTransform, Release)
|
||||||
NS_IMPL_CYCLE_COLLECTION_TRACE_END
|
|
||||||
|
|
||||||
NS_IMPL_CYCLE_COLLECTING_ADDREF(DOMSVGTransform)
|
|
||||||
NS_IMPL_CYCLE_COLLECTING_RELEASE(DOMSVGTransform)
|
|
||||||
|
|
||||||
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(DOMSVGTransform)
|
|
||||||
NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
|
|
||||||
NS_INTERFACE_MAP_ENTRY(mozilla::DOMSVGTransform)
|
|
||||||
NS_INTERFACE_MAP_ENTRY(nsISupports)
|
|
||||||
NS_INTERFACE_MAP_END
|
|
||||||
|
|
||||||
|
|
||||||
JSObject*
|
JSObject*
|
||||||
DOMSVGTransform::WrapObject(JSContext* aCx, JSObject* aScope)
|
DOMSVGTransform::WrapObject(JSContext* aCx, JSObject* aScope)
|
||||||
|
|
|
@ -20,15 +20,6 @@ class nsSVGElement;
|
||||||
|
|
||||||
struct gfxMatrix;
|
struct gfxMatrix;
|
||||||
|
|
||||||
// We make DOMSVGTransform a pseudo-interface to allow us to QI to it in order
|
|
||||||
// to check that the objects that scripts pass in are our our *native* transform
|
|
||||||
// objects.
|
|
||||||
//
|
|
||||||
// {0A799862-9469-41FE-B4CD-2019E65D8DA6}
|
|
||||||
#define MOZILLA_DOMSVGTRANSFORM_IID \
|
|
||||||
{ 0x0A799862, 0x9469, 0x41FE, \
|
|
||||||
{ 0xB4, 0xCD, 0x20, 0x19, 0xE6, 0x5D, 0x8D, 0xA6 } }
|
|
||||||
|
|
||||||
#define MOZ_SVG_LIST_INDEX_BIT_COUNT 31 // supports > 2 billion list items
|
#define MOZ_SVG_LIST_INDEX_BIT_COUNT 31 // supports > 2 billion list items
|
||||||
|
|
||||||
namespace mozilla {
|
namespace mozilla {
|
||||||
|
@ -40,13 +31,11 @@ class SVGMatrix;
|
||||||
/**
|
/**
|
||||||
* DOM wrapper for an SVG transform. See DOMSVGLength.h.
|
* DOM wrapper for an SVG transform. See DOMSVGLength.h.
|
||||||
*/
|
*/
|
||||||
class DOMSVGTransform MOZ_FINAL : public nsISupports,
|
class DOMSVGTransform MOZ_FINAL : public nsWrapperCache
|
||||||
public nsWrapperCache
|
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
NS_DECLARE_STATIC_IID_ACCESSOR(MOZILLA_DOMSVGTRANSFORM_IID)
|
NS_INLINE_DECL_CYCLE_COLLECTING_NATIVE_REFCOUNTING(DOMSVGTransform)
|
||||||
NS_DECL_CYCLE_COLLECTING_ISUPPORTS
|
NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_NATIVE_CLASS(DOMSVGTransform)
|
||||||
NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(DOMSVGTransform)
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generic ctor for DOMSVGTransform objects that are created for an attribute.
|
* Generic ctor for DOMSVGTransform objects that are created for an attribute.
|
||||||
|
@ -194,8 +183,6 @@ private:
|
||||||
nsAutoPtr<SVGTransform> mTransform;
|
nsAutoPtr<SVGTransform> mTransform;
|
||||||
};
|
};
|
||||||
|
|
||||||
NS_DEFINE_STATIC_IID_ACCESSOR(DOMSVGTransform, MOZILLA_DOMSVGTRANSFORM_IID)
|
|
||||||
|
|
||||||
nsAttrValue
|
nsAttrValue
|
||||||
DOMSVGTransform::NotifyElementWillChange()
|
DOMSVGTransform::NotifyElementWillChange()
|
||||||
{
|
{
|
||||||
|
|
|
@ -161,7 +161,7 @@ DOMSVGTransformList::Initialize(DOMSVGTransform& newItem, ErrorResult& error)
|
||||||
// clone of newItem, it would actually insert newItem. To prevent that from
|
// clone of newItem, it would actually insert newItem. To prevent that from
|
||||||
// happening we have to do the clone here, if necessary.
|
// happening we have to do the clone here, if necessary.
|
||||||
|
|
||||||
nsCOMPtr<DOMSVGTransform> domItem = &newItem;
|
nsRefPtr<DOMSVGTransform> domItem = &newItem;
|
||||||
if (domItem->HasOwner()) {
|
if (domItem->HasOwner()) {
|
||||||
domItem = newItem.Clone();
|
domItem = newItem.Clone();
|
||||||
}
|
}
|
||||||
|
@ -201,7 +201,7 @@ DOMSVGTransformList::InsertItemBefore(DOMSVGTransform& newItem,
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
nsCOMPtr<DOMSVGTransform> domItem = &newItem;
|
nsRefPtr<DOMSVGTransform> domItem = &newItem;
|
||||||
if (newItem.HasOwner()) {
|
if (newItem.HasOwner()) {
|
||||||
domItem = newItem.Clone(); // must do this before changing anything!
|
domItem = newItem.Clone(); // must do this before changing anything!
|
||||||
}
|
}
|
||||||
|
@ -248,7 +248,7 @@ DOMSVGTransformList::ReplaceItem(DOMSVGTransform& newItem,
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
nsCOMPtr<DOMSVGTransform> domItem = &newItem;
|
nsRefPtr<DOMSVGTransform> domItem = &newItem;
|
||||||
if (newItem.HasOwner()) {
|
if (newItem.HasOwner()) {
|
||||||
domItem = newItem.Clone(); // must do this before changing anything!
|
domItem = newItem.Clone(); // must do this before changing anything!
|
||||||
}
|
}
|
||||||
|
@ -299,7 +299,7 @@ DOMSVGTransformList::RemoveItem(uint32_t index, ErrorResult& error)
|
||||||
// Notify the DOM item of removal *before* modifying the lists so that the
|
// Notify the DOM item of removal *before* modifying the lists so that the
|
||||||
// DOM item can copy its *old* value:
|
// DOM item can copy its *old* value:
|
||||||
mItems[index]->RemovingFromList();
|
mItems[index]->RemovingFromList();
|
||||||
nsCOMPtr<DOMSVGTransform> result = mItems[index];
|
nsRefPtr<DOMSVGTransform> result = mItems[index];
|
||||||
|
|
||||||
InternalList().RemoveItem(index);
|
InternalList().RemoveItem(index);
|
||||||
mItems.RemoveElementAt(index);
|
mItems.RemoveElementAt(index);
|
||||||
|
@ -316,7 +316,7 @@ DOMSVGTransformList::RemoveItem(uint32_t index, ErrorResult& error)
|
||||||
already_AddRefed<DOMSVGTransform>
|
already_AddRefed<DOMSVGTransform>
|
||||||
DOMSVGTransformList::CreateSVGTransformFromMatrix(dom::SVGMatrix& matrix)
|
DOMSVGTransformList::CreateSVGTransformFromMatrix(dom::SVGMatrix& matrix)
|
||||||
{
|
{
|
||||||
nsCOMPtr<DOMSVGTransform> result = new DOMSVGTransform(matrix.Matrix());
|
nsRefPtr<DOMSVGTransform> result = new DOMSVGTransform(matrix.Matrix());
|
||||||
return result.forget();
|
return result.forget();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -909,6 +909,7 @@ DOMInterfaces = {
|
||||||
'SVGTransform': {
|
'SVGTransform': {
|
||||||
'nativeType': 'mozilla::DOMSVGTransform',
|
'nativeType': 'mozilla::DOMSVGTransform',
|
||||||
'headerFile': 'DOMSVGTransform.h',
|
'headerFile': 'DOMSVGTransform.h',
|
||||||
|
'nativeOwnership': 'refcounted',
|
||||||
'resultNotAddRefed': [ 'matrix' ]
|
'resultNotAddRefed': [ 'matrix' ]
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче