nsRect rect;
nsSize size = aFrame->GetSize();
nsComputedDOMStyle::GetWidth(nsIFrame *aFrame,                             nsIDOMCSSPrimitiveValue*& aValue){  nsROCSSPrimitiveValue* val=GetROCSSPrimitiveValue();  NS_ENSURE_TRUE(val, NS_ERROR_OUT_OF_MEMORY);  PRBool calcWidth = PR_FALSE;  if (aFrame) {    calcWidth = PR_TRUE;    // Flush all pending notifications so that our frames are up to date    nsCOMPtr<nsIDocument> document;    mContent->GetDocument(*getter_AddRefs(document));      if (document) {      document->FlushPendingNotifications();    }        const nsStyleDisplay* displayData = nsnull;    GetStyleData(eStyleStruct_Display, (const nsStyleStruct*&)displayData, aFrame);    if (displayData && displayData->mDisplay == NS_STYLE_DISPLAY_INLINE) {      nsFrameState frameState;      aFrame->GetFrameState(&frameState);      if (! (frameState & NS_FRAME_REPLACED_ELEMENT)) {        calcWidth = PR_FALSE;      }    }  }  if (calcWidth) {    nsRect rect;    nsMargin padding;    nsMargin border;    aFrame->GetRect(rect);    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(rect.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->SetString(NS_LITERAL_STRING("auto"));          break;        case eStyleUnit_Inherit:          val->SetString(NS_LITERAL_STRING("inherit"));          break;        default:          NS_WARNING("Double check the unit");          val->SetTwips(0);          break;      }    } else {      val->SetTwips(0);    }  }  return val->QueryInterface(NS_GET_IID(nsIDOMCSSPrimitiveValue),                             (void **)&aValue);}