summaryrefslogtreecommitdiffstats
path: root/browser/components/places/tests/browser/browser_bookmarkProperties_speculativeConnection.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/places/tests/browser/browser_bookmarkProperties_speculativeConnection.js')
-rw-r--r--browser/components/places/tests/browser/browser_bookmarkProperties_speculativeConnection.js106
1 files changed, 106 insertions, 0 deletions
diff --git a/browser/components/places/tests/browser/browser_bookmarkProperties_speculativeConnection.js b/browser/components/places/tests/browser/browser_bookmarkProperties_speculativeConnection.js
new file mode 100644
index 0000000000..621ea19bb9
--- /dev/null
+++ b/browser/components/places/tests/browser/browser_bookmarkProperties_speculativeConnection.js
@@ -0,0 +1,106 @@
+/* Any copyright is dedicated to the Public Domain.
+ * https://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+/**
+ * Test to ensure that on "mousedown" in Toolbar we set Speculative Connection
+ */
+
+const { sinon } = ChromeUtils.importESModule(
+ "resource://testing-common/Sinon.sys.mjs"
+);
+const sandbox = sinon.createSandbox();
+let spy = sandbox
+ .stub(PlacesUIUtils, "setupSpeculativeConnection")
+ .returns(Promise.resolve());
+
+add_setup(async function () {
+ await PlacesUtils.bookmarks.eraseEverything();
+
+ let toolbar = document.getElementById("PersonalToolbar");
+ ok(toolbar, "PersonalToolbar should not be null");
+
+ if (toolbar.collapsed) {
+ await promiseSetToolbarVisibility(toolbar, true);
+ registerCleanupFunction(function () {
+ return promiseSetToolbarVisibility(toolbar, false);
+ });
+ }
+ registerCleanupFunction(async () => {
+ await PlacesUtils.bookmarks.eraseEverything();
+ sandbox.restore();
+ });
+});
+
+add_task(async function checkToolbarSpeculativeConnection() {
+ let toolbarBookmark = await PlacesUtils.bookmarks.insert({
+ parentGuid: PlacesUtils.bookmarks.toolbarGuid,
+ url: "https://example.com/",
+ title: "Bookmark 1",
+ });
+ let toolbarNode = getToolbarNodeForItemGuid(toolbarBookmark.guid);
+
+ info("Synthesize mousedown on selected bookmark");
+ EventUtils.synthesizeMouseAtCenter(toolbarNode, {
+ type: "mousedown",
+ });
+ EventUtils.synthesizeMouseAtCenter(toolbarNode, {
+ type: "mouseup",
+ });
+
+ Assert.ok(spy.called, "Speculative connection for Toolbar called");
+ sandbox.restore();
+});
+
+add_task(async function checkMenuSpeculativeConnection() {
+ await PlacesUtils.bookmarks.eraseEverything();
+
+ info("Placing a Menu widget");
+ let origBMBlocation = CustomizableUI.getPlacementOfWidget(
+ "bookmarks-menu-button"
+ );
+ // Ensure BMB is available in UI.
+ if (!origBMBlocation) {
+ CustomizableUI.addWidgetToArea(
+ "bookmarks-menu-button",
+ CustomizableUI.AREA_NAVBAR
+ );
+ }
+
+ registerCleanupFunction(async function () {
+ await PlacesUtils.bookmarks.eraseEverything();
+ // if BMB was not originally in UI, remove it.
+ if (!origBMBlocation) {
+ CustomizableUI.removeWidgetFromArea("bookmarks-menu-button");
+ }
+ });
+
+ await PlacesUtils.bookmarks.insert({
+ parentGuid: PlacesUtils.bookmarks.menuGuid,
+ url: "http://example.com/",
+ title: "Bookmark 2",
+ });
+
+ // Test Bookmarks Menu Button
+ let BMB = document.getElementById("bookmarks-menu-button");
+ let BMBpopup = document.getElementById("BMB_bookmarksPopup");
+ let promiseEvent = BrowserTestUtils.waitForEvent(BMBpopup, "popupshown");
+ EventUtils.synthesizeMouseAtCenter(BMB, {});
+ await promiseEvent;
+ info("Popupshown on Bookmarks-Menu-Button");
+
+ let menuBookmark = [...BMBpopup.children].find(
+ node => node.label == "Bookmark 2"
+ );
+
+ EventUtils.synthesizeMouseAtCenter(menuBookmark, {
+ type: "mousedown",
+ });
+ EventUtils.synthesizeMouseAtCenter(menuBookmark, {
+ type: "mouseup",
+ });
+
+ Assert.ok(spy.called, "Speculative connection for Menu Button called");
+ sandbox.restore();
+});