blob: 6ca2402cf6e839864c88d26b6a5877b852e99c6e [file] [log] [blame]
// Copyright 2014 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.
#include "chromecast/browser/ui/aura/accessibility/ax_tree_source_aura.h"
#include "chromecast/browser/accessibility/accessibility_manager.h"
#include "chromecast/browser/cast_browser_process.h"
#include "chromecast/browser/ui/aura/accessibility/automation_manager_aura.h"
#include "ui/accessibility/ax_action_data.h"
#include "ui/accessibility/ax_node_data.h"
#include "ui/accessibility/ax_tree_data.h"
#include "ui/aura/client/focus_client.h"
#include "ui/aura/window.h"
#include "ui/aura/window_tree_host.h"
#include "ui/views/accessibility/ax_aura_obj_wrapper.h"
AXTreeSourceAura::AXTreeSourceAura(views::AXAuraObjWrapper* root,
const ui::AXTreeID& tree_id,
views::AXAuraObjCache* cache)
: AXTreeSourceViews(root, tree_id, cache) {}
AXTreeSourceAura::~AXTreeSourceAura() = default;
bool AXTreeSourceAura::GetTreeData(ui::AXTreeData* tree_data) const {
AXTreeSourceViews::GetTreeData(tree_data);
aura::Window* root_window =
chromecast::shell::CastBrowserProcess::GetInstance()
->accessibility_manager()
->window_tree_host()
->window();
if (root_window) {
aura::client::FocusClient* focus_client =
aura::client::GetFocusClient(root_window);
if (focus_client) {
aura::Window* window = focus_client->GetFocusedWindow();
tree_data->focus_id =
AutomationManagerAura::GetInstance()->GetIDFromWindow(window);
}
}
return true;
}
void AXTreeSourceAura::SerializeNode(views::AXAuraObjWrapper* node,
ui::AXNodeData* out_data) const {
AXTreeSourceViews::SerializeNode(node, out_data);
if (out_data->role == ax::mojom::Role::kWebView) {
// TODO(rmrossi) : Figure out whether this will ever be required
// for chromecast.
LOG(FATAL) << "Unhandled role";
}
}