nsresult rv = SVGFrame->GetFrameForPoint(x, y, &hit);
nsresult rv = SVGFrame->GetFrameForPointSVG(x, y, &hit);
nsSVGOuterSVGFrame::GetFrameForPoint(const nsPoint& aPoint,                                     nsFramePaintLayer aWhichLayer,                                     nsIFrame**     aFrame){  // XXX This algorithm is really bad. Because we only have a  // singly-linked list we have to test each and every SVG element for  // a hit. What we really want is a double-linked list.    *aFrame = nsnull;  if (aWhichLayer != NS_FRAME_PAINT_LAYER_FOREGROUND) return NS_ERROR_FAILURE;    float x = GetPxPerTwips() * ( aPoint.x - mRect.x);  float y = GetPxPerTwips() * ( aPoint.y - mRect.y);    PRBool inThisFrame = mRect.Contains(aPoint);    if (!inThisFrame || !mRenderer) {    return NS_ERROR_FAILURE;  }  *aFrame = this;  nsIFrame* hit = nsnull;  for (nsIFrame* kid = mFrames.FirstChild(); kid;       kid = kid->GetNextSibling()) {    nsISVGChildFrame* SVGFrame=nsnull;    kid->QueryInterface(NS_GET_IID(nsISVGChildFrame),(void**)&SVGFrame);    if (SVGFrame) {      nsresult rv = SVGFrame->GetFrameForPoint(x, y, &hit);      if (NS_SUCCEEDED(rv) && hit) {        *aFrame = hit;        // return NS_OK; can't return. we need reverse order but only        // have a singly linked list...      }    }  }      return NS_OK;}