1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155
/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ //! States elements can be in. bitflags! { /// Event-based element states. /// /// NB: Is important for this to remain in sync with Gecko's /// dom/events/EventStates.h. /// /// Please keep in that order in order for this to be easily auditable. /// /// TODO(emilio): We really really want to use the NS_EVENT_STATE bindings /// for this. #[derive(MallocSizeOf)] pub struct ElementState: u64 { /// The mouse is down on this element. /// <https://html.spec.whatwg.org/multipage/#selector-active> /// FIXME(#7333): set/unset this when appropriate const IN_ACTIVE_STATE = 1 << 0; /// This element has focus. /// <https://html.spec.whatwg.org/multipage/#selector-focus> const IN_FOCUS_STATE = 1 << 1; /// The mouse is hovering over this element. /// <https://html.spec.whatwg.org/multipage/#selector-hover> const IN_HOVER_STATE = 1 << 2; /// Content is enabled (and can be disabled). /// <http://www.whatwg.org/html/#selector-enabled> const IN_ENABLED_STATE = 1 << 3; /// Content is disabled. /// <http://www.whatwg.org/html/#selector-disabled> const IN_DISABLED_STATE = 1 << 4; /// Content is checked. /// <https://html.spec.whatwg.org/multipage/#selector-checked> const IN_CHECKED_STATE = 1 << 5; /// <https://html.spec.whatwg.org/multipage/#selector-indeterminate> const IN_INDETERMINATE_STATE = 1 << 6; /// <https://html.spec.whatwg.org/multipage/#selector-placeholder-shown> const IN_PLACEHOLDER_SHOWN_STATE = 1 << 7; /// <https://html.spec.whatwg.org/multipage/#selector-target> const IN_TARGET_STATE = 1 << 8; /// <https://fullscreen.spec.whatwg.org/#%3Afullscreen-pseudo-class> const IN_FULLSCREEN_STATE = 1 << 9; /// <https://html.spec.whatwg.org/multipage/#selector-valid> const IN_VALID_STATE = 1 << 10; /// <https://html.spec.whatwg.org/multipage/#selector-invalid> const IN_INVALID_STATE = 1 << 11; /// Non-standard: https://developer.mozilla.org/en-US/docs/Web/CSS/:-moz-ui-valid const IN_MOZ_UI_VALID_STATE = 1 << 12; /// Non-standard: https://developer.mozilla.org/en-US/docs/Web/CSS/:-moz-ui-invalid const IN_MOZ_UI_INVALID_STATE = 1 << 13; /// Non-standard: https://developer.mozilla.org/en-US/docs/Web/CSS/:-moz-broken const IN_BROKEN_STATE = 1 << 14; /// Non-standard: https://developer.mozilla.org/en-US/docs/Web/CSS/:-moz-user-disabled const IN_USER_DISABLED_STATE = 1 << 15; /// Non-standard: https://developer.mozilla.org/en-US/docs/Web/CSS/:-moz-suppressed const IN_SUPPRESSED_STATE = 1 << 16; /// Non-standard: https://developer.mozilla.org/en-US/docs/Web/CSS/:-moz-loading const IN_LOADING_STATE = 1 << 17; /// Non-standard: https://developer.mozilla.org/en-US/docs/Web/CSS/:-moz-handler-blocked const IN_HANDLER_BLOCKED_STATE = 1 << 18; /// Non-standard: https://developer.mozilla.org/en-US/docs/Web/CSS/:-moz-handler-disabled const IN_HANDLER_DISABLED_STATE = 1 << 19; /// Non-standard: https://developer.mozilla.org/en-US/docs/Web/CSS/:-moz-handler-crashed const IN_HANDLER_CRASHED_STATE = 1 << 20; /// <https://html.spec.whatwg.org/multipage/#selector-required> const IN_REQUIRED_STATE = 1 << 21; /// <https://html.spec.whatwg.org/multipage/#selector-optional> const IN_OPTIONAL_STATE = 1 << 22; /// <https://html.spec.whatwg.org/multipage/#selector-read-write> const IN_READ_WRITE_STATE = 1 << 22; /// Non-standard: Older custom-elements spec. const IN_UNRESOLVED_STATE = 1 << 23; /// <https://html.spec.whatwg.org/multipage/#selector-visited> const IN_VISITED_STATE = 1 << 24; /// <https://html.spec.whatwg.org/multipage/#selector-link> const IN_UNVISITED_STATE = 1 << 25; /// <https://drafts.csswg.org/selectors-4/#the-any-link-pseudo> const IN_VISITED_OR_UNVISITED_STATE = ElementState::IN_VISITED_STATE.bits | ElementState::IN_UNVISITED_STATE.bits; /// Non-standard: https://developer.mozilla.org/en-US/docs/Web/CSS/:-moz-drag-over const IN_DRAGOVER_STATE = 1 << 26; /// <https://html.spec.whatwg.org/multipage/#selector-in-range> const IN_INRANGE_STATE = 1 << 27; /// <https://html.spec.whatwg.org/multipage/#selector-out-of-range> const IN_OUTOFRANGE_STATE = 1 << 28; /// <https://html.spec.whatwg.org/multipage/#selector-read-only> const IN_MOZ_READONLY_STATE = 1 << 29; /// <https://html.spec.whatwg.org/multipage/#selector-read-write> const IN_MOZ_READWRITE_STATE = 1 << 30; /// <https://html.spec.whatwg.org/multipage/#selector-default> const IN_DEFAULT_STATE = 1 << 31; /// Non-standard: https://developer.mozilla.org/en-US/docs/Web/CSS/:-moz-submit-invalid const IN_MOZ_SUBMITINVALID_STATE = 1 << 32; /// Non-standard & undocumented. const IN_OPTIMUM_STATE = 1 << 33; /// Non-standard & undocumented. const IN_SUB_OPTIMUM_STATE = 1 << 34; /// Non-standard & undocumented. const IN_SUB_SUB_OPTIMUM_STATE = 1 << 35; /// Non-standard & undocumented. const IN_DEVTOOLS_HIGHLIGHTED_STATE = 1 << 36; /// Non-standard & undocumented. const IN_STYLEEDITOR_TRANSITIONING_STATE = 1 << 37; /// Non-standard & undocumented. const IN_INCREMENT_SCRIPT_LEVEL_STATE = 1 << 38; /// Non-standard: https://developer.mozilla.org/en-US/docs/Web/CSS/:-moz-focusring const IN_FOCUSRING_STATE = 1 << 39; /// Non-standard & undocumented. const IN_HANDLER_CLICK_TO_PLAY_STATE = 1 << 40; /// Non-standard & undocumented. const IN_HANDLER_VULNERABLE_UPDATABLE_STATE = 1 << 41; /// Non-standard & undocumented. const IN_HANDLER_VULNERABLE_NO_UPDATE_STATE = 1 << 42; /// <https://drafts.csswg.org/selectors-4/#the-focus-within-pseudo> const IN_FOCUS_WITHIN_STATE = 1 << 43; /// :dir matching; the states are used for dynamic change detection. /// State that elements that match :dir(ltr) are in. const IN_LTR_STATE = 1 << 44; /// State that elements that match :dir(rtl) are in. const IN_RTL_STATE = 1 << 45; /// State that HTML elements that have a "dir" attr are in. const IN_HAS_DIR_ATTR_STATE = 1 << 46; /// State that HTML elements with dir="ltr" (or something /// case-insensitively equal to "ltr") are in. const IN_HAS_DIR_ATTR_LTR_STATE = 1 << 47; /// State that HTML elements with dir="rtl" (or something /// case-insensitively equal to "rtl") are in. const IN_HAS_DIR_ATTR_RTL_STATE = 1 << 48; /// State that HTML <bdi> elements without a valid-valued "dir" attr or /// any HTML elements (including <bdi>) with dir="auto" (or something /// case-insensitively equal to "auto") are in. const IN_HAS_DIR_ATTR_LIKE_AUTO_STATE = 1 << 49; /// Non-standard & undocumented. const IN_AUTOFILL_STATE = 1 << 50; /// Non-standard & undocumented. const IN_AUTOFILL_PREVIEW_STATE = 1 << 51; } } bitflags! { /// Event-based document states. /// /// NB: Is important for this to remain in sync with Gecko's /// dom/base/nsIDocument.h. #[derive(MallocSizeOf)] pub struct DocumentState: u64 { /// RTL locale: specific to the XUL localedir attribute const NS_DOCUMENT_STATE_RTL_LOCALE = 1 << 0; /// Window activation status const NS_DOCUMENT_STATE_WINDOW_INACTIVE = 1 << 1; } }