Bug 1869043 allow a device to be specified with MediaTrackGraph::NotifyWhenDeviceStar...
[gecko.git] / layout / base / ScrollStyles.cpp
blob6ce21aad8c6cd14faeebf1e1a7bd7d5392f0278c
1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
3 /* This Source Code Form is subject to the terms of the Mozilla Public
4 * License, v. 2.0. If a copy of the MPL was not distributed with this
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
7 #include "mozilla/ScrollStyles.h"
8 #include "nsStyleStruct.h" // for nsStyleDisplay
10 namespace mozilla {
12 // https://drafts.csswg.org/css-overflow/#overflow-propagation
13 // "If `visible` is applied to the viewport, it must be interpreted as `auto`.
14 // If `clip` is applied to the viewport, it must be interpreted as `hidden`."
15 static StyleOverflow MapOverflowValueForViewportPropagation(
16 StyleOverflow aOverflow) {
17 switch (aOverflow) {
18 case StyleOverflow::Visible:
19 return StyleOverflow::Auto;
20 case StyleOverflow::Clip:
21 return StyleOverflow::Hidden;
22 default:
23 return aOverflow;
27 ScrollStyles::ScrollStyles(StyleOverflow aH, StyleOverflow aV)
28 : mHorizontal(aH), mVertical(aV) {
29 MOZ_ASSERT(mHorizontal == StyleOverflow::Auto ||
30 mHorizontal == StyleOverflow::Hidden ||
31 mHorizontal == StyleOverflow::Scroll);
32 MOZ_ASSERT(mVertical == StyleOverflow::Auto ||
33 mVertical == StyleOverflow::Hidden ||
34 mVertical == StyleOverflow::Scroll);
37 ScrollStyles::ScrollStyles(const nsStyleDisplay& aDisplay,
38 MapOverflowToValidScrollStyleTag)
39 : ScrollStyles(
40 MapOverflowValueForViewportPropagation(aDisplay.mOverflowX),
41 MapOverflowValueForViewportPropagation(aDisplay.mOverflowY)) {}
43 bool ScrollStyles::IsHiddenInBothDirections() const {
44 return mHorizontal == StyleOverflow::Hidden &&
45 mVertical == StyleOverflow::Hidden;
48 } // namespace mozilla