Skip to content

Commit

Permalink
Use integer coordinates for Actions.pointerMove.
Browse files Browse the repository at this point in the history
The 2 tests were failing on wpt.fyi because the coordinates passed to Actions.pointerMove were not integers (like on local run). Since Actions.pointerMove expects integer coordinates, the tests were failing with an exception.
Use Math.ceil on coordinates passed to Actions.pointerMove. Apply memory leak fix.

Bug: 810882
Change-Id: I399f763fa03ebd98167fd060ad1769e8dd7f9d30
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2132950
Commit-Queue: Liviu Tinta <liviutinta@chromium.org>
Reviewed-by: Navid Zolghadr <nzolghadr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#755524}
  • Loading branch information
liviutinta authored and chromium-wpt-export-bot committed Apr 3, 2020
1 parent f23cbe2 commit 1422c81
Show file tree
Hide file tree
Showing 2 changed files with 114 additions and 109 deletions.
108 changes: 55 additions & 53 deletions pointerevents/pointerevent_pointercapture-in-custom-element.html
Expand Up @@ -48,59 +48,58 @@ <h4>PointerCapture by Custom Element's Shadow DOM</h4>
<wc-wc id="wc-wc"></wc-wc>
<div id="log"></div>
<script>
var logDiv = document.getElementById("log");
function logMessage(message){
var log = document.createElement("div");
var messageNode = document.createTextNode(message);
log.appendChild(messageNode);
logDiv.appendChild(log);
}
var events = [];

var content = document.getElementById("wc-wc")
.shadowRoot.getElementById("content");

