Introduce MarkWebAXObjectDirty

Previously the only way for Blink to communicate a change
to the accessibility tree was via PostAccessibilityEvent.
Over time we've been migrating away from blink posting
events, and instead having it just serialize changed nodes
and let each platform infer the events it needs to fire.

Much of this refactoring has already happened, so now
we can start removing accessibility events.

This change introduces a new API, MarkWebAXObjectDirty,
which lets Blink queue up a node or a subtree to be
serialized. It uses this new API for just one event,
ActiveDescendantChanged. In follow-up changes we'll
tackle additional events, there are at least 10 ready
to migrate.

This should lead to simplification of Blink accessibility
code overall.

Note that work to remove the content/renderer/accessibility
layer is also underway, but this change shouldn't block
until that completes. Eventually, marking a node dirty
will happen within Blink and it will serialize and send
updates directly to the browser via mojo.

Bug: 699438

Change-Id: I51d194aca593217413132ae0052e49c29391cc11
Reviewed-on: https://chromium-review.googlesource.com/1218443
Reviewed-by: Kentaro Hara <[email protected]>
Reviewed-by: Alice Boxhall <[email protected]>
Commit-Queue: Dominic Mazzoni <[email protected]>
Cr-Commit-Position: refs/heads/master@{#591033}
diff --git a/content/renderer/render_frame_impl.h b/content/renderer/render_frame_impl.h
index 0240d4a..fc544a9 100644
--- a/content/renderer/render_frame_impl.h
+++ b/content/renderer/render_frame_impl.h
@@ -721,6 +721,8 @@
       const blink::WebURL& url) override;
   void PostAccessibilityEvent(const blink::WebAXObject& obj,
                               ax::mojom::Event event) override;
+  void MarkWebAXObjectDirty(const blink::WebAXObject& obj,
+                            bool subtree) override;
   void HandleAccessibilityFindInPageResult(int identifier,
                                            int match_index,
                                            const blink::WebNode& start_node,