nsIFrame *firstChild; nsresult rv = FirstChild(aPresContext,nsnull,&firstChild);
nsIFrame *firstChild = GetFirstChild(nsnull);
CanvasFrame::HandleEvent(nsIPresContext* aPresContext,                          nsGUIEvent* aEvent,                         nsEventStatus* aEventStatus){  NS_ENSURE_ARG_POINTER(aEventStatus);  if (nsEventStatus_eConsumeNoDefault == *aEventStatus) {    return NS_OK;  }  if (aEvent->message == NS_MOUSE_LEFT_BUTTON_UP ||      aEvent->message == NS_MOUSE_MIDDLE_BUTTON_UP ||      aEvent->message == NS_MOUSE_RIGHT_BUTTON_UP ||      aEvent->message == NS_MOUSE_MOVE ) {    nsIFrame *firstChild;    nsresult rv = FirstChild(aPresContext,nsnull,&firstChild);    //canvas frame needs to pass mouse events to its area frame so that mouse movement    //and selection code will work properly. this will still have the necessary effects    //that would have happened if nsFrame::HandleEvent was called.    if (NS_SUCCEEDED(rv) && firstChild)      firstChild->HandleEvent(aPresContext, aEvent, aEventStatus);    else      nsFrame::HandleEvent(aPresContext, aEvent, aEventStatus);  }  return NS_OK;}