From 333122f56408d9b3f82708fd1b641740dd0b3d8d Mon Sep 17 00:00:00 2001 From: Mats Palmgren Date: Mon, 1 Apr 2013 18:45:19 +0200 Subject: [PATCH] Bug 856243 - Add missing do_QueryFrame support. r=dholbert --- layout/generic/nsFrameSetFrame.cpp | 1 + layout/generic/nsHTMLCanvasFrame.h | 1 + layout/generic/nsQueryFrame.h | 12 +++++++----- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/layout/generic/nsFrameSetFrame.cpp b/layout/generic/nsFrameSetFrame.cpp index 3c6059fff225..420ca7f6c3b2 100644 --- a/layout/generic/nsFrameSetFrame.cpp +++ b/layout/generic/nsFrameSetFrame.cpp @@ -142,6 +142,7 @@ protected: class nsHTMLFramesetBlankFrame : public nsLeafFrame { public: + NS_DECL_QUERYFRAME_TARGET(nsHTMLFramesetBlankFrame) NS_DECL_FRAMEARENA_HELPERS #ifdef DEBUG diff --git a/layout/generic/nsHTMLCanvasFrame.h b/layout/generic/nsHTMLCanvasFrame.h index e67072808816..ed564aa4ddc2 100644 --- a/layout/generic/nsHTMLCanvasFrame.h +++ b/layout/generic/nsHTMLCanvasFrame.h @@ -34,6 +34,7 @@ public: typedef mozilla::layers::LayerManager LayerManager; typedef mozilla::FrameLayerBuilder::ContainerParameters ContainerParameters; + NS_DECL_QUERYFRAME_TARGET(nsHTMLCanvasFrame) NS_DECL_FRAMEARENA_HELPERS nsHTMLCanvasFrame(nsStyleContext* aContext) : nsContainerFrame(aContext) {} diff --git a/layout/generic/nsQueryFrame.h b/layout/generic/nsQueryFrame.h index 589df3360811..c20956791e92 100644 --- a/layout/generic/nsQueryFrame.h +++ b/layout/generic/nsQueryFrame.h @@ -8,7 +8,8 @@ #include "nscore.h" #define NS_DECL_QUERYFRAME_TARGET(classname) \ - static const nsQueryFrame::FrameIID kFrameIID = nsQueryFrame::classname##_id; + static const nsQueryFrame::FrameIID kFrameIID = nsQueryFrame::classname##_id; \ + typedef classname* Has_NS_DECL_QUERYFRAME_TARGET; #define NS_DECL_QUERYFRAME \ virtual void* QueryFrame(FrameIID id); @@ -33,7 +34,7 @@ #define NS_QUERYFRAME_TAIL_INHERITANCE_ROOT \ default: break; \ } \ - return nullptr; \ + return nullptr; \ } class nsQueryFrame @@ -63,9 +64,10 @@ public: template operator Dest*() { - if (!mRawPtr) - return nullptr; - + if (!mRawPtr) { + // Ensure that Dest declared itself as a queryframe target. + return static_cast(nullptr); + } return reinterpret_cast(mRawPtr->QueryFrame(Dest::kFrameIID)); }