fixup: Enable viewport <meta> tag support for mobile platforms only (#39207)

1. Adds a pref viewport_meta_enabled.
2. Enable pref for mobile platforms.

Testing: Tested Manually
Fixes: #39157
Fixes: #39002

---------

Signed-off-by: Shubham Gupta <shubham13297@gmail.com>
This commit is contained in:
Shubham Gupta 2025-09-12 01:21:04 +08:00 committed by GitHub
parent e6d46fb9f3
commit dfdcba88d4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 17 additions and 6 deletions

View file

@ -264,7 +264,8 @@ pub struct Preferences {
/// The user-agent to use for Servo. This can also be set via [`UserAgentPlatform`] in
/// order to set the value to the default value for the given platform.
pub user_agent: String,
/// Whether or not the viewport meta tag is enabled.
pub viewport_meta_enabled: bool,
pub log_filter: String,
}
@ -431,6 +432,7 @@ impl Preferences {
threadpools_webrender_workers_max: 4,
webgl_testing_context_creation_error: false,
user_agent: String::new(),
viewport_meta_enabled: false,
log_filter: String::new(),
}
}

View file

@ -8,6 +8,7 @@ use compositing_traits::viewport_description::ViewportDescription;
use dom_struct::dom_struct;
use html5ever::{LocalName, Prefix, local_name, ns};
use js::rust::HandleObject;
use servo_config::pref;
use style::str::HTML_SPACE_CHARACTERS;
use crate::dom::attr::Attr;
@ -64,9 +65,7 @@ impl HTMLMetaElement {
if name == "referrer" {
self.apply_referrer();
}
if (cfg!(target_os = "android") || cfg!(target_os = "ios") || cfg!(target_env = "ohos")) &&
name == "viewport"
{
if name == "viewport" {
self.parse_and_send_viewport_if_necessary();
}
// https://html.spec.whatwg.org/multipage/#attr-meta-http-equiv
@ -125,6 +124,10 @@ impl HTMLMetaElement {
/// <https://drafts.csswg.org/css-viewport/#parsing-algorithm>
fn parse_and_send_viewport_if_necessary(&self) {
if !pref!(viewport_meta_enabled) {
return;
}
// Skip processing if this isn't the top level frame
if !self.owner_window().is_top_level() {
return;