зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1383367: Part 1 - Add JS helper to determine if a layout flush is required. r=mconley
This lets us decide whether to defer operations if they might trigger a reflow. MozReview-Commit-ID: 4M13HKAuZ7M --HG-- extra : rebase_source : d30a423b2fb9eb7a189b84d8aebb7263ab0b3f27
This commit is contained in:
Родитель
50e245c88e
Коммит
2fa79c4f93
|
@ -1851,6 +1851,39 @@ nsDOMWindowUtils::GetBoundsWithoutFlushing(nsIDOMElement *aElement,
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsDOMWindowUtils::NeedsFlush(int32_t aFlushType, bool* aResult)
|
||||||
|
{
|
||||||
|
MOZ_ASSERT(aResult);
|
||||||
|
|
||||||
|
nsCOMPtr<nsIDocument> doc = GetDocument();
|
||||||
|
NS_ENSURE_STATE(doc);
|
||||||
|
|
||||||
|
nsIPresShell* presShell = doc->GetShell();
|
||||||
|
NS_ENSURE_STATE(presShell);
|
||||||
|
|
||||||
|
FlushType flushType;
|
||||||
|
switch (aFlushType) {
|
||||||
|
case FLUSH_STYLE:
|
||||||
|
flushType = FlushType::Style;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case FLUSH_LAYOUT:
|
||||||
|
flushType = FlushType::Layout;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case FLUSH_DISPLAY:
|
||||||
|
flushType = FlushType::Display;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return NS_ERROR_INVALID_ARG;
|
||||||
|
}
|
||||||
|
|
||||||
|
*aResult = presShell->NeedFlush(flushType);
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
nsDOMWindowUtils::GetRootBounds(nsIDOMClientRect** aResult)
|
nsDOMWindowUtils::GetRootBounds(nsIDOMClientRect** aResult)
|
||||||
{
|
{
|
||||||
|
|
|
@ -995,6 +995,15 @@ interface nsIDOMWindowUtils : nsISupports {
|
||||||
*/
|
*/
|
||||||
nsIDOMClientRect getBoundsWithoutFlushing(in nsIDOMElement aElement);
|
nsIDOMClientRect getBoundsWithoutFlushing(in nsIDOMElement aElement);
|
||||||
|
|
||||||
|
const long FLUSH_STYLE = 0;
|
||||||
|
const long FLUSH_LAYOUT = 1;
|
||||||
|
const long FLUSH_DISPLAY = 2;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns true if a flush of the given type is needed.
|
||||||
|
*/
|
||||||
|
bool needsFlush(in long aFlushtype);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the bounds of the window's currently loaded document. This will
|
* Returns the bounds of the window's currently loaded document. This will
|
||||||
* generally be (0, 0, pageWidth, pageHeight) but in some cases (e.g. RTL
|
* generally be (0, 0, pageWidth, pageHeight) but in some cases (e.g. RTL
|
||||||
|
|
Загрузка…
Ссылка в новой задаче