// Copyright (c) 2011 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 UI_ACCESSIBILITY_AX_VIEW_STATE_H_ #define UI_ACCESSIBILITY_AX_VIEW_STATE_H_ #include "base/basictypes.h" #include "base/callback.h" #include "base/strings/string16.h" #include "ui/accessibility/ax_enums.h" #include "ui/accessibility/ax_export.h" namespace ui { //////////////////////////////////////////////////////////////////////////////// // // AXViewState // // A cross-platform struct for storing the core accessibility information // that should be provided about any UI view to assistive technology (AT). // //////////////////////////////////////////////////////////////////////////////// struct AX_EXPORT AXViewState { public: AXViewState(); ~AXViewState(); // Set or check bits in |state_|. void AddStateFlag(ui::AXState state); bool HasStateFlag(ui::AXState state) const; // The view's state, a bitmask containing fields such as checked // (for a checkbox) and protected (for a password text box). This "state" // should not be confused with the class's name. uint32 state() { return state_; } // The view's role, like button or list box. AXRole role; // The view's name / label. base::string16 name; // The view's value, for example the text content. base::string16 value; // The name of the default action if the user clicks on this view. base::string16 default_action; // The keyboard shortcut to activate this view, if any. base::string16 keyboard_shortcut; // The selection start and end. Only applies to views with text content, // such as a text box or combo box; start and end should be -1 otherwise. int selection_start; int selection_end; // The selected item's index and the count of the number of items. // Only applies to views with multiple choices like a listbox; both // index and count should be -1 otherwise. int index; int count; // An optional callback that can be used by accessibility clients to // set the string value of this view. This only applies to roles where // setting the value makes sense, like a text box. Not often used by // screen readers, but often used by automation software to script // things like logging into portals or filling forms. // // This callback is only valid for the lifetime of the view, and should // be a safe no-op if the view is deleted. Typically, accessible views // should use a WeakPtr when binding the callback. base::Callback set_value_callback; private: uint32 state_; }; } // namespace ui #endif // UI_ACCESSIBILITY_AX_VIEW_STATE_H_