servo icon indicating copy to clipboard operation
servo copied to clipboard

script: support `<frameset>`

Open wusyong opened this issue 5 months ago • 7 comments

Describe the new feature: Follow-up of https://github.com/servo/servo/issues/37367 Spec: https://html.spec.whatwg.org/multipage/obsolete.html#frameset

This is a deprecated feature, but whole spec isn't that much. It might be an interesting side project.

wusyong avatar Jun 13 '25 06:06 wusyong

@gterzian According to spec, frameset is treated as a body element. Do you have any idea where the body element is created? I couldn't track to the right code section.

wusyong avatar Jun 13 '25 06:06 wusyong

Do you mean using HTMLBodyElement::new to create?

https://github.com/servo/servo/blob/23acb623c887a095e8c6b1e2db10ca1398614945/components/script/dom/htmlbodyelement.rs#L43-L57

CYBAI avatar Jun 13 '25 07:06 CYBAI

Can we leave it unsupported?

I think it's totally fine to proudly leave a deprecated feature unsupported. Especially when its usage is very low (0.2% as of today), which means it's not something important.

xiaochengh avatar Jun 13 '25 10:06 xiaochengh

@xiaochengh Yeah my current priority is also sorting out the popular feature set we should add. I'm constantly discussing in Zulip and Triage meeting.

This is one of the trivial issues I opened from time to time and I wish to encourage contributors to be able to get some tasks. I don't intend to fully commit to this feature. Besides loading Abe's homepage is like a tradition for browser. It's like if there's a screen, it must play Bad Apple. If there's a device, it must run Doom.

Edit: My current main task is #37316. This is the blocker for opening three.js examples so I'm pushing it as soon as possible atm.

wusyong avatar Jun 13 '25 10:06 wusyong

@gterzian According to spec, frameset is treated as a body element. Do you have any idea where the body element is created? I couldn't track to the right code section.

From a quick search it seems to be

https://github.com/servo/servo/blob/f451dccd0be4b0bd7f6da2c7aa7e6cbb7888edf7/components/script/dom/domimplementation.rs#L237

and

https://github.com/servo/servo/blob/f451dccd0be4b0bd7f6da2c7aa7e6cbb7888edf7/components/script/dom/element.rs#L2498

(maybe other places too)

gterzian avatar Jun 13 '25 13:06 gterzian

This is one of the trivial issues I opened from time to time and I wish to encourage contributors to be able to get some tasks.

Thanks for the efforts, I really appreciate that!

But I would still like to suggest not including deprecated features. The more we work on them, the more technical debt we introduce.

Besides loading Abe's homepage is like a tradition for browser. It's like if there's a screen, it must play Bad Apple. If there's a device, it must run Doom.

Strongly agreed on Bad Apple and Doom! Not so sure about Abe's homepage though, as I had to search what that is :-/

xiaochengh avatar Jun 14 '25 18:06 xiaochengh

Note that framset and frame are already in script crate and current servo will create these DOM objects. They just do nothing at the moment.

I'll keep my focus on import map and other more important WebAPI or element. However, we should discuss how to deal with these obsolete features at some point in the future.

wusyong avatar Jun 15 '25 13:06 wusyong