// Copyright 2020 The Fuchsia 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 SRC_UI_A11Y_LIB_ANNOTATION_FOCUS_HIGHLIGHT_MANAGER_H_
#define SRC_UI_A11Y_LIB_ANNOTATION_FOCUS_HIGHLIGHT_MANAGER_H_

#include <zircon/types.h>

namespace a11y {

// An interface for manipulating a11y focus highlights.
class FocusHighlightManager {
 public:
  struct SemanticNodeIdentifier {
    zx_koid_t koid;
    uint32_t node_id;
  };

  FocusHighlightManager() = default;
  virtual ~FocusHighlightManager() = default;

  // Clears existing highlight.
  virtual void ClearHighlight() = 0;

  // Clears existing highlight (if any) and draws a highlight around |newly_highlighted_node.|
  virtual void UpdateHighlight(SemanticNodeIdentifier newly_highlighted_node) = 0;
};

}  // namespace a11y

#endif  // SRC_UI_A11Y_LIB_ANNOTATION_FOCUS_HIGHLIGHT_MANAGER_H_
