Bug 1035394 - Fix dangerous public destructors in accessible - r=surkov

This commit is contained in:
Benoit Jacob 2014-07-08 17:23:18 -04:00
Родитель ffa051bb62
Коммит 9dca14345b
30 изменённых файлов: 112 добавлений и 12 удалений

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

@ -51,8 +51,10 @@ public:
typedef mozilla::a11y::Accessible Accessible; typedef mozilla::a11y::Accessible Accessible;
typedef mozilla::a11y::DocAccessible DocAccessible; typedef mozilla::a11y::DocAccessible DocAccessible;
protected:
virtual ~nsAccessibilityService(); virtual ~nsAccessibilityService();
public:
NS_DECL_ISUPPORTS_INHERITED NS_DECL_ISUPPORTS_INHERITED
NS_DECL_NSIACCESSIBLERETRIEVAL NS_DECL_NSIACCESSIBLERETRIEVAL
NS_DECL_NSIOBSERVER NS_DECL_NSIOBSERVER

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

@ -59,6 +59,7 @@ public:
virtual Accessible* AsAccessible() { return this; } virtual Accessible* AsAccessible() { return this; }
protected: protected:
virtual ~ARIAGridAccessible() {}
/** /**
* Return true if the given row index is valid. * Return true if the given row index is valid.
@ -117,6 +118,7 @@ public:
virtual already_AddRefed<nsIPersistentProperties> NativeAttributes() MOZ_OVERRIDE; virtual already_AddRefed<nsIPersistentProperties> NativeAttributes() MOZ_OVERRIDE;
protected: protected:
virtual ~ARIAGridCellAccessible() {}
/** /**
* Return a containing row. * Return a containing row.

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

@ -81,6 +81,7 @@ public:
virtual KeyBinding AccessKey() const; virtual KeyBinding AccessKey() const;
protected: protected:
virtual ~ApplicationAccessible() {}
// Accessible // Accessible
virtual void CacheChildren(); virtual void CacheChildren();

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

@ -39,6 +39,7 @@ public:
virtual bool RemoveChild(Accessible* aChild) MOZ_OVERRIDE MOZ_FINAL; virtual bool RemoveChild(Accessible* aChild) MOZ_OVERRIDE MOZ_FINAL;
protected: protected:
virtual ~LeafAccessible() {}
// Accessible // Accessible
virtual void CacheChildren(); virtual void CacheChildren();
@ -77,6 +78,8 @@ public:
virtual already_AddRefed<nsIURI> AnchorURIAt(uint32_t aAnchorIndex); virtual already_AddRefed<nsIURI> AnchorURIAt(uint32_t aAnchorIndex);
protected: protected:
virtual ~LinkableAccessible() {}
// Accessible // Accessible
virtual void BindToParent(Accessible* aParent, uint32_t aIndexInParent); virtual void BindToParent(Accessible* aParent, uint32_t aIndexInParent);
virtual void UnbindFromParent(); virtual void UnbindFromParent();
@ -97,7 +100,6 @@ class EnumRoleAccessible : public AccessibleWrap
public: public:
EnumRoleAccessible(nsIContent* aContent, DocAccessible* aDoc, EnumRoleAccessible(nsIContent* aContent, DocAccessible* aDoc,
a11y::role aRole); a11y::role aRole);
virtual ~EnumRoleAccessible() { }
NS_DECL_ISUPPORTS_INHERITED NS_DECL_ISUPPORTS_INHERITED
@ -105,6 +107,8 @@ public:
virtual a11y::role NativeRole(); virtual a11y::role NativeRole();
protected: protected:
virtual ~EnumRoleAccessible() { }
a11y::role mRole; a11y::role mRole;
}; };

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

@ -58,7 +58,6 @@ public:
DocAccessible(nsIDocument* aDocument, nsIContent* aRootContent, DocAccessible(nsIDocument* aDocument, nsIContent* aRootContent,
nsIPresShell* aPresShell); nsIPresShell* aPresShell);
virtual ~DocAccessible();
// nsIAccessible // nsIAccessible
NS_IMETHOD TakeFocus(void); NS_IMETHOD TakeFocus(void);
@ -311,6 +310,7 @@ public:
void RecreateAccessible(nsIContent* aContent); void RecreateAccessible(nsIContent* aContent);
protected: protected:
virtual ~DocAccessible();
void LastRelease(); void LastRelease();

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

@ -43,6 +43,9 @@ public:
// Widgets // Widgets
virtual bool IsWidget() const; virtual bool IsWidget() const;
protected:
virtual ~ProgressMeterAccessible() {}
}; };
/** /**

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

@ -40,7 +40,6 @@ class HyperTextAccessible : public AccessibleWrap,
{ {
public: public:
HyperTextAccessible(nsIContent* aContent, DocAccessible* aDoc); HyperTextAccessible(nsIContent* aContent, DocAccessible* aDoc);
virtual ~HyperTextAccessible() { }
NS_DECL_ISUPPORTS_INHERITED NS_DECL_ISUPPORTS_INHERITED
@ -416,6 +415,8 @@ public:
dom::Selection* DOMSelection() const; dom::Selection* DOMSelection() const;
protected: protected:
virtual ~HyperTextAccessible() { }
// Accessible // Accessible
virtual ENameValueFlag NativeName(nsString& aName) MOZ_OVERRIDE; virtual ENameValueFlag NativeName(nsString& aName) MOZ_OVERRIDE;
virtual void CacheChildren() MOZ_OVERRIDE; virtual void CacheChildren() MOZ_OVERRIDE;

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

@ -35,6 +35,10 @@ ImageAccessible::
mType = eImageType; mType = eImageType;
} }
ImageAccessible::~ImageAccessible()
{
}
NS_IMPL_ISUPPORTS_INHERITED(ImageAccessible, Accessible, NS_IMPL_ISUPPORTS_INHERITED(ImageAccessible, Accessible,
nsIAccessibleImage) nsIAccessibleImage)

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

@ -44,6 +44,8 @@ public:
virtual uint8_t ActionCount(); virtual uint8_t ActionCount();
protected: protected:
virtual ~ImageAccessible();
// Accessible // Accessible
virtual ENameValueFlag NativeName(nsString& aName) MOZ_OVERRIDE; virtual ENameValueFlag NativeName(nsString& aName) MOZ_OVERRIDE;

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

@ -24,7 +24,6 @@ class OuterDocAccessible : public AccessibleWrap
{ {
public: public:
OuterDocAccessible(nsIContent* aContent, DocAccessible* aDoc); OuterDocAccessible(nsIContent* aContent, DocAccessible* aDoc);
virtual ~OuterDocAccessible();
NS_DECL_ISUPPORTS_INHERITED NS_DECL_ISUPPORTS_INHERITED
@ -47,6 +46,8 @@ public:
virtual uint8_t ActionCount(); virtual uint8_t ActionCount();
protected: protected:
virtual ~OuterDocAccessible();
// Accessible // Accessible
virtual void CacheChildren(); virtual void CacheChildren();
}; };

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

@ -24,7 +24,6 @@ class RootAccessible : public DocAccessibleWrap,
public: public:
RootAccessible(nsIDocument* aDocument, nsIContent* aRootContent, RootAccessible(nsIDocument* aDocument, nsIContent* aRootContent,
nsIPresShell* aPresShell); nsIPresShell* aPresShell);
virtual ~RootAccessible();
// nsIDOMEventListener // nsIDOMEventListener
NS_IMETHOD HandleEvent(nsIDOMEvent* aEvent); NS_IMETHOD HandleEvent(nsIDOMEvent* aEvent);
@ -44,6 +43,7 @@ public:
virtual void DocumentActivated(DocAccessible* aDocument); virtual void DocumentActivated(DocAccessible* aDocument);
protected: protected:
virtual ~RootAccessible();
/** /**
* Add/remove DOM event listeners. * Add/remove DOM event listeners.

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

@ -18,13 +18,15 @@ class HTMLCanvasAccessible : public HyperTextAccessibleWrap
{ {
public: public:
HTMLCanvasAccessible(nsIContent* aContent, DocAccessible* aDoc); HTMLCanvasAccessible(nsIContent* aContent, DocAccessible* aDoc);
virtual ~HTMLCanvasAccessible() { }
// nsISupports // nsISupports
NS_DECL_ISUPPORTS_INHERITED NS_DECL_ISUPPORTS_INHERITED
// Accessible // Accessible
virtual a11y::role NativeRole(); virtual a11y::role NativeRole();
protected:
virtual ~HTMLCanvasAccessible() { }
}; };
} // namespace a11y } // namespace a11y

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

@ -64,6 +64,7 @@ public:
virtual Relation RelationByType(RelationType aType) MOZ_OVERRIDE; virtual Relation RelationByType(RelationType aType) MOZ_OVERRIDE;
protected: protected:
virtual ~HTMLLabelAccessible() {}
virtual ENameValueFlag NativeName(nsString& aName) MOZ_OVERRIDE; virtual ENameValueFlag NativeName(nsString& aName) MOZ_OVERRIDE;
}; };
@ -83,6 +84,9 @@ public:
virtual a11y::role NativeRole(); virtual a11y::role NativeRole();
virtual already_AddRefed<nsIPersistentProperties> NativeAttributes() MOZ_OVERRIDE; virtual already_AddRefed<nsIPersistentProperties> NativeAttributes() MOZ_OVERRIDE;
virtual Relation RelationByType(RelationType aType) MOZ_OVERRIDE; virtual Relation RelationByType(RelationType aType) MOZ_OVERRIDE;
protected:
virtual ~HTMLOutputAccessible() {}
}; };
} // namespace a11y } // namespace a11y

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

@ -141,6 +141,8 @@ public:
virtual Accessible* ContainerWidget() const; virtual Accessible* ContainerWidget() const;
protected: protected:
virtual ~HTMLTextFieldAccessible() {}
// Accessible // Accessible
virtual ENameValueFlag NativeName(nsString& aName) MOZ_OVERRIDE; virtual ENameValueFlag NativeName(nsString& aName) MOZ_OVERRIDE;

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

@ -20,7 +20,6 @@ class HTMLImageMapAccessible : public ImageAccessibleWrap
{ {
public: public:
HTMLImageMapAccessible(nsIContent* aContent, DocAccessible* aDoc); HTMLImageMapAccessible(nsIContent* aContent, DocAccessible* aDoc);
virtual ~HTMLImageMapAccessible() { }
// nsISupports and cycle collector // nsISupports and cycle collector
NS_DECL_ISUPPORTS_INHERITED NS_DECL_ISUPPORTS_INHERITED
@ -44,6 +43,7 @@ public:
Accessible* GetChildAccessibleFor(const nsINode* aNode) const; Accessible* GetChildAccessibleFor(const nsINode* aNode) const;
protected: protected:
virtual ~HTMLImageMapAccessible() { }
// Accessible // Accessible
virtual void CacheChildren(); virtual void CacheChildren();

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

@ -37,6 +37,8 @@ public:
virtual already_AddRefed<nsIURI> AnchorURIAt(uint32_t aAnchorIndex); virtual already_AddRefed<nsIURI> AnchorURIAt(uint32_t aAnchorIndex);
protected: protected:
virtual ~HTMLLinkAccessible() {}
enum { eAction_Jump = 0 }; enum { eAction_Jump = 0 };
/** /**

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

@ -23,7 +23,6 @@ class HTMLListAccessible : public HyperTextAccessibleWrap
public: public:
HTMLListAccessible(nsIContent* aContent, DocAccessible* aDoc) : HTMLListAccessible(nsIContent* aContent, DocAccessible* aDoc) :
HyperTextAccessibleWrap(aContent, aDoc) { mGenericTypes |= eList; } HyperTextAccessibleWrap(aContent, aDoc) { mGenericTypes |= eList; }
virtual ~HTMLListAccessible() { }
// nsISupports // nsISupports
NS_DECL_ISUPPORTS_INHERITED NS_DECL_ISUPPORTS_INHERITED
@ -31,6 +30,9 @@ public:
// Accessible // Accessible
virtual a11y::role NativeRole(); virtual a11y::role NativeRole();
virtual uint64_t NativeState(); virtual uint64_t NativeState();
protected:
virtual ~HTMLListAccessible() { }
}; };
@ -41,7 +43,6 @@ class HTMLLIAccessible : public HyperTextAccessibleWrap
{ {
public: public:
HTMLLIAccessible(nsIContent* aContent, DocAccessible* aDoc); HTMLLIAccessible(nsIContent* aContent, DocAccessible* aDoc);
virtual ~HTMLLIAccessible() { }
// nsISupports // nsISupports
NS_DECL_ISUPPORTS_INHERITED NS_DECL_ISUPPORTS_INHERITED
@ -60,6 +61,8 @@ public:
void UpdateBullet(bool aHasBullet); void UpdateBullet(bool aHasBullet);
protected: protected:
virtual ~HTMLLIAccessible() { }
// Accessible // Accessible
virtual void CacheChildren(); virtual void CacheChildren();

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

@ -55,6 +55,8 @@ public:
virtual bool Selected() MOZ_OVERRIDE; virtual bool Selected() MOZ_OVERRIDE;
protected: protected:
virtual ~HTMLTableCellAccessible() {}
/** /**
* Return host table accessible. * Return host table accessible.
*/ */
@ -97,12 +99,14 @@ public:
mType = eHTMLTableRowType; mType = eHTMLTableRowType;
mGenericTypes |= eTableRow; mGenericTypes |= eTableRow;
} }
virtual ~HTMLTableRowAccessible() { }
NS_DECL_ISUPPORTS_INHERITED NS_DECL_ISUPPORTS_INHERITED
// Accessible // Accessible
virtual a11y::role NativeRole(); virtual a11y::role NativeRole();
protected:
virtual ~HTMLTableRowAccessible() { }
}; };
@ -173,6 +177,8 @@ public:
virtual Relation RelationByType(RelationType aRelationType) MOZ_OVERRIDE; virtual Relation RelationByType(RelationType aRelationType) MOZ_OVERRIDE;
protected: protected:
virtual ~HTMLTableAccessible() {}
// Accessible // Accessible
virtual ENameValueFlag NativeName(nsString& aName) MOZ_OVERRIDE; virtual ENameValueFlag NativeName(nsString& aName) MOZ_OVERRIDE;
virtual void CacheChildren(); virtual void CacheChildren();

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

