blob: 3ed5d138c7c067134fe76d4e23421a5f93eb0a07 [file] [log] [blame]
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef InspectorAccessibilityAgent_h
#define InspectorAccessibilityAgent_h
#include "core/inspector/InspectorBaseAgent.h"
#include "core/inspector/protocol/Accessibility.h"
#include "modules/ModulesExport.h"
namespace blink {
class AXObject;
class AXObjectCacheImpl;
class InspectorDOMAgent;
class Page;
using protocol::Accessibility::AXNode;
using protocol::Accessibility::AXNodeId;
class MODULES_EXPORT InspectorAccessibilityAgent
: public InspectorBaseAgent<protocol::Accessibility::Metainfo> {
WTF_MAKE_NONCOPYABLE(InspectorAccessibilityAgent);
public:
InspectorAccessibilityAgent(Page*, InspectorDOMAgent*);
// Base agent methods.
DECLARE_VIRTUAL_TRACE();
// Protocol methods.
Response getPartialAXTree(
int domNodeId,
Maybe<bool> fetchRelatives,
std::unique_ptr<protocol::Array<protocol::Accessibility::AXNode>>*)
override;
private:
std::unique_ptr<AXNode> buildObjectForIgnoredNode(
Node* domNode,
AXObject*,
bool fetchRelatives,
std::unique_ptr<protocol::Array<AXNode>>& nodes,
AXObjectCacheImpl&) const;
void populateDOMNodeAncestors(Node& inspectedDOMNode,
AXNode&,
std::unique_ptr<protocol::Array<AXNode>>& nodes,
AXObjectCacheImpl&) const;
std::unique_ptr<AXNode> buildProtocolAXObject(
AXObject&,
AXObject* inspectedAXObject,
bool fetchRelatives,
std::unique_ptr<protocol::Array<AXNode>>& nodes,
AXObjectCacheImpl&) const;
void fillCoreProperties(AXObject&,
AXObject* inspectedAXObject,
bool fetchRelatives,
AXNode&,
std::unique_ptr<protocol::Array<AXNode>>& nodes,
AXObjectCacheImpl&) const;
void addAncestors(AXObject& firstAncestor,
AXObject* inspectedAXObject,
std::unique_ptr<protocol::Array<AXNode>>& nodes,
AXObjectCacheImpl&) const;
void populateRelatives(AXObject&,
AXObject* inspectedAXObject,
AXNode&,
std::unique_ptr<protocol::Array<AXNode>>& nodes,
AXObjectCacheImpl&) const;
void addSiblingsOfIgnored(
std::unique_ptr<protocol::Array<AXNodeId>>& childIds,
AXObject& parentAXObject,
AXObject* inspectedAXObject,
std::unique_ptr<protocol::Array<AXNode>>& nodes,
AXObjectCacheImpl&) const;
void addChildren(AXObject&,
AXObject* inspectedAXObject,
std::unique_ptr<protocol::Array<AXNodeId>>& childIds,
std::unique_ptr<protocol::Array<AXNode>>& nodes,
AXObjectCacheImpl&) const;
Member<Page> m_page;
Member<InspectorDOMAgent> m_domAgent;
};
} // namespace blink
#endif // InspectorAccessibilityAgent_h