Skip to content

Commit

Permalink
re-add dynamic feature flags for isInputPending (#27919)
Browse files Browse the repository at this point in the history
## Summary

these were removed in #26617. adds
them back so we can conduct another experiment.

## How did you test this change?
`yarn test-www`

DiffTrain build for [c81f4e0](c81f4e0)
  • Loading branch information
noahlemen committed Jan 9, 2024
1 parent 3d4df0a commit 827e912
Show file tree
Hide file tree
Showing 9 changed files with 97 additions and 55 deletions.
2 changes: 1 addition & 1 deletion compiled/facebook-www/REVISION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
f9dddcbbb1c0b73f974e78b9488927b778630682
c81f4e02bab9d03e1583047d041fdb5e4eb19415
2 changes: 1 addition & 1 deletion compiled/facebook-www/React-dev.modern.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ if (__DEV__) {
) {
__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());
}
var ReactVersion = "18.3.0-www-modern-5ca2fa17";
var ReactVersion = "18.3.0-www-modern-772b53a9";

// ATTENTION
// When adding new symbols to this file,
Expand Down
2 changes: 1 addition & 1 deletion compiled/facebook-www/React-prod.modern.js
Original file line number Diff line number Diff line change
Expand Up @@ -579,4 +579,4 @@ exports.useSyncExternalStore = function (
exports.useTransition = function () {
return ReactCurrentDispatcher.current.useTransition();
};
exports.version = "18.3.0-www-modern-ffad6601";
exports.version = "18.3.0-www-modern-7987e28d";
15 changes: 9 additions & 6 deletions compiled/facebook-www/Scheduler-dev.classic.js
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,14 @@ if (__DEV__) {
var userBlockingPriorityTimeout =
dynamicFeatureFlags.userBlockingPriorityTimeout,
normalPriorityTimeout = dynamicFeatureFlags.normalPriorityTimeout,
lowPriorityTimeout = dynamicFeatureFlags.lowPriorityTimeout;
lowPriorityTimeout = dynamicFeatureFlags.lowPriorityTimeout,
enableIsInputPending = dynamicFeatureFlags.enableIsInputPending,
enableIsInputPendingContinuous =
dynamicFeatureFlags.enableIsInputPendingContinuous,
frameYieldMs = dynamicFeatureFlags.frameYieldMs,
continuousYieldMs = dynamicFeatureFlags.continuousYieldMs,
maxYieldMs = dynamicFeatureFlags.maxYieldMs;
var enableProfiling = enableProfilingFeatureFlag;
var enableIsInputPendingContinuous = true;
var frameYieldMs = 5;
var continuousYieldMs = 10;
var maxYieldMs = 10;

function push(heap, node) {
var index = heap.length;
Expand Down Expand Up @@ -703,7 +705,7 @@ if (__DEV__) {
// wasn't accompanied by a call to `requestPaint`, or other main thread tasks
// like network events.

{
if (enableIsInputPending) {
if (needsPaint) {
// There's a pending paint (signaled by `requestPaint`). Yield now.
return true;
Expand Down Expand Up @@ -734,6 +736,7 @@ if (__DEV__) {

function requestPaint() {
if (
enableIsInputPending &&
navigator !== undefined && // $FlowFixMe[prop-missing]
navigator.scheduling !== undefined && // $FlowFixMe[incompatible-type]
navigator.scheduling.isInputPending !== undefined
Expand Down
15 changes: 9 additions & 6 deletions compiled/facebook-www/Scheduler-dev.modern.js
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,14 @@ if (__DEV__) {
var userBlockingPriorityTimeout =
dynamicFeatureFlags.userBlockingPriorityTimeout,
normalPriorityTimeout = dynamicFeatureFlags.normalPriorityTimeout,
lowPriorityTimeout = dynamicFeatureFlags.lowPriorityTimeout;
lowPriorityTimeout = dynamicFeatureFlags.lowPriorityTimeout,
enableIsInputPending = dynamicFeatureFlags.enableIsInputPending,
enableIsInputPendingContinuous =
dynamicFeatureFlags.enableIsInputPendingContinuous,
frameYieldMs = dynamicFeatureFlags.frameYieldMs,
continuousYieldMs = dynamicFeatureFlags.continuousYieldMs,
maxYieldMs = dynamicFeatureFlags.maxYieldMs;
var enableProfiling = enableProfilingFeatureFlag;
var enableIsInputPendingContinuous = true;
var frameYieldMs = 5;
var continuousYieldMs = 10;
var maxYieldMs = 10;

function push(heap, node) {
var index = heap.length;
Expand Down Expand Up @@ -703,7 +705,7 @@ if (__DEV__) {
// wasn't accompanied by a call to `requestPaint`, or other main thread tasks
// like network events.

{
if (enableIsInputPending) {
if (needsPaint) {
// There's a pending paint (signaled by `requestPaint`). Yield now.
return true;
Expand Down Expand Up @@ -734,6 +736,7 @@ if (__DEV__) {

function requestPaint() {
if (
enableIsInputPending &&
navigator !== undefined && // $FlowFixMe[prop-missing]
navigator.scheduling !== undefined && // $FlowFixMe[incompatible-type]
navigator.scheduling.isInputPending !== undefined
Expand Down
29 changes: 19 additions & 10 deletions compiled/facebook-www/Scheduler-prod.classic.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,13 @@
var dynamicFeatureFlags = require("SchedulerFeatureFlags"),
userBlockingPriorityTimeout = dynamicFeatureFlags.userBlockingPriorityTimeout,
normalPriorityTimeout = dynamicFeatureFlags.normalPriorityTimeout,
lowPriorityTimeout = dynamicFeatureFlags.lowPriorityTimeout;
lowPriorityTimeout = dynamicFeatureFlags.lowPriorityTimeout,
enableIsInputPending = dynamicFeatureFlags.enableIsInputPending,
enableIsInputPendingContinuous =
dynamicFeatureFlags.enableIsInputPendingContinuous,
frameYieldMs = dynamicFeatureFlags.frameYieldMs,
continuousYieldMs = dynamicFeatureFlags.continuousYieldMs,
maxYieldMs = dynamicFeatureFlags.maxYieldMs;
function push(heap, node) {
var index = heap.length;
heap.push(node);
Expand Down Expand Up @@ -94,7 +100,7 @@ var taskQueue = [],
void 0 !== navigator.scheduling.isInputPending
? navigator.scheduling.isInputPending.bind(navigator.scheduling)
: null,
continuousOptions = { includeContinuous: !0 };
continuousOptions = { includeContinuous: enableIsInputPendingContinuous };
function advanceTimers(currentTime) {
for (var timer = peek(timerQueue); null !== timer; ) {
if (null === timer.callback) pop(timerQueue);
Expand All @@ -120,17 +126,19 @@ function handleTimeout(currentTime) {
}
var isMessageLoopRunning = !1,
taskTimeoutID = -1,
frameInterval = 5,
frameInterval = frameYieldMs,
startTime = -1,
needsPaint = !1;
function shouldYieldToHost() {
var timeElapsed = exports.unstable_now() - startTime;
if (timeElapsed < frameInterval) return !1;
if (needsPaint) return !0;
if (10 > timeElapsed) {
if (null !== isInputPending) return isInputPending();
} else if (10 > timeElapsed && null !== isInputPending)
return isInputPending(continuousOptions);
if (enableIsInputPending) {
if (needsPaint) return !0;
if (timeElapsed < continuousYieldMs) {
if (null !== isInputPending) return isInputPending();
} else if (timeElapsed < maxYieldMs && null !== isInputPending)
return isInputPending(continuousOptions);
}
return !0;
}
function performWorkUntilDeadline() {
Expand Down Expand Up @@ -251,7 +259,7 @@ exports.unstable_forceFrameRate = function (fps) {
? console.error(
"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"
)
: (frameInterval = 0 < fps ? Math.floor(1e3 / fps) : 5);
: (frameInterval = 0 < fps ? Math.floor(1e3 / fps) : frameYieldMs);
};
exports.unstable_getCurrentPriorityLevel = function () {
return currentPriorityLevel;
Expand Down Expand Up @@ -281,7 +289,8 @@ exports.unstable_pauseExecution = function () {
isSchedulerPaused = !0;
};
exports.unstable_requestPaint = function () {
void 0 !== navigator &&
enableIsInputPending &&
void 0 !== navigator &&
void 0 !== navigator.scheduling &&
void 0 !== navigator.scheduling.isInputPending &&
(needsPaint = !0);
Expand Down
29 changes: 19 additions & 10 deletions compiled/facebook-www/Scheduler-prod.modern.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,13 @@
var dynamicFeatureFlags = require("SchedulerFeatureFlags"),
userBlockingPriorityTimeout = dynamicFeatureFlags.userBlockingPriorityTimeout,
normalPriorityTimeout = dynamicFeatureFlags.normalPriorityTimeout,
lowPriorityTimeout = dynamicFeatureFlags.lowPriorityTimeout;
lowPriorityTimeout = dynamicFeatureFlags.lowPriorityTimeout,
enableIsInputPending = dynamicFeatureFlags.enableIsInputPending,
enableIsInputPendingContinuous =
dynamicFeatureFlags.enableIsInputPendingContinuous,
frameYieldMs = dynamicFeatureFlags.frameYieldMs,
continuousYieldMs = dynamicFeatureFlags.continuousYieldMs,
maxYieldMs = dynamicFeatureFlags.maxYieldMs;
function push(heap, node) {
var index = heap.length;
heap.push(node);
Expand Down Expand Up @@ -94,7 +100,7 @@ var taskQueue = [],
void 0 !== navigator.scheduling.isInputPending
? navigator.scheduling.isInputPending.bind(navigator.scheduling)
: null,
continuousOptions = { includeContinuous: !0 };
continuousOptions = { includeContinuous: enableIsInputPendingContinuous };
function advanceTimers(currentTime) {
for (var timer = peek(timerQueue); null !== timer; ) {
if (null === timer.callback) pop(timerQueue);
Expand All @@ -120,17 +126,19 @@ function handleTimeout(currentTime) {
}
var isMessageLoopRunning = !1,
taskTimeoutID = -1,
frameInterval = 5,
frameInterval = frameYieldMs,
startTime = -1,
needsPaint = !1;
function shouldYieldToHost() {
var timeElapsed = exports.unstable_now() - startTime;
if (timeElapsed < frameInterval) return !1;
if (needsPaint) return !0;
if (10 > timeElapsed) {
if (null !== isInputPending) return isInputPending();
} else if (10 > timeElapsed && null !== isInputPending)
return isInputPending(continuousOptions);
if (enableIsInputPending) {
if (needsPaint) return !0;
if (timeElapsed < continuousYieldMs) {
if (null !== isInputPending) return isInputPending();
} else if (timeElapsed < maxYieldMs && null !== isInputPending)
return isInputPending(continuousOptions);
}
return !0;
}
function performWorkUntilDeadline() {
Expand Down Expand Up @@ -251,7 +259,7 @@ exports.unstable_forceFrameRate = function (fps) {
? console.error(
"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"
)
: (frameInterval = 0 < fps ? Math.floor(1e3 / fps) : 5);
: (frameInterval = 0 < fps ? Math.floor(1e3 / fps) : frameYieldMs);
};
exports.unstable_getCurrentPriorityLevel = function () {
return currentPriorityLevel;
Expand Down Expand Up @@ -281,7 +289,8 @@ exports.unstable_pauseExecution = function () {
isSchedulerPaused = !0;
};
exports.unstable_requestPaint = function () {
void 0 !== navigator &&
enableIsInputPending &&
void 0 !== navigator &&
void 0 !== navigator.scheduling &&
void 0 !== navigator.scheduling.isInputPending &&
(needsPaint = !0);
Expand Down
29 changes: 19 additions & 10 deletions compiled/facebook-www/Scheduler-profiling.classic.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,13 @@ var dynamicFeatureFlags = require("SchedulerFeatureFlags"),
enableProfilingFeatureFlag = dynamicFeatureFlags.enableProfiling,
userBlockingPriorityTimeout = dynamicFeatureFlags.userBlockingPriorityTimeout,
normalPriorityTimeout = dynamicFeatureFlags.normalPriorityTimeout,
lowPriorityTimeout = dynamicFeatureFlags.lowPriorityTimeout;
lowPriorityTimeout = dynamicFeatureFlags.lowPriorityTimeout,
enableIsInputPending = dynamicFeatureFlags.enableIsInputPending,
enableIsInputPendingContinuous =
dynamicFeatureFlags.enableIsInputPendingContinuous,
frameYieldMs = dynamicFeatureFlags.frameYieldMs,
continuousYieldMs = dynamicFeatureFlags.continuousYieldMs,
maxYieldMs = dynamicFeatureFlags.maxYieldMs;
function push(heap, node) {
var index = heap.length;
heap.push(node);
Expand Down Expand Up @@ -139,7 +145,7 @@ var taskQueue = [],
void 0 !== navigator.scheduling.isInputPending
? navigator.scheduling.isInputPending.bind(navigator.scheduling)
: null,
continuousOptions = { includeContinuous: !0 };
continuousOptions = { includeContinuous: enableIsInputPendingContinuous };
function advanceTimers(currentTime) {
for (var timer = peek(timerQueue); null !== timer; ) {
if (null === timer.callback) pop(timerQueue);
Expand Down Expand Up @@ -221,17 +227,19 @@ function workLoop(initialTime) {
}
var isMessageLoopRunning = !1,
taskTimeoutID = -1,
frameInterval = 5,
frameInterval = frameYieldMs,
startTime = -1,
needsPaint = !1;
function shouldYieldToHost() {
var timeElapsed = exports.unstable_now() - startTime;
if (timeElapsed < frameInterval) return !1;
if (needsPaint) return !0;
if (10 > timeElapsed) {
if (null !== isInputPending) return isInputPending();
} else if (10 > timeElapsed && null !== isInputPending)
return isInputPending(continuousOptions);
if (enableIsInputPending) {
if (needsPaint) return !0;
if (timeElapsed < continuousYieldMs) {
if (null !== isInputPending) return isInputPending();
} else if (timeElapsed < maxYieldMs && null !== isInputPending)
return isInputPending(continuousOptions);
}
return !0;
}
function performWorkUntilDeadline() {
Expand Down Expand Up @@ -353,7 +361,7 @@ exports.unstable_forceFrameRate = function (fps) {
? console.error(
"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"
)
: (frameInterval = 0 < fps ? Math.floor(1e3 / fps) : 5);
: (frameInterval = 0 < fps ? Math.floor(1e3 / fps) : frameYieldMs);
};
exports.unstable_getCurrentPriorityLevel = function () {
return currentPriorityLevel;
Expand Down Expand Up @@ -383,7 +391,8 @@ exports.unstable_pauseExecution = function () {
isSchedulerPaused = !0;
};
exports.unstable_requestPaint = function () {
void 0 !== navigator &&
enableIsInputPending &&
void 0 !== navigator &&
void 0 !== navigator.scheduling &&
void 0 !== navigator.scheduling.isInputPending &&
(needsPaint = !0);
Expand Down
29 changes: 19 additions & 10 deletions compiled/facebook-www/Scheduler-profiling.modern.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,13 @@ var dynamicFeatureFlags = require("SchedulerFeatureFlags"),
enableProfilingFeatureFlag = dynamicFeatureFlags.enableProfiling,
userBlockingPriorityTimeout = dynamicFeatureFlags.userBlockingPriorityTimeout,
normalPriorityTimeout = dynamicFeatureFlags.normalPriorityTimeout,
lowPriorityTimeout = dynamicFeatureFlags.lowPriorityTimeout;
lowPriorityTimeout = dynamicFeatureFlags.lowPriorityTimeout,
enableIsInputPending = dynamicFeatureFlags.enableIsInputPending,
enableIsInputPendingContinuous =
dynamicFeatureFlags.enableIsInputPendingContinuous,
frameYieldMs = dynamicFeatureFlags.frameYieldMs,
continuousYieldMs = dynamicFeatureFlags.continuousYieldMs,
maxYieldMs = dynamicFeatureFlags.maxYieldMs;
function push(heap, node) {
var index = heap.length;
heap.push(node);
Expand Down Expand Up @@ -139,7 +145,7 @@ var taskQueue = [],
void 0 !== navigator.scheduling.isInputPending
? navigator.scheduling.isInputPending.bind(navigator.scheduling)
: null,
continuousOptions = { includeContinuous: !0 };
continuousOptions = { includeContinuous: enableIsInputPendingContinuous };
function advanceTimers(currentTime) {
for (var timer = peek(timerQueue); null !== timer; ) {
if (null === timer.callback) pop(timerQueue);
Expand Down Expand Up @@ -221,17 +227,19 @@ function workLoop(initialTime) {
}
var isMessageLoopRunning = !1,
taskTimeoutID = -1,
frameInterval = 5,
frameInterval = frameYieldMs,
startTime = -1,
needsPaint = !1;
function shouldYieldToHost() {
var timeElapsed = exports.unstable_now() - startTime;
if (timeElapsed < frameInterval) return !1;
if (needsPaint) return !0;
if (10 > timeElapsed) {
if (null !== isInputPending) return isInputPending();
} else if (10 > timeElapsed && null !== isInputPending)
return isInputPending(continuousOptions);
if (enableIsInputPending) {
if (needsPaint) return !0;
if (timeElapsed < continuousYieldMs) {
if (null !== isInputPending) return isInputPending();
} else if (timeElapsed < maxYieldMs && null !== isInputPending)
return isInputPending(continuousOptions);
}
return !0;
}
function performWorkUntilDeadline() {
Expand Down Expand Up @@ -353,7 +361,7 @@ exports.unstable_forceFrameRate = function (fps) {
? console.error(
"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"
)
: (frameInterval = 0 < fps ? Math.floor(1e3 / fps) : 5);
: (frameInterval = 0 < fps ? Math.floor(1e3 / fps) : frameYieldMs);
};
exports.unstable_getCurrentPriorityLevel = function () {
return currentPriorityLevel;
Expand Down Expand Up @@ -383,7 +391,8 @@ exports.unstable_pauseExecution = function () {
isSchedulerPaused = !0;
};
exports.unstable_requestPaint = function () {
void 0 !== navigator &&
enableIsInputPending &&
void 0 !== navigator &&
void 0 !== navigator.scheduling &&
void 0 !== navigator.scheduling.isInputPending &&
(needsPaint = !0);
Expand Down

0 comments on commit 827e912

Please sign in to comment.