summaryrefslogtreecommitdiffstats
path: root/browser/components/places/tests/browser/browser_bookmarkProperties_editTagContainer.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/places/tests/browser/browser_bookmarkProperties_editTagContainer.js')
-rw-r--r--browser/components/places/tests/browser/browser_bookmarkProperties_editTagContainer.js140
1 files changed, 140 insertions, 0 deletions
diff --git a/browser/components/places/tests/browser/browser_bookmarkProperties_editTagContainer.js b/browser/components/places/tests/browser/browser_bookmarkProperties_editTagContainer.js
new file mode 100644
index 0000000000..f4e3b3e3fe
--- /dev/null
+++ b/browser/components/places/tests/browser/browser_bookmarkProperties_editTagContainer.js
@@ -0,0 +1,140 @@
+"use strict";
+
+add_task(async function editTagContainer() {
+ info("Bug 479348 - Properties on a root should be read-only.");
+ let uri = Services.io.newURI("http://example.com/");
+ let bm = await PlacesUtils.bookmarks.insert({
+ url: uri.spec,
+ parentGuid: PlacesUtils.bookmarks.unfiledGuid,
+ });
+ registerCleanupFunction(async function () {
+ await PlacesUtils.bookmarks.remove(bm);
+ });
+
+ PlacesUtils.tagging.tagURI(uri, ["tag1"]);
+
+ let library = await promiseLibrary();
+ let PlacesOrganizer = library.PlacesOrganizer;
+ registerCleanupFunction(async function () {
+ await promiseLibraryClosed(library);
+ });
+
+ PlacesOrganizer.selectLeftPaneBuiltIn("Tags");
+ let tree = PlacesOrganizer._places;
+ let tagsContainer = tree.selectedNode;
+ tagsContainer.containerOpen = true;
+ let fooTag = tagsContainer.getChild(0);
+ let tagNode = fooTag;
+ tree.selectNode(fooTag);
+ Assert.equal(tagNode.title, "tag1", "EditBookmark: tagNode title is correct");
+
+ Assert.ok(
+ tree.controller.isCommandEnabled("placesCmd_show:info"),
+ "EditBookmark: 'placesCmd_show:info' on current selected node is enabled"
+ );
+
+ await withBookmarksDialog(
+ true,
+ function openDialog() {
+ tree.controller.doCommand("placesCmd_show:info");
+ },
+ async function test(dialogWin) {
+ // Check that the dialog is not read-only.
+ Assert.ok(
+ !dialogWin.gEditItemOverlay.readOnly,
+ "EditBookmark: Dialog should not be read-only"
+ );
+
+ // Check that name picker is not read only
+ let namepicker = dialogWin.document.getElementById(
+ "editBMPanel_namePicker"
+ );
+ Assert.ok(
+ !namepicker.readOnly,
+ "EditBookmark: Name field should not be read-only"
+ );
+ Assert.equal(
+ namepicker.value,
+ "tag1",
+ "EditBookmark: Node title is correct"
+ );
+
+ fillBookmarkTextField("editBMPanel_namePicker", "tag2", dialogWin);
+
+ // Although we have received the expected notifications, we need
+ // to let everything resolve to ensure the UI is updated.
+ await new Promise(resolve => Services.tm.dispatchToMainThread(resolve));
+
+ Assert.equal(
+ namepicker.value,
+ "tag2",
+ "EditBookmark: The title field has been changed"
+ );
+
+ // Try to set an empty title, it should restore the previous one.
+ fillBookmarkTextField("editBMPanel_namePicker", "", dialogWin);
+
+ Assert.equal(
+ namepicker.value,
+ "tag1",
+ "EditBookmark: The title field has been changed"
+ );
+ }
+ );
+
+ // Check the tag change hasn't changed
+ let tags = PlacesUtils.tagging.getTagsForURI(uri);
+ Assert.equal(tags.length, 1, "EditBookmark: Found the right number of tags");
+ Assert.deepEqual(
+ tags,
+ ["tag1"],
+ "EditBookmark: Found the expected unchanged tag"
+ );
+
+ await withBookmarksDialog(
+ false,
+ function openDialog() {
+ tree.controller.doCommand("placesCmd_show:info");
+ },
+ async function test(dialogWin) {
+ // Check that the dialog is not read-only.
+ Assert.ok(
+ !dialogWin.gEditItemOverlay.readOnly,
+ "Dialog should not be read-only"
+ );
+
+ // Check that name picker is not read only
+ let namepicker = dialogWin.document.getElementById(
+ "editBMPanel_namePicker"
+ );
+ Assert.ok(
+ !namepicker.readOnly,
+ "EditBookmark: Name field should not be read-only"
+ );
+ Assert.equal(
+ namepicker.value,
+ "tag1",
+ "EditBookmark: Node title is correct"
+ );
+
+ fillBookmarkTextField("editBMPanel_namePicker", "tag2", dialogWin);
+
+ Assert.equal(
+ namepicker.value,
+ "tag2",
+ "EditBookmark: The title field has been changed"
+ );
+ namepicker.blur();
+
+ EventUtils.synthesizeKey("VK_RETURN", {}, dialogWin);
+ }
+ );
+
+ tags = PlacesUtils.tagging.getTagsForURI(uri);
+ Assert.equal(tags.length, 1, "EditBookmark: Found the right number of tags");
+ Assert.deepEqual(
+ tags,
+ ["tag2"],
+ "EditBookmark: Found the expected Y changed tag"
+ );
+});