Bug 855597: Make SVGTransform not inherit nsISupports r=longsonr

This commit is contained in:
David Zbarsky 2013-04-02 15:17:40 -04:00
Родитель 5356c64ce3
Коммит 0d49bfddd3
4 изменённых файлов: 11 добавлений и 35 удалений

Просмотреть файл

@ -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' ]
}, },