blob: 35a46ccb9e192f40229e684bb89950ddefc2af5d [file] [log] [blame]
// Copyright 2017 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.
(async function() {
TestRunner.addResult(`Test that Web Inspector can inspect element with pointer-events:none.\n`);
await TestRunner.loadModule('elements_test_runner');
await TestRunner.showPanel('elements');
await TestRunner.loadHTML(`
<style>
div {
margin: 0;
padding: 0;
border: none;
}
#outer {
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
}
#inner {
pointer-events: none;
position: absolute;
top: 10px;
left: 10px;
bottom: 10px;
right: 10px;
}
</style>
<div id="outer"><div id="inner"></div></div>
`);
await TestRunner.evaluateInPagePromise(`
function clickInner(withShift)
{
var target = document.getElementById("inner");
var rect = target.getBoundingClientRect();
// Simulate the mouse click over the target to trigger an event dispatch.
if (window.eventSender) {
eventSender.mouseMoveTo(rect.left + rect.width / 2, rect.top + rect.height / 2, withShift ? "shiftKey" : "");
eventSender.mouseDown();
eventSender.mouseUp();
}
}
`);
function selectedNodeId() {
var selectedElement = ElementsTestRunner.firstElementsTreeOutline().selectedTreeElement;
if (!selectedElement)
return '<no selected node>';
return selectedElement.node().getAttribute('id');
}
function expectSelectedNode(expectedId) {
var id = selectedNodeId();
if (id === expectedId)
TestRunner.addResult('PASS: selected node with id \'' + id + '\'');
else
TestRunner.addResult('FAIL: unexpected selection ' + id);
}
function step1() {
TestRunner.overlayModel.setInspectMode(Protocol.Overlay.InspectMode.SearchForNode).then(step2);
}
function step2() {
ElementsTestRunner.firstElementsTreeOutline().addEventListener(
Elements.ElementsTreeOutline.Events.SelectedNodeChanged, step3);
TestRunner.evaluateInPage('clickInner(true)');
}
function step3() {
ElementsTestRunner.firstElementsTreeOutline().removeEventListener(
Elements.ElementsTreeOutline.Events.SelectedNodeChanged, step3);
expectSelectedNode('inner');
TestRunner.overlayModel.setInspectMode(Protocol.Overlay.InspectMode.SearchForNode).then(step4);
}
function step4() {
ElementsTestRunner.firstElementsTreeOutline().addEventListener(
Elements.ElementsTreeOutline.Events.SelectedNodeChanged, step5);
TestRunner.evaluateInPage('clickInner(false)');
}
function step5() {
ElementsTestRunner.firstElementsTreeOutline().removeEventListener(
Elements.ElementsTreeOutline.Events.SelectedNodeChanged, step5);
expectSelectedNode('outer');
TestRunner.completeTest();
}
step1();
})();