Bug 1344504 - do not catch click events closing the event tooltip;r=gl

MozReview-Commit-ID: 3ebzs0RwbJo

--HG--
extra : rebase_source : 8f1cfbf2a307c65b384859845fa018877f0f371a
This commit is contained in:
Julian Descottes 2017-03-15 18:47:27 +01:00
Родитель c690940c14
Коммит a9647cccf2
3 изменённых файлов: 77 добавлений и 4 удалений

Просмотреть файл

@ -163,10 +163,14 @@ MarkupView.prototype = {
_initTooltips: function () {
// The tooltips will be attached to the toolbox document.
this.eventDetailsTooltip = new HTMLTooltip(this.toolbox.doc,
{type: "arrow"});
this.imagePreviewTooltip = new HTMLTooltip(this.toolbox.doc,
{type: "arrow", useXulWrapper: "true"});
this.eventDetailsTooltip = new HTMLTooltip(this.toolbox.doc, {
type: "arrow",
consumeOutsideClicks: false,
});
this.imagePreviewTooltip = new HTMLTooltip(this.toolbox.doc, {
type: "arrow",
useXulWrapper: true,
});
this._enableImagePreviewTooltip();
},

Просмотреть файл

@ -97,6 +97,7 @@ skip-if = (os == 'linux' && bits == 32 && debug) # bug 1328915, disable linux32
[browser_markup_events_02.js]
[browser_markup_events_03.js]
[browser_markup_events_04.js]
[browser_markup_events_click_to_close.js]
[browser_markup_events_form.js]
[browser_markup_events_jquery_1.0.js]
[browser_markup_events_jquery_1.1.js]

Просмотреть файл

@ -0,0 +1,68 @@
/* vim: set ts=2 et sw=2 tw=80: */
/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
/* import-globals-from helper_events_test_runner.js */
"use strict";
// Tests that click events that close the current event tooltip are still propagated to
// the target underneath.
const TEST_URL = `
<body>
<div id="d1" onclick="console.log(1)">test</div>
<!-- -->
<!-- adding some comments to make sure -->
<!-- the second event icon is not hidden by -->
<!-- the tooltip of the first event icon -->
<!-- -->
<div id="d2" onclick="console.log(2)">test</div>
</body>
`;
add_task(function* () {
let {inspector, toolbox} = yield openInspectorForURL(
"data:text/html;charset=utf-8," + encodeURI(TEST_URL));
yield inspector.markup.expandAll();
let container1 = yield getContainerForSelector("#d1", inspector);
let evHolder1 = container1.elt.querySelector(".markupview-events");
let container2 = yield getContainerForSelector("#d2", inspector);
let evHolder2 = container2.elt.querySelector(".markupview-events");
let tooltip = inspector.markup.eventDetailsTooltip;
info("Click the event icon for the first element");
let onShown = tooltip.once("shown");
EventUtils.synthesizeMouseAtCenter(evHolder1, {},
inspector.markup.doc.defaultView);
yield onShown;
info("event tooltip for the first div is shown");
info("Click the event icon for the second element");
let onHidden = tooltip.once("hidden");
onShown = tooltip.once("shown");
EventUtils.synthesizeMouseAtCenter(evHolder2, {},
inspector.markup.doc.defaultView);
yield onHidden;
info("previous tooltip hidden");
yield onShown;
info("event tooltip for the second div is shown");
info("Click on the animation inspector tab");
let onHighlighterHidden = toolbox.once("node-unhighlight");
let onTabInspectorSelected = inspector.sidebar.once("animationinspector-selected");
let animationInspectorTab = inspector.panelDoc.querySelector("#animationinspector-tab");
EventUtils.synthesizeMouseAtCenter(animationInspectorTab, {},
inspector.panelDoc.defaultView);
yield onTabInspectorSelected;
info("animation inspector was selected");
yield onHighlighterHidden;
info("box model highlighter hidden after moving the mouse out of the markup view");
});