FlushPendingReflows();  const nsStyleDisplay *displayData = nsnull; GetStyleData(eStyleStruct_Display, (const nsStyleStruct*&)displayData, aFrame); if (displayData && displayData->mDisplay == NS_STYLE_DISPLAY_INLINE && !(aFrame->GetStateBits() & NS_FRAME_REPLACED_ELEMENT)) { calcWidth = PR_FALSE; } }  if (calcWidth) { nsSize size = aFrame->GetSize(); nsMargin padding; nsMargin border; const nsStylePadding *paddingData = nsnull; GetStyleData(eStyleStruct_Padding, (const nsStyleStruct*&)paddingData, aFrame); if (paddingData) { paddingData->CalcPaddingFor(aFrame, padding); } const nsStyleBorder *borderData = nsnull; GetStyleData(eStyleStruct_Border, (const nsStyleStruct*&)borderData, aFrame); if (borderData) { borderData->CalcBorderFor(aFrame, border); } val->SetTwips(size.width - padding.left - padding.right - border.left - border.right); } else {  const nsStylePosition *positionData = nsnull; GetStyleData(eStyleStruct_Position, (const nsStyleStruct*&)positionData, aFrame); if (positionData) { switch (positionData->mWidth.GetUnit()) { case eStyleUnit_Coord: val->SetTwips(positionData->mWidth.GetCoordValue()); break; case eStyleUnit_Percent: val->SetPercent(positionData->mWidth.GetPercentValue()); break; case eStyleUnit_Auto: val->SetIdent(nsLayoutAtoms::autoAtom); break; default: NS_WARNING("Double check the unit"); val->SetTwips(0); break; } } }  return CallQueryInterface(val, aValue);
return val->QueryInterface(NS_GET_IID(nsIDOMCSSPrimitiveValue), (void **)&aValue);
nsComputedDOMStyle::GetWidth(nsIFrame *aFrame,                             nsIDOMCSSValue** aValue){  nsROCSSPrimitiveValue *val = GetROCSSPrimitiveValue();  NS_ENSURE_TRUE(val, NS_ERROR_OUT_OF_MEMORY);  PRBool calcWidth = PR_FALSE;  if (aFrame) {    calcWidth = PR_TRUE;    FlushPendingReflows();    const nsStyleDisplay *displayData = nsnull;    GetStyleData(eStyleStruct_Display, (const nsStyleStruct*&)displayData,                 aFrame);    if (displayData && displayData->mDisplay == NS_STYLE_DISPLAY_INLINE        && !(aFrame->GetStateBits() & NS_FRAME_REPLACED_ELEMENT)) {      calcWidth = PR_FALSE;    }  }  if (calcWidth) {    nsSize size = aFrame->GetSize();    nsMargin padding;    nsMargin border;    const nsStylePadding *paddingData = nsnull;    GetStyleData(eStyleStruct_Padding, (const nsStyleStruct*&)paddingData,                 aFrame);    if (paddingData) {      paddingData->CalcPaddingFor(aFrame, padding);    }    const nsStyleBorder *borderData = nsnull;    GetStyleData(eStyleStruct_Border, (const nsStyleStruct*&)borderData,                 aFrame);    if (borderData) {      borderData->CalcBorderFor(aFrame, border);    }    val->SetTwips(size.width - padding.left - padding.right -                  border.left - border.right);  } else {    // Just return the value in the style context    const nsStylePosition *positionData = nsnull;    GetStyleData(eStyleStruct_Position, (const nsStyleStruct*&)positionData,                 aFrame);    if (positionData) {      switch (positionData->mWidth.GetUnit()) {        case eStyleUnit_Coord:          val->SetTwips(positionData->mWidth.GetCoordValue());          break;        case eStyleUnit_Percent:          val->SetPercent(positionData->mWidth.GetPercentValue());          break;        case eStyleUnit_Auto:          val->SetIdent(nsLayoutAtoms::autoAtom);          break;        default:          NS_WARNING("Double check the unit");          val->SetTwips(0);          break;      }    }  }  return CallQueryInterface(val, aValue);}