blob: c93ef9df64d35e74ab1f5f38199b1db456db37ab [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 AXObjectImpl;
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.
protocol::Response getPartialAXTree(
int dom_node_id,
protocol::Maybe<bool> fetch_relatives,
std::unique_ptr<protocol::Array<protocol::Accessibility::AXNode>>*)
override;
private:
std::unique_ptr<AXNode> BuildObjectForIgnoredNode(
Node* dom_node,
AXObjectImpl*,
bool fetch_relatives,
std::unique_ptr<protocol::Array<AXNode>>& nodes,
AXObjectCacheImpl&) const;
void PopulateDOMNodeAncestors(Node& inspected_dom_node,
AXNode&,
std::unique_ptr<protocol::Array<AXNode>>& nodes,
AXObjectCacheImpl&) const;
std::unique_ptr<AXNode> BuildProtocolAXObjectImpl(
AXObjectImpl&,
AXObjectImpl* inspected_ax_object,
bool fetch_relatives,
std::unique_ptr<protocol::Array<AXNode>>& nodes,
AXObjectCacheImpl&) const;
void FillCoreProperties(AXObjectImpl&,
AXObjectImpl* inspected_ax_object,
bool fetch_relatives,
AXNode&,
std::unique_ptr<protocol::Array<AXNode>>& nodes,
AXObjectCacheImpl&) const;
void AddAncestors(AXObjectImpl& first_ancestor,
AXObjectImpl* inspected_ax_object,
std::unique_ptr<protocol::Array<AXNode>>& nodes,
AXObjectCacheImpl&) const;
void PopulateRelatives(AXObjectImpl&,
AXObjectImpl* inspected_ax_object,
AXNode&,
std::unique_ptr<protocol::Array<AXNode>>& nodes,
AXObjectCacheImpl&) const;
void AddSiblingsOfIgnored(
std::unique_ptr<protocol::Array<AXNodeId>>& child_ids,
AXObjectImpl& parent_ax_object,
AXObjectImpl* inspected_ax_object,
std::unique_ptr<protocol::Array<AXNode>>& nodes,
AXObjectCacheImpl&) const;
void addChild(std::unique_ptr<protocol::Array<AXNodeId>>& child_ids,
AXObjectImpl& child_ax_object,
AXObjectImpl* inspected_ax_object,
std::unique_ptr<protocol::Array<AXNode>>& nodes,
AXObjectCacheImpl&) const;
void AddChildren(AXObjectImpl&,
AXObjectImpl* inspected_ax_object,
std::unique_ptr<protocol::Array<AXNodeId>>& child_ids,
std::unique_ptr<protocol::Array<AXNode>>& nodes,
AXObjectCacheImpl&) const;
Member<Page> page_;
Member<InspectorDOMAgent> dom_agent_;
};
} // namespace blink
#endif // InspectorAccessibilityAgent_h