зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1559546 - Allow to construct StyleAtom objects from C++. r=heycam
I'm going to need it in an upcoming patch. Differential Revision: https://phabricator.services.mozilla.com/D35118 --HG-- extra : moz-landing-system : lando
This commit is contained in:
Родитель
7689870f6b
Коммит
5a2717a028
|
@ -242,6 +242,19 @@ inline StyleAtom::~StyleAtom() {
|
|||
}
|
||||
}
|
||||
|
||||
inline StyleAtom::StyleAtom(already_AddRefed<nsAtom> aAtom) {
|
||||
nsAtom* atom = aAtom.take();
|
||||
if (atom->IsStatic()) {
|
||||
ptrdiff_t offset = reinterpret_cast<const uint8_t*>(atom->AsStatic()) -
|
||||
reinterpret_cast<const uint8_t*>(&detail::gGkAtoms);
|
||||
_0 = (offset << 1) | 1;
|
||||
} else {
|
||||
_0 = reinterpret_cast<uintptr_t>(atom);
|
||||
}
|
||||
MOZ_ASSERT(IsStatic() == atom->IsStatic());
|
||||
MOZ_ASSERT(AsAtom() == atom);
|
||||
}
|
||||
|
||||
inline StyleAtom::StyleAtom(const StyleAtom& aOther) : _0(aOther._0) {
|
||||
if (!IsStatic()) {
|
||||
reinterpret_cast<nsAtom*>(_0)->AddRef();
|
||||
|
|
|
@ -466,6 +466,8 @@ renaming_overrides_prefixing = true
|
|||
inline bool IsStatic() const;
|
||||
inline nsAtom* AsAtom() const;
|
||||
|
||||
inline explicit StyleAtom(already_AddRefed<nsAtom> aAtom);
|
||||
|
||||
// Could be implemented if wanted.
|
||||
StyleAtom& operator=(const StyleAtom&) = delete;
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче