Merge remote-tracking branch 'origin/tracking' into custom

This commit is contained in:
roytam1 2023-10-16 09:33:55 +08:00
commit dabe363572
4 changed files with 101 additions and 77 deletions

View file

@ -303,6 +303,30 @@ ResizeObserverEntry::Constructor(const GlobalObject& aGlobal,
return observerEntry.forget(); return observerEntry.forget();
} }
void ResizeObserverEntry::GetBorderBoxSize(
nsTArray<RefPtr<ResizeObserverSize>>& aRetVal) const {
// In the resize-observer-1 spec, there will only be a single
// ResizeObserverSize returned in the FrozenArray.
//
// Note: the usage of FrozenArray is to support elements that have multiple
// fragments, which occur in multi-column scenarios. See:
// https://drafts.csswg.org/resize-observer/#resize-observer-entry-interface
aRetVal.Clear();
aRetVal.AppendElement(mBorderBoxSize);
}
void ResizeObserverEntry::GetContentBoxSize(
nsTArray<RefPtr<ResizeObserverSize>>& aRetVal) const {
// In the resize-observer-1 spec, there will only be a single
// ResizeObserverSize returned in the FrozenArray.
//
// Note: the usage of FrozenArray is to support elements that have multiple
// fragments, which occur in multi-column scenarios.
// https://drafts.csswg.org/resize-observer/#resize-observer-entry-interface
aRetVal.Clear();
aRetVal.AppendElement(mContentBoxSize);
}
void void
ResizeObserverEntry::SetBorderBoxSize(const nsSize& aSize) { ResizeObserverEntry::SetBorderBoxSize(const nsSize& aSize) {
nsIFrame* frame = mTarget->GetPrimaryFrame(); nsIFrame* frame = mTarget->GetPrimaryFrame();

View file

@ -163,14 +163,10 @@ public:
/** /**
* Returns target's logical border-box size and content-box size as * Returns target's logical border-box size and content-box size as
* ResizeObserverSize. * a ResizeObserverSize array.
*/ */
ResizeObserverSize* BorderBoxSize() const { void GetBorderBoxSize(nsTArray<RefPtr<ResizeObserverSize>>& aRetVal) const;
return mBorderBoxSize; void GetContentBoxSize(nsTArray<RefPtr<ResizeObserverSize>>& aRetVal) const;
}
ResizeObserverSize* ContentBoxSize() const {
return mContentBoxSize;
}
// Set borderBoxSize. // Set borderBoxSize.
void SetBorderBoxSize(const nsSize& aSize); void SetBorderBoxSize(const nsSize& aSize);

View file

@ -1,18 +1,18 @@
/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* -*- 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 /* 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, * 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/. * You can obtain one at http://mozilla.org/MPL/2.0/.
* *
* https://drafts.csswg.org/cssom-view/#mediaquerylistevent * https://drafts.csswg.org/cssom-view/#mediaquerylistevent
*/ */
[Constructor(DOMString type, optional MediaQueryListEventInit eventInitDict)] [Constructor(DOMString type, optional MediaQueryListEventInit eventInitDict)]
interface MediaQueryListEvent : Event { interface MediaQueryListEvent : Event {
readonly attribute DOMString media; readonly attribute DOMString media;
readonly attribute boolean matches; readonly attribute boolean matches;
}; };
dictionary MediaQueryListEventInit : EventInit { dictionary MediaQueryListEventInit : EventInit {
DOMString media = ""; DOMString media = "";
boolean matches = false; boolean matches = false;
}; };

View file

@ -1,52 +1,56 @@
/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* -*- 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 /* 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, * 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/. * You can obtain one at http://mozilla.org/MPL/2.0/.
* *
* The origin of this IDL file is * The origin of this IDL file is
* https://wicg.github.io/ResizeObserver/ * https://wicg.github.io/ResizeObserver/
*/ */
enum ResizeObserverBoxOptions { enum ResizeObserverBoxOptions {
"border-box", "border-box",
"content-box" "content-box"
}; };
dictionary ResizeObserverOptions { dictionary ResizeObserverOptions {
ResizeObserverBoxOptions box = "content-box"; ResizeObserverBoxOptions box = "content-box";
}; };
[Constructor(ResizeObserverCallback callback), [Constructor(ResizeObserverCallback callback),
Exposed=Window, Exposed=Window,
Pref="layout.css.resizeobserver.enabled"] Pref="layout.css.resizeobserver.enabled"]
interface ResizeObserver { interface ResizeObserver {
[Throws] [Throws]
void observe(Element? target, optional ResizeObserverOptions options); void observe(Element? target, optional ResizeObserverOptions options);
[Throws] [Throws]
void unobserve(Element? target); void unobserve(Element? target);
void disconnect(); void disconnect();
}; };
callback ResizeObserverCallback = void (sequence<ResizeObserverEntry> entries, ResizeObserver observer); callback ResizeObserverCallback = void (sequence<ResizeObserverEntry> entries, ResizeObserver observer);
[Constructor(Element? target), [Constructor(Element? target),
Pref="layout.css.resizeobserver.enabled"] Pref="layout.css.resizeobserver.enabled"]
interface ResizeObserverEntry { interface ResizeObserverEntry {
readonly attribute Element target; readonly attribute Element target;
readonly attribute DOMRectReadOnly? contentRect; readonly attribute DOMRectReadOnly? contentRect;
readonly attribute ResizeObserverSize borderBoxSize; // We are using a [Pure, Cached, Frozen] sequence since `FrozenArray` is not implemented in webidl.
readonly attribute ResizeObserverSize contentBoxSize; // This is functionally similar enough. As of #2340 Mozilla has not implemented this yet, either.
}; [Frozen, Cached, Pure]
readonly attribute sequence<ResizeObserverSize> borderBoxSize;
[Pref="layout.css.resizeobserver.enabled"] [Frozen, Cached, Pure]
interface ResizeObserverSize { readonly attribute sequence<ResizeObserverSize> contentBoxSize;
readonly attribute unrestricted double inlineSize; };
readonly attribute unrestricted double blockSize;
}; [Pref="layout.css.resizeobserver.enabled"]
interface ResizeObserverSize {
[ChromeOnly, readonly attribute unrestricted double inlineSize;
Pref="layout.css.resizeobserver.enabled"] readonly attribute unrestricted double blockSize;
interface ResizeObservation { };
readonly attribute Element target;
boolean isActive(); [ChromeOnly,
}; Pref="layout.css.resizeobserver.enabled"]
interface ResizeObservation {
readonly attribute Element target;
boolean isActive();
};