|
@@ -0,0 +1,498 @@
|
|
|
|
+# HG changeset patch
|
|
|
|
+# User hemant <hemantsingh1612@gmail.com>
|
|
|
|
+# Date 1517910554 -19800
|
|
|
|
+# Node ID 963786109ed2d5886534f2f6a664f6ebe5a738db
|
|
|
|
+# Parent 89d6b154d7044de566de9d5432baf8dcc1afa56b
|
|
|
|
+Bug 1432403 - Remove PlacesUtils._uri r=standard8
|
|
|
|
+
|
|
|
|
+MozReview-Commit-ID: C59FOBe80KJ
|
|
|
|
+
|
|
|
|
+diff --git a/browser/components/places/PlacesUIUtils.jsm b/browser/components/places/PlacesUIUtils.jsm
|
|
|
|
+--- a/browser/components/places/PlacesUIUtils.jsm
|
|
|
|
++++ b/browser/components/places/PlacesUIUtils.jsm
|
|
|
|
+@@ -766,17 +766,17 @@ var PlacesUIUtils = {
|
|
|
|
+ * a window on which a potential error alert is shown on.
|
|
|
|
+ * @return true if it's safe to open the node in the browser, false otherwise.
|
|
|
|
+ *
|
|
|
|
+ */
|
|
|
|
+ checkURLSecurity: function PUIU_checkURLSecurity(aURINode, aWindow) {
|
|
|
|
+ if (PlacesUtils.nodeIsBookmark(aURINode))
|
|
|
|
+ return true;
|
|
|
|
+
|
|
|
|
+- var uri = PlacesUtils._uri(aURINode.uri);
|
|
|
|
++ var uri = Services.io.newURI(aURINode.uri);
|
|
|
|
+ if (uri.schemeIs("javascript") || uri.schemeIs("data")) {
|
|
|
|
+ const BRANDING_BUNDLE_URI = "chrome://branding/locale/brand.properties";
|
|
|
|
+ var brandShortName = Services.strings.
|
|
|
|
+ createBundle(BRANDING_BUNDLE_URI).
|
|
|
|
+ GetStringFromName("brandShortName");
|
|
|
|
+
|
|
|
|
+ var errorStr = this.getString("load-js-data-url-error");
|
|
|
|
+ Services.prompt.alert(aWindow, brandShortName, errorStr);
|
|
|
|
+@@ -1120,19 +1120,19 @@ var PlacesUIUtils = {
|
|
|
|
+ guessUrlSchemeForUI: function PUIU_guessUrlSchemeForUI(aUrlString) {
|
|
|
|
+ return aUrlString.substr(0, aUrlString.indexOf(":"));
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ getBestTitle: function PUIU_getBestTitle(aNode, aDoNotCutTitle) {
|
|
|
|
+ var title;
|
|
|
|
+ if (!aNode.title && PlacesUtils.nodeIsURI(aNode)) {
|
|
|
|
+ // if node title is empty, try to set the label using host and filename
|
|
|
|
+- // PlacesUtils._uri() will throw if aNode.uri is not a valid URI
|
|
|
|
++ // Services.io.newURI will throw if aNode.uri is not a valid URI
|
|
|
|
+ try {
|
|
|
|
+- var uri = PlacesUtils._uri(aNode.uri);
|
|
|
|
++ var uri = Services.io.newURI(aNode.uri);
|
|
|
|
+ var host = uri.host;
|
|
|
|
+ var fileName = uri.QueryInterface(Ci.nsIURL).fileName;
|
|
|
|
+ // if fileName is empty, use path to distinguish labels
|
|
|
|
+ if (aDoNotCutTitle) {
|
|
|
|
+ title = host + uri.path;
|
|
|
|
+ } else {
|
|
|
|
+ title = host + (fileName ?
|
|
|
|
+ (host ? "/" + this.ellipsis + "/" : "") + fileName :
|
|
|
|
+@@ -1304,17 +1304,17 @@ var PlacesUIUtils = {
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // Create a new left pane folder.
|
|
|
|
+ var callback = {
|
|
|
|
+ // Helper to create an organizer special query.
|
|
|
|
+ create_query: function CB_create_query(aQueryName, aParentId, aQueryUrl) {
|
|
|
|
+ let itemId = bs.insertBookmark(aParentId,
|
|
|
|
+- PlacesUtils._uri(aQueryUrl),
|
|
|
|
++ Services.io.newURI(aQueryUrl),
|
|
|
|
+ bs.DEFAULT_INDEX,
|
|
|
|
+ queries[aQueryName].title);
|
|
|
|
+ // Mark as special organizer query.
|
|
|
|
+ as.setItemAnnotation(itemId, PlacesUIUtils.ORGANIZER_QUERY_ANNO, aQueryName,
|
|
|
|
+ 0, as.EXPIRE_NEVER);
|
|
|
|
+ // We should never backup this, since it changes between profiles.
|
|
|
|
+ as.setItemAnnotation(itemId, PlacesUtils.EXCLUDE_FROM_BACKUP_ANNO, 1,
|
|
|
|
+ 0, as.EXPIRE_NEVER);
|
|
|
|
+diff --git a/browser/components/places/content/bookmarkProperties.js b/browser/components/places/content/bookmarkProperties.js
|
|
|
|
+--- a/browser/components/places/content/bookmarkProperties.js
|
|
|
|
++++ b/browser/components/places/content/bookmarkProperties.js
|
|
|
|
+@@ -177,17 +177,17 @@ var BookmarkPropertiesPanel = {
|
|
|
|
+ if (!(dialogInfo.uri instanceof Ci.nsIURI))
|
|
|
|
+ throw new Error("uri property should be a uri object");
|
|
|
|
+ this._uri = dialogInfo.uri;
|
|
|
|
+ if (typeof(this._title) != "string") {
|
|
|
|
+ this._title = await PlacesUtils.history.fetch(this._uri) ||
|
|
|
|
+ this._uri.spec;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+- this._uri = PlacesUtils._uri("about:blank");
|
|
|
|
++ this._uri = Services.io.newURI("about:blank");
|
|
|
|
+ this._title = this._strings.getString("newBookmarkDefault");
|
|
|
|
+ this._dummyItem = true;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if ("loadBookmarkInSidebar" in dialogInfo)
|
|
|
|
+ this._loadInSidebar = dialogInfo.loadBookmarkInSidebar;
|
|
|
|
+
|
|
|
|
+ if ("keyword" in dialogInfo) {
|
|
|
|
+diff --git a/browser/components/places/content/places.js b/browser/components/places/content/places.js
|
|
|
|
+--- a/browser/components/places/content/places.js
|
|
|
|
++++ b/browser/components/places/content/places.js
|
|
|
|
+@@ -631,17 +631,17 @@ var PlacesOrganizer = {
|
|
|
|
+ detailsDeck.selectedIndex = 1;
|
|
|
|
+
|
|
|
|
+ gEditItemOverlay.initPanel({ node: selectedNode,
|
|
|
|
+ hiddenRows: ["folderPicker"] });
|
|
|
|
+
|
|
|
|
+ this._detectAndSetDetailsPaneMinimalState(selectedNode);
|
|
|
|
+ } else if (!selectedNode && aNodeList[0]) {
|
|
|
|
+ if (aNodeList.every(PlacesUtils.nodeIsURI)) {
|
|
|
|
+- let uris = aNodeList.map(node => PlacesUtils._uri(node.uri));
|
|
|
|
++ let uris = aNodeList.map(node => Services.io.newURI(node.uri));
|
|
|
|
+ detailsDeck.selectedIndex = 1;
|
|
|
|
+ gEditItemOverlay.initPanel({ uris,
|
|
|
|
+ hiddenRows: ["folderPicker",
|
|
|
|
+ "loadInSidebar",
|
|
|
|
+ "location",
|
|
|
|
+ "keyword",
|
|
|
|
+ "description",
|
|
|
|
+ "name"]});
|
|
|
|
+diff --git a/browser/components/places/tests/browser/browser_bookmarksProperties.js b/browser/components/places/tests/browser/browser_bookmarksProperties.js
|
|
|
|
+--- a/browser/components/places/tests/browser/browser_bookmarksProperties.js
|
|
|
|
++++ b/browser/components/places/tests/browser/browser_bookmarksProperties.js
|
|
|
|
+@@ -65,19 +65,19 @@ gTests.push({
|
|
|
|
+ // Add a bookmark in unsorted bookmarks folder.
|
|
|
|
+ this._bookmark = await add_bookmark(TEST_URL);
|
|
|
|
+ Assert.ok(this._bookmark, "Correctly added a bookmark");
|
|
|
|
+
|
|
|
|
+ this._itemId = await PlacesUtils.promiseItemId(this._bookmark.guid);
|
|
|
|
+ Assert.ok(this._itemId > 0, "Got an item id for the bookmark");
|
|
|
|
+
|
|
|
|
+ // Add a tag to this bookmark.
|
|
|
|
+- PlacesUtils.tagging.tagURI(PlacesUtils._uri(TEST_URL),
|
|
|
|
++ PlacesUtils.tagging.tagURI(Services.io.newURI(TEST_URL),
|
|
|
|
+ ["testTag"]);
|
|
|
|
+- var tags = PlacesUtils.tagging.getTagsForURI(PlacesUtils._uri(TEST_URL));
|
|
|
|
++ var tags = PlacesUtils.tagging.getTagsForURI(Services.io.newURI(TEST_URL));
|
|
|
|
+ Assert.equal(tags[0], "testTag", "Correctly added a tag");
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ selectNode(tree) {
|
|
|
|
+ tree.selectItems([PlacesUtils.unfiledBookmarksFolderId]);
|
|
|
|
+ PlacesUtils.asContainer(tree.selectedNode).containerOpen = true;
|
|
|
|
+ tree.selectItems([this._itemId]);
|
|
|
|
+ Assert.equal(tree.selectedNode.itemId, this._itemId, "Bookmark has been selected");
|
|
|
|
+@@ -143,21 +143,21 @@ gTests.push({
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ finish() {
|
|
|
|
+ SidebarUI.hide();
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ async cleanup() {
|
|
|
|
+ // Check tags have not changed.
|
|
|
|
+- var tags = PlacesUtils.tagging.getTagsForURI(PlacesUtils._uri(TEST_URL));
|
|
|
|
++ var tags = PlacesUtils.tagging.getTagsForURI(Services.io.newURI(TEST_URL));
|
|
|
|
+ Assert.ok(tags[0], "testTag", "Tag on node has not changed");
|
|
|
|
+
|
|
|
|
+ // Cleanup.
|
|
|
|
+- PlacesUtils.tagging.untagURI(PlacesUtils._uri(TEST_URL), ["testTag"]);
|
|
|
|
++ PlacesUtils.tagging.untagURI(Services.io.newURI(TEST_URL), ["testTag"]);
|
|
|
|
+ await PlacesUtils.bookmarks.remove(this._bookmark);
|
|
|
|
+ let bm = await PlacesUtils.bookmarks.fetch(this._bookmark.guid);
|
|
|
|
+ Assert.ok(!bm, "should have been removed");
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ // ------------------------------------------------------------------------------
|
|
|
|
+ // Bug 476020 - Pressing Esc while having the tag autocomplete open closes the bookmarks panel
|
|
|
|
+@@ -176,19 +176,19 @@ gTests.push({
|
|
|
|
+ // Add a bookmark in unsorted bookmarks folder.
|
|
|
|
+ this._bookmark = await add_bookmark(TEST_URL);
|
|
|
|
+ Assert.ok(this._bookmark, "Correctly added a bookmark");
|
|
|
|
+
|
|
|
|
+ this._itemId = await PlacesUtils.promiseItemId(this._bookmark.guid);
|
|
|
|
+ Assert.ok(this._itemId > 0, "Got an item id for the bookmark");
|
|
|
|
+
|
|
|
|
+ // Add a tag to this bookmark.
|
|
|
|
+- PlacesUtils.tagging.tagURI(PlacesUtils._uri(TEST_URL),
|
|
|
|
++ PlacesUtils.tagging.tagURI(Services.io.newURI(TEST_URL),
|
|
|
|
+ ["testTag"]);
|
|
|
|
+- var tags = PlacesUtils.tagging.getTagsForURI(PlacesUtils._uri(TEST_URL));
|
|
|
|
++ var tags = PlacesUtils.tagging.getTagsForURI(Services.io.newURI(TEST_URL));
|
|
|
|
+ Assert.equal(tags[0], "testTag", "Correctly added a tag");
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ selectNode(tree) {
|
|
|
|
+ tree.selectItems([PlacesUtils.unfiledBookmarksFolderId]);
|
|
|
|
+ PlacesUtils.asContainer(tree.selectedNode).containerOpen = true;
|
|
|
|
+ tree.selectItems([this._itemId]);
|
|
|
|
+ Assert.equal(tree.selectedNode.itemId, this._itemId, "Bookmark has been selected");
|
|
|
|
+@@ -250,21 +250,21 @@ gTests.push({
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ finish() {
|
|
|
|
+ SidebarUI.hide();
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ async cleanup() {
|
|
|
|
+ // Check tags have not changed.
|
|
|
|
+- var tags = PlacesUtils.tagging.getTagsForURI(PlacesUtils._uri(TEST_URL));
|
|
|
|
++ var tags = PlacesUtils.tagging.getTagsForURI(Services.io.newURI(TEST_URL));
|
|
|
|
+ Assert.equal(tags[0], "testTag", "Tag on node has not changed");
|
|
|
|
+
|
|
|
|
+ // Cleanup.
|
|
|
|
+- PlacesUtils.tagging.untagURI(PlacesUtils._uri(TEST_URL),
|
|
|
|
++ PlacesUtils.tagging.untagURI(Services.io.newURI(TEST_URL),
|
|
|
|
+ ["testTag"]);
|
|
|
|
+ await PlacesUtils.bookmarks.remove(this._bookmark);
|
|
|
|
+ let bm = await PlacesUtils.bookmarks.fetch(this._bookmark.guid);
|
|
|
|
+ Assert.ok(!bm, "should have been removed");
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ // ------------------------------------------------------------------------------
|
|
|
|
+diff --git a/browser/components/places/tests/browser/browser_forgetthissite_single.js b/browser/components/places/tests/browser/browser_forgetthissite_single.js
|
|
|
|
+--- a/browser/components/places/tests/browser/browser_forgetthissite_single.js
|
|
|
|
++++ b/browser/components/places/tests/browser/browser_forgetthissite_single.js
|
|
|
|
+@@ -12,17 +12,17 @@ const TEST_URIs = [
|
|
|
|
+ // This test makes sure that the Forget This Site command is hidden for multiple
|
|
|
|
+ // selections.
|
|
|
|
+ add_task(async function() {
|
|
|
|
+ // Add a history entry.
|
|
|
|
+ ok(PlacesUtils, "checking PlacesUtils, running in chrome context?");
|
|
|
|
+
|
|
|
|
+ let places = [];
|
|
|
|
+ let transition = PlacesUtils.history.TRANSITION_TYPED;
|
|
|
|
+- TEST_URIs.forEach(uri => places.push({uri: PlacesUtils._uri(uri), transition}));
|
|
|
|
++ TEST_URIs.forEach(uri => places.push({uri: Services.io.newURI(uri), transition}));
|
|
|
|
+
|
|
|
|
+ await PlacesTestUtils.addVisits(places);
|
|
|
|
+ await testForgetThisSiteVisibility(1);
|
|
|
|
+ await testForgetThisSiteVisibility(2);
|
|
|
|
+
|
|
|
|
+ // Cleanup.
|
|
|
|
+ await PlacesTestUtils.clearHistory();
|
|
|
|
+ });
|
|
|
|
+diff --git a/browser/components/places/tests/browser/browser_library_panel_leak.js b/browser/components/places/tests/browser/browser_library_panel_leak.js
|
|
|
|
+--- a/browser/components/places/tests/browser/browser_library_panel_leak.js
|
|
|
|
++++ b/browser/components/places/tests/browser/browser_library_panel_leak.js
|
|
|
|
+@@ -41,14 +41,14 @@ function test() {
|
|
|
|
+ // Clean up history.
|
|
|
|
+ PlacesTestUtils.clearHistory().then(finish);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ waitForExplicitFinish();
|
|
|
|
+ // Add an history entry.
|
|
|
|
+ ok(PlacesUtils, "checking PlacesUtils, running in chrome context?");
|
|
|
|
+ PlacesTestUtils.addVisits(
|
|
|
|
+- {uri: PlacesUtils._uri(TEST_URI), visitDate: Date.now() * 1000,
|
|
|
|
++ {uri: Services.io.newURI(TEST_URI), visitDate: Date.now() * 1000,
|
|
|
|
+ transition: PlacesUtils.history.TRANSITION_TYPED}
|
|
|
|
+ ).then(() => {
|
|
|
|
+ openLibrary(onLibraryReady);
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+diff --git a/browser/components/places/tests/browser/browser_library_search.js b/browser/components/places/tests/browser/browser_library_search.js
|
|
|
|
+--- a/browser/components/places/tests/browser/browser_library_search.js
|
|
|
|
++++ b/browser/components/places/tests/browser/browser_library_search.js
|
|
|
|
+@@ -139,34 +139,34 @@ function search(aFolderId, aSearchStr, a
|
|
|
|
+ is(query.hasSearchTerms, false,
|
|
|
|
+ "Content tree's searchTerms should not exist after search reset");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ add_task(async function test() {
|
|
|
|
+ // Add visits, a bookmark and a tag.
|
|
|
|
+ await PlacesTestUtils.addVisits(
|
|
|
|
+- [{ uri: PlacesUtils._uri(TEST_URL), visitDate: Date.now() * 1000,
|
|
|
|
++ [{ uri: Services.io.newURI(TEST_URL), visitDate: Date.now() * 1000,
|
|
|
|
+ transition: PlacesUtils.history.TRANSITION_TYPED },
|
|
|
|
+- { uri: PlacesUtils._uri(TEST_DOWNLOAD_URL), visitDate: Date.now() * 1000,
|
|
|
|
++ { uri: Services.io.newURI(TEST_DOWNLOAD_URL), visitDate: Date.now() * 1000,
|
|
|
|
+ transition: PlacesUtils.history.TRANSITION_DOWNLOAD }]
|
|
|
|
+ );
|
|
|
|
+
|
|
|
|
+ await PlacesUtils.bookmarks.insert({
|
|
|
|
+ parentGuid: PlacesUtils.bookmarks.unfiledGuid,
|
|
|
|
+ title: "dummy",
|
|
|
|
+ url: TEST_URL,
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+- PlacesUtils.tagging.tagURI(PlacesUtils._uri(TEST_URL), ["dummyTag"]);
|
|
|
|
++ PlacesUtils.tagging.tagURI(Services.io.newURI(TEST_URL), ["dummyTag"]);
|
|
|
|
+
|
|
|
|
+ gLibrary = await promiseLibrary();
|
|
|
|
+
|
|
|
|
+ testCases.forEach(aTest => aTest());
|
|
|
|
+
|
|
|
|
+ await promiseLibraryClosed(gLibrary);
|
|
|
|
+
|
|
|
|
+ // Cleanup.
|
|
|
|
+- PlacesUtils.tagging.untagURI(PlacesUtils._uri(TEST_URL), ["dummyTag"]);
|
|
|
|
++ PlacesUtils.tagging.untagURI(Services.io.newURI(TEST_URL), ["dummyTag"]);
|
|
|
|
+
|
|
|
|
+ await PlacesUtils.bookmarks.eraseEverything();
|
|
|
|
+ await PlacesUtils.history.clear();
|
|
|
|
+ });
|
|
|
|
+diff --git a/browser/components/places/tests/browser/browser_sidebarpanels_click.js b/browser/components/places/tests/browser/browser_sidebarpanels_click.js
|
|
|
|
+--- a/browser/components/places/tests/browser/browser_sidebarpanels_click.js
|
|
|
|
++++ b/browser/components/places/tests/browser/browser_sidebarpanels_click.js
|
|
|
|
+@@ -51,17 +51,17 @@ add_task(async function test_sidebarpane
|
|
|
|
+ sidebarName: BOOKMARKS_SIDEBAR_ID,
|
|
|
|
+ treeName: BOOKMARKS_SIDEBAR_TREE_ID,
|
|
|
|
+ desc: "Bookmarks sidebar test"
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ tests.push({
|
|
|
|
+ async init() {
|
|
|
|
+ // Add a history entry.
|
|
|
|
+- let uri = PlacesUtils._uri(TEST_URL);
|
|
|
|
++ let uri = Services.io.newURI(TEST_URL);
|
|
|
|
+ await PlacesTestUtils.addVisits({
|
|
|
|
+ uri, visitDate: Date.now() * 1000,
|
|
|
|
+ transition: PlacesUtils.history.TRANSITION_TYPED
|
|
|
|
+ });
|
|
|
|
+ },
|
|
|
|
+ prepare() {
|
|
|
|
+ sidebar.contentDocument.getElementById("byvisited").doCommand();
|
|
|
|
+ },
|
|
|
|
+diff --git a/toolkit/components/places/PlacesUtils.jsm b/toolkit/components/places/PlacesUtils.jsm
|
|
|
|
+--- a/toolkit/components/places/PlacesUtils.jsm
|
|
|
|
++++ b/toolkit/components/places/PlacesUtils.jsm
|
|
|
|
+@@ -338,26 +338,16 @@ var PlacesUtils = {
|
|
|
|
+ TOPIC_BOOKMARKS_RESTORE_FAILED: "bookmarks-restore-failed",
|
|
|
|
+
|
|
|
|
+ asContainer: aNode => asContainer(aNode),
|
|
|
|
+ asQuery: aNode => asQuery(aNode),
|
|
|
|
+
|
|
|
|
+ endl: NEWLINE,
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+- * Makes a URI from a spec.
|
|
|
|
+- * @param aSpec
|
|
|
|
+- * The string spec of the URI
|
|
|
|
+- * @returns A URI object for the spec.
|
|
|
|
+- */
|
|
|
|
+- _uri: function PU__uri(aSpec) {
|
|
|
|
+- return NetUtil.newURI(aSpec);
|
|
|
|
+- },
|
|
|
|
+-
|
|
|
|
+- /**
|
|
|
|
+ * Is a string a valid GUID?
|
|
|
|
+ *
|
|
|
|
+ * @param guid: (String)
|
|
|
|
+ * @return (Boolean)
|
|
|
|
+ */
|
|
|
|
+ isValidGuid(guid) {
|
|
|
|
+ return typeof guid == "string" && guid &&
|
|
|
|
+ (/^[a-zA-Z0-9\-_]{12}$/.test(guid));
|
|
|
|
+@@ -938,39 +928,39 @@ var PlacesUtils = {
|
|
|
|
+ for (let i = 0; i < parts.length; i = i + 2) {
|
|
|
|
+ let uriString = parts[i];
|
|
|
|
+ let titleString = "";
|
|
|
|
+ if (parts.length > i + 1)
|
|
|
|
+ titleString = parts[i + 1];
|
|
|
|
+ else {
|
|
|
|
+ // for drag and drop of files, try to use the leafName as title
|
|
|
|
+ try {
|
|
|
|
+- titleString = this._uri(uriString).QueryInterface(Ci.nsIURL)
|
|
|
|
++ titleString = Services.io.newURI(uriString).QueryInterface(Ci.nsIURL)
|
|
|
|
+ .fileName;
|
|
|
|
+ } catch (e) {}
|
|
|
|
+ }
|
|
|
|
+- // note: this._uri() will throw if uriString is not a valid URI
|
|
|
|
+- if (this._uri(uriString)) {
|
|
|
|
++ // note: Services.io.newURI() will throw if uriString is not a valid URI
|
|
|
|
++ if (Services.io.newURI(uriString)) {
|
|
|
|
+ nodes.push({ uri: uriString,
|
|
|
|
+ title: titleString ? titleString : uriString,
|
|
|
|
+ type: this.TYPE_X_MOZ_URL });
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ case this.TYPE_UNICODE: {
|
|
|
|
+ let parts = blob.split("\n");
|
|
|
|
+ for (let i = 0; i < parts.length; i++) {
|
|
|
|
+ let uriString = parts[i];
|
|
|
|
+ // text/uri-list is converted to TYPE_UNICODE but it could contain
|
|
|
|
+ // comments line prepended by #, we should skip them
|
|
|
|
+ if (uriString.substr(0, 1) == "\x23")
|
|
|
|
+ continue;
|
|
|
|
+- // note: this._uri() will throw if uriString is not a valid URI
|
|
|
|
+- if (uriString != "" && this._uri(uriString))
|
|
|
|
++ // note: Services.io.newURI) will throw if uriString is not a valid URI
|
|
|
|
++ if (uriString != "" && Services.io.newURI(uriString))
|
|
|
|
+ nodes.push({ uri: uriString,
|
|
|
|
+ title: uriString,
|
|
|
|
+ type: this.TYPE_X_MOZ_URL });
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ default:
|
|
|
|
+ throw Cr.NS_ERROR_INVALID_ARG;
|
|
|
|
+diff --git a/toolkit/components/places/tests/bookmarks/test_417228-other-roots.js b/toolkit/components/places/tests/bookmarks/test_417228-other-roots.js
|
|
|
|
+--- a/toolkit/components/places/tests/bookmarks/test_417228-other-roots.js
|
|
|
|
++++ b/toolkit/components/places/tests/bookmarks/test_417228-other-roots.js
|
|
|
|
+@@ -33,17 +33,17 @@ tests.push({
|
|
|
|
+ this._folderTitle = "test folder";
|
|
|
|
+ this._folderId =
|
|
|
|
+ PlacesUtils.bookmarks.createFolder(PlacesUtils.placesRootId,
|
|
|
|
+ this._folderTitle,
|
|
|
|
+ PlacesUtils.bookmarks.DEFAULT_INDEX);
|
|
|
|
+ Assert.equal(rootNode.childCount, 6);
|
|
|
|
+
|
|
|
|
+ // add a tag
|
|
|
|
+- this._testURI = PlacesUtils._uri("http://test");
|
|
|
|
++ this._testURI = Services.io.newURI("http://test");
|
|
|
|
+ this._tags = ["a", "b"];
|
|
|
|
+ PlacesUtils.tagging.tagURI(this._testURI, this._tags);
|
|
|
|
+
|
|
|
|
+ // add a child to each root, including our test root
|
|
|
|
+ this._roots = [PlacesUtils.bookmarksMenuFolderId, PlacesUtils.toolbarFolderId,
|
|
|
|
+ PlacesUtils.unfiledBookmarksFolderId, PlacesUtils.mobileFolderId,
|
|
|
|
+ this._folderId];
|
|
|
|
+ this._roots.forEach(function(aRootId) {
|
|
|
|
+@@ -106,17 +106,17 @@ tests.push({
|
|
|
|
+ Assert.equal(node.title, this._folderTitle);
|
|
|
|
+ foundTestFolder++;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // test contents
|
|
|
|
+ node.QueryInterface(Ci.nsINavHistoryContainerResultNode).containerOpen = true;
|
|
|
|
+ Assert.equal(node.childCount, 1);
|
|
|
|
+ var child = node.getChild(0);
|
|
|
|
+- Assert.ok(PlacesUtils._uri(child.uri).equals(this._testURI));
|
|
|
|
++ Assert.ok(Services.io.newURI(child.uri).equals(this._testURI));
|
|
|
|
+
|
|
|
|
+ // clean up
|
|
|
|
+ node.containerOpen = false;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ Assert.equal(foundTestFolder, 1);
|
|
|
|
+ rootNode.containerOpen = false;
|
|
|
|
+ }
|
|
|
|
+diff --git a/toolkit/components/places/tests/bookmarks/test_458683.js b/toolkit/components/places/tests/bookmarks/test_458683.js
|
|
|
|
+--- a/toolkit/components/places/tests/bookmarks/test_458683.js
|
|
|
|
++++ b/toolkit/components/places/tests/bookmarks/test_458683.js
|
|
|
|
+@@ -18,22 +18,22 @@ var invalidTagChildTest = {
|
|
|
|
+ _itemId: -1,
|
|
|
|
+ _tag: "testTag",
|
|
|
|
+ _tagItemId: -1,
|
|
|
|
+
|
|
|
|
+ populate() {
|
|
|
|
+ // add a valid bookmark
|
|
|
|
+ this._itemId = PlacesUtils.bookmarks
|
|
|
|
+ .insertBookmark(PlacesUtils.toolbarFolderId,
|
|
|
|
+- PlacesUtils._uri(this._itemUrl),
|
|
|
|
++ Services.io.newURI(this._itemUrl),
|
|
|
|
+ PlacesUtils.bookmarks.DEFAULT_INDEX,
|
|
|
|
+ this._itemTitle);
|
|
|
|
+
|
|
|
|
+ // create a tag
|
|
|
|
+- PlacesUtils.tagging.tagURI(PlacesUtils._uri(this._itemUrl), [this._tag]);
|
|
|
|
++ PlacesUtils.tagging.tagURI(Services.io.newURI(this._itemUrl), [this._tag]);
|
|
|
|
+ // get tag folder id
|
|
|
|
+ var options = PlacesUtils.history.getNewQueryOptions();
|
|
|
|
+ var query = PlacesUtils.history.getNewQuery();
|
|
|
|
+ query.setFolders([PlacesUtils.bookmarks.tagsFolder], 1);
|
|
|
|
+ var result = PlacesUtils.history.executeQuery(query, options);
|
|
|
|
+ var tagRoot = result.root;
|
|
|
|
+ tagRoot.containerOpen = true;
|
|
|
|
+ Assert.equal(tagRoot.childCount, 1);
|
|
|
|
+@@ -53,17 +53,17 @@ var invalidTagChildTest = {
|
|
|
|
+ PlacesUtils.bookmarks.insertSeparator(PlacesUtils.bookmarks.tagsFolder,
|
|
|
|
+ PlacesUtils.bookmarks.DEFAULT_INDEX);
|
|
|
|
+ PlacesUtils.bookmarks.createFolder(PlacesUtils.bookmarks.tagsFolder,
|
|
|
|
+ "test tags root folder",
|
|
|
|
+ PlacesUtils.bookmarks.DEFAULT_INDEX);
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ clean() {
|
|
|
|
+- PlacesUtils.tagging.untagURI(PlacesUtils._uri(this._itemUrl), [this._tag]);
|
|
|
|
++ PlacesUtils.tagging.untagURI(Services.io.newURI(this._itemUrl), [this._tag]);
|
|
|
|
+ PlacesUtils.bookmarks.removeItem(this._itemId);
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ validate() {
|
|
|
|
+ var query = PlacesUtils.history.getNewQuery();
|
|
|
|
+ query.setFolders([PlacesUtils.bookmarks.toolbarFolder], 1);
|
|
|
|
+ var options = PlacesUtils.history.getNewQueryOptions();
|
|
|
|
+ var result = PlacesUtils.history.executeQuery(query, options);
|
|
|
|
+@@ -76,17 +76,17 @@ var invalidTagChildTest = {
|
|
|
|
+ for (var i = 0; i < toolbar.childCount; i++) {
|
|
|
|
+ var folderNode = toolbar.getChild(0);
|
|
|
|
+ Assert.equal(folderNode.type, folderNode.RESULT_TYPE_URI);
|
|
|
|
+ Assert.equal(folderNode.title, this._itemTitle);
|
|
|
|
+ }
|
|
|
|
+ toolbar.containerOpen = false;
|
|
|
|
+
|
|
|
|
+ // test for our tag
|
|
|
|
+- var tags = PlacesUtils.tagging.getTagsForURI(PlacesUtils._uri(this._itemUrl));
|
|
|
|
++ var tags = PlacesUtils.tagging.getTagsForURI(Services.io.newURI(this._itemUrl));
|
|
|
|
+ Assert.equal(tags.length, 1);
|
|
|
|
+ Assert.equal(tags[0], this._tag);
|
|
|
|
+ }
|
|
|
|
+ };
|
|
|
|
+ tests.push(invalidTagChildTest);
|
|
|
|
+
|
|
|
|
+ add_task(async function() {
|
|
|
|
+ let jsonFile = OS.Path.join(OS.Constants.Path.profileDir, "bookmarks.json");
|