Commit eea8e690 authored by David Tseng's avatar David Tseng Committed by Commit Bot

Add an option to AXEventGenerator to always fire load complete

R=dmazzoni@chromium.org

Fixed: 927697
Change-Id: If7e8aa4898d44b38f9b2df7cdca7a2aed7c16063
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2210820
Commit-Queue: Dominic Mazzoni <dmazzoni@chromium.org>
Reviewed-by: default avatarDominic Mazzoni <dmazzoni@chromium.org>
Cr-Commit-Position: refs/heads/master@{#771297}
parent e1f1e185
...@@ -248,6 +248,7 @@ AutomationAXTreeWrapper::AutomationAXTreeWrapper( ...@@ -248,6 +248,7 @@ AutomationAXTreeWrapper::AutomationAXTreeWrapper(
: tree_id_(tree_id), owner_(owner), event_generator_(&tree_) { : tree_id_(tree_id), owner_(owner), event_generator_(&tree_) {
tree_.AddObserver(this); tree_.AddObserver(this);
ui::AXTreeManagerMap::GetInstance().AddTreeManager(tree_id, this); ui::AXTreeManagerMap::GetInstance().AddTreeManager(tree_id, this);
event_generator_.set_always_fire_load_complete(true);
} }
AutomationAXTreeWrapper::~AutomationAXTreeWrapper() { AutomationAXTreeWrapper::~AutomationAXTreeWrapper() {
......
...@@ -616,6 +616,9 @@ void AXEventGenerator::FireRelationSourceEvents(AXTree* tree, ...@@ -616,6 +616,9 @@ void AXEventGenerator::FireRelationSourceEvents(AXTree* tree,
// Attempts to suppress load-related events that we presume no AT will be // Attempts to suppress load-related events that we presume no AT will be
// interested in under any circumstances, such as pages which have no size. // interested in under any circumstances, such as pages which have no size.
bool AXEventGenerator::ShouldFireLoadEvents(AXNode* node) { bool AXEventGenerator::ShouldFireLoadEvents(AXNode* node) {
if (always_fire_load_complete_)
return true;
const AXNodeData& data = node->data(); const AXNodeData& data = node->data();
return data.relative_bounds.bounds.width() || return data.relative_bounds.bounds.width() ||
data.relative_bounds.bounds.height(); data.relative_bounds.bounds.height();
......
...@@ -170,6 +170,10 @@ class AX_EXPORT AXEventGenerator : public AXTreeObserver { ...@@ -170,6 +170,10 @@ class AX_EXPORT AXEventGenerator : public AXTreeObserver {
// same order they were added. // same order they were added.
void AddEvent(ui::AXNode* node, Event event); void AddEvent(ui::AXNode* node, Event event);
void set_always_fire_load_complete(bool val) {
always_fire_load_complete_ = val;
}
protected: protected:
// AXTreeObserver overrides. // AXTreeObserver overrides.
void OnNodeDataChanged(AXTree* tree, void OnNodeDataChanged(AXTree* tree,
...@@ -241,6 +245,8 @@ class AX_EXPORT AXEventGenerator : public AXTreeObserver { ...@@ -241,6 +245,8 @@ class AX_EXPORT AXEventGenerator : public AXTreeObserver {
// OnAtomicUpdateFinished. List of nodes whose active descendant changed. // OnAtomicUpdateFinished. List of nodes whose active descendant changed.
std::vector<AXNode*> active_descendant_changed_; std::vector<AXNode*> active_descendant_changed_;
bool always_fire_load_complete_ = false;
// Please make sure that this ScopedObserver is always declared last in order // Please make sure that this ScopedObserver is always declared last in order
// to prevent any use-after-free. // to prevent any use-after-free.
ScopedObserver<AXTree, AXTreeObserver> tree_event_observer_{this}; ScopedObserver<AXTree, AXTreeObserver> tree_event_observer_{this};
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment