diff --git a/accessible/src/html/nsHTMLTableAccessible.cpp b/accessible/src/html/nsHTMLTableAccessible.cpp index db3c5be07715..e16fded2501d 100644 --- a/accessible/src/html/nsHTMLTableAccessible.cpp +++ b/accessible/src/html/nsHTMLTableAccessible.cpp @@ -857,29 +857,22 @@ nsHTMLTableAccessible::GetTableNode(nsIDOMNode **_retval) } nsresult -nsHTMLTableAccessible::GetTableLayout(nsITableLayout **aLayoutObject) +nsHTMLTableAccessible::GetTableLayout(nsITableLayout **aTableLayout) { - *aLayoutObject = nsnull; - - nsresult rv = NS_OK; + *aTableLayout = nsnull; nsCOMPtr tableNode; - rv = GetTableNode(getter_AddRefs(tableNode)); - NS_ENSURE_SUCCESS(rv, rv); + GetTableNode(getter_AddRefs(tableNode)); + nsCOMPtr tableContent(do_QueryInterface(tableNode)); + if (!tableContent) { + return NS_ERROR_FAILURE; // Table shut down + } - nsCOMPtr content(do_QueryInterface(tableNode)); - NS_ENSURE_TRUE(content, NS_ERROR_FAILURE); + nsCOMPtr shell = GetPresShell(); + NS_ENSURE_TRUE(shell, NS_ERROR_FAILURE); - nsIDocument *doc = content->GetDocument(); - NS_ENSURE_TRUE(doc, NS_ERROR_FAILURE); - - nsIPresShell *presShell = doc->GetPrimaryShell(); - - nsCOMPtr layoutObject; - rv = presShell->GetLayoutObjectFor(content, getter_AddRefs(layoutObject)); - NS_ENSURE_SUCCESS(rv, rv); - - return CallQueryInterface(layoutObject, aLayoutObject); + nsIFrame *frame = shell->GetPrimaryFrameFor(tableContent); + return frame ? CallQueryInterface(frame, aTableLayout) : NS_ERROR_FAILURE; } nsresult diff --git a/layout/base/nsIPresShell.h b/layout/base/nsIPresShell.h index 812292ce97c8..54513bb4d981 100644 --- a/layout/base/nsIPresShell.h +++ b/layout/base/nsIPresShell.h @@ -341,7 +341,7 @@ public: * Returns a layout object associated with the primary frame for the content object. * * @param aContent the content object for which we seek a layout object - * @param aResult the resulting layout object as an nsISupports, if found. Refcounted. + * @param aResult the resulting layout object as an nsISupports, if found. */ NS_IMETHOD GetLayoutObjectFor(nsIContent* aContent, nsISupports** aResult) const = 0;