зеркало из https://github.com/mozilla/gecko-dev.git
193 строки
6.8 KiB
JavaScript
193 строки
6.8 KiB
JavaScript
/*
|
|
* Bug 486490 - Fennec browser-chrome tests to verify correct implementation of chrome
|
|
* code in mobile/chrome/content in terms of integration with Places
|
|
* component, specifically for bookmark management.
|
|
*/
|
|
|
|
var testURL_01 = chromeRoot + "browser_blank_01.html";
|
|
var testURL_02 = chromeRoot + "browser_blank_02.html";
|
|
|
|
// A queue to order the tests and a handle for each test
|
|
var gTests = [];
|
|
var gCurrentTest = null;
|
|
|
|
//------------------------------------------------------------------------------
|
|
// Entry point (must be named "test")
|
|
function test() {
|
|
// The "runNextTest" approach is async, so we need to call "waitForExplicitFinish()"
|
|
// We call "finish()" when the tests are finished
|
|
waitForExplicitFinish();
|
|
|
|
// Start the tests
|
|
runNextTest();
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
// Iterating tests by shifting test out one by one as runNextTest is called.
|
|
function runNextTest() {
|
|
// Run the next test until all tests completed
|
|
if (gTests.length > 0) {
|
|
gCurrentTest = gTests.shift();
|
|
info(gCurrentTest.desc);
|
|
gCurrentTest.run();
|
|
}
|
|
else {
|
|
// Cleanup. All tests are completed at this point
|
|
try {
|
|
PlacesUtils.bookmarks.removeFolderChildren(BookmarkList.panel.mobileRoot);
|
|
}
|
|
finally {
|
|
// We must finialize the tests
|
|
finish();
|
|
}
|
|
}
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
// Case: Test adding tags to bookmark
|
|
gTests.push({
|
|
desc: "Test adding tags to a bookmark",
|
|
_currentTab: null,
|
|
|
|
run: function() {
|
|
this._currentTab = Browser.addTab(testURL_02, true);
|
|
function handleEvent() {
|
|
gCurrentTest._currentTab.browser.removeEventListener("load", handleEvent, true);
|
|
gCurrentTest.onPageLoad();
|
|
};
|
|
this._currentTab.browser.addEventListener("load", handleEvent , true);
|
|
},
|
|
|
|
onPageLoad: function() {
|
|
let starbutton = document.getElementById("tool-star");
|
|
starbutton.click();
|
|
|
|
window.addEventListener("BookmarkCreated", function(aEvent) {
|
|
window.removeEventListener(aEvent.type, arguments.callee, false);
|
|
let bookmarkItem = PlacesUtils.getMostRecentBookmarkForURI(makeURI(testURL_02));
|
|
ok(bookmarkItem != -1, testURL_02 + " should be added.");
|
|
|
|
// Wait for the bookmarks to load, then do the test
|
|
window.addEventListener("NavigationPanelShown", gCurrentTest.onBookmarksReady, false);
|
|
BrowserUI.doCommand("cmd_bookmarks");
|
|
}, false);
|
|
},
|
|
|
|
onBookmarksReady: function() {
|
|
window.removeEventListener("NavigationPanelShown", gCurrentTest.onBookmarksReady, false);
|
|
|
|
// Go into edit mode
|
|
let bookmark = document.getAnonymousElementByAttribute(BookmarkList.panel, "uri", testURL_02);
|
|
bookmark.startEditing();
|
|
|
|
waitFor(gCurrentTest.onEditorReady, function() { return bookmark.isEditing == true; });
|
|
},
|
|
|
|
onEditorReady: function() {
|
|
let bookmark = document.getAnonymousElementByAttribute(BookmarkList.panel, "uri", testURL_02);
|
|
let tagstextbox = document.getAnonymousElementByAttribute(bookmark, "anonid", "tags");
|
|
tagstextbox.value = "tagone, tag two, tag-three, tag4";
|
|
|
|
let donebutton = document.getAnonymousElementByAttribute(bookmark, "anonid", "done-button");
|
|
donebutton.click();
|
|
|
|
let tagsarray = PlacesUtils.tagging.getTagsForURI(makeURI(testURL_02), {});
|
|
is(tagsarray.length, 4, "All tags are associated with specified bookmark");
|
|
|
|
BrowserUI.activePanel = null;
|
|
|
|
Browser.closeTab(gCurrentTest._currentTab);
|
|
|
|
runNextTest();
|
|
}
|
|
});
|
|
|
|
//------------------------------------------------------------------------------
|
|
// Case: Test editing tags to bookmark
|
|
gTests.push({
|
|
desc: "Test editing tags to bookmark",
|
|
|
|
run: function() {
|
|
// Wait for the bookmarks to load, then do the test
|
|
window.addEventListener("NavigationPanelShown", gCurrentTest.onBookmarksReady, false);
|
|
BrowserUI.doCommand("cmd_bookmarks");
|
|
},
|
|
|
|
onBookmarksReady: function() {
|
|
window.removeEventListener("NavigationPanelShown", gCurrentTest.onBookmarksReady, false);
|
|
|
|
|
|
// Go into edit mode
|
|
let bookmark = document.getAnonymousElementByAttribute(BookmarkList.panel, "uri", testURL_02);
|
|
bookmark.startEditing();
|
|
|
|
waitFor(gCurrentTest.onEditorReady, function() { return bookmark.isEditing == true; });
|
|
},
|
|
|
|
onEditorReady: function() {
|
|
let bookmark = document.getAnonymousElementByAttribute(BookmarkList.panel, "uri", testURL_02);
|
|
|
|
let taggeduri = PlacesUtils.tagging.getURIsForTag("tag-three");
|
|
is(taggeduri[0].spec, testURL_02, "Old tag still associated with bookmark");
|
|
|
|
let tagstextbox = document.getAnonymousElementByAttribute(bookmark, "anonid", "tags");
|
|
tagstextbox.value = "tagone, tag two, edited-tag-three, tag4";
|
|
|
|
let donebutton = document.getAnonymousElementByAttribute(bookmark, "anonid", "done-button");
|
|
donebutton.click();
|
|
|
|
let untaggeduri = PlacesUtils.tagging.getURIsForTag("tag-three");
|
|
is(untaggeduri, "", "Old tag is not associated with any bookmark");
|
|
taggeduri = PlacesUtils.tagging.getURIsForTag("edited-tag-three");
|
|
is(taggeduri[0].spec, testURL_02, "New tag is added to bookmark");
|
|
let tagsarray = PlacesUtils.tagging.getTagsForURI(makeURI(testURL_02), {});
|
|
is(tagsarray.length, 4, "Bookmark still has same number of tags");
|
|
|
|
BrowserUI.activePanel = null;
|
|
|
|
runNextTest();
|
|
}
|
|
});
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
// Case: Test removing tags from bookmark
|
|
gTests.push({
|
|
desc: "Test removing tags from a bookmark",
|
|
_currentTab: null,
|
|
|
|
run: function() {
|
|
// Wait for the bookmarks to load, then do the test
|
|
window.addEventListener("NavigationPanelShown", gCurrentTest.onBookmarksReady, false);
|
|
BrowserUI.doCommand("cmd_bookmarks");
|
|
},
|
|
|
|
onBookmarksReady: function() {
|
|
window.removeEventListener("NavigationPanelShown", gCurrentTest.onBookmarksReady, false);
|
|
|
|
// Go into edit mode
|
|
let bookmark = document.getAnonymousElementByAttribute(BookmarkList.panel, "uri", testURL_02);
|
|
bookmark.startEditing();
|
|
|
|
waitFor(gCurrentTest.onEditorReady, function() { return bookmark.isEditing == true; });
|
|
},
|
|
|
|
onEditorReady: function() {
|
|
let bookmark = document.getAnonymousElementByAttribute(BookmarkList.panel, "uri", testURL_02);
|
|
|
|
let tagstextbox = document.getAnonymousElementByAttribute(bookmark, "anonid", "tags");
|
|
tagstextbox.value = "tagone, tag two, tag4";
|
|
|
|
let donebutton = document.getAnonymousElementByAttribute(bookmark, "anonid", "done-button");
|
|
donebutton.click();
|
|
|
|
let untaggeduri = PlacesUtils.tagging.getURIsForTag("edited-tag-three");
|
|
is(untaggeduri, "", "Old tag is not associated with any bookmark");
|
|
let tagsarray = PlacesUtils.tagging.getTagsForURI(makeURI(testURL_02), {});
|
|
is(tagsarray.length, 3, "Tag is successfully deleted");
|
|
|
|
BrowserUI.activePanel = null;
|
|
runNextTest();
|
|
}
|
|
});
|