chromium/chrome/browser/ash/accessibility/chromevox_panel.h

// Copyright 2015 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CHROME_BROWSER_ASH_ACCESSIBILITY_CHROMEVOX_PANEL_H_
#define CHROME_BROWSER_ASH_ACCESSIBILITY_CHROMEVOX_PANEL_H_

#include "chrome/browser/ash/accessibility/accessibility_panel.h"
#include "ui/base/interaction/element_identifier.h"

namespace ash {

DECLARE_ELEMENT_IDENTIFIER_VALUE(kChromeVoxPanelElementId);

// Displays spoken feedback UI controls for the ChromeVox component extension
class ChromeVoxPanel : public AccessibilityPanel {
 public:
  explicit ChromeVoxPanel(content::BrowserContext* browser_context);

  ChromeVoxPanel(const ChromeVoxPanel&) = delete;
  ChromeVoxPanel& operator=(const ChromeVoxPanel&) = delete;

  ~ChromeVoxPanel() override;

  class ChromeVoxPanelWebContentsObserver;

 private:
  // Methods indirectly invoked by the component extension.
  void EnterFullscreen();
  void ExitFullscreen();
  void Focus();

  // Sends a request to the ash window manager.
  void SetAccessibilityPanelFullscreen(bool fullscreen);

  std::string GetUrlForContent();

  std::unique_ptr<ChromeVoxPanelWebContentsObserver> web_contents_observer_;
};

}  // namespace ash

#endif  // CHROME_BROWSER_ASH_ACCESSIBILITY_CHROMEVOX_PANEL_H_