Commit 90e2b6c0 authored by Andrew Comminos's avatar Andrew Comminos Committed by Commit Bot

Migrate isInputPending options class to dictionary

Updates the API for isInputPending and associated tests to accept a dictionary
object for parameterization directly, making it compliant with the updated
spec.

Bug: 910421
Change-Id: I39e569ee6215044a9b59a8834d19cac76915cb9c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2425138Reviewed-by: default avatarKentaro Hara <haraken@chromium.org>
Commit-Queue: Andrew Comminos <acomminos@fb.com>
Cr-Commit-Position: refs/heads/master@{#810490}
parent f0759378
......@@ -19,7 +19,7 @@
const NUM_CHILD_FRAMES = 2;
const PERIOD_MS = 20;
const iipOptions = new IsInputPendingOptions({includeContinuous: true});
const iipOptions = {includeContinuous: true};
const detectedText = document.querySelector('#text-detected');
const notDetectedText = document.querySelector('#text-not-detected');
......
......@@ -4,7 +4,7 @@
<script src="../resources/runner.js"></script>
</script>
<script>
let options = new IsInputPendingOptions();
let options = {};
PerfTestRunner.measureRunsPerSecond({
description: "Measures performance of querying navigator.scheduling.isInputPending with default events.",
run: () => {
......
......@@ -4,9 +4,9 @@
<script src="../resources/runner.js"></script>
</script>
<script>
let options = new IsInputPendingOptions({
let options = {
includeContinuous: true,
});
};
PerfTestRunner.measureRunsPerSecond({
description: "Measures performance of querying navigator.scheduling.isInputPending with continuous events included.",
run: () => {
......
......@@ -177,8 +177,8 @@ generated_dictionary_sources_in_core = [
"$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_intersection_observer_init.h",
"$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_intrinsic_sizes_result_options.cc",
"$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_intrinsic_sizes_result_options.h",
"$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_is_input_pending_options_init.cc",
"$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_is_input_pending_options_init.h",
"$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_is_input_pending_options.cc",
"$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_is_input_pending_options.h",
"$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_keyboard_event_init.cc",
"$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_keyboard_event_init.h",
"$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_keyframe_animation_options.cc",
......@@ -891,8 +891,6 @@ generated_interface_sources_in_core = [
"$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_intervention_report_body.h",
"$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_intrinsic_sizes.cc",
"$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_intrinsic_sizes.h",
"$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_is_input_pending_options.cc",
"$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_is_input_pending_options.h",
"$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_iterator.cc",
"$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_iterator.h",
"$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_keyboard_event.cc",
......
......@@ -258,7 +258,6 @@ static_idl_files_in_core = get_path_info(
"//third_party/blink/renderer/core/frame/history.idl",
"//third_party/blink/renderer/core/frame/intervention_report_body.idl",
"//third_party/blink/renderer/core/frame/is_input_pending_options.idl",
"//third_party/blink/renderer/core/frame/is_input_pending_options_init.idl",
"//third_party/blink/renderer/core/frame/location.idl",
"//third_party/blink/renderer/core/frame/navigator.idl",
"//third_party/blink/renderer/core/frame/navigator_automation_information.idl",
......
......@@ -191,7 +191,6 @@ core_interface_idl_files_core_only =
"frame/fragment_directive.idl",
"frame/history.idl",
"frame/intervention_report_body.idl",
"frame/is_input_pending_options.idl",
"frame/location.idl",
"frame/navigator_ua_data.idl",
"frame/report.idl",
......@@ -687,7 +686,7 @@ core_dictionary_idl_files =
"fetch/trust_token.idl",
"fileapi/blob_property_bag.idl",
"fileapi/file_property_bag.idl",
"frame/is_input_pending_options_init.idl",
"frame/is_input_pending_options.idl",
"frame/navigator_ua_brand_version.idl",
"frame/reporting_observer_options.idl",
"frame/scroll_into_view_options.idl",
......
......@@ -95,8 +95,6 @@ blink_core_sources("frame") {
"intervention.h",
"intervention_report_body.cc",
"intervention_report_body.h",
"is_input_pending_options.cc",
"is_input_pending_options.h",
"layout_subtree_root_list.cc",
"layout_subtree_root_list.h",
"local_dom_window.cc",
......
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "third_party/blink/renderer/core/frame/is_input_pending_options.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_is_input_pending_options_init.h"
namespace blink {
IsInputPendingOptions* IsInputPendingOptions::Create(
const IsInputPendingOptionsInit* options_init) {
return MakeGarbageCollected<IsInputPendingOptions>(
options_init->includeContinuous());
}
IsInputPendingOptions::IsInputPendingOptions(bool include_continuous)
: include_continuous_(include_continuous) {}
} // namespace blink
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_FRAME_IS_INPUT_PENDING_OPTIONS_H_
#define THIRD_PARTY_BLINK_RENDERER_CORE_FRAME_IS_INPUT_PENDING_OPTIONS_H_
#include "third_party/blink/renderer/platform/bindings/script_wrappable.h"
namespace blink {
class IsInputPendingOptionsInit;
class IsInputPendingOptions : public ScriptWrappable {
DEFINE_WRAPPERTYPEINFO();
public:
static IsInputPendingOptions* Create(
const IsInputPendingOptionsInit* options_init);
explicit IsInputPendingOptions(bool include_continuous);
bool includeContinuous() const { return include_continuous_; }
void setIncludeContinuous(bool include_continuous) {
include_continuous_ = include_continuous;
}
private:
bool include_continuous_;
};
} // namespace blink
#endif // THIRD_PARTY_BLINK_RENDERER_CORE_FRAME_IS_INPUT_PENDING_OPTIONS_H_
......@@ -3,10 +3,6 @@
// found in the LICENSE file.
// https://github.com/WICG/is-input-pending
[
Exposed=Window,
RuntimeEnabled=ExperimentalIsInputPending
] interface IsInputPendingOptions {
constructor(optional IsInputPendingOptionsInit options = {});
attribute boolean includeContinuous;
dictionary IsInputPendingOptions {
boolean includeContinuous = false;
};
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// https://github.com/WICG/is-input-pending
dictionary IsInputPendingOptionsInit {
boolean includeContinuous = false;
};
......@@ -17,14 +17,14 @@ bool Scheduling::isInputPending(ScriptState* script_state,
const IsInputPendingOptions* options) const {
DCHECK(RuntimeEnabledFeatures::ExperimentalIsInputPendingEnabled(
ExecutionContext::From(script_state)));
DCHECK(options);
auto* frame = LocalDOMWindow::From(script_state)->GetFrame();
if (!frame)
return false;
auto* scheduler = ThreadScheduler::Current();
auto info = scheduler->GetPendingUserInputInfo(
options ? options->includeContinuous() : false);
auto info = scheduler->GetPendingUserInputInfo(options->includeContinuous());
for (const auto& attribution : info) {
if (frame->CanAccessEvent(attribution)) {
......
......@@ -19,8 +19,7 @@ class Scheduling : public ScriptWrappable {
DEFINE_WRAPPERTYPEINFO();
public:
bool isInputPending(ScriptState*,
const IsInputPendingOptions* options = nullptr) const;
bool isInputPending(ScriptState*, const IsInputPendingOptions* options) const;
bool isFramePending() const;
};
......
......@@ -8,5 +8,5 @@
RuntimeEnabled=ExperimentalIsInputPending
] interface Scheduling {
[RuntimeEnabled=ExperimentalIsInputPending] boolean isFramePending();
[CallWith=ScriptState, MeasureAs=SchedulingIsInputPending, RuntimeEnabled=ExperimentalIsInputPending] boolean isInputPending(optional IsInputPendingOptions options);
[CallWith=ScriptState, MeasureAs=SchedulingIsInputPending, RuntimeEnabled=ExperimentalIsInputPending] boolean isInputPending(optional IsInputPendingOptions options = {});
};
......@@ -3,16 +3,10 @@
// (https://github.com/w3c/webref)
// Source: Early detection of input events (https://wicg.github.io/is-input-pending/)
dictionary IsInputPendingOptionsInit {
dictionary IsInputPendingOptions {
boolean includeContinuous = false;
};
[Exposed=Window]
interface IsInputPendingOptions {
constructor(optional IsInputPendingOptionsInit isInputPendingOptionsInit = {});
attribute boolean includeContinuous;
};
[Exposed=Window] interface Scheduling {
boolean isInputPending(optional IsInputPendingOptions isInputPendingOptions);
};
......
......@@ -8,7 +8,6 @@ idl_test(
['html', 'dom'],
async idl_array => {
idl_array.add_objects({
IsInputPendingOptions: ['new IsInputPendingOptions'],
Scheduling: ['navigator.scheduling'],
});
}
......
......@@ -2,8 +2,8 @@
onmessage = async e => {
if (e.data !== 'check-input') return;
const discreteOptions = new IsInputPendingOptions({ includeContinuous: false });
const continuousOptions = new IsInputPendingOptions({ includeContinuous: true });
const discreteOptions = { includeContinuous: false };
const continuousOptions = { includeContinuous: true };
// Use a reasonable time to wait after dispatching events, since we want to be
// able to test for cases where isInputPending returns false.
......
......@@ -4646,11 +4646,6 @@ interface IntersectionObserverEntry
getter target
getter time
method constructor
interface IsInputPendingOptions
attribute @@toStringTag
getter includeContinuous
method constructor
setter includeContinuous
interface Keyboard
attribute @@toStringTag
method constructor
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment