mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 1049812 - Part 1 : Removes static_cast introduced by bug 922727 and set a bool property in DEBUG to ensure PlaceHashKey properties are set. r=mak
This commit is contained in:
parent
2f40ba33b2
commit
5fa2f8102d
@ -188,15 +188,21 @@ class PlaceHashKey : public nsCStringHashKey
|
|||||||
public:
|
public:
|
||||||
explicit PlaceHashKey(const nsACString& aSpec)
|
explicit PlaceHashKey(const nsACString& aSpec)
|
||||||
: nsCStringHashKey(&aSpec)
|
: nsCStringHashKey(&aSpec)
|
||||||
, visitCount(-1)
|
, visitCount(0)
|
||||||
, bookmarked(-1)
|
, bookmarked(false)
|
||||||
|
#ifdef DEBUG
|
||||||
|
, isInitialized(false)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
explicit PlaceHashKey(const nsACString* aSpec)
|
explicit PlaceHashKey(const nsACString* aSpec)
|
||||||
: nsCStringHashKey(aSpec)
|
: nsCStringHashKey(aSpec)
|
||||||
, visitCount(-1)
|
, visitCount(0)
|
||||||
, bookmarked(-1)
|
, bookmarked(false)
|
||||||
|
#ifdef DEBUG
|
||||||
|
, isInitialized(false)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -206,12 +212,42 @@ class PlaceHashKey : public nsCStringHashKey
|
|||||||
MOZ_ASSERT(false, "Do not call me!");
|
MOZ_ASSERT(false, "Do not call me!");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Visit count for this place.
|
void SetProperties(uint32_t aVisitCount, bool aBookmarked)
|
||||||
int32_t visitCount;
|
{
|
||||||
// Whether this place is bookmarked.
|
visitCount = aVisitCount;
|
||||||
int32_t bookmarked;
|
bookmarked = aBookmarked;
|
||||||
|
#ifdef DEBUG
|
||||||
|
isInitialized = true;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t VisitCount() const
|
||||||
|
{
|
||||||
|
#ifdef DEBUG
|
||||||
|
MOZ_ASSERT(isInitialized, "PlaceHashKey::visitCount not set");
|
||||||
|
#endif
|
||||||
|
return visitCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool IsBookmarked() const
|
||||||
|
{
|
||||||
|
#ifdef DEBUG
|
||||||
|
MOZ_ASSERT(isInitialized, "PlaceHashKey::bookmarked not set");
|
||||||
|
#endif
|
||||||
|
return bookmarked;
|
||||||
|
}
|
||||||
|
|
||||||
// Array of VisitData objects.
|
// Array of VisitData objects.
|
||||||
nsTArray<VisitData> visits;
|
nsTArray<VisitData> visits;
|
||||||
|
private:
|
||||||
|
// Visit count for this place.
|
||||||
|
uint32_t visitCount;
|
||||||
|
// Whether this place is bookmarked.
|
||||||
|
bool bookmarked;
|
||||||
|
#ifdef DEBUG
|
||||||
|
// Whether previous attributes are set.
|
||||||
|
bool isInitialized;
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
@ -1568,8 +1604,7 @@ static PLDHashOperator TransferHashEntries(PlaceHashKey* aEntry,
|
|||||||
nsTHashtable<PlaceHashKey>* hash =
|
nsTHashtable<PlaceHashKey>* hash =
|
||||||
static_cast<nsTHashtable<PlaceHashKey> *>(aHash);
|
static_cast<nsTHashtable<PlaceHashKey> *>(aHash);
|
||||||
PlaceHashKey* copy = hash->PutEntry(aEntry->GetKey());
|
PlaceHashKey* copy = hash->PutEntry(aEntry->GetKey());
|
||||||
copy->visitCount = aEntry->visitCount;
|
copy->SetProperties(aEntry->VisitCount(), aEntry->IsBookmarked());
|
||||||
copy->bookmarked = aEntry->bookmarked;
|
|
||||||
aEntry->visits.SwapElements(copy->visits);
|
aEntry->visits.SwapElements(copy->visits);
|
||||||
return PL_DHASH_NEXT;
|
return PL_DHASH_NEXT;
|
||||||
}
|
}
|
||||||
@ -1584,10 +1619,9 @@ static PLDHashOperator NotifyVisitRemoval(PlaceHashKey* aEntry,
|
|||||||
const nsTArray<VisitData>& visits = aEntry->visits;
|
const nsTArray<VisitData>& visits = aEntry->visits;
|
||||||
nsCOMPtr<nsIURI> uri;
|
nsCOMPtr<nsIURI> uri;
|
||||||
(void)NS_NewURI(getter_AddRefs(uri), visits[0].spec);
|
(void)NS_NewURI(getter_AddRefs(uri), visits[0].spec);
|
||||||
// XXX visitCount should really just be unsigned (bug 1049812)
|
|
||||||
bool removingPage =
|
bool removingPage =
|
||||||
visits.Length() == static_cast<size_t>(aEntry->visitCount) &&
|
visits.Length() == aEntry->VisitCount() &&
|
||||||
!aEntry->bookmarked;
|
!aEntry->IsBookmarked();
|
||||||
// FindRemovableVisits only sets the transition type on the VisitData objects
|
// FindRemovableVisits only sets the transition type on the VisitData objects
|
||||||
// it collects if the visits were filtered by transition type.
|
// it collects if the visits were filtered by transition type.
|
||||||
// RemoveVisitsFilter currently only supports filtering by transition type, so
|
// RemoveVisitsFilter currently only supports filtering by transition type, so
|
||||||
@ -1664,9 +1698,8 @@ static PLDHashOperator ListToBeRemovedPlaceIds(PlaceHashKey* aEntry,
|
|||||||
{
|
{
|
||||||
const nsTArray<VisitData>& visits = aEntry->visits;
|
const nsTArray<VisitData>& visits = aEntry->visits;
|
||||||
// Only orphan ids should be listed.
|
// Only orphan ids should be listed.
|
||||||
// XXX visitCount should really just be unsigned (bug 1049812)
|
if (visits.Length() == aEntry->VisitCount() &&
|
||||||
if (visits.Length() == static_cast<size_t>(aEntry->visitCount) &&
|
!aEntry->IsBookmarked()) {
|
||||||
!aEntry->bookmarked) {
|
|
||||||
nsCString* list = static_cast<nsCString*>(aIdsList);
|
nsCString* list = static_cast<nsCString*>(aIdsList);
|
||||||
if (!list->IsEmpty())
|
if (!list->IsEmpty())
|
||||||
list->Append(',');
|
list->Append(',');
|
||||||
@ -1815,8 +1848,7 @@ private:
|
|||||||
if (!entry) {
|
if (!entry) {
|
||||||
entry = aPlaces.PutEntry(visit.spec);
|
entry = aPlaces.PutEntry(visit.spec);
|
||||||
}
|
}
|
||||||
entry->visitCount = visitCount;
|
entry->SetProperties(static_cast<uint32_t>(visitCount), static_cast<bool>(bookmarked));
|
||||||
entry->bookmarked = bookmarked;
|
|
||||||
entry->visits.AppendElement(visit);
|
entry->visits.AppendElement(visit);
|
||||||
}
|
}
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
|
Loading…
Reference in New Issue
Block a user