Bug 1393189 part 5 - Rewrite CounterStyleOrNone::from_gecko_value to use fewer binding functions. r=heycam

MozReview-Commit-ID: 3EsExs0DzQr

--HG--
extra : rebase_source : b97cfeb82dcaf80eb91635e9094c55a264678865
This commit is contained in:
Xidorn Quan 2017-08-29 17:11:13 +10:00
parent 610d192c1b
commit f3c33019da
4 changed files with 28 additions and 65 deletions

View File

@ -238,6 +238,18 @@ public:
bool IsResolved() const { return !IsUnresolved(); }
inline void Resolve(CounterStyleManager* aManager);
nsIAtom* AsAtom() const
{
MOZ_ASSERT(IsUnresolved());
return reinterpret_cast<nsIAtom*>(mRaw & ~eMask);
}
AnonymousCounterStyle* AsAnonymous() const
{
MOZ_ASSERT(IsAnonymous());
return static_cast<AnonymousCounterStyle*>(
reinterpret_cast<CounterStyle*>(mRaw & ~eMask));
}
private:
CounterStyle* Get() const
{
@ -266,17 +278,6 @@ private:
Type GetType() const { return static_cast<Type>(mRaw & eMask); }
bool IsUnresolved() const { return GetType() == eUnresolvedAtom; }
bool IsAnonymous() const { return GetType() == eAnonymousCounterStyle; }
nsIAtom* AsAtom()
{
MOZ_ASSERT(IsUnresolved());
return reinterpret_cast<nsIAtom*>(mRaw & ~eMask);
}
AnonymousCounterStyle* AsAnonymous()
{
MOZ_ASSERT(IsAnonymous());
return static_cast<AnonymousCounterStyle*>(
reinterpret_cast<CounterStyle*>(mRaw & ~eMask));
}
void Reset()
{

View File

@ -1453,53 +1453,19 @@ Gecko_CopyCounterStyle(CounterStylePtr* aDst, const CounterStylePtr* aSrc)
*aDst = *aSrc;
}
bool
Gecko_CounterStyle_IsNone(const CounterStylePtr* aPtr) {
MOZ_ASSERT(aPtr);
return (*aPtr)->IsNone();
nsIAtom*
Gecko_CounterStyle_GetName(const CounterStylePtr* aPtr)
{
if (!aPtr->IsResolved()) {
return aPtr->AsAtom();
}
return (*aPtr)->GetStyleName();
}
bool
Gecko_CounterStyle_IsName(const CounterStylePtr* aPtr) {
return !Gecko_CounterStyle_IsNone(aPtr) && !(*aPtr)->AsAnonymous();
}
void
Gecko_CounterStyle_GetName(const CounterStylePtr* aPtr,
nsAString* aResult) {
MOZ_ASSERT(Gecko_CounterStyle_IsName(aPtr));
nsIAtom* name = (*aPtr)->GetStyleName();
*aResult = nsDependentAtomString(name);
}
const nsTArray<nsString>&
Gecko_CounterStyle_GetSymbols(const CounterStylePtr* aPtr) {
MOZ_ASSERT((*aPtr)->AsAnonymous());
AnonymousCounterStyle* anonymous = (*aPtr)->AsAnonymous();
return anonymous->GetSymbols();
}
uint8_t
Gecko_CounterStyle_GetSystem(const CounterStylePtr* aPtr) {
MOZ_ASSERT((*aPtr)->AsAnonymous());
AnonymousCounterStyle* anonymous = (*aPtr)->AsAnonymous();
return anonymous->GetSystem();
}
bool
Gecko_CounterStyle_IsSingleString(const CounterStylePtr* aPtr) {
MOZ_ASSERT(aPtr);
AnonymousCounterStyle* anonymous = (*aPtr)->AsAnonymous();
return anonymous ? anonymous->IsSingleString() : false;
}
void
Gecko_CounterStyle_GetSingleString(const CounterStylePtr* aPtr,
nsAString* aResult) {
MOZ_ASSERT(Gecko_CounterStyle_IsSingleString(aPtr));
const nsTArray<nsString>& symbols = Gecko_CounterStyle_GetSymbols(aPtr);
MOZ_ASSERT(symbols.Length() == 1);
aResult->Assign(symbols[0]);
const AnonymousCounterStyle*
Gecko_CounterStyle_GetAnonymous(const CounterStylePtr* aPtr)
{
return aPtr->AsAnonymous();
}
already_AddRefed<css::URLValue>

View File

@ -332,15 +332,9 @@ void Gecko_SetCounterStyleToString(mozilla::CounterStylePtr* ptr,
const nsACString* symbol);
void Gecko_CopyCounterStyle(mozilla::CounterStylePtr* dst,
const mozilla::CounterStylePtr* src);
bool Gecko_CounterStyle_IsNone(const mozilla::CounterStylePtr* ptr);
bool Gecko_CounterStyle_IsName(const mozilla::CounterStylePtr* ptr);
void Gecko_CounterStyle_GetName(const mozilla::CounterStylePtr* ptr,
nsAString* result);
const nsTArray<nsString>& Gecko_CounterStyle_GetSymbols(const mozilla::CounterStylePtr* ptr);
uint8_t Gecko_CounterStyle_GetSystem(const mozilla::CounterStylePtr* ptr);
bool Gecko_CounterStyle_IsSingleString(const mozilla::CounterStylePtr* ptr);
void Gecko_CounterStyle_GetSingleString(const mozilla::CounterStylePtr* ptr,
nsAString* result);
nsIAtom* Gecko_CounterStyle_GetName(const mozilla::CounterStylePtr* ptr);
const mozilla::AnonymousCounterStyle*
Gecko_CounterStyle_GetAnonymous(const mozilla::CounterStylePtr* ptr);
// background-image style.
void Gecko_SetNullImageValue(nsStyleImage* image);

View File

@ -123,6 +123,7 @@ whitelist-vars = [
whitelist-types = [
"RawGecko.*",
"mozilla::AnimationPropertySegment",
"mozilla::AnonymousCounterStyle",
"mozilla::ComputedTiming",
"mozilla::ComputedTimingFunction",
"mozilla::ComputedTimingFunction::BeforeFlag",
@ -371,6 +372,7 @@ structs-types = [
"mozilla::css::ImageValue",
"mozilla::css::URLValue",
"mozilla::css::URLValueData",
"mozilla::AnonymousCounterStyle",
"mozilla::MallocSizeOf",
"mozilla::OriginFlags",
"mozilla::Side",