Bug 1959061 - Remove overflow/underflow event prefs r=extension-reviewers,emilio,robwu

And use counters

Differential Revision: https://phabricator.services.mozilla.com/D244718
This commit is contained in:
Gregory Pappas
2025-04-08 23:48:03 +00:00
parent 2b1691e0c7
commit 2c1c232662
10 changed files with 1 additions and 215 deletions

View File

@@ -338,8 +338,6 @@ https_first_disabled = true
["browser_ext_originControls_internals.js"]
["browser_ext_overflow_underflow_events.js"]
["browser_ext_pageAction_activeTab.js"]
["browser_ext_pageAction_click_types.js"]

View File

@@ -1,51 +0,0 @@
/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
add_setup(async function setup() {
await SpecialPowers.pushPrefEnv({
set: [
["layout.overflow-underflow.content.enabled", false],
["layout.overflow-underflow.content.enabled_in_addons", true],
],
});
});
add_task(async function test_overflow_underflow_events_in_sidebar() {
let extension = ExtensionTestUtils.loadExtension({
manifest: {
sidebar_action: {
default_panel: "sidebar.html",
},
},
files: {
"sidebar.html": `<!DOCTYPE html>
<html>
<body>
<div id="div" style="height: 10px; overflow-x: hidden">
<div style="height: 10px"></div>
</div>
<script src="sidebar.js"></script>
</body>
</html>`,
"sidebar.js": async function () {
/* global div */
let overflow = new Promise(resolve =>
div.addEventListener("overflow", resolve, { once: true })
);
let underflow = new Promise(resolve =>
div.addEventListener("underflow", resolve, { once: true })
);
div.style.height = "5px";
await overflow;
div.style.height = "10px";
await underflow;
browser.test.notifyPass("overflow/underflow events in sidebar");
},
},
});
await extension.startup();
await extension.awaitFinish();
await extension.unload();
});

View File

@@ -62,10 +62,6 @@ method DataTransfer.mozGetDataAt
attribute DataTransfer.mozUserCancelled
attribute DataTransfer.mozSourceNode
// Element non-standard events
custom onoverflow sets an element onoverflow event listener
custom onunderflow sets an element onunderflow event listener
// JavaScript feature usage
custom JS_asmjs uses asm.js
custom JS_wasm uses WebAssembly

View File

@@ -450,40 +450,6 @@ use.counter.page:
send_in_pings:
- use-counters
onoverflow:
type: counter
description: >
Whether a page sets an element onoverflow event listener.
Compare against `use.counter.top_level_content_documents_destroyed`
to calculate the rate.
bugs:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1852098
data_reviews:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1852098
notification_emails:
- dom-core@mozilla.com
- emilio@mozilla.com
expires: never
send_in_pings:
- use-counters
onunderflow:
type: counter
description: >
Whether a page sets an element onunderflow event listener.
Compare against `use.counter.top_level_content_documents_destroyed`
to calculate the rate.
bugs:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1852098
data_reviews:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1852098
notification_emails:
- dom-core@mozilla.com
- emilio@mozilla.com
expires: never
send_in_pings:
- use-counters
js_asmjs:
type: counter
description: >

View File

