mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-09 19:35:51 +00:00
Bug 1433850 - layout.display-list.retain.verify.order to also check RDL ordering - r=mattwoodrow
MozReview-Commit-ID: 2foGnuSCwUX --HG-- extra : rebase_source : a46779e0db3d4452561b52e047daa3716280fde4
This commit is contained in:
parent
be42ffae02
commit
a2ff96a775
@ -664,6 +664,7 @@ private:
|
|||||||
DECL_GFX_PREF(Live, "layout.display-list.retain", LayoutRetainDisplayList, bool, true);
|
DECL_GFX_PREF(Live, "layout.display-list.retain", LayoutRetainDisplayList, bool, true);
|
||||||
DECL_GFX_PREF(Live, "layout.display-list.retain.chrome", LayoutRetainDisplayListChrome, bool, false);
|
DECL_GFX_PREF(Live, "layout.display-list.retain.chrome", LayoutRetainDisplayListChrome, bool, false);
|
||||||
DECL_GFX_PREF(Live, "layout.display-list.retain.verify", LayoutVerifyRetainDisplayList, bool, false);
|
DECL_GFX_PREF(Live, "layout.display-list.retain.verify", LayoutVerifyRetainDisplayList, bool, false);
|
||||||
|
DECL_GFX_PREF(Live, "layout.display-list.retain.verify.order", LayoutVerifyRetainDisplayListOrder, bool, false);
|
||||||
DECL_GFX_PREF(Live, "layout.display-list.rebuild-frame-limit", LayoutRebuildFrameLimit, uint32_t, 500);
|
DECL_GFX_PREF(Live, "layout.display-list.rebuild-frame-limit", LayoutRebuildFrameLimit, uint32_t, 500);
|
||||||
DECL_GFX_PREF(Live, "layout.display-list.dump", LayoutDumpDisplayList, bool, false);
|
DECL_GFX_PREF(Live, "layout.display-list.dump", LayoutDumpDisplayList, bool, false);
|
||||||
DECL_GFX_PREF(Live, "layout.display-list.dump-content", LayoutDumpDisplayListContent, bool, false);
|
DECL_GFX_PREF(Live, "layout.display-list.dump-content", LayoutDumpDisplayListContent, bool, false);
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
|
|
||||||
#include "DisplayListChecker.h"
|
#include "DisplayListChecker.h"
|
||||||
|
|
||||||
|
#include "gfxPrefs.h"
|
||||||
#include "nsDisplayList.h"
|
#include "nsDisplayList.h"
|
||||||
|
|
||||||
namespace mozilla {
|
namespace mozilla {
|
||||||
@ -93,6 +94,7 @@ private:
|
|||||||
unsigned& aIndex);
|
unsigned& aIndex);
|
||||||
|
|
||||||
std::vector<DisplayItemBlueprint> mItems;
|
std::vector<DisplayItemBlueprint> mItems;
|
||||||
|
const bool mVerifyOrder = gfxPrefs::LayoutVerifyRetainDisplayListOrder();
|
||||||
};
|
};
|
||||||
|
|
||||||
// Object representing one display item, with just enough information to
|
// Object representing one display item, with just enough information to
|
||||||
@ -264,12 +266,47 @@ DisplayListBlueprint::CompareList(
|
|||||||
const DisplayItemBlueprintStack& aStackOther) const
|
const DisplayItemBlueprintStack& aStackOther) const
|
||||||
{
|
{
|
||||||
bool same = true;
|
bool same = true;
|
||||||
|
unsigned previousFoundIndex = 0;
|
||||||
|
const DisplayItemBlueprint* previousFoundItemBefore = nullptr;
|
||||||
|
const DisplayItemBlueprint* previousFoundItemAfter = nullptr;
|
||||||
for (const DisplayItemBlueprint& itemBefore : mItems) {
|
for (const DisplayItemBlueprint& itemBefore : mItems) {
|
||||||
bool found = false;
|
bool found = false;
|
||||||
|
unsigned foundIndex = 0;
|
||||||
for (const DisplayItemBlueprint& itemAfter : aOther.mItems) {
|
for (const DisplayItemBlueprint& itemAfter : aOther.mItems) {
|
||||||
if (itemBefore.CompareItem(itemAfter, aDiff)) {
|
if (itemBefore.CompareItem(itemAfter, aDiff)) {
|
||||||
found = true;
|
found = true;
|
||||||
|
|
||||||
|
if (mVerifyOrder) {
|
||||||
|
if (foundIndex < previousFoundIndex) {
|
||||||
|
same = false;
|
||||||
|
aDiff << "\n";
|
||||||
|
if (aStack.Output(aDiff)) {
|
||||||
|
aDiff << " > ";
|
||||||
|
}
|
||||||
|
aDiff << itemBefore.mDescription;
|
||||||
|
aDiff << "\n * Corresponding item in unexpected order: ";
|
||||||
|
if (aStackOther.Output(aDiff)) {
|
||||||
|
aDiff << " > ";
|
||||||
|
}
|
||||||
|
aDiff << itemAfter.mDescription;
|
||||||
|
aDiff << "\n * Was expected after: ";
|
||||||
|
if (aStackOther.Output(aDiff)) {
|
||||||
|
aDiff << " > ";
|
||||||
|
}
|
||||||
|
MOZ_ASSERT(previousFoundItemAfter);
|
||||||
|
aDiff << previousFoundItemAfter->mDescription;
|
||||||
|
aDiff << "\n which corresponds to: ";
|
||||||
|
if (aStack.Output(aDiff)) {
|
||||||
|
aDiff << " > ";
|
||||||
|
}
|
||||||
|
MOZ_ASSERT(previousFoundItemBefore);
|
||||||
|
aDiff << previousFoundItemBefore->mDescription;
|
||||||
|
}
|
||||||
|
previousFoundIndex = foundIndex;
|
||||||
|
previousFoundItemBefore = &itemBefore;
|
||||||
|
previousFoundItemAfter = &itemAfter;
|
||||||
|
}
|
||||||
|
|
||||||
const DisplayItemBlueprintStack stack = { &aStack, &itemBefore };
|
const DisplayItemBlueprintStack stack = { &aStack, &itemBefore };
|
||||||
const DisplayItemBlueprintStack stackOther = { &aStackOther,
|
const DisplayItemBlueprintStack stackOther = { &aStackOther,
|
||||||
&itemAfter };
|
&itemAfter };
|
||||||
@ -283,6 +320,7 @@ DisplayListBlueprint::CompareList(
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
++foundIndex;
|
||||||
}
|
}
|
||||||
if (!found) {
|
if (!found) {
|
||||||
same = false;
|
same = false;
|
||||||
|
Loading…
Reference in New Issue
Block a user