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:
@@ -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"]
|
||||
|
||||
@@ -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();
|
||||
});
|
||||
@@ -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
|
||||
|
||||
@@ -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: >
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -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>
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user