summaryrefslogtreecommitdiffstats
path: root/browser/base/content/test/general/browser_bug581253.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/base/content/test/general/browser_bug581253.js')
-rw-r--r--browser/base/content/test/general/browser_bug581253.js86
1 files changed, 86 insertions, 0 deletions
diff --git a/browser/base/content/test/general/browser_bug581253.js b/browser/base/content/test/general/browser_bug581253.js
new file mode 100644
index 000000000..0c537c3d3
--- /dev/null
+++ b/browser/base/content/test/general/browser_bug581253.js
@@ -0,0 +1,86 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/
+ */
+
+var testURL = "data:text/plain,nothing but plain text";
+var testTag = "581253_tag";
+var timerID = -1;
+
+function test() {
+ registerCleanupFunction(function() {
+ PlacesUtils.bookmarks.removeFolderChildren(PlacesUtils.unfiledBookmarksFolderId);
+ if (timerID > 0) {
+ clearTimeout(timerID);
+ }
+ });
+ waitForExplicitFinish();
+
+ let tab = gBrowser.selectedTab = gBrowser.addTab();
+ tab.linkedBrowser.addEventListener("load", (function(event) {
+ tab.linkedBrowser.removeEventListener("load", arguments.callee, true);
+
+ let uri = makeURI(testURL);
+ let bmTxn =
+ new PlacesCreateBookmarkTransaction(uri,
+ PlacesUtils.unfiledBookmarksFolderId,
+ -1, "", null, []);
+ PlacesUtils.transactionManager.doTransaction(bmTxn);
+
+ ok(PlacesUtils.bookmarks.isBookmarked(uri), "the test url is bookmarked");
+ waitForStarChange(true, onStarred);
+ }), true);
+
+ content.location = testURL;
+}
+
+function waitForStarChange(aValue, aCallback) {
+ let expectedStatus = aValue ? BookmarkingUI.STATUS_STARRED
+ : BookmarkingUI.STATUS_UNSTARRED;
+ if (BookmarkingUI.status == BookmarkingUI.STATUS_UPDATING ||
+ BookmarkingUI.status != expectedStatus) {
+ info("Waiting for star button change.");
+ setTimeout(waitForStarChange, 50, aValue, aCallback);
+ return;
+ }
+ aCallback();
+}
+
+function onStarred() {
+ is(BookmarkingUI.status, BookmarkingUI.STATUS_STARRED,
+ "star button indicates that the page is bookmarked");
+
+ let uri = makeURI(testURL);
+ let tagTxn = new PlacesTagURITransaction(uri, [testTag]);
+ PlacesUtils.transactionManager.doTransaction(tagTxn);
+
+ StarUI.panel.addEventListener("popupshown", onPanelShown, false);
+ BookmarkingUI.star.click();
+}
+
+function onPanelShown(aEvent) {
+ if (aEvent.target == StarUI.panel) {
+ StarUI.panel.removeEventListener("popupshown", arguments.callee, false);
+ let tagsField = document.getElementById("editBMPanel_tagsField");
+ ok(tagsField.value == testTag, "tags field value was set");
+ tagsField.focus();
+
+ StarUI.panel.addEventListener("popuphidden", onPanelHidden, false);
+ let removeButton = document.getElementById("editBookmarkPanelRemoveButton");
+ removeButton.click();
+ }
+}
+
+function onPanelHidden(aEvent) {
+ if (aEvent.target == StarUI.panel) {
+ StarUI.panel.removeEventListener("popuphidden", arguments.callee, false);
+
+ executeSoon(function() {
+ ok(!PlacesUtils.bookmarks.isBookmarked(makeURI(testURL)),
+ "the bookmark for the test url has been removed");
+ is(BookmarkingUI.status, BookmarkingUI.STATUS_UNSTARRED,
+ "star button indicates that the bookmark has been removed");
+ gBrowser.removeCurrentTab();
+ PlacesTestUtils.clearHistory().then(finish);
+ });
+ }
+}