diff options
Diffstat (limited to 'dom/chrome-webidl/Flex.webidl')
-rw-r--r-- | dom/chrome-webidl/Flex.webidl | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/dom/chrome-webidl/Flex.webidl b/dom/chrome-webidl/Flex.webidl new file mode 100644 index 0000000000..f04897e65c --- /dev/null +++ b/dom/chrome-webidl/Flex.webidl @@ -0,0 +1,94 @@ +/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* 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/. + */ + +/** + * These objects support visualization of flex containers by the + * dev tools. + */ + +/** + * A flex container's main and cross axes are either horizontal or + * vertical, each with two possible directions. + */ +enum FlexPhysicalDirection { + "horizontal-lr", + "horizontal-rl", + "vertical-tb", + "vertical-bt", +}; + +[ChromeOnly, Exposed=Window] +interface Flex +{ + sequence<FlexLineValues> getLines(); + + /** + * The physical direction in which successive flex items are placed, + * within a flex line in this flex container. + */ + readonly attribute FlexPhysicalDirection mainAxisDirection; + + /** + * The physical direction in which successive flex lines are placed + * in this flex container (if it is or were multi-line). + */ + readonly attribute FlexPhysicalDirection crossAxisDirection; +}; + +/** + * This indicates which flex factor (flex-grow vs. flex-shrink) the + * flex layout algorithm uses internally when resolving flexible sizes + * in a given flex line, per flexbox spec section 9.7 step 1. Note that + * this value doesn't necessarily mean that any items on this line + * are *actually* growing (or shrinking). This simply indicates what + * the layout algorithm "wants" to do, based on the free space -- + * and items will stretch from their flex base size in the corresponding + * direction, if permitted by their min/max constraints and their + * corresponding flex factor. + */ +enum FlexLineGrowthState { "shrinking", "growing" }; + +[ChromeOnly, Exposed=Window] +interface FlexLineValues +{ + readonly attribute FlexLineGrowthState growthState; + readonly attribute double crossStart; + readonly attribute double crossSize; + + // firstBaselineOffset measures from flex-start edge. + readonly attribute double firstBaselineOffset; + + // lastBaselineOffset measures from flex-end edge. + readonly attribute double lastBaselineOffset; + + /** + * getItems() returns FlexItemValues only for the Elements in + * this Flex container -- ignoring struts and abs-pos Elements. + */ + sequence<FlexItemValues> getItems(); +}; + +/** + * Item main sizes have either been unclamped, clamped to the minimum, + * or clamped to the maximum. + */ +enum FlexItemClampState { + "unclamped", "clamped_to_min", "clamped_to_max" +}; + +[ChromeOnly, Exposed=Window] +interface FlexItemValues +{ + readonly attribute Node? node; + readonly attribute DOMRectReadOnly frameRect; + readonly attribute double mainBaseSize; + readonly attribute double mainDeltaSize; + readonly attribute double mainMinSize; + readonly attribute double mainMaxSize; + readonly attribute double crossMinSize; + readonly attribute double crossMaxSize; + readonly attribute FlexItemClampState clampState; +}; |