tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

box.mako.rs (17386B)


      1 /* This Source Code Form is subject to the terms of the Mozilla Public
      2 * License, v. 2.0. If a copy of the MPL was not distributed with this
      3 * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
      4 
      5 <%namespace name="helpers" file="/helpers.mako.rs" />
      6 <% from data import ALL_AXES %>
      7 
      8 ${helpers.predefined_type(
      9    "display",
     10    "Display",
     11    "computed::Display::inline()",
     12    engines="gecko servo",
     13    initial_specified_value="specified::Display::inline()",
     14    animation_type="discrete",
     15    spec="https://drafts.csswg.org/css-display/#propdef-display",
     16    servo_restyle_damage="rebuild_box",
     17    affects="layout",
     18 )}
     19 
     20 ${helpers.single_keyword(
     21    "-moz-top-layer",
     22    "none auto",
     23    engines="gecko",
     24    gecko_enum_prefix="StyleTopLayer",
     25    gecko_ffi_name="mTopLayer",
     26    animation_type="discrete",
     27    enabled_in="ua",
     28    spec="Internal (not web-exposed)",
     29    affects="layout",
     30 )}
     31 
     32 // An internal-only property for elements in a top layer
     33 // https://fullscreen.spec.whatwg.org/#top-layer
     34 ${helpers.single_keyword(
     35    "-servo-top-layer",
     36    "none top",
     37    engines="servo",
     38    animation_type="none",
     39    enabled_in="ua",
     40    spec="Internal (not web-exposed)",
     41    affects="layout",
     42 )}
     43 
     44 ${helpers.predefined_type(
     45    "position",
     46    "PositionProperty",
     47    "computed::PositionProperty::Static",
     48    engines="gecko servo",
     49    initial_specified_value="specified::PositionProperty::Static",
     50    animation_type="discrete",
     51    spec="https://drafts.csswg.org/css-position/#position-property",
     52    servo_restyle_damage="rebuild_box",
     53    affects="layout",
     54 )}
     55 
     56 // Changes do not invalidate our element. We handle notify/invalidating
     57 // elements that reference anchor-name elsewhere.
     58 ${helpers.predefined_type(
     59    "anchor-name",
     60    "AnchorName",
     61    "computed::AnchorName::none()",
     62    engines="gecko",
     63    animation_type="discrete",
     64    gecko_pref="layout.css.anchor-positioning.enabled",
     65    spec="https://drafts.csswg.org/css-anchor-position-1/#propdef-anchor-name",
     66    affects="",
     67 )}
     68 
     69 // Changes do not invalidate our element. We handle notify/invalidating
     70 // any affected descendants elsewhere.
     71 ${helpers.predefined_type(
     72    "anchor-scope",
     73    "AnchorScope",
     74    "computed::AnchorScope::none()",
     75    engines="gecko",
     76    animation_type="discrete",
     77    gecko_pref="layout.css.anchor-positioning.enabled",
     78    spec="https://drafts.csswg.org/css-anchor-position-1/#propdef-scope",
     79    affects="",
     80 )}
     81 
     82 ${helpers.predefined_type(
     83    "float",
     84    "Float",
     85    "computed::Float::None",
     86    engines="gecko servo",
     87    animation_type="discrete",
     88    spec="https://drafts.csswg.org/css-box/#propdef-float",
     89    servo_restyle_damage="rebuild_box",
     90    affects="layout",
     91 )}
     92 
     93 ${helpers.predefined_type(
     94    "clear",
     95    "Clear",
     96    "computed::Clear::None",
     97    engines="gecko servo",
     98    animation_type="discrete",
     99    spec="https://drafts.csswg.org/css2/#propdef-clear",
    100    servo_restyle_damage="rebuild_box",
    101    affects="layout",
    102 )}
    103 
    104 ${helpers.predefined_type(
    105    "vertical-align",
    106    "VerticalAlign",
    107    "computed::VerticalAlign::baseline()",
    108    engines="gecko servo",
    109    spec="https://www.w3.org/TR/CSS2/visudet.html#propdef-vertical-align",
    110    servo_restyle_damage = "rebuild_box",
    111    affects="layout",
    112 )}
    113 
    114 ${helpers.predefined_type(
    115    "baseline-source",
    116    "BaselineSource",
    117    "computed::BaselineSource::Auto",
    118    engines="gecko servo",
    119    animation_type="discrete",
    120    spec="https://drafts.csswg.org/css-inline-3/#baseline-source",
    121    servo_restyle_damage = "rebuild_box",
    122    affects="layout",
    123 )}
    124 
    125 // CSS 2.1, Section 11 - Visual effects
    126 
    127 ${helpers.single_keyword(
    128    "-servo-overflow-clip-box",
    129    "padding-box content-box",
    130    engines="servo",
    131    animation_type="none",
    132    enabled_in="ua",
    133    spec="Internal, not web-exposed, \
    134          may be standardized in the future (https://developer.mozilla.org/en-US/docs/Web/CSS/overflow-clip-box)",
    135    affects="layout",
    136 )}
    137 
    138 % for (axis, logical) in ALL_AXES:
    139    <% full_name = "overflow-{}".format(axis) %>
    140    ${helpers.predefined_type(
    141        full_name,
    142        "Overflow",
    143        "computed::Overflow::Visible",
    144        engines="gecko servo",
    145        logical_group="overflow",
    146        logical=logical,
    147        animation_type="discrete",
    148        spec="https://drafts.csswg.org/css-overflow-3/#propdef-{}".format(full_name),
    149        servo_restyle_damage = "rebuild_box",
    150        affects="layout",
    151    )}
    152 % endfor
    153 
    154 ${helpers.predefined_type(
    155    "overflow-anchor",
    156    "OverflowAnchor",
    157    "computed::OverflowAnchor::Auto",
    158    engines="gecko",
    159    initial_specified_value="specified::OverflowAnchor::Auto",
    160    gecko_pref="layout.css.scroll-anchoring.enabled",
    161    spec="https://drafts.csswg.org/css-scroll-anchoring/#exclusion-api",
    162    animation_type="discrete",
    163    affects="",
    164 )}
    165 
    166 <% transform_extra_prefixes = "moz:layout.css.prefixes.transforms webkit" %>
    167 
    168 ${helpers.predefined_type(
    169    "transform",
    170    "Transform",
    171    "generics::transform::Transform::none()",
    172    engines="gecko servo",
    173    extra_prefixes="moz:layout.css.prefixes.transforms",
    174    flags="CAN_ANIMATE_ON_COMPOSITOR",
    175    spec="https://drafts.csswg.org/css-transforms/#propdef-transform",
    176    servo_restyle_damage="recalculate_overflow",
    177    affects="overflow",
    178 )}
    179 
    180 ${helpers.predefined_type(
    181    "rotate",
    182    "Rotate",
    183    "generics::transform::Rotate::None",
    184    engines="gecko servo",
    185    boxed=True,
    186    flags="CAN_ANIMATE_ON_COMPOSITOR",
    187    spec="https://drafts.csswg.org/css-transforms-2/#individual-transforms",
    188    servo_restyle_damage = "recalculate_overflow",
    189    affects="overflow",
    190 )}
    191 
    192 ${helpers.predefined_type(
    193    "scale",
    194    "Scale",
    195    "generics::transform::Scale::None",
    196    engines="gecko servo",
    197    boxed=True,
    198    flags="CAN_ANIMATE_ON_COMPOSITOR",
    199    spec="https://drafts.csswg.org/css-transforms-2/#individual-transforms",
    200    servo_restyle_damage = "recalculate_overflow",
    201    affects="overflow",
    202 )}
    203 
    204 ${helpers.predefined_type(
    205    "translate",
    206    "Translate",
    207    "generics::transform::Translate::None",
    208    engines="gecko servo",
    209    boxed=True,
    210    flags="CAN_ANIMATE_ON_COMPOSITOR",
    211    spec="https://drafts.csswg.org/css-transforms-2/#individual-transforms",
    212    servo_restyle_damage="recalculate_overflow",
    213    affects="overflow",
    214 )}
    215 
    216 // Motion Path Module Level 1
    217 ${helpers.predefined_type(
    218    "offset-path",
    219    "OffsetPath",
    220    "computed::OffsetPath::none()",
    221    engines="gecko servo",
    222    servo_pref="layout.unimplemented",
    223    flags="CAN_ANIMATE_ON_COMPOSITOR",
    224    spec="https://drafts.fxtf.org/motion-1/#offset-path-property",
    225    servo_restyle_damage="rebuild_box",
    226    affects="overflow",
    227 )}
    228 
    229 // Motion Path Module Level 1
    230 ${helpers.predefined_type(
    231    "offset-distance",
    232    "LengthPercentage",
    233    "computed::LengthPercentage::zero()",
    234    engines="gecko",
    235    flags="CAN_ANIMATE_ON_COMPOSITOR",
    236    spec="https://drafts.fxtf.org/motion-1/#offset-distance-property",
    237    servo_restyle_damage="rebuild_box",
    238    affects="overflow",
    239 )}
    240 
    241 // Motion Path Module Level 1
    242 ${helpers.predefined_type(
    243    "offset-rotate",
    244    "OffsetRotate",
    245    "computed::OffsetRotate::auto()",
    246    engines="gecko",
    247    flags="CAN_ANIMATE_ON_COMPOSITOR",
    248    spec="https://drafts.fxtf.org/motion-1/#offset-rotate-property",
    249    servo_restyle_damage="rebuild_box",
    250    affects="overflow",
    251 )}
    252 
    253 // Motion Path Module Level 1
    254 ${helpers.predefined_type(
    255    "offset-anchor",
    256    "PositionOrAuto",
    257    "computed::PositionOrAuto::auto()",
    258    engines="gecko",
    259    flags="CAN_ANIMATE_ON_COMPOSITOR",
    260    spec="https://drafts.fxtf.org/motion-1/#offset-anchor-property",
    261    servo_restyle_damage="rebuild_box",
    262    boxed=True,
    263    affects="overflow",
    264 )}
    265 
    266 // Motion Path Module Level 1
    267 ${helpers.predefined_type(
    268    "offset-position",
    269    "OffsetPosition",
    270    "computed::OffsetPosition::normal()",
    271    engines="gecko",
    272    flags="CAN_ANIMATE_ON_COMPOSITOR",
    273    spec="https://drafts.fxtf.org/motion-1/#offset-position-property",
    274    servo_restyle_damage="rebuild_box",
    275    boxed=True,
    276    affects="overflow",
    277 )}
    278 
    279 // CSSOM View Module
    280 // https://www.w3.org/TR/cssom-view-1/
    281 ${helpers.single_keyword(
    282    "scroll-behavior",
    283    "auto smooth",
    284    engines="gecko",
    285    spec="https://drafts.csswg.org/cssom-view/#propdef-scroll-behavior",
    286    animation_type="discrete",
    287    gecko_enum_prefix="StyleScrollBehavior",
    288    affects="",
    289 )}
    290 
    291 ${helpers.predefined_type(
    292    "scroll-snap-align",
    293    "ScrollSnapAlign",
    294    "computed::ScrollSnapAlign::none()",
    295    engines="gecko",
    296    spec="https://drafts.csswg.org/css-scroll-snap-1/#scroll-snap-align",
    297    animation_type="discrete",
    298    affects="paint",
    299 )}
    300 
    301 ${helpers.predefined_type(
    302    "scroll-snap-type",
    303    "ScrollSnapType",
    304    "computed::ScrollSnapType::none()",
    305    engines="gecko",
    306    spec="https://drafts.csswg.org/css-scroll-snap-1/#scroll-snap-type",
    307    animation_type="discrete",
    308    affects="paint",
    309 )}
    310 
    311 ${helpers.predefined_type(
    312    "scroll-snap-stop",
    313    "ScrollSnapStop",
    314    "computed::ScrollSnapStop::Normal",
    315    engines="gecko",
    316    spec="https://drafts.csswg.org/css-scroll-snap-1/#scroll-snap-stop",
    317    animation_type="discrete",
    318    affects="paint",
    319 )}
    320 
    321 % for (axis, logical) in ALL_AXES:
    322    ${helpers.predefined_type(
    323        "overscroll-behavior-" + axis,
    324        "OverscrollBehavior",
    325        "computed::OverscrollBehavior::Auto",
    326        engines="gecko",
    327        logical_group="overscroll-behavior",
    328        logical=logical,
    329        spec="https://wicg.github.io/overscroll-behavior/#overscroll-behavior-properties",
    330        animation_type="discrete",
    331        affects="paint",
    332    )}
    333 % endfor
    334 
    335 // Compositing and Blending Level 1
    336 // http://www.w3.org/TR/compositing-1/
    337 ${helpers.single_keyword(
    338    "isolation",
    339    "auto isolate",
    340    engines="gecko servo",
    341    spec="https://drafts.fxtf.org/compositing/#isolation",
    342    gecko_enum_prefix="StyleIsolation",
    343    animation_type="discrete",
    344    affects="paint",
    345    servo_restyle_damage="repaint",
    346 )}
    347 
    348 ${helpers.predefined_type(
    349    "break-after",
    350    "BreakBetween",
    351    "computed::BreakBetween::Auto",
    352    engines="gecko",
    353    spec="https://drafts.csswg.org/css-break/#propdef-break-after",
    354    animation_type="discrete",
    355    affects="layout",
    356 )}
    357 
    358 ${helpers.predefined_type(
    359    "break-before",
    360    "BreakBetween",
    361    "computed::BreakBetween::Auto",
    362    engines="gecko",
    363    spec="https://drafts.csswg.org/css-break/#propdef-break-before",
    364    animation_type="discrete",
    365    affects="layout",
    366 )}
    367 
    368 ${helpers.predefined_type(
    369    "break-inside",
    370    "BreakWithin",
    371    "computed::BreakWithin::Auto",
    372    engines="gecko",
    373    spec="https://drafts.csswg.org/css-break/#propdef-break-inside",
    374    animation_type="discrete",
    375    affects="layout",
    376 )}
    377 
    378 // CSS Basic User Interface Module Level 3
    379 // http://dev.w3.org/csswg/css-ui
    380 ${helpers.predefined_type(
    381    "resize",
    382    "Resize",
    383    "computed::Resize::None",
    384    engines="gecko",
    385    animation_type="discrete",
    386    gecko_ffi_name="mResize",
    387    spec="https://drafts.csswg.org/css-ui/#propdef-resize",
    388    affects="layout",
    389 )}
    390 
    391 ${helpers.predefined_type(
    392    "perspective",
    393    "Perspective",
    394    "computed::Perspective::none()",
    395    engines="gecko servo",
    396    gecko_ffi_name="mChildPerspective",
    397    spec="https://drafts.csswg.org/css-transforms/#perspective",
    398    extra_prefixes="moz:layout.css.prefixes.transforms",
    399    servo_restyle_damage = "recalculate_overflow",
    400    affects="overflow",
    401 )}
    402 
    403 ${helpers.predefined_type(
    404    "perspective-origin",
    405    "Position",
    406    "computed::position::Position::center()",
    407    engines="gecko servo",
    408    boxed=True,
    409    extra_prefixes=transform_extra_prefixes,
    410    spec="https://drafts.csswg.org/css-transforms-2/#perspective-origin-property",
    411    servo_restyle_damage="recalculate_overflow",
    412    affects="overflow",
    413 )}
    414 
    415 ${helpers.single_keyword(
    416    "backface-visibility",
    417    "visible hidden",
    418    engines="gecko servo",
    419    gecko_enum_prefix="StyleBackfaceVisibility",
    420    spec="https://drafts.csswg.org/css-transforms/#backface-visibility-property",
    421    extra_prefixes=transform_extra_prefixes,
    422    animation_type="discrete",
    423    servo_restyle_damage="repaint",
    424    affects="paint",
    425 )}
    426 
    427 ${helpers.predefined_type(
    428    "transform-box",
    429    "TransformBox",
    430    "computed::TransformBox::ViewBox",
    431    engines="gecko",
    432    spec="https://drafts.csswg.org/css-transforms/#transform-box",
    433    animation_type="discrete",
    434    affects="overflow",
    435 )}
    436 
    437 ${helpers.predefined_type(
    438    "transform-style",
    439    "TransformStyle",
    440    "computed::TransformStyle::Flat",
    441    engines="gecko servo",
    442    spec="https://drafts.csswg.org/css-transforms-2/#transform-style-property",
    443    extra_prefixes=transform_extra_prefixes,
    444    animation_type="discrete",
    445    servo_restyle_damage = "recalculate_overflow",
    446    affects="overflow",
    447 )}
    448 
    449 ${helpers.predefined_type(
    450    "transform-origin",
    451    "TransformOrigin",
    452    "computed::TransformOrigin::initial_value()",
    453    engines="gecko servo",
    454    extra_prefixes=transform_extra_prefixes,
    455    gecko_ffi_name="mTransformOrigin",
    456    boxed=True,
    457    spec="https://drafts.csswg.org/css-transforms/#transform-origin-property",
    458    servo_restyle_damage="recalculate_overflow",
    459    affects="overflow",
    460 )}
    461 
    462 ${helpers.predefined_type(
    463    "contain",
    464    "Contain",
    465    "specified::Contain::empty()",
    466    engines="gecko servo",
    467    servo_pref="layout.unimplemented",
    468    animation_type="none",
    469    spec="https://drafts.csswg.org/css-contain/#contain-property",
    470    affects="layout",
    471 )}
    472 
    473 ${helpers.predefined_type(
    474    "content-visibility",
    475    "ContentVisibility",
    476    "computed::ContentVisibility::Visible",
    477    engines="gecko",
    478    spec="https://drafts.csswg.org/css-contain/#content-visibility",
    479    affects="layout",
    480 )}
    481 
    482 ${helpers.predefined_type(
    483    "container-type",
    484    "ContainerType",
    485    "computed::ContainerType::NORMAL",
    486    engines="gecko servo",
    487    animation_type="none",
    488    servo_pref="layout.container-queries.enabled",
    489    spec="https://drafts.csswg.org/css-contain-3/#container-type",
    490    affects="layout",
    491 )}
    492 
    493 ${helpers.predefined_type(
    494    "container-name",
    495    "ContainerName",
    496    "computed::ContainerName::none()",
    497    engines="gecko servo",
    498    animation_type="none",
    499    servo_pref="layout.container-queries.enabled",
    500    spec="https://drafts.csswg.org/css-contain-3/#container-name",
    501    affects="",
    502 )}
    503 
    504 ${helpers.predefined_type(
    505    "appearance",
    506    "Appearance",
    507    "computed::Appearance::None",
    508    engines="gecko",
    509    extra_prefixes="moz:layout.css.moz-appearance.enabled webkit",
    510    spec="https://drafts.csswg.org/css-ui-4/#propdef-appearance",
    511    animation_type="discrete",
    512    gecko_ffi_name="mAppearance",
    513    affects="paint",
    514 )}
    515 
    516 // The inherent widget type of an element, selected by specifying
    517 // `appearance: auto`.
    518 ${helpers.predefined_type(
    519    "-moz-default-appearance",
    520    "Appearance",
    521    "computed::Appearance::None",
    522    engines="gecko",
    523    animation_type="none",
    524    spec="Internal (not web-exposed)",
    525    enabled_in="chrome",
    526    gecko_ffi_name="mDefaultAppearance",
    527    affects="paint",
    528 )}
    529 
    530 ${helpers.single_keyword(
    531    "-moz-orient",
    532    "inline block horizontal vertical",
    533    engines="gecko",
    534    gecko_ffi_name="mOrient",
    535    gecko_enum_prefix="StyleOrient",
    536    spec="Nonstandard (https://developer.mozilla.org/en-US/docs/Web/CSS/-moz-orient)",
    537    animation_type="discrete",
    538    affects="layout",
    539 )}
    540 
    541 ${helpers.predefined_type(
    542    "will-change",
    543    "WillChange",
    544    "computed::WillChange::auto()",
    545    engines="gecko servo",
    546    animation_type="none",
    547    spec="https://drafts.csswg.org/css-will-change/#will-change",
    548    affects="layout",
    549 )}
    550 
    551 // The spec issue for the parse_method: https://github.com/w3c/csswg-drafts/issues/4102.
    552 ${helpers.predefined_type(
    553    "shape-image-threshold",
    554    "Opacity",
    555    "0.0",
    556    engines="gecko",
    557    spec="https://drafts.csswg.org/css-shapes/#shape-image-threshold-property",
    558    affects="layout",
    559 )}
    560 
    561 ${helpers.predefined_type(
    562    "shape-margin",
    563    "NonNegativeLengthPercentage",
    564    "computed::NonNegativeLengthPercentage::zero()",
    565    engines="gecko",
    566    spec="https://drafts.csswg.org/css-shapes/#shape-margin-property",
    567    affects="layout",
    568 )}
    569 
    570 ${helpers.predefined_type(
    571    "shape-outside",
    572    "basic_shape::ShapeOutside",
    573    "generics::basic_shape::ShapeOutside::None",
    574    engines="gecko",
    575    spec="https://drafts.csswg.org/css-shapes/#shape-outside-property",
    576    affects="layout",
    577 )}
    578 
    579 ${helpers.predefined_type(
    580    "touch-action",
    581    "TouchAction",
    582    "computed::TouchAction::auto()",
    583    engines="gecko",
    584    animation_type="discrete",
    585    spec="https://compat.spec.whatwg.org/#touch-action",
    586    affects="paint",
    587 )}
    588 
    589 ${helpers.predefined_type(
    590    "-webkit-line-clamp",
    591    "LineClamp",
    592    "computed::LineClamp::none()",
    593    engines="gecko",
    594    spec="https://drafts.csswg.org/css-overflow-3/#line-clamp",
    595    affects="layout",
    596 )}
    597 
    598 ${helpers.predefined_type(
    599    "scrollbar-gutter",
    600    "ScrollbarGutter",
    601    "computed::ScrollbarGutter::AUTO",
    602    engines="gecko",
    603    animation_type="discrete",
    604    spec="https://drafts.csswg.org/css-overflow-3/#scrollbar-gutter-property",
    605    affects="layout",
    606 )}
    607 
    608 ${helpers.predefined_type(
    609    "zoom",
    610    "Zoom",
    611    "computed::box_::Zoom::ONE",
    612    engines="gecko servo",
    613    spec="Non-standard (https://github.com/atanassov/css-zoom/ is the closest)",
    614    gecko_pref="layout.css.zoom.enabled",
    615    servo_pref="layout.unimplemented",
    616    affects="layout",
    617    enabled_in="chrome",
    618 )}