We have several places that store either a ProxyAccessible* or an Accessible*
in the same member using a uintptr_t and stealing the lowest bit of the
pointer. The goal of the AccessibleOrProxy class is to make this simpler and
consolidate the logic involved in doing it.
Experience shows that we do not have enough profiler labels to make
BHR hang reports meaningful. This patch adds enough labels to let us
exploit hang reports matching the 25 topmost chrome hangs.
Experience shows that we do not have enough profiler labels to make
BHR hang reports meaningful. This patch adds enough labels to let us
exploit hang reports matching the 25 topmost chrome hangs.
The Windows MIDL code generator creates things like:
#endif !_MIDL_USE_GUIDDEF_
which clang-cl complains about. MSVC doesn't, so turn this warning off.
AtkObject stores the name as a C string, but nsCString can store strings with
'\0' in the middle. That means that if we compute a name containing '\0'
nsCString.equals() will nevr consider that string to be equal to
AtkObject::name, however we only want to compare up to the first '\0' because
that is the only part Atk will ever see. So we should use strncmp() instead of
nsCString.equals().
While working on growing the fastermake backend to do compilation, I ran into
the problem that there's an implicit dependency from AccEventGen.py on the fact
that IDL files are installed in $DIST/idl. While we may need some way to
express such things in general, it turns out that for this specific use case,
we don't actually /need/ IDLs in $DIST/idl, and a couple paths are enough to
get things to work.
This change allows specifying objdir-relative paths in EXPORTS to enable
exporting entries from GENERATED_FILES. Objdir paths in EXPORTS that are
not in GENERATED_FILES will raise an exception.
Example:
```
EXPORTS += ['!g.h', 'f.h']
GENERATED_FILES += ['g.h']
```
Given the implementation, this should also work for FINAL_TARGET_FILES,
FINAL_TARGET_PP_FILES, and TESTING_FILES, but those are not well-tested.
This patch also renames the install manifest for '_tests' to match the
directory name for convenience in some code I refactored.
The patch renames the existing functions (GetBounds(), GetClientBounds(), etc)
by adding an |Untyped| suffix. It then adds typed equivalents, and uses those
typed equivalents in all the call sites where it's easy to do so. The trickier
remaining call sites are converted to use the Untyped-suffix version.
It seems possible that a child document could be bound to a parent document
without first being unbound. Some evidence for this being possible is that
OuterDocAccessible::InsertChildAt() explicitly checks for this and does
something similar if it already has a child.
The test changes here are to adjust for the fact that
nsTextFrame::GetRenderedText can now trim whitespace from the end of lines
that end in a hard line break.
The test changes here are to adjust for the fact that
nsTextFrame::GetRenderedText can now trim whitespace from the end of lines
that end in a hard line break.
- Construct a table accessible object if a content in question is HTML <table>
- Drop checking whether a table accessible object is built by CSS display:table from HTMLTableAccessbile::IsProbablyLayoutTable
The bulk of this commit was generated with a script, executed at the top
level of a typical source code checkout. The only non-machine-generated
part was modifying MFBT's moz.build to reflect the new naming.
CLOSED TREE makes big refactorings like this a piece of cake.
# The main substitution.
find . -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o -name '*.mm' -o -name '*.idl'| \
xargs perl -p -i -e '
s/nsRefPtr\.h/RefPtr\.h/g; # handle includes
s/nsRefPtr ?</RefPtr</g; # handle declarations and variables
'
# Handle a special friend declaration in gfx/layers/AtomicRefCountedWithFinalize.h.
perl -p -i -e 's/::nsRefPtr;/::RefPtr;/' gfx/layers/AtomicRefCountedWithFinalize.h
# Handle nsRefPtr.h itself, a couple places that define constructors
# from nsRefPtr, and code generators specially. We do this here, rather
# than indiscriminantly s/nsRefPtr/RefPtr/, because that would rename
# things like nsRefPtrHashtable.
perl -p -i -e 's/nsRefPtr/RefPtr/g' \
mfbt/nsRefPtr.h \
xpcom/glue/nsCOMPtr.h \
xpcom/base/OwningNonNull.h \
ipc/ipdl/ipdl/lower.py \
ipc/ipdl/ipdl/builtin.py \
dom/bindings/Codegen.py \
python/lldbutils/lldbutils/utils.py
# In our indiscriminate substitution above, we renamed
# nsRefPtrGetterAddRefs, the class behind getter_AddRefs. Fix that up.
find . -name '*.cpp' -o -name '*.h' -o -name '*.idl' | \
xargs perl -p -i -e 's/nsRefPtrGetterAddRefs/RefPtrGetterAddRefs/g'
if [ -d .git ]; then
git mv mfbt/nsRefPtr.h mfbt/RefPtr.h
else
hg mv mfbt/nsRefPtr.h mfbt/RefPtr.h
fi
This is not a nice solution, however its basically the only option. We need to
store the set of interfaces the proxy implementes, preferably without
increasing the size of ProxyAccessibleWrap.