michael@0: /* Any copyright is dedicated to the Public Domain. michael@0: * http://creativecommons.org/publicdomain/zero/1.0/ michael@0: */ michael@0: michael@0: /** michael@0: * Tests that double-click does not go to detail view if the target is a link or button. michael@0: */ michael@0: michael@0: function test() { michael@0: requestLongerTimeout(2); michael@0: michael@0: waitForExplicitFinish(); michael@0: michael@0: var gProvider = new MockProvider(); michael@0: gProvider.createAddons([{ michael@0: id: "test1@tests.mozilla.org", michael@0: name: "Test add-on 1", michael@0: description: "foo", michael@0: operationsRequiringRestart: AddonManager.OP_NEEDS_RESTART_NONE michael@0: }]); michael@0: michael@0: run_next_test(); michael@0: } michael@0: michael@0: function end_test() { michael@0: finish(); michael@0: } michael@0: michael@0: function is_in_list(aManager, view) { michael@0: var doc = aManager.document; michael@0: michael@0: is(doc.getElementById("categories").selectedItem.value, view, "Should be on the right category"); michael@0: is(doc.getElementById("view-port").selectedPanel.id, "list-view", "Should be on the right view"); michael@0: } michael@0: michael@0: function is_in_detail(aManager, view) { michael@0: var doc = aManager.document; michael@0: michael@0: is(doc.getElementById("categories").selectedItem.value, view, "Should be on the right category"); michael@0: is(doc.getElementById("view-port").selectedPanel.id, "detail-view", "Should be on the right view"); michael@0: } michael@0: michael@0: // Check that double-click does something. michael@0: add_test(function() { michael@0: open_manager("addons://list/extension", function(aManager) { michael@0: info("Part 1"); michael@0: is_in_list(aManager, "addons://list/extension"); michael@0: michael@0: var addon = get_addon_element(aManager, "test1@tests.mozilla.org"); michael@0: addon.parentNode.ensureElementIsVisible(addon); michael@0: EventUtils.synthesizeMouseAtCenter(addon, { clickCount: 1 }, aManager); michael@0: EventUtils.synthesizeMouseAtCenter(addon, { clickCount: 2 }, aManager); michael@0: michael@0: wait_for_view_load(aManager, function(aManager) { michael@0: info("Part 2"); michael@0: is_in_detail(aManager, "addons://list/extension"); michael@0: michael@0: close_manager(aManager, run_next_test); michael@0: }); michael@0: }); michael@0: }); michael@0: michael@0: // Check that double-click does nothing when over the disable button. michael@0: add_test(function() { michael@0: open_manager("addons://list/extension", function(aManager) { michael@0: info("Part 1"); michael@0: is_in_list(aManager, "addons://list/extension"); michael@0: michael@0: var addon = get_addon_element(aManager, "test1@tests.mozilla.org"); michael@0: addon.parentNode.ensureElementIsVisible(addon); michael@0: EventUtils.synthesizeMouseAtCenter( michael@0: aManager.document.getAnonymousElementByAttribute(addon, "anonid", "disable-btn"), michael@0: { clickCount: 1 }, michael@0: aManager michael@0: ); michael@0: // The disable button is replaced by the enable button when clicked on. michael@0: EventUtils.synthesizeMouseAtCenter( michael@0: aManager.document.getAnonymousElementByAttribute(addon, "anonid", "enable-btn"), michael@0: { clickCount: 2 }, michael@0: aManager michael@0: ); michael@0: michael@0: wait_for_view_load(aManager, function(aManager) { michael@0: info("Part 2"); michael@0: is_in_list(aManager, "addons://list/extension"); michael@0: michael@0: close_manager(aManager, run_next_test); michael@0: }); michael@0: }); michael@0: }); michael@0: michael@0: // Check that double-click does nothing when over the undo button. michael@0: add_test(function() { michael@0: open_manager("addons://list/extension", function(aManager) { michael@0: info("Part 1"); michael@0: is_in_list(aManager, "addons://list/extension"); michael@0: michael@0: var addon = get_addon_element(aManager, "test1@tests.mozilla.org"); michael@0: addon.parentNode.ensureElementIsVisible(addon); michael@0: EventUtils.synthesizeMouseAtCenter( michael@0: aManager.document.getAnonymousElementByAttribute(addon, "anonid", "remove-btn"), michael@0: { clickCount: 1 }, michael@0: aManager michael@0: ); michael@0: michael@0: // The undo button is removed when clicked on. michael@0: // We need to wait for the UI to catch up. michael@0: setTimeout(function() { michael@0: var target = aManager.document.getAnonymousElementByAttribute(addon, "anonid", "undo-btn"); michael@0: var rect = target.getBoundingClientRect(); michael@0: var addonRect = addon.getBoundingClientRect(); michael@0: michael@0: EventUtils.synthesizeMouse(target, rect.width / 2, rect.height / 2, { clickCount: 1 }, aManager); michael@0: EventUtils.synthesizeMouse(addon, michael@0: rect.left - addonRect.left + rect.width / 2, michael@0: rect.top - addonRect.top + rect.height / 2, michael@0: { clickCount: 2 }, michael@0: aManager michael@0: ); michael@0: michael@0: wait_for_view_load(aManager, function(aManager) { michael@0: info("Part 2"); michael@0: is_in_list(aManager, "addons://list/extension"); michael@0: michael@0: close_manager(aManager, run_next_test); michael@0: }); michael@0: }, 0); michael@0: }); michael@0: });