content.addEventListener("pointerdown", function(e){
content.setPointerCapture(e.pointerId);
events.push("pointerdown@content");
});
content.addEventListener("gotpointercapture", function(e){
logMessage("Pointer was captured by custom element's Shadow DOM!");
events.push("gotpointercapture@content");
});
content.addEventListener("pointerup", function(e){
content.releasePointerCapture(e.pointerId);
events.push("pointerup@content");
});
content.addEventListener("lostpointercapture", function(e){
logMessage("Pointer was released by custom element's Shadow DOM!");
events.push("lostpointercapture@content");
if(window.promise_test && wc_shadow_dom_test){
wc_shadow_dom_test.step(function(){
assert_array_equals(events, ["pointerdown@content",
"gotpointercapture@content", "pointerup@content",
"lostpointercapture@content"]);
resolve_test();
wc_shadow_dom_test.done();
});
function onLoad(){
var logDiv = document.getElementById("log");
function logMessage(message){
var log = document.createElement("div");
var messageNode = document.createTextNode(message);
log.appendChild(messageNode);
logDiv.appendChild(log);
}
});
var events = [];

var wc_shadow_dom_test = null;
var resolve_test = null;
var reject_test = null;
var content = document.getElementById("wc-wc")
.shadowRoot.getElementById("content");

function cleanup(){
events = [];
shadow_dom_test = null;
resolve_test = null;
reject_test = null;
}
content.addEventListener("pointerdown", function(e){
content.setPointerCapture(e.pointerId);
events.push("pointerdown@content");
});
content.addEventListener("gotpointercapture", function(e){
logMessage("Pointer was captured by custom element's Shadow DOM!");
events.push("gotpointercapture@content");
});
content.addEventListener("pointerup", function(e){
content.releasePointerCapture(e.pointerId);
events.push("pointerup@content");
});
content.addEventListener("lostpointercapture", function(e){
logMessage("Pointer was released by custom element's Shadow DOM!");
events.push("lostpointercapture@content");
if(window.promise_test && wc_shadow_dom_test){
wc_shadow_dom_test.step(function(){
assert_array_equals(events, ["pointerdown@content",
"gotpointercapture@content", "pointerup@content",
"lostpointercapture@content"]);
resolve_test();
});
}
});

function onLoad(){
var wc_shadow_dom_test = null;
var resolve_test = null;
var reject_test = null;

function cleanup(){
events = [];
shadow_dom_test = null;
resolve_test = null;
reject_test = null;
}
if(window.promise_test){
promise_test(function(t){
return new Promise(function(resolve, reject){
promise_test(async function(t){
var actions_promise;
return new Promise(async function(resolve, reject){
wc_shadow_dom_test = t;
resolve_test = resolve;
reject_test = reject;
Expand All @@ -109,11 +108,14 @@ <h4>PointerCapture by Custom Element's Shadow DOM</h4>
});
var contentRect = content.getBoundingClientRect();
var actions = new test_driver.Actions();
var actions_promise = actions
.pointerMove(contentRect.x, contentRect.y)
.pointerDown({button: actions.ButtonType.LEFT})
.pointerUp({button: actions.ButtonType.LEFT})
.send();
actions_promise = actions
.pointerMove(Math.ceil(contentRect.x), Math.ceil(contentRect.y))
.pointerDown({button: actions.ButtonType.LEFT})
.pointerUp({button: actions.ButtonType.LEFT})
.send();
}).then(async()=>{
await actions_promise;
t.done();
});
}, "PointerCapture works for custom element Shadow DOM.");
}
Expand Down
115 changes: 59 additions & 56 deletions pointerevents/pointerevent_pointercapture-in-shadow-dom.html
Expand Up @@ -34,64 +34,64 @@ <h4>PointerCapture by Shadow DOM element</h4>
<div id="shadowhost"></div>
<div id="log"></div>
<script>
var logDiv = document.getElementById("log");
function logMessage(message){
var log = document.createElement("div");
var messageNode = document.createTextNode(message);
log.appendChild(messageNode);
logDiv.appendChild(log);
}
var events = [];
function onLoad(){
var logDiv = document.getElementById("log");
function logMessage(message){
var log = document.createElement("div");
var messageNode = document.createTextNode(message);
log.appendChild(messageNode);
logDiv.appendChild(log);
}
var events = [];

var host = document.getElementById("shadowhost");
var shadowRoot = host.attachShadow({mode: "open"});
var template = document.getElementById("template");
var node = template.content.cloneNode(true);
shadowRoot.appendChild(node);
var host = document.getElementById("shadowhost");
var shadowRoot = host.attachShadow({mode: "open"});
var template = document.getElementById("template");
var node = template.content.cloneNode(true);
shadowRoot.appendChild(node);

var content = host.shadowRoot.getElementById("content");
var content = host.shadowRoot.getElementById("content");

content.addEventListener("pointerdown", function(e){
content.setPointerCapture(e.pointerId);
events.push("pointerdown@content");
});
content.addEventListener("gotpointercapture", function(e){
logMessage("Pointer was captured by Shadow DOM!");
events.push("gotpointercapture@content");
});
content.addEventListener("pointerup", function(e){
content.releasePointerCapture(e.pointerId);
events.push("pointerup@content");
});
content.addEventListener("lostpointercapture", function(e){
logMessage("Pointer was released by Shadow DOM!");
events.push("lostpointercapture@content");
if(window.promise_test && shadow_dom_test){
shadow_dom_test.step(function(){
assert_array_equals(events, ["pointerdown@content",
"gotpointercapture@content", "pointerup@content",
"lostpointercapture@content"]);
resolve_test();
shadow_dom_test.done();
});
}
});
content.addEventListener("pointerdown", function(e){
content.setPointerCapture(e.pointerId);
events.push("pointerdown@content");
});
content.addEventListener("gotpointercapture", function(e){
logMessage("Pointer was captured by Shadow DOM!");
events.push("gotpointercapture@content");
});
content.addEventListener("pointerup", function(e){
content.releasePointerCapture(e.pointerId);
events.push("pointerup@content");
});
content.addEventListener("lostpointercapture", function(e){
logMessage("Pointer was released by Shadow DOM!");
events.push("lostpointercapture@content");
if(window.promise_test && shadow_dom_test){
shadow_dom_test.step(function(){
assert_array_equals(events, ["pointerdown@content",
"gotpointercapture@content", "pointerup@content",
"lostpointercapture@content"]);
resolve_test();
});
}
});

var shadow_dom_test = null;
var resolve_test = null;
var reject_test = null;
var shadow_dom_test = null;
var resolve_test = null;
var reject_test = null;

function cleanup(){
events = [];
shadow_dom_test = null;
resolve_test = null;
reject_test = null;
}
function cleanup(){
events = [];
shadow_dom_test = null;
resolve_test = null;
reject_test = null;
}

function onLoad(){
if(window.promise_test){
promise_test(function(t){
return new Promise(function(resolve, reject){
promise_test(async function(t){
var actions_promise;
return new Promise(async function(resolve, reject){
shadow_dom_test = t;
resolve_test = resolve;
reject_test = reject;
Expand All @@ -100,11 +100,14 @@ <h4>PointerCapture by Shadow DOM element</h4>
});
var contentRect = content.getBoundingClientRect();
var actions = new test_driver.Actions();
var actions_promise = actions
.pointerMove(contentRect.x, contentRect.y)
.pointerDown({button: actions.ButtonType.LEFT})
.pointerUp({button: actions.ButtonType.LEFT})
.send();
actions_promise = actions
.pointerMove(Math.ceil(contentRect.x), Math.ceil(contentRect.y))
.pointerDown({button: actions.ButtonType.LEFT})
.pointerUp({button: actions.ButtonType.LEFT})
.send();
}).then(async ()=>{
await actions_promise;
t.done();
});
}, "PointerCapture works for Shadow DOM element.");
}
Expand Down

0 comments on commit 1422c81

Please sign in to comment.