@ -21,6 +21,10 @@ XULAlertAccessible::
{ {
} }
XULAlertAccessible::~XULAlertAccessible()
{
}
NS_IMPL_ISUPPORTS_INHERITED0(XULAlertAccessible, Accessible) NS_IMPL_ISUPPORTS_INHERITED0(XULAlertAccessible, Accessible)
role role

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

@ -30,6 +30,9 @@ public:
// Widgets // Widgets
virtual bool IsWidget() const; virtual bool IsWidget() const;
virtual Accessible* ContainerWidget() const; virtual Accessible* ContainerWidget() const;
protected:
~XULAlertAccessible();
}; };
} // namespace a11y } // namespace a11y

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

@ -184,6 +184,10 @@ XULLinkAccessible::
{ {
} }
XULLinkAccessible::~XULLinkAccessible()
{
}
// Expose nsIAccessibleHyperLink unconditionally // Expose nsIAccessibleHyperLink unconditionally
NS_IMPL_ISUPPORTS_INHERITED(XULLinkAccessible, XULLabelAccessible, NS_IMPL_ISUPPORTS_INHERITED(XULLinkAccessible, XULLabelAccessible,
nsIAccessibleHyperLink) nsIAccessibleHyperLink)

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

@ -106,6 +106,8 @@ public:
virtual already_AddRefed<nsIURI> AnchorURIAt(uint32_t aAnchorIndex); virtual already_AddRefed<nsIURI> AnchorURIAt(uint32_t aAnchorIndex);
protected: protected:
virtual ~XULLinkAccessible();
// Accessible // Accessible
virtual ENameValueFlag NativeName(nsString& aName) MOZ_OVERRIDE; virtual ENameValueFlag NativeName(nsString& aName) MOZ_OVERRIDE;

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

@ -47,6 +47,10 @@ XULButtonAccessible::
} }
} }
XULButtonAccessible::~XULButtonAccessible()
{
}
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// XULButtonAccessible: nsISupports // XULButtonAccessible: nsISupports

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

@ -55,6 +55,8 @@ public:
virtual bool IsAcceptableChild(Accessible* aPossibleChild) const MOZ_OVERRIDE; virtual bool IsAcceptableChild(Accessible* aPossibleChild) const MOZ_OVERRIDE;
protected: protected:
virtual ~XULButtonAccessible();
// XULButtonAccessible // XULButtonAccessible
bool ContainsMenu(); bool ContainsMenu();
}; };

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

@ -586,6 +586,10 @@ XULListitemAccessible::
mType = eXULListItemType; mType = eXULListItemType;
} }
XULListitemAccessible::~XULListitemAccessible()
{
}
NS_IMPL_ISUPPORTS_INHERITED0(XULListitemAccessible, Accessible) NS_IMPL_ISUPPORTS_INHERITED0(XULListitemAccessible, Accessible)
Accessible* Accessible*

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

@ -67,7 +67,6 @@ class XULListboxAccessible : public XULSelectControlAccessible,
{ {
public: public:
XULListboxAccessible(nsIContent* aContent, DocAccessible* aDoc); XULListboxAccessible(nsIContent* aContent, DocAccessible* aDoc);
virtual ~XULListboxAccessible() {}
NS_DECL_ISUPPORTS_INHERITED NS_DECL_ISUPPORTS_INHERITED
@ -107,6 +106,8 @@ public:
virtual Accessible* ContainerWidget() const; virtual Accessible* ContainerWidget() const;
protected: protected:
virtual ~XULListboxAccessible() {}
bool IsMulticolumn(); bool IsMulticolumn();
}; };
@ -121,7 +122,6 @@ public:
NS_DECL_ISUPPORTS_INHERITED NS_DECL_ISUPPORTS_INHERITED
XULListitemAccessible(nsIContent* aContent, DocAccessible* aDoc); XULListitemAccessible(nsIContent* aContent, DocAccessible* aDoc);
virtual ~XULListitemAccessible() {}
// nsIAccessible // nsIAccessible
NS_IMETHOD GetActionName(uint8_t index, nsAString& aName); NS_IMETHOD GetActionName(uint8_t index, nsAString& aName);
@ -138,6 +138,8 @@ public:
virtual Accessible* ContainerWidget() const; virtual Accessible* ContainerWidget() const;
protected: protected:
virtual ~XULListitemAccessible();
// Accessible // Accessible
virtual ENameValueFlag NativeName(nsString& aName) MOZ_OVERRIDE; virtual ENameValueFlag NativeName(nsString& aName) MOZ_OVERRIDE;
@ -181,6 +183,9 @@ public:
virtual uint32_t RowIdx() const MOZ_OVERRIDE; virtual uint32_t RowIdx() const MOZ_OVERRIDE;
virtual void ColHeaderCells(nsTArray<Accessible*>* aHeaderCells) MOZ_OVERRIDE; virtual void ColHeaderCells(nsTArray<Accessible*>* aHeaderCells) MOZ_OVERRIDE;
virtual bool Selected() MOZ_OVERRIDE; virtual bool Selected() MOZ_OVERRIDE;
protected:
virtual ~XULListCellAccessible() {}
}; };
} // namespace a11y } // namespace a11y

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

@ -62,6 +62,10 @@ XULTreeAccessible::
} }
} }
XULTreeAccessible::~XULTreeAccessible()
{
}
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// XULTreeAccessible: nsISupports and cycle collection implementation // XULTreeAccessible: nsISupports and cycle collection implementation
@ -703,6 +707,10 @@ XULTreeItemAccessibleBase::
mStateFlags |= eSharedNode; mStateFlags |= eSharedNode;
} }
XULTreeItemAccessibleBase::~XULTreeItemAccessibleBase()
{
}
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// XULTreeItemAccessibleBase: nsISupports implementation // XULTreeItemAccessibleBase: nsISupports implementation
@ -1103,6 +1111,10 @@ XULTreeItemAccessible::
GetCellName(mColumn, mCachedName); GetCellName(mColumn, mCachedName);
} }
XULTreeItemAccessible::~XULTreeItemAccessible()
{
}
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// XULTreeItemAccessible: nsISupports implementation // XULTreeItemAccessible: nsISupports implementation

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

@ -107,6 +107,8 @@ public:
void TreeViewChanged(nsITreeView* aView); void TreeViewChanged(nsITreeView* aView);
protected: protected:
virtual ~XULTreeAccessible();
/** /**
* Creates tree item accessible for the given row index. * Creates tree item accessible for the given row index.
*/ */
@ -190,6 +192,8 @@ public:
virtual void RowInvalidated(int32_t aStartColIdx, int32_t aEndColIdx) = 0; virtual void RowInvalidated(int32_t aStartColIdx, int32_t aEndColIdx) = 0;
protected: protected:
virtual ~XULTreeItemAccessibleBase();
enum { eAction_Click = 0, eAction_Expand = 1 }; enum { eAction_Click = 0, eAction_Expand = 1 };
// Accessible // Accessible
@ -242,6 +246,7 @@ public:
virtual void RowInvalidated(int32_t aStartColIdx, int32_t aEndColIdx); virtual void RowInvalidated(int32_t aStartColIdx, int32_t aEndColIdx);
protected: protected:
virtual ~XULTreeItemAccessible();
// Accessible // Accessible
virtual void CacheChildren(); virtual void CacheChildren();

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

@ -22,6 +22,10 @@
using namespace mozilla::a11y; using namespace mozilla::a11y;
XULTreeGridAccessible::~XULTreeGridAccessible()
{
}
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// XULTreeGridAccessible: nsISupports implementation // XULTreeGridAccessible: nsISupports implementation
@ -262,6 +266,10 @@ XULTreeGridRowAccessible::
mGenericTypes |= eTableRow; mGenericTypes |= eTableRow;
} }
XULTreeGridRowAccessible::~XULTreeGridRowAccessible()
{
}
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// XULTreeGridRowAccessible: nsISupports and cycle collection implementation // XULTreeGridRowAccessible: nsISupports and cycle collection implementation
@ -450,6 +458,10 @@ XULTreeGridCellAccessible::
mTreeView->GetCellText(mRow, mColumn, mCachedTextEquiv); mTreeView->GetCellText(mRow, mColumn, mCachedTextEquiv);
} }
XULTreeGridCellAccessible::~XULTreeGridCellAccessible()
{
}
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// XULTreeGridCellAccessible: nsISupports implementation // XULTreeGridCellAccessible: nsISupports implementation

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

@ -60,6 +60,7 @@ public:
virtual a11y::role NativeRole(); virtual a11y::role NativeRole();
protected: protected:
virtual ~XULTreeGridAccessible();
// XULTreeAccessible // XULTreeAccessible
virtual already_AddRefed<Accessible> virtual already_AddRefed<Accessible>
@ -100,6 +101,7 @@ public:
virtual void RowInvalidated(int32_t aStartColIdx, int32_t aEndColIdx); virtual void RowInvalidated(int32_t aStartColIdx, int32_t aEndColIdx);
protected: protected:
virtual ~XULTreeGridRowAccessible();
// Accessible // Accessible
virtual void CacheChildren(); virtual void CacheChildren();
@ -184,6 +186,8 @@ public:
bool CellInvalidated(); bool CellInvalidated();
protected: protected:
virtual ~XULTreeGridCellAccessible();
// Accessible // Accessible
virtual Accessible* GetSiblingAtOffset(int32_t aOffset, virtual Accessible* GetSiblingAtOffset(int32_t aOffset,
nsresult* aError = nullptr) const; nsresult* aError = nullptr) const;