if (frameChange == NS_STYLE_HINT_RECONSTRUCT_ALL)
if (frameChange & nsChangeHint_ReconstructDoc)
PresShell::ReconstructStyleData(PRBool aRebuildRuleTree){  nsIFrame* rootFrame;  GetRootFrame(&rootFrame);  if (!rootFrame)    return NS_OK;  nsCOMPtr<nsIStyleSet> set;  GetStyleSet(getter_AddRefs(set));  if (!set)    return NS_OK;  nsCOMPtr<nsIStyleFrameConstruction> cssFrameConstructor;  set->GetStyleFrameConstruction(getter_AddRefs(cssFrameConstructor));  if (!cssFrameConstructor)    return NS_OK;  nsCOMPtr<nsIFrameManager> frameManager;  GetFrameManager(getter_AddRefs(frameManager));    // Now handle some of our more problematic widgets (and also deal with  // skin XBL changing).  nsStyleChangeList changeList;  if (aRebuildRuleTree) {    // Handle those widgets that have special style contexts cached    // that will point to invalid rule nodes following a rule tree    // reconstruction.    WalkFramesThroughPlaceholders(mPresContext, rootFrame,                                  &BuildFramechangeList, &changeList);    cssFrameConstructor->ProcessRestyledFrames(changeList, mPresContext);    changeList.Clear();    // Now do a complete re-resolve of our style tree.    set->BeginRuleTreeReconstruct();  }  PRInt32 frameChange = NS_STYLE_HINT_NONE;  frameManager->ComputeStyleChangeFor(mPresContext, rootFrame,                                       kNameSpaceID_Unknown, nsnull,                                      changeList, NS_STYLE_HINT_NONE, frameChange);  if (frameChange == NS_STYLE_HINT_RECONSTRUCT_ALL)    set->ReconstructDocElementHierarchy(mPresContext);  else {    cssFrameConstructor->ProcessRestyledFrames(changeList, mPresContext);    if (aRebuildRuleTree) {      GetRootFrame(&rootFrame);      WalkFramesThroughPlaceholders(mPresContext, rootFrame,                                    &ReResolveMenusAndTrees, nsnull);    }  }  if (aRebuildRuleTree)    set->EndRuleTreeReconstruct();  return NS_OK;}