15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CHROME_BROWSER_ACCESSIBILITY_ACCESSIBILITY_EVENTS_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROME_BROWSER_ACCESSIBILITY_ACCESSIBILITY_EVENTS_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string>
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/compiler_specific.h"
10a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "ui/accessibility/ax_enums.h"
111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "ui/gfx/rect.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
133551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)class AccessibilityControlInfo;
143551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)class AccessibilityMenuInfo;
153551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)class AccessibilityWindowInfo;
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Profile;
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace base {
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class DictionaryValue;
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
223551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// Notify the ExtensionAccessibilityEventRouter of the given accessibility
233551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// event and AccessibilityEventInfo details. Will not send if the profile's
243551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// pause level is nonzero (using profile->PauseAccessibilityEvents).
253551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)void SendControlAccessibilityNotification(
26a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    ui::AXEvent event,
273551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)    AccessibilityControlInfo* info);
283551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
293551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)void SendMenuAccessibilityNotification(
30a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    ui::AXEvent event,
313551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)    AccessibilityMenuInfo* info);
323551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
333551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)void SendWindowAccessibilityNotification(
34a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    ui::AXEvent event,
353551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)    AccessibilityWindowInfo* info);
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Abstract parent class for accessibility event information passed to event
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// listeners.
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class AccessibilityEventInfo {
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~AccessibilityEventInfo() {}
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Serialize this class as a DictionaryValue that can be converted to
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // a JavaScript object.
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SerializeToDict(base::DictionaryValue* dict) const = 0;
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Profile* profile() const { return profile_; }
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected:
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  explicit AccessibilityEventInfo(Profile* profile) : profile_(profile) {}
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The profile this control belongs to.
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Profile* profile_;
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Abstract parent class for accessibility information about a control
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// passed to event listeners.
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class AccessibilityControlInfo : public AccessibilityEventInfo {
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~AccessibilityControlInfo();
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Serialize this class as a DictionaryValue that can be converted to
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // a JavaScript object.
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SerializeToDict(base::DictionaryValue* dict) const OVERRIDE;
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Return the specific type of this control, which will be one of the
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // string constants defined in extension_accessibility_api_constants.h.
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual const char* type() const = 0;
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const std::string& name() const { return name_; }
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const std::string& context() const { return context_; }
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  void set_bounds(const gfx::Rect& bounds) { bounds_ = bounds; }
751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  const gfx::Rect& bounds() const { return bounds_; }
761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected:
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AccessibilityControlInfo(Profile* profile,
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           const std::string& name);
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void set_context(const std::string& context) { context_ = context; }
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The name of the control, like "OK" or "Password".
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string name_;
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // A string describing the context of the control, such as the name of
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // the group or toolbar it's contained in.
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string context_;
891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // The bounds of the control in global screen coordinates.
911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  gfx::Rect bounds_;
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Accessibility information about a window passed to onWindowOpened
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// and onWindowClosed event listeners.
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class AccessibilityWindowInfo : public AccessibilityControlInfo {
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AccessibilityWindowInfo(Profile* profile, const std::string& window_name);
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual const char* type() const OVERRIDE;
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Accessibility information about a push button passed to onControlFocused
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// and onControlAction event listeners.
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class AccessibilityButtonInfo : public AccessibilityControlInfo {
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AccessibilityButtonInfo(Profile* profile,
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          const std::string& button_name,
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          const std::string& context);
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual const char* type() const OVERRIDE;
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Accessibility information about static text passed to onControlFocused
1155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// and onControlAction event listeners.
1165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class AccessibilityStaticTextInfo : public AccessibilityControlInfo {
1175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) public:
1185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  AccessibilityStaticTextInfo(Profile* profile,
1195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)                          const std::string& text,
1205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)                          const std::string& context);
1215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
1225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  virtual const char* type() const OVERRIDE;
1235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)};
1245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Accessibility information about a hyperlink passed to onControlFocused
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// and onControlAction event listeners.
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class AccessibilityLinkInfo : public AccessibilityControlInfo {
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AccessibilityLinkInfo(Profile* profile,
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        const std::string& link_name,
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        const std::string& context);
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual const char* type() const OVERRIDE;
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Accessibility information about a radio button passed to onControlFocused
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// and onControlAction event listeners.
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class AccessibilityRadioButtonInfo : public AccessibilityControlInfo {
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AccessibilityRadioButtonInfo(Profile* profile,
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               const std::string& name,
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               const std::string& context,
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               bool checked,
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               int item_index,
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               int item_count);
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual const char* type() const OVERRIDE;
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SerializeToDict(base::DictionaryValue* dict) const OVERRIDE;
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void SetChecked(bool checked) { checked_ = checked; }
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int item_index() const { return item_index_; }
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int item_count() const { return item_count_; }
1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool checked() const { return checked_; }
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool checked_;
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The 0-based index of this radio button and number of buttons in the group.
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int item_index_;
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int item_count_;
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Accessibility information about a checkbox passed to onControlFocused
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// and onControlAction event listeners.
1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class AccessibilityCheckboxInfo : public AccessibilityControlInfo {
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AccessibilityCheckboxInfo(Profile* profile,
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            const std::string& name,
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            const std::string& context,
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            bool checked);
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual const char* type() const OVERRIDE;
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SerializeToDict(base::DictionaryValue* dict) const OVERRIDE;
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void SetChecked(bool checked) { checked_ = checked; }
1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool checked() const { return checked_; }
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool checked_;
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Accessibility information about a tab passed to onControlFocused
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// and onControlAction event listeners.
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class AccessibilityTabInfo : public AccessibilityControlInfo {
1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AccessibilityTabInfo(Profile* profile,
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       const std::string& tab_name,
1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       const std::string& context,
1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       int tab_index,
1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       int tab_count);
1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual const char* type() const OVERRIDE;
1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SerializeToDict(base::DictionaryValue* dict) const OVERRIDE;
1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void SetTab(int tab_index, std::string tab_name) {
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    tab_index_ = tab_index;
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    name_ = tab_name;
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int tab_index() const { return tab_index_; }
2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int tab_count() const { return tab_count_; }
2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The 0-based index of this tab and number of tabs in the group.
2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int tab_index_;
2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int tab_count_;
2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Accessibility information about a combo box passed to onControlFocused
2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// and onControlAction event listeners.
2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class AccessibilityComboBoxInfo : public AccessibilityControlInfo {
2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AccessibilityComboBoxInfo(Profile* profile,
2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            const std::string& name,
2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            const std::string& context,
2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            const std::string& value,
2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            int item_index,
2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            int item_count);
2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual const char* type() const OVERRIDE;
2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SerializeToDict(base::DictionaryValue* dict) const OVERRIDE;
2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void SetValue(int item_index, const std::string& value) {
2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    item_index_ = item_index;
2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    value_ = value;
2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int item_index() const { return item_index_; }
2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int item_count() const { return item_count_; }
2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const std::string& value() const { return value_; }
2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string value_;
2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The 0-based index of the current item and the number of total items.
2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // If the value is not one of the drop-down options, |item_index_| should
2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // be -1.
2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int item_index_;
2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int item_count_;
2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
246a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Accessibility information about a text box, passed to onControlFocused,
2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// onControlAction, and onTextChanged event listeners.
2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class AccessibilityTextBoxInfo : public AccessibilityControlInfo {
2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AccessibilityTextBoxInfo(Profile* profile,
2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           const std::string& name,
2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           const std::string& context,
2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           bool password);
2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual const char* type() const OVERRIDE;
2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SerializeToDict(base::DictionaryValue* dict) const OVERRIDE;
2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void SetValue(
2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const std::string& value, int selection_start, int selection_end) {
2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    value_ = value;
2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    selection_start_ = selection_start;
2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    selection_end_ = selection_end;
2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const std::string& value() const { return value_; }
2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool password() const { return password_; }
2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int selection_start() const { return selection_start_; }
2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int selection_end() const { return selection_end_; }
2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string value_;
2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool password_;
2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int selection_start_;
2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int selection_end_;
2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Accessibility information about a combo box passed to onControlFocused
2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// and onControlAction event listeners.
2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class AccessibilityListBoxInfo : public AccessibilityControlInfo {
2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AccessibilityListBoxInfo(Profile* profile,
2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           const std::string& name,
2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           const std::string& context,
2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           const std::string& value,
2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           int item_index,
2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           int item_count);
2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual const char* type() const OVERRIDE;
2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SerializeToDict(base::DictionaryValue* dict) const OVERRIDE;
2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void SetValue(int item_index, std::string value) {
2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    item_index_ = item_index;
2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    value_ = value;
2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int item_index() const { return item_index_; }
3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int item_count() const { return item_count_; }
3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const std::string& value() const { return value_; }
3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string value_;
3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The 0-based index of the current item and the number of total items.
3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // If the value is not one of the drop-down options, |item_index_| should
3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // be -1.
3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int item_index_;
3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int item_count_;
3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Accessibility information about a menu; this class is used by
3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// onMenuOpened, onMenuClosed, and onControlFocused event listeners.
3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class AccessibilityMenuInfo : public AccessibilityControlInfo {
3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AccessibilityMenuInfo(Profile* profile, const std::string& menu_name);
3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual const char* type() const OVERRIDE;
3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Accessibility information about a menu item; this class is used by
3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// onControlFocused event listeners.
3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class AccessibilityMenuItemInfo : public AccessibilityControlInfo {
3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AccessibilityMenuItemInfo(Profile* profile,
3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            const std::string& name,
3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            const std::string& context,
3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            bool has_submenu,
3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            int item_index,
3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            int item_count);
3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual const char* type() const OVERRIDE;
3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SerializeToDict(base::DictionaryValue* dict) const OVERRIDE;
3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int item_index() const { return item_index_; }
3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int item_count() const { return item_count_; }
3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool has_submenu() const { return has_submenu_; }
3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool has_submenu_;
3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The 0-based index of the current item and the number of total items.
3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int item_index_;
3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int item_count_;
3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
347a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// Accessibility information about a tree; this class is used by
348a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// onControlFocused event listeners.
349a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)class AccessibilityTreeInfo : public AccessibilityControlInfo {
350a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) public:
351a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  AccessibilityTreeInfo(Profile* profile, const std::string& menu_name);
352a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
353a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  virtual const char* type() const OVERRIDE;
354a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)};
355a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
356a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// Accessibility information about a tree item; this class is used by
357a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// onControlFocused event listeners.
358a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)class AccessibilityTreeItemInfo : public AccessibilityControlInfo {
359a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) public:
360a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  AccessibilityTreeItemInfo(Profile* profile,
361a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                            const std::string& name,
362a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                            const std::string& context,
363a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                            int item_depth,
364a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                            int item_index,
365a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                            int item_count,
366a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                            int children_count,
367a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                            bool is_expanded);
368a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
369a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  virtual const char* type() const OVERRIDE;
370a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
371a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  virtual void SerializeToDict(base::DictionaryValue* dict) const OVERRIDE;
372a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
373a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  int item_depth() const { return item_depth_; }
374a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  int item_index() const { return item_index_; }
375a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  int item_count() const { return item_count_; }
376a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  int children_count() const { return children_count_; }
377a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  bool is_expanded() const { return is_expanded_; }
378a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
379a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) private:
380a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  // 0-based item depth.
381a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  int item_depth_;
382a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  // The 0-based index of the current item and the number of total items at the
383a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  // current depth.
384a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  int item_index_;
385a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  // Count of items at the current depth.
386a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  int item_count_;
387a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  // Count of children of the current item.
388a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  int children_count_;
389a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  // True if the node is expanded.
390a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  bool is_expanded_;
391a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)};
392a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
3935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Accessibility information about a slider passed to onControlFocused
3945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// and onControlAction event listeners.
3955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class AccessibilitySliderInfo : public AccessibilityControlInfo {
3965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
3975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AccessibilitySliderInfo(Profile* profile,
3985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          const std::string& name,
3995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          const std::string& context,
4005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          const std::string& value);
4015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual const char* type() const OVERRIDE;
4035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SerializeToDict(base::DictionaryValue* dict) const OVERRIDE;
4055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const std::string& value() const { return value_; }
4075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
4095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string value_;
4105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
4115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
412f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Accessibility information about an alert passed to onControlAction event.
413f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class AccessibilityAlertInfo : public AccessibilityControlInfo {
414f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) public:
415f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  AccessibilityAlertInfo(Profile* profile, const std::string& name);
416f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
417f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual const char* type() const OVERRIDE;
418f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)};
419f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
4205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // CHROME_BROWSER_ACCESSIBILITY_ACCESSIBILITY_EVENTS_H_
421