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;
//----------------------------------------------------------------------
// nsISupports methods:
// 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
@ -43,19 +42,8 @@ NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mList)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_SCRIPT_OBJECTS
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN(DOMSVGTransform)
NS_IMPL_CYCLE_COLLECTION_TRACE_PRESERVED_WRAPPER
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
NS_IMPL_CYCLE_COLLECTION_ROOT_NATIVE(DOMSVGTransform, AddRef)
NS_IMPL_CYCLE_COLLECTION_UNROOT_NATIVE(DOMSVGTransform, Release)
JSObject*
DOMSVGTransform::WrapObject(JSContext* aCx, JSObject* aScope)

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

@ -20,15 +20,6 @@ class nsSVGElement;
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
namespace mozilla {
@ -40,13 +31,11 @@ class SVGMatrix;
/**
* DOM wrapper for an SVG transform. See DOMSVGLength.h.
*/
class DOMSVGTransform MOZ_FINAL : public nsISupports,
public nsWrapperCache
class DOMSVGTransform MOZ_FINAL : public nsWrapperCache
{
public:
NS_DECLARE_STATIC_IID_ACCESSOR(MOZILLA_DOMSVGTRANSFORM_IID)
NS_DECL_CYCLE_COLLECTING_ISUPPORTS
NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(DOMSVGTransform)
NS_INLINE_DECL_CYCLE_COLLECTING_NATIVE_REFCOUNTING(DOMSVGTransform)
NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_NATIVE_CLASS(DOMSVGTransform)
/**
* Generic ctor for DOMSVGTransform objects that are created for an attribute.
@ -194,8 +183,6 @@ private:
nsAutoPtr<SVGTransform> mTransform;
};
NS_DEFINE_STATIC_IID_ACCESSOR(DOMSVGTransform, MOZILLA_DOMSVGTRANSFORM_IID)
nsAttrValue
DOMSVGTransform::NotifyElementWillChange()
{

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

@ -161,7 +161,7 @@ DOMSVGTransformList::Initialize(DOMSVGTransform& newItem, ErrorResult& error)
// clone of newItem, it would actually insert newItem. To prevent that from
// happening we have to do the clone here, if necessary.
nsCOMPtr<DOMSVGTransform> domItem = &newItem;
nsRefPtr<DOMSVGTransform> domItem = &newItem;
if (domItem->HasOwner()) {
domItem = newItem.Clone();
}
@ -201,7 +201,7 @@ DOMSVGTransformList::InsertItemBefore(DOMSVGTransform& newItem,
return nullptr;
}
nsCOMPtr<DOMSVGTransform> domItem = &newItem;
nsRefPtr<DOMSVGTransform> domItem = &newItem;
if (newItem.HasOwner()) {
domItem = newItem.Clone(); // must do this before changing anything!
}
@ -248,7 +248,7 @@ DOMSVGTransformList::ReplaceItem(DOMSVGTransform& newItem,
return nullptr;
}
nsCOMPtr<DOMSVGTransform> domItem = &newItem;
nsRefPtr<DOMSVGTransform> domItem = &newItem;
if (newItem.HasOwner()) {
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
// DOM item can copy its *old* value:
mItems[index]->RemovingFromList();
nsCOMPtr<DOMSVGTransform> result = mItems[index];
nsRefPtr<DOMSVGTransform> result = mItems[index];
InternalList().RemoveItem(index);
mItems.RemoveElementAt(index);
@ -316,7 +316,7 @@ DOMSVGTransformList::RemoveItem(uint32_t index, ErrorResult& error)
already_AddRefed<DOMSVGTransform>
DOMSVGTransformList::CreateSVGTransformFromMatrix(dom::SVGMatrix& matrix)
{
nsCOMPtr<DOMSVGTransform> result = new DOMSVGTransform(matrix.Matrix());
nsRefPtr<DOMSVGTransform> result = new DOMSVGTransform(matrix.Matrix());
return result.forget();
}

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

@ -909,6 +909,7 @@ DOMInterfaces = {
'SVGTransform': {
'nativeType': 'mozilla::DOMSVGTransform',
'headerFile': 'DOMSVGTransform.h',
'nativeOwnership': 'refcounted',
'resultNotAddRefed': [ 'matrix' ]
},