@@ -473,20 +473,6 @@ void EventListenerManager::AddEventListenerInternal(
window->SetHasFormSelectEventListeners();
}
break;
case eScrollPortOverflow:
if (nsPIDOMWindowInner* window = GetInnerWindowForTarget()) {
if (Document* doc = window->GetExtantDoc()) {
doc->SetUseCounter(eUseCounter_custom_onoverflow);
}
}
break;
case eScrollPortUnderflow:
if (nsPIDOMWindowInner* window = GetInnerWindowForTarget()) {
if (Document* doc = window->GetExtantDoc()) {
doc->SetUseCounter(eUseCounter_custom_onunderflow);
}
}
break;
case eLegacyMouseLineOrPageScroll:
if (nsPIDOMWindowInner* window = GetInnerWindowForTarget()) {
if (Document* doc = window->GetExtantDoc()) {
@@ -629,14 +615,6 @@ void EventListenerManager::AddEventListenerInternal(
nsPrintfCString("resolvedEventMessage=%s",
ToChar(resolvedEventMessage))
.get());
NS_ASSERTION(aTypeAtom != nsGkAtoms::onoverflow,
nsPrintfCString("resolvedEventMessage=%s",
ToChar(resolvedEventMessage))
.get());
NS_ASSERTION(aTypeAtom != nsGkAtoms::onunderflow,
nsPrintfCString("resolvedEventMessage=%s",
ToChar(resolvedEventMessage))
.get());
NS_ASSERTION(aTypeAtom != nsGkAtoms::onDOMMouseScroll,
nsPrintfCString("resolvedEventMessage=%s",
ToChar(resolvedEventMessage))

View File

@@ -5923,18 +5923,7 @@ void ScrollContainerFrame::PostOverflowEvent() {
return;
}
auto overflowEventEnabled = [&]() -> bool {
Document* doc = PresContext()->Document();
if (nsContentUtils::IsChromeDoc(doc)) {
return true;
}
if (nsContentUtils::IsAddonDoc(doc)) {
return StaticPrefs::layout_overflow_underflow_content_enabled_in_addons();
}
return StaticPrefs::layout_overflow_underflow_content_enabled();
}();
if (!overflowEventEnabled) {
if (!nsContentUtils::IsChromeDoc(PresContext()->Document())) {
return;
}

View File

@@ -225,8 +225,6 @@ skip-if = [
# are defined in system level. So, it depends on the environment.
skip-if = ["os == 'linux' && os_version == '18.04'"]
["test_overflow_event.html"]
["test_overlay_scrollbar_position.html"]
["test_page_scroll_overlap.html"]

View File

@@ -1,55 +0,0 @@
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Test for overflow events</title>
<script src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
<script type="application/javascript">
SimpleTest.waitForExplicitFinish();
window.addEventListener("load", function (event) {
SpecialPowers.pushPrefEnv(
{ set: [["layout.overflow-underflow.content.enabled", true]] },
function () {
if (event.target == document) {
test_bug981637();
}
}
);
});
/** Test for Bug 981637: correct overflow event firing in updateOverflow **/
var overflow_fired = false;
function overflow_listener(event) {
overflow_fired = true;
}
function test_bug981637() {
var outerDiv = document.getElementById("bug981637");
var innerDiv = outerDiv.firstChild;
innerDiv.offsetWidth; // flush layout
is(overflow_fired, false, "correct setup");
outerDiv.addEventListener("overflow", overflow_listener);
innerDiv.style.transform = "scale(1.2)";
innerDiv.offsetWidth; // flush layout
// run finish step after the overflow event fires (off the event loop)
setTimeout(test_bug981637_step2, 0);
}
function test_bug981637_step2() {
is(overflow_fired, true, "overflow event should have fired after updating transform");
SimpleTest.finish();
}
</script>
</head>
<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=981637">Mozilla Bug 981637</a>
<div id="bug981637" style="overflow: hidden; width: 100px; height: 100px;"><div style="transform: scale(0.8); width: 100px; height: 100px"></div></div>
<pre id="test">
</pre>
</body>
</html>

View File

@@ -10607,18 +10607,6 @@
value: false
mirror: always
# Enable/disable overflow/underflow events in content
- name: layout.overflow-underflow.content.enabled
type: bool
value: false
mirror: always
# Enable/disable overflow/underflow events in addon content
- name: layout.overflow-underflow.content.enabled_in_addons
type: bool
value: false
mirror: always
- name: layout.visibility.min-recompute-interval-ms
type: uint32_t
value: 1000

View File

@@ -122,26 +122,6 @@ function observeKeyUpOnContent(aKeyCode, aCallback) {
}
const kTests = [
{ description: "InternalScrollPortEvent (overflow, vertical)",
targetID: "scrollable-div", eventType: "overflow",
dispatchEvent() {
document.getElementById("scrolled-div").style.height = "500px";
},
canRun() {
return true;
},
todoMismatch: [],
},
{ description: "InternalScrollPortEvent (overflow, horizontal)",
targetID: "scrollable-div", eventType: "overflow",
dispatchEvent() {
document.getElementById("scrolled-div").style.width = "500px";
},
canRun() {
return true;
},
todoMismatch: [],
},
{ description: "InternalScrollAreaEvent (MozScrolledAreaChanged, spreading)",
target() { return document; }, eventType: "MozScrolledAreaChanged",
dispatchEvent() {
@@ -769,7 +749,6 @@ function init() {
["mousewheel.with_meta.action", 0],
["mousewheel.with_meta.action.override_x", -1],
["dom.events.textevent.enabled", true],
["layout.overflow-underflow.content.enabled", true],
["dom.mutation_events.enabled", true]]}, runNextTest);
}