Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement user interaction task source #10714

Merged
merged 4 commits into from May 12, 2016
Merged
Changes from 1 commit
Commits
File filter...
Filter file types
Jump to…
Jump to file
Failed to load files.

Always

Just for now

Prev

Fire 'select' event in SetSelectionRange

  • Loading branch information
KiChjang committed May 12, 2016
commit f60de52aae628a114935ec5e7272596fd798fa1a
@@ -545,6 +545,12 @@ impl HTMLInputElementMethods for HTMLInputElement {
let direction = direction.map_or(SelectionDirection::None, |d| SelectionDirection::from(d));
self.textinput.borrow_mut().selection_direction = direction;
self.textinput.borrow_mut().set_selection_range(start, end);
let window = window_from_node(self);
let _ = window.user_interaction_task_source().queue_event(
&self.upcast(),
atom!("select"),
EventBubbles::Bubbles,
EventCancelable::NotCancelable);
self.upcast::<Node>().dirty(NodeDamage::OtherNodeDamage);
}
}
@@ -916,8 +922,7 @@ impl VirtualMethods for HTMLInputElement {

if event.IsTrusted() {
let window = window_from_node(self);
let task_source = window.user_interaction_task_source();
let _ = task_source.queue_event(
let _ = window.user_interaction_task_source().queue_event(
&self.upcast(),
atom!("input"),
EventBubbles::Bubbles,
@@ -256,6 +256,12 @@ impl HTMLTextAreaElementMethods for HTMLTextAreaElement {
let direction = direction.map_or(SelectionDirection::None, |d| SelectionDirection::from(d));
self.textinput.borrow_mut().selection_direction = direction;
self.textinput.borrow_mut().set_selection_range(start, end);
let window = window_from_node(self);
let _ = window.user_interaction_task_source().queue_event(
&self.upcast(),
atom!("select"),
EventBubbles::Bubbles,
EventCancelable::NotCancelable);
self.upcast::<Node>().dirty(NodeDamage::OtherNodeDamage);
}
}
@@ -374,8 +380,7 @@ impl VirtualMethods for HTMLTextAreaElement {

if event.IsTrusted() {
let window = window_from_node(self);
let task_source = window.user_interaction_task_source();
let _ = task_source.queue_event(
let _ = window.user_interaction_task_source().queue_event(
&self.upcast(),
atom!("input"),
EventBubbles::Bubbles,
@@ -116,6 +116,19 @@
},'input setSelectionRange(undefined,1)');
},"test of input.setSelectionRange");

async_test(function() {
var q = false;
var input = document.getElementById("a");
input.addEventListener("select", this.step_func_done(function(e) {
assert_true(q, "event should be queued");
assert_true(e.isTrusted, "event is trusted");
assert_true(e.bubbles, "event bubbles");
assert_false(e.cancelable, "event is not cancelable");
}));
input.setSelectionRange(0, 1);
q = true;
}, "input setSelectionRange fires a select event");

test(function() {
var textarea = document.getElementById("b");
test(function() {
@@ -221,4 +234,17 @@
assert_equals(textarea.selectionEnd, 1, "element.selectionStart should be 1");
},'textarea setSelectionRange(undefined,1)');
},"test of textarea.setSelectionRange");

async_test(function() {
var q = false;
var textarea = document.getElementById("b");
textarea.addEventListener("select", this.step_func_done(function(e) {
assert_true(q, "event should be queued");
assert_true(e.isTrusted, "event is trusted");
assert_true(e.bubbles, "event bubbles");
assert_false(e.cancelable, "event is not cancelable");
}));
textarea.setSelectionRange(0, 1);
q = true;
}, "textarea setSelectionRange fires a select event");
</script>
ProTip! Use n and p to navigate between commits in a pull request.
You can’t perform that action at this time.