--- a/browser/base/content/browser-context.inc
+++ b/browser/base/content/browser-context.inc
@@ -263,17 +263,17 @@
<menuseparator id="context-sep-sendpagetodevice" class="sync-ui-item"
hidden="true"/>
<menu id="context-sendpagetodevice"
class="sync-ui-item"
label="&sendPageToDevice.label;"
accesskey="&sendPageToDevice.accesskey;"
hidden="true">
<menupopup id="context-sendpagetodevice-popup"
- onpopupshowing="(() => { let browser = gBrowser || getPanelBrowser(); gSync.populateSendTabToDevicesMenu(event.target, browser.currentURI.spec, browser.contentTitle); })()"/>
+ onpopupshowing="(() => { gSync.populateSendTabToDevicesMenu(event.target, gBrowser.currentURI.spec, gBrowser.contentTitle); })()"/>
</menu>
<menuseparator id="context-sep-viewbgimage"/>
<menuitem id="context-viewbgimage"
label="&viewBGImageCmd.label;"
accesskey="&viewBGImageCmd.accesskey;"
oncommand="gContextMenu.viewBGImage(event);"
onclick="checkForMiddleClick(this, event);"/>
<menuitem id="context-undo"
--- a/browser/base/content/browser-places.js
+++ b/browser/base/content/browser-places.js
@@ -291,18 +291,17 @@ var StarUI = {
target = target.parentNode;
}
target.addEventListener("popupshown", function(event) {
fn();
}, {capture: true, once: true});
};
gEditItemOverlay.initPanel({ node: aNode,
onPanelReady,
- hiddenRows: ["location",
- "loadInSidebar", "keyword"],
+ hiddenRows: ["location", "keyword"],
focusedElement: "preferred"});
this.panel.openPopup(aAnchorElement, aPosition);
},
_setIconAndPreviewImage(aIsCurrentBrowser) {
let faviconImage = this._element("editBookmarkPanelFavicon");
faviconImage.removeAttribute("iconloadingprincipal");
@@ -510,19 +509,17 @@ var PlacesCommandHook = {
PlacesUtils.bookmarks.menuGuid :
await PlacesUtils.promiseItemGuid(parentId);
let defaultInsertionPoint = new PlacesInsertionPoint({ parentId, parentGuid });
PlacesUIUtils.showBookmarkDialog({ action: "add",
type: "bookmark",
uri: makeURI(url),
title,
defaultInsertionPoint,
- hiddenRows: [ "location",
- "loadInSidebar",
- "keyword" ]
+ hiddenRows: [ "location", "keyword" ]
}, window.top);
},
/**
* List of nsIURI objects characterizing the tabs currently open in the
* browser, modulo pinned tabs. The URIs will be in the order in which their
* corresponding tabs appeared and duplicates are discarded.
*/
--- a/browser/base/content/browser-sets.inc
+++ b/browser/base/content/browser-sets.inc
@@ -124,20 +124,16 @@
sidebarurl="chrome://browser/content/places/bookmarksSidebar.xul"
oncommand="SidebarUI.toggle('viewBookmarksSidebar');"/>
<broadcaster id="viewHistorySidebar" autoCheck="false" sidebartitle="&historyButton.label;"
type="checkbox" group="sidebar"
sidebarurl="chrome://browser/content/places/historySidebar.xul"
oncommand="SidebarUI.toggle('viewHistorySidebar');"/>
- <broadcaster id="viewWebPanelsSidebar" autoCheck="false"
- type="checkbox" group="sidebar" sidebarurl="chrome://browser/content/web-panels.xul"
- oncommand="SidebarUI.toggle('viewWebPanelsSidebar');"/>
-
<broadcaster id="bookmarkThisPageBroadcaster"
label="&bookmarkThisPageCmd.label;"
bookmarklabel="&bookmarkThisPageCmd.label;"
editlabel="&editThisBookmarkCmd.label;"/>
<!-- popup blocking menu items -->
<broadcaster id="blockedPopupAllowSite"
accesskey="&allowPopups.accesskey;"
--- a/browser/base/content/browser-sidebar.js
+++ b/browser/base/content/browser-sidebar.js
@@ -475,27 +475,16 @@ var SidebarUI = {
let selBrowser = gBrowser.selectedBrowser;
selBrowser.messageManager.sendAsyncMessage("Sidebar:VisibilityChange",
{commandID, isOpen: true}
);
});
},
/**
- * Sets the webpage favicon in sidebar
- *
- */
- setWebPageIcon(url) {
- let iconURL = "url(page-icon:" + url + ")";
- if (this._box.getAttribute("sidebarcommand") == "viewWebPanelsSidebar") {
- this._icon.style.setProperty("--sidebar-webpage-icon", iconURL);
- }
- },
-
- /**
* Hide the sidebar.
*
* @param {DOMNode} [triggerNode] Node, usually a button, that triggered the
* hiding of the sidebar.
*/
hide(triggerNode) {
if (!this.isOpen) {
return;
--- a/browser/base/content/browser.css
+++ b/browser/base/content/browser.css
@@ -1406,26 +1406,16 @@ toolbarpaletteitem:not([place="palette"]
}
#pageActionContextMenu[state=builtInPinned] > .pageActionContextMenuItem.builtInPinned,
#pageActionContextMenu[state=builtInUnpinned] > .pageActionContextMenuItem.builtInUnpinned,
#pageActionContextMenu[state=extensionPinned] > .pageActionContextMenuItem.extensionPinned,
#pageActionContextMenu[state=extensionUnpinned] > .pageActionContextMenuItem.extensionUnpinned {
visibility: visible;
}
-
-/* Favicon in Open Bookmark in Sidebar */
-#sidebar-box[sidebarcommand="viewWebPanelsSidebar"] > #sidebar-header > #sidebar-switcher-target > #sidebar-icon {
- list-style-image: var(--sidebar-webpage-icon, url(chrome://mozapps/skin/places/defaultFavicon.svg) );
- -moz-context-properties: fill;
- fill: currentColor;
- width: 16px;
- height: 16px;
-}
-
/* WebExtension Sidebars */
#sidebar-box[sidebarcommand$="-sidebar-action"] > #sidebar-header > #sidebar-switcher-target > #sidebar-icon {
list-style-image: var(--webextension-menuitem-image, inherit);
-moz-context-properties: fill;
fill: currentColor;
width: 16px;
height: 16px;
}
--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
@@ -6078,51 +6078,16 @@ function UpdateDynamicShortcutTooltipTex
args.push(ShortcutUtils.prettifyShortcut(shortcut));
}
}
gDynamicTooltipCache.set(nodeId, gNavigatorBundle.getFormattedString(strId, args));
}
aTooltip.setAttribute("label", gDynamicTooltipCache.get(nodeId));
}
-var gWebPanelURI;
-function openWebPanel(title, uri) {
- // Ensure that the web panels sidebar is open.
- SidebarUI.show("viewWebPanelsSidebar");
-
- // Set the title of the panel.
- SidebarUI.title = title;
-
- // Tell the Web Panels sidebar to load the bookmark.
- if (SidebarUI.browser.docShell && SidebarUI.browser.contentDocument &&
- SidebarUI.browser.contentDocument.getElementById("web-panels-browser")) {
- SidebarUI.browser.contentWindow.loadWebPanel(uri);
- if (gWebPanelURI) {
- gWebPanelURI = "";
- SidebarUI.browser.removeEventListener("load", asyncOpenWebPanel, true);
- }
- } else {
- // The panel is still being constructed. Attach an onload handler.
- if (!gWebPanelURI) {
- SidebarUI.browser.addEventListener("load", asyncOpenWebPanel, true);
- }
- gWebPanelURI = uri;
- }
-}
-
-function asyncOpenWebPanel(event) {
- if (gWebPanelURI && SidebarUI.browser.contentDocument &&
- SidebarUI.browser.contentDocument.getElementById("web-panels-browser")) {
- SidebarUI.browser.contentWindow.loadWebPanel(gWebPanelURI);
- SidebarUI.setWebPageIcon(gWebPanelURI);
- }
- gWebPanelURI = "";
- SidebarUI.browser.removeEventListener("load", asyncOpenWebPanel, true);
-}
-
/*
* - [ Dependencies ] ---------------------------------------------------------
* utilityOverlay.js:
* - gatherTextUnder
*/
/**
* Extracts linkNode and href for the current click target.
@@ -6174,17 +6139,17 @@ function hrefAndLinkNodeForClickEvent(ev
}
/**
* Called whenever the user clicks in the content area.
*
* @param event
* The click event.
* @param isPanelClick
- * Whether the event comes from a web panel.
+ * Whether the event comes from an extension panel.
* @note default event is prevented if the click is handled.
*/
function contentAreaClick(event, isPanelClick) {
if (!event.isTrusted || event.defaultPrevented || event.button == 2)
return;
let [href, linkNode] = hrefAndLinkNodeForClickEvent(event);
if (!href) {
@@ -6197,17 +6162,17 @@ function contentAreaClick(event, isPanel
}
return;
}
// This code only applies if we have a linkNode (i.e. clicks on real anchor
// elements, as opposed to XLink).
if (linkNode && event.button == 0 &&
!event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey) {
- // A Web panel's links should target the main content area. Do this
+ // An extension panel's links should target the main content area. Do this
// if no modifier keys are down and if there's no target or the target
// equals _main (the IE convention) or _content (the Mozilla convention).
let target = linkNode.target;
let mainTarget = !target || target == "_content" || target == "_main";
if (isPanelClick && mainTarget) {
// javascript and data links should be executed in the current browser.
if (linkNode.getAttribute("onclick") ||
href.startsWith("javascript:") ||
@@ -6221,32 +6186,16 @@ function contentAreaClick(event, isPanel
event.preventDefault();
return;
}
loadURI(href, null, null, false);
event.preventDefault();
return;
}
-
- if (linkNode.getAttribute("rel") == "sidebar") {
- // This is the Opera convention for a special link that, when clicked,
- // allows to add a sidebar panel. The link's title attribute contains
- // the title that should be used for the sidebar panel.
- PlacesUIUtils.showBookmarkDialog({ action: "add",
- type: "bookmark",
- uri: makeURI(href),
- title: linkNode.getAttribute("title"),
- loadBookmarkInSidebar: true,
- hiddenRows: [ "location",
- "keyword" ]
- }, window);
- event.preventDefault();
- return;
- }
}
handleLinkClick(event, href, linkNode);
// Mark the page as a user followed link. This is done so that history can
// distinguish automatic embed visits from user activated ones. For example
// pages loaded in frames are embed visits and lost with the session, while
// visits across frames should be preserved.
@@ -7375,19 +7324,17 @@ function AddKeywordForSearchField() {
[bookmarkData.title]);
PlacesUIUtils.showBookmarkDialog({ action: "add",
type: "bookmark",
uri: makeURI(bookmarkData.spec),
title,
keyword: "",
postData: bookmarkData.postData,
charSet: bookmarkData.charset,
- hiddenRows: [ "location",
- "tags",
- "loadInSidebar" ]
+ hiddenRows: [ "location", "tags" ]
}, window);
};
mm.addMessageListener("ContextMenu:SearchFieldBookmarkData:Result", onMessage);
mm.sendAsyncMessage("ContextMenu:SearchFieldBookmarkData", {}, { target: gContextMenu.target });
}
/**
--- a/browser/base/content/content.js
+++ b/browser/base/content/content.js
@@ -212,38 +212,31 @@ var ClickEventHandler = {
}
}
let frameOuterWindowID = WebNavigationFrames.getFrameId(ownerDoc.defaultView);
let json = { button: event.button, shiftKey: event.shiftKey,
ctrlKey: event.ctrlKey, metaKey: event.metaKey,
altKey: event.altKey, href: null, title: null,
- bookmark: false, frameOuterWindowID, referrerPolicy,
+ frameOuterWindowID, referrerPolicy,
triggeringPrincipal: principal,
originAttributes: principal ? principal.originAttributes : {},
isContentWindowPrivate: PrivateBrowsingUtils.isContentWindowPrivate(ownerDoc.defaultView)};
if (href) {
try {
BrowserUtils.urlSecurityCheck(href, principal);
} catch (e) {
return;
}
json.href = href;
if (node) {
json.title = node.getAttribute("title");
- if (event.button == 0 && !event.ctrlKey && !event.shiftKey &&
- !event.altKey && !event.metaKey) {
- json.bookmark = node.getAttribute("rel") == "sidebar";
- if (json.bookmark) {
- event.preventDefault(); // Need to prevent the pageload.
- }
- }
}
json.noReferrer = BrowserUtils.linkHasNoReferrer(node);
// Check if the link needs to be opened with mixed content allowed.
// Only when the owner doc has |mixedContentChannel| and the same origin
// should we allow mixed content.
json.allowMixedContent = false;
let docshell = ownerDoc.docShell;
--- a/browser/base/content/test/sidebar/browser.ini
+++ b/browser/base/content/test/sidebar/browser.ini
@@ -1,6 +1,5 @@
[DEFAULT]
-[browser_bug409481.js]
[browser_sidebar_adopt.js]
[browser_sidebar_move.js]
[browser_sidebar_switcher.js]
deleted file mode 100644
--- a/browser/base/content/test/sidebar/browser_bug409481.js
+++ /dev/null
@@ -1,81 +0,0 @@
-/* eslint-disable mozilla/no-arbitrary-setTimeout */
-function test() {
- waitForExplicitFinish();
-
- // XXX This looks a bit odd, but is needed to avoid throwing when removing the
- // event listeners below. See bug 310955.
- document.getElementById("sidebar").addEventListener("load", delayedOpenUrl, true);
- SidebarUI.show("viewWebPanelsSidebar");
-}
-
-function delayedOpenUrl() {
- ok(true, "Ran delayedOpenUrl");
- setTimeout(openPanelUrl, 100);
-}
-
-function openPanelUrl(event) {
- ok(!document.getElementById("sidebar-box").hidden, "Sidebar showing");
-
- var sidebar = document.getElementById("sidebar");
- var root = sidebar.contentDocument.documentElement;
- ok(root.nodeName != "parsererror", "Sidebar is well formed");
-
- sidebar.removeEventListener("load", delayedOpenUrl, true);
- // XXX See comment above
- sidebar.contentDocument.addEventListener("load", delayedRunTest, true);
- var url = 'data:text/html,<div%20id="test_bug409481">Content!</div><a id="link" href="http://www.example.com/ctest">Link</a><input id="textbox">';
- sidebar.contentWindow.loadWebPanel(url);
-}
-
-function delayedRunTest() {
- ok(true, "Ran delayedRunTest");
- setTimeout(runTest, 100);
-}
-
-function runTest(event) {
- var sidebar = document.getElementById("sidebar");
- sidebar.contentDocument.removeEventListener("load", delayedRunTest, true);
-
- var browser = sidebar.contentDocument.getElementById("web-panels-browser");
- var div = browser && browser.contentDocument.getElementById("test_bug409481");
- ok(div && div.textContent == "Content!", "Sidebar content loaded");
-
- var link = browser && browser.contentDocument.getElementById("link");
- sidebar.contentDocument.addEventListener("popupshown", contextMenuOpened);
-
- EventUtils.synthesizeMouseAtCenter(link, { type: "contextmenu", button: 2 }, browser.contentWindow);
-}
-
-function contextMenuOpened() {
- var sidebar = document.getElementById("sidebar");
- sidebar.contentDocument.removeEventListener("popupshown", contextMenuOpened);
-
- var copyLinkCommand = sidebar.contentDocument.getElementById("context-copylink");
- copyLinkCommand.addEventListener("command", copyLinkCommandExecuted);
- copyLinkCommand.doCommand();
-}
-
-function copyLinkCommandExecuted(event) {
- event.target.removeEventListener("command", copyLinkCommandExecuted);
-
- var sidebar = document.getElementById("sidebar");
- var browser = sidebar.contentDocument.getElementById("web-panels-browser");
- var textbox = browser && browser.contentDocument.getElementById("textbox");
- textbox.focus();
- document.commandDispatcher.getControllerForCommand("cmd_paste").doCommand("cmd_paste");
- is(textbox.value, "http://www.example.com/ctest", "copy link command");
-
- sidebar.contentDocument.addEventListener("popuphidden", contextMenuClosed);
- event.target.parentNode.hidePopup();
-}
-
-function contextMenuClosed() {
- var sidebar = document.getElementById("sidebar");
- sidebar.contentDocument.removeEventListener("popuphidden", contextMenuClosed);
-
- SidebarUI.hide();
-
- ok(document.getElementById("sidebar-box").hidden, "Sidebar successfully hidden");
-
- finish();
-}
deleted file mode 100644
--- a/browser/base/content/web-panels.js
+++ /dev/null
@@ -1,91 +0,0 @@
-/* -*- indent-tabs-mode: nil; js-indent-level: 4 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-// Via web-panels.xul
-/* import-globals-from browser.js */
-
-const NS_ERROR_MODULE_NETWORK = 2152398848;
-const NS_NET_STATUS_READ_FROM = NS_ERROR_MODULE_NETWORK + 8;
-const NS_NET_STATUS_WROTE_TO = NS_ERROR_MODULE_NETWORK + 9;
-
-function getPanelBrowser() {
- return document.getElementById("web-panels-browser");
-}
-
-var panelProgressListener = {
- onProgressChange(aWebProgress, aRequest,
- aCurSelfProgress, aMaxSelfProgress,
- aCurTotalProgress, aMaxTotalProgress) {
- },
-
- onStateChange(aWebProgress, aRequest, aStateFlags, aStatus) {
- if (!aRequest)
- return;
-
- // ignore local/resource:/chrome: files
- if (aStatus == NS_NET_STATUS_READ_FROM || aStatus == NS_NET_STATUS_WROTE_TO)
- return;
-
- if (aStateFlags & Ci.nsIWebProgressListener.STATE_START &&
- aStateFlags & Ci.nsIWebProgressListener.STATE_IS_NETWORK) {
- window.parent.document.getElementById("sidebar-throbber").setAttribute("loading", "true");
- } else if (aStateFlags & Ci.nsIWebProgressListener.STATE_STOP &&
- aStateFlags & Ci.nsIWebProgressListener.STATE_IS_NETWORK) {
- window.parent.document.getElementById("sidebar-throbber").removeAttribute("loading");
- }
- },
-
- onLocationChange(aWebProgress, aRequest, aLocation, aFlags) {
- UpdateBackForwardCommands(getPanelBrowser().webNavigation);
- },
-
- onStatusChange(aWebProgress, aRequest, aStatus, aMessage) {
- },
-
- onSecurityChange(aWebProgress, aRequest, aState) {
- },
-
- QueryInterface: ChromeUtils.generateQI(["nsIWebProgressListener", "nsISupportsWeakReference"]),
-};
-
-var gLoadFired = false;
-function loadWebPanel(aURI) {
- var panelBrowser = getPanelBrowser();
- if (gLoadFired) {
- panelBrowser.webNavigation
- .loadURI(aURI, Ci.nsIWebNavigation.LOAD_FLAGS_NONE,
- null, null, null);
- }
- panelBrowser.setAttribute("cachedurl", aURI);
-}
-
-function load() {
- var panelBrowser = getPanelBrowser();
- panelBrowser.webProgress.addProgressListener(panelProgressListener,
- Ci.nsIWebProgress.NOTIFY_ALL);
- panelBrowser.messageManager.loadFrameScript("chrome://browser/content/content.js", true);
- var cachedurl = panelBrowser.getAttribute("cachedurl");
- if (cachedurl) {
- panelBrowser.webNavigation
- .loadURI(cachedurl, Ci.nsIWebNavigation.LOAD_FLAGS_NONE, null,
- null, null);
- }
-
- gLoadFired = true;
-}
-
-function unload() {
- getPanelBrowser().webProgress.removeProgressListener(panelProgressListener);
-}
-
-function PanelBrowserStop() {
- getPanelBrowser().webNavigation.stop(Ci.nsIWebNavigation.STOP_ALL);
-}
-
-function PanelBrowserReload() {
- getPanelBrowser().webNavigation
- .sessionHistory
- .reload(Ci.nsIWebNavigation.LOAD_FLAGS_NONE);
-}
deleted file mode 100644
--- a/browser/base/content/web-panels.xul
+++ /dev/null
@@ -1,79 +0,0 @@
-<?xml version="1.0"?>
-
-# -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-<?xml-stylesheet href="chrome://browser/skin/" type="text/css"?>
-
-<!DOCTYPE page [
-<!ENTITY % browserDTD SYSTEM "chrome://browser/locale/browser.dtd">
-%browserDTD;
-<!ENTITY % textcontextDTD SYSTEM "chrome://global/locale/textcontext.dtd">
-%textcontextDTD;
-]>
-
-<page id="webpanels-window"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
- onload="load()" onunload="unload()">
- <script type="application/javascript" src="chrome://global/content/contentAreaUtils.js"/>
- <script type="application/javascript" src="chrome://browser/content/browser.js"/>
- <script type="application/javascript" src="chrome://browser/content/browser-places.js"/>
- <script type="application/javascript" src="chrome://browser/content/web-panels.js"/>
- <script type="application/javascript" src="chrome://global/content/globalOverlay.js"/>
- <script type="application/javascript" src="chrome://browser/content/utilityOverlay.js"/>
- <script type="application/javascript"><![CDATA[
- ChromeUtils.defineModuleGetter(window,
- "PlacesUtils", "resource://gre/modules/PlacesUtils.jsm");
- ChromeUtils.defineModuleGetter(window,
- "PlacesUIUtils", "resource:///modules/PlacesUIUtils.jsm");
- ChromeUtils.defineModuleGetter(window,
- "PlacesTransactions", "resource://gre/modules/PlacesTransactions.jsm");
-
- ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
- XPCOMUtils.defineLazyScriptGetter(window, "PlacesTreeView",
- "chrome://browser/content/places/treeView.js");
- XPCOMUtils.defineLazyScriptGetter(window,
- ["PlacesInsertionPoint", "PlacesController", "PlacesControllerDragHelper"],
- "chrome://browser/content/places/controller.js");
- ]]></script>
-
- <broadcasterset id="mainBroadcasterSet">
- <broadcaster id="isFrameImage"/>
- </broadcasterset>
-
- <commandset id="mainCommandset">
- <command id="Browser:Back"
- oncommand="getPanelBrowser().webNavigation.goBack();"
- disabled="true"/>
- <command id="Browser:Forward"
- oncommand="getPanelBrowser().webNavigation.goForward();"
- disabled="true"/>
- <command id="Browser:Stop" oncommand="PanelBrowserStop();"/>
- <command id="Browser:Reload" oncommand="PanelBrowserReload();"/>
- </commandset>
-
- <popupset id="mainPopupSet">
- <tooltip id="aHTMLTooltip" page="true"/>
- <menupopup id="contentAreaContextMenu" pagemenu="start"
- onpopupshowing="if (event.target != this)
- return true;
- gContextMenu = new nsContextMenu(this, event.shiftKey);
- if (gContextMenu.shouldDisplay)
- document.popupNode = this.triggerNode;
- return gContextMenu.shouldDisplay;"
- onpopuphiding="if (event.target != this)
- return;
- gContextMenu.hiding();
- gContextMenu = null;">
-#include browser-context.inc
- </menupopup>
- </popupset>
-
-#include ../../../toolkit/content/editMenuCommands.inc.xul
- <browser id="web-panels-browser" persist="cachedurl" type="content" flex="1"
- context="contentAreaContextMenu" tooltip="aHTMLTooltip"
- onclick="window.parent.contentAreaClick(event, true);"/>
-</page>
--- a/browser/base/jar.mn
+++ b/browser/base/jar.mn
@@ -91,18 +91,16 @@ browser.jar:
content/browser/sanitizeDialog.css (content/sanitizeDialog.css)
content/browser/contentSearchUI.js (content/contentSearchUI.js)
content/browser/contentSearchUI.css (content/contentSearchUI.css)
content/browser/tabbrowser.css (content/tabbrowser.css)
content/browser/tabbrowser.js (content/tabbrowser.js)
content/browser/tabbrowser.xml (content/tabbrowser.xml)
* content/browser/urlbarBindings.xml (content/urlbarBindings.xml)
content/browser/utilityOverlay.js (content/utilityOverlay.js)
- content/browser/web-panels.js (content/web-panels.js)
-* content/browser/web-panels.xul (content/web-panels.xul)
content/browser/webext-panels.js (content/webext-panels.js)
* content/browser/webext-panels.xul (content/webext-panels.xul)
content/browser/nsContextMenu.js (content/nsContextMenu.js)
# XXX: We should exclude this one as well (bug 71895)
* content/browser/hiddenWindow.xul (content/hiddenWindow.xul)
#ifndef XP_MACOSX
* content/browser/webrtcIndicator.xul (content/webrtcIndicator.xul)
content/browser/webrtcIndicator.js (content/webrtcIndicator.js)
--- a/browser/components/places/PlacesUIUtils.jsm
+++ b/browser/components/places/PlacesUIUtils.jsm
@@ -204,17 +204,16 @@ let InternalFaviconLoader = {
this._removeLoadDataFromWindowMap(win, loadData);
}, FAVICON_REQUEST_TIMEOUT);
let loadDataForWindow = gFaviconLoadDataMap.get(win);
loadDataForWindow.push(loadData);
},
};
var PlacesUIUtils = {
- LOAD_IN_SIDEBAR_ANNO: "bookmarkProperties/loadInSidebar",
DESCRIPTION_ANNO: "bookmarkProperties/description",
LAST_USED_FOLDERS_META_KEY: "bookmarks/lastusedfolders",
/**
* Makes a URI from a spec, and do fixup
* @param aSpec
* The string spec of the URI
* @return A URI object for the spec.
@@ -652,18 +651,18 @@ var PlacesUIUtils = {
// Skip over separators and folders.
if (PlacesUtils.nodeIsURI(aNodes[i]))
urlsToOpen.push({uri: aNodes[i].uri, isBookmark: PlacesUtils.nodeIsBookmark(aNodes[i])});
}
this._openTabset(urlsToOpen, aEvent, window);
},
/**
- * Loads the node's URL in the appropriate tab or window or as a web
- * panel given the user's preference specified by modifier keys tracked by a
+ * Loads the node's URL in the appropriate tab or window given the
+ * user's preference specified by modifier keys tracked by a
* DOM mouse/key event.
* @param aNode
* An uri result node.
* @param aEvent
* The DOM mouse/key event with modifier keys set that track the
* user's preferred destination window or tab.
*/
openNodeWithEvent:
@@ -685,18 +684,17 @@ var PlacesUIUtils = {
this._openNodeIn(aNode, where, window);
let view = this.getViewForNode(aEvent.target);
if (view && view.controller.hasCachedLivemarkInfo(aNode.parent)) {
Services.telemetry.scalarAdd("browser.feeds.livebookmark_item_opened", 1);
}
},
/**
- * Loads the node's URL in the appropriate tab or window or as a
- * web panel.
+ * Loads the node's URL in the appropriate tab or window.
* see also openUILinkIn
*/
openNodeIn: function PUIU_openNodeIn(aNode, aWhere, aView, aPrivate) {
let window = aView.ownerWindow;
this._openNodeIn(aNode, aWhere, window, aPrivate);
},
_openNodeIn: function PUIU__openNodeIn(aNode, aWhere, aWindow, aPrivate = false) {
@@ -706,29 +704,16 @@ var PlacesUIUtils = {
if (!PrivateBrowsingUtils.isWindowPrivate(aWindow)) {
if (isBookmark)
this.markPageAsFollowedBookmark(aNode.uri);
else
this.markPageAsTyped(aNode.uri);
}
- // Check whether the node is a bookmark which should be opened as
- // a web panel
- if (aWhere == "current" && isBookmark) {
- if (PlacesUtils.annotations
- .itemHasAnnotation(aNode.itemId, this.LOAD_IN_SIDEBAR_ANNO)) {
- let browserWin = BrowserWindowTracker.getTopWindow();
- if (browserWin) {
- browserWin.openWebPanel(aNode.title, aNode.uri);
- return;
- }
- }
- }
-
aWindow.openTrustedLinkIn(aNode.uri, aWhere, {
allowPopups: aNode.uri.startsWith("javascript:"),
inBackground: this.loadBookmarksInBackground,
private: aPrivate,
});
}
},
--- a/browser/components/places/content/bookmarkProperties.js
+++ b/browser/components/places/content/bookmarkProperties.js
@@ -5,18 +5,16 @@
/**
* The panel is initialized based on data given in the js object passed
* as window.arguments[0]. The object must have the following fields set:
* @ action (String). Possible values:
* - "add" - for adding a new item.
* @ type (String). Possible values:
* - "bookmark"
- * @ loadBookmarkInSidebar - optional, the default state for the
- * "Load this bookmark in the sidebar" field.
* - "folder"
* @ URIList (Array of nsIURI objects) - optional, list of uris to
* be bookmarked under the new folder.
* - "livemark"
* @ uri (nsIURI object) - optional, the default uri for the new item.
* The property is not used for the "folder with items" type.
* @ title (String) - optional, the default title for the new item.
* @ defaultInsertionPoint (InsertionPoint JS object) - optional, the
@@ -42,17 +40,16 @@
* the folder.
* @ hiddenRows (Strings array) - optional, list of rows to be hidden
* regardless of the item edited or added by the dialog.
* Possible values:
* - "title"
* - "location"
* - "keyword"
* - "tags"
- * - "loadInSidebar"
* - "folderPicker" - hides both the tree and the menu.
*
* window.arguments[0].bookmarkGuid is set to the guid of the item, if the
* dialog is accepted.
*/
/* import-globals-from editBookmark.js */
/* import-globals-from controller.js */
@@ -79,17 +76,16 @@ var BookmarkPropertiesPanel = {
this.__strings = document.getElementById("stringBundle");
}
return this.__strings;
},
_action: null,
_itemType: null,
_uri: null,
- _loadInSidebar: false,
_title: "",
_URIs: [],
_keyword: "",
_postData: null,
_charSet: "",
_feedURI: null,
_siteURI: null,
@@ -103,17 +99,17 @@ var BookmarkPropertiesPanel = {
_getAcceptLabel: function BPP__getAcceptLabel() {
if (this._action == ACTION_ADD) {
if (this._URIs.length)
return this._strings.getString("dialogAcceptLabelAddMulti");
if (this._itemType == LIVEMARK_CONTAINER)
return this._strings.getString("dialogAcceptLabelAddLivemark");
- if (this._dummyItem || this._loadInSidebar)
+ if (this._dummyItem)
return this._strings.getString("dialogAcceptLabelAddItem");
return this._strings.getString("dialogAcceptLabelSaveItem");
}
return this._strings.getString("dialogAcceptLabelEdit");
},
/**
@@ -177,19 +173,16 @@ var BookmarkPropertiesPanel = {
this._uri.spec;
}
} else {
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) {
this._keyword = dialogInfo.keyword;
this._isAddKeywordDialog = true;
if ("postData" in dialogInfo)
this._postData = dialogInfo.postData;
if ("charSet" in dialogInfo)
this._charSet = dialogInfo.charSet;
}
@@ -448,24 +441,19 @@ var BookmarkPropertiesPanel = {
this._defaultInsertionPoint.itemId,
await this._defaultInsertionPoint.getIndex(),
this._defaultInsertionPoint.guid,
];
},
async _promiseNewItem() {
let [containerId, index, parentGuid] = await this._getInsertionPointDetails();
- let annotations = [];
- if (this._loadInSidebar) {
- annotations.push({ name: PlacesUIUtils.LOAD_IN_SIDEBAR_ANNO,
- value: true });
- }
let itemGuid;
- let info = { parentGuid, index, title: this._title, annotations };
+ let info = { parentGuid, index, title: this._title };
if (this._itemType == BOOKMARK_ITEM) {
info.url = this._uri;
if (this._keyword)
info.keyword = this._keyword;
if (this._postData)
info.postData = this._postData;
if (this._charSet && !PrivateBrowsingUtils.isWindowPrivate(window))
--- a/browser/components/places/content/controller.js
+++ b/browser/components/places/content/controller.js
@@ -268,19 +268,17 @@ PlacesController.prototype = {
break;
case "placesCmd_sortBy:name":
this.sortFolderByName().catch(Cu.reportError);
break;
case "placesCmd_createBookmark":
let node = this._view.selectedNode;
PlacesUIUtils.showBookmarkDialog({ action: "add",
type: "bookmark",
- hiddenRows: [ "keyword",
- "location",
- "loadInSidebar" ],
+ hiddenRows: [ "keyword", "location" ],
uri: Services.io.newURI(node.uri),
title: node.title
}, window.top);
break;
}
},
onEvent: function PC_onEvent(eventName) { },
--- a/browser/components/places/content/editBookmark.js
+++ b/browser/components/places/content/editBookmark.js
@@ -153,42 +153,32 @@ var gEditItemOverlay = {
this._keyword = existingKeyword;
// Update the text field to the existing keyword.
this._initTextField(this._keywordField, this._keyword);
}
}
}
},
- _initLoadInSidebar() {
- if (!this._paneInfo.isBookmark)
- throw new Error("_initLoadInSidebar called unexpectedly");
-
- this._loadInSidebarCheckbox.checked =
- PlacesUtils.annotations.itemHasAnnotation(
- this._paneInfo.itemId, PlacesUIUtils.LOAD_IN_SIDEBAR_ANNO);
- },
-
/**
* Initialize the panel.
*
* @param aInfo
* An object having:
* 1. one of the following properties:
* - node: either a result node or a node-like object representing the
* item to be edited. A node-like object must have the following
* properties (with values that match exactly those a result node
* would have): itemId, bookmarkGuid, uri, title, type.
* - uris: an array of uris for bulk tagging.
*
* 2. any of the following optional properties:
* - hiddenRows (Strings array): list of rows to be hidden regardless
* of the item edited. Possible values: "title", "location",
- * "keyword", "loadInSidebar", "feedLocation",
- * "siteLocation", folderPicker"
+ * "keyword", "feedLocation", "siteLocation", folderPicker"
*/
initPanel(aInfo) {
if (typeof(aInfo) != "object" || aInfo === null)
throw new Error("aInfo must be an object.");
if ("node" in aInfo) {
try {
aInfo.node.type;
} catch (e) {
@@ -240,21 +230,16 @@ var gEditItemOverlay = {
}
// Collapse the tag selector if the item does not accept tags.
if (showOrCollapse("tagsRow", isURI || bulkTagging, "tags"))
this._initTagsField();
else if (!this._element("tagsSelectorRow").collapsed)
this.toggleTagsSelector();
- // Load in sidebar.
- if (showOrCollapse("loadInSidebarCheckbox", isBookmark, "loadInSidebar")) {
- this._initLoadInSidebar();
- }
-
// Folder picker.
// Technically we should check that the item is not moveable, but that's
// not cheap (we don't always have the parent), and there's no use case for
// this (it's only the Star UI that shows the folderPicker)
if (showOrCollapse("folderRow", isItem, "folderPicker")) {
this._initFolderMenuList(parentGuid).catch(Cu.reportError);
}
@@ -629,29 +614,16 @@ var gEditItemOverlay = {
let oldKeyword = this._keyword;
let keyword = this._keyword = this._keywordField.value;
let postData = this._paneInfo.postData;
let guid = this._paneInfo.itemGuid;
PlacesTransactions.EditKeyword({ guid, keyword, postData, oldKeyword })
.transact().catch(Cu.reportError);
},
- onLoadInSidebarCheckboxCommand() {
- if (!this.initialized || !this._paneInfo.isBookmark)
- return;
-
- let annotation = { name: PlacesUIUtils.LOAD_IN_SIDEBAR_ANNO };
- if (this._loadInSidebarCheckbox.checked)
- annotation.value = true;
-
- let guid = this._paneInfo.itemGuid;
- PlacesTransactions.Annotate({ guid, annotation })
- .transact().catch(Cu.reportError);
- },
-
toggleFolderTreeVisibility() {
var expander = this._element("foldersExpander");
var folderTreeRow = this._element("folderTreeRow");
if (!folderTreeRow.collapsed) {
expander.className = "expander-down";
expander.setAttribute("tooltiptext",
expander.getAttribute("tooltiptextdown"));
folderTreeRow.collapsed = true;
@@ -1003,20 +975,16 @@ var gEditItemOverlay = {
this._onTagsChange(aGuid, newURI).catch(Cu.reportError);
}
}
break;
case "keyword":
if (this._paneInfo.visibleRows.has("keywordRow"))
this._initKeywordField(aValue).catch(Cu.reportError);
break;
- case PlacesUIUtils.LOAD_IN_SIDEBAR_ANNO:
- if (this._paneInfo.visibleRows.has("loadInSidebarCheckbox"))
- this._initLoadInSidebar();
- break;
}
},
onItemMoved(id, oldParentId, oldIndex, newParentId, newIndex, type, guid,
oldParentGuid, newParentGuid) {
if (!this._paneInfo.isItem || this._paneInfo.itemId != id) {
return;
}
@@ -1040,13 +1008,13 @@ var gEditItemOverlay = {
onItemRemoved() { },
onBeginUpdateBatch() { },
onEndUpdateBatch() { },
onItemVisited() { },
};
for (let elt of ["folderMenuList", "folderTree", "namePicker",
"locationField", "keywordField",
- "tagsField", "loadInSidebarCheckbox"]) {
+ "tagsField" ]) {
let eltScoped = elt;
XPCOMUtils.defineLazyGetter(gEditItemOverlay, `_${eltScoped}`,
() => gEditItemOverlay._element(eltScoped));
}
--- a/browser/components/places/content/editBookmarkPanel.inc.xul
+++ b/browser/components/places/content/editBookmarkPanel.inc.xul
@@ -118,20 +118,12 @@
<label value="&editBookmarkOverlay.keyword.label;"
accesskey="&editBookmarkOverlay.keyword.accesskey;"
control="editBMPanel_keywordField"/>
<textbox id="editBMPanel_keywordField"
onchange="gEditItemOverlay.onKeywordFieldChange();"/>
</vbox>
</vbox>
- <checkbox id="editBMPanel_loadInSidebarCheckbox"
- collapsed="true"
- label="&editBookmarkOverlay.loadInSidebar.label;"
- accesskey="&editBookmarkOverlay.loadInSidebar.accesskey;"
- oncommand="gEditItemOverlay.onLoadInSidebarCheckboxCommand();">
- <observes element="additionalInfoBroadcaster" attribute="hidden"/>
- </checkbox>
-
<!-- If the ids are changing or additional fields are being added, be sure
to sync the values in places.js -->
<broadcaster id="additionalInfoBroadcaster"/>
</vbox>
--- a/browser/components/places/content/places.js
+++ b/browser/components/places/content/places.js
@@ -27,17 +27,16 @@ const HISTORY_LIBRARY_SEARCH_TELEMETRY =
var PlacesOrganizer = {
_places: null,
// IDs of fields from editBookmark that should be hidden when infoBox
// is minimal. IDs should be kept in sync with the IDs of the elements
// observing additionalInfoBroadcaster.
_additionalInfoFields: [
- "editBMPanel_loadInSidebarCheckbox",
"editBMPanel_keywordRow",
],
_initFolderTree() {
this._places.place = `place:type=${Ci.nsINavHistoryQueryOptions.RESULTS_AS_LEFT_PANE_QUERY}&excludeItems=1&expandQueries=0`;
},
/**
@@ -663,17 +662,16 @@ var PlacesOrganizer = {
this._detectAndSetDetailsPaneMinimalState(selectedNode);
} else if (!selectedNode && aNodeList[0]) {
if (aNodeList.every(PlacesUtils.nodeIsURI)) {
let uris = aNodeList.map(node => Services.io.newURI(node.uri));
detailsDeck.selectedIndex = 1;
gEditItemOverlay.initPanel({ uris,
hiddenRows: ["folderPicker",
- "loadInSidebar",
"location",
"keyword",
"name"]});
this._detectAndSetDetailsPaneMinimalState(selectedNode);
} else {
detailsDeck.selectedIndex = 0;
let selectItemDesc = document.getElementById("selectItemDescription");
let itemsCountLabel = document.getElementById("itemsCountText");
--- a/browser/components/places/tests/browser/browser.ini
+++ b/browser/components/places/tests/browser/browser.ini
@@ -12,17 +12,16 @@ support-files =
keyword_form.html
[browser_addBookmarkForFrame.js]
skip-if = (verify && debug)
[browser_bookmark_add_tags.js]
[browser_bookmark_backup_export_import.js]
[browser_bookmark_change_location.js]
[browser_bookmark_folder_moveability.js]
-[browser_bookmark_load_in_sidebar.js]
[browser_bookmark_private_window.js]
skip-if = (verify && debug && (os == 'win' || os == 'mac'))
[browser_bookmark_remove_tags.js]
[browser_bookmarklet_windowOpen.js]
support-files =
bookmarklet_windowOpen_dummy.html
[browser_bookmarks_change_title.js]
[browser_bookmarks_sidebar_search.js]
deleted file mode 100644
--- a/browser/components/places/tests/browser/browser_bookmark_load_in_sidebar.js
+++ /dev/null
@@ -1,72 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/
- */
-
-/**
- * Test that a bookmark can be loaded inside the Bookmarks sidebar.
- */
-"use strict";
-
-const TEST_URL = "about:buildconfig";
-
-// Cleanup.
-registerCleanupFunction(async () => {
- await PlacesUtils.bookmarks.eraseEverything();
-});
-
-add_task(async function test_load_in_sidebar() {
- let bm = await PlacesUtils.bookmarks.insert({
- parentGuid: PlacesUtils.bookmarks.unfiledGuid,
- url: TEST_URL,
- title: TEST_URL,
- });
-
- await withSidebarTree("bookmarks", async function(tree) {
- tree.selectItems([bm.guid]);
- await withBookmarksDialog(
- false,
- function openPropertiesDialog() {
- tree.controller.doCommand("placesCmd_show:info");
- },
-
- // Check the "Load this bookmark in the sidebar" option.
- async function test(dialogWin) {
- let loadInSidebar = dialogWin.document.getElementById("editBMPanel_loadInSidebarCheckbox");
- let promiseCheckboxChanged = PlacesTestUtils.waitForNotification(
- "onItemChanged",
- (id, parentId, checked) => checked === true
- );
-
- loadInSidebar.click();
-
- EventUtils.synthesizeKey("VK_RETURN", {}, dialogWin);
- await promiseCheckboxChanged;
- }
- );
-
- let sidebar = document.getElementById("sidebar");
-
- let sidebarLoadedPromise = new Promise(resolve => {
- sidebar.addEventListener("load", function() {
- executeSoon(resolve);
- }, {capture: true, once: true});
- });
-
- // Select and open the bookmark in the sidebar.
- tree.selectItems([bm.guid]);
- tree.controller.doCommand("placesCmd_open");
-
- await sidebarLoadedPromise;
-
- let sidebarTitle = document.getElementById("sidebar-title");
- let sidebarBrowser = sidebar.contentDocument.getElementById("web-panels-browser");
-
- await BrowserTestUtils.browserLoaded(sidebarBrowser, false, TEST_URL);
-
- let h1Elem = sidebarBrowser.contentDocument.getElementsByTagName("h1")[0];
-
- // Check that the title and the content of the page are loaded successfully.
- Assert.equal(sidebarTitle.value, TEST_URL, "The sidebar title is successfully loaded.");
- Assert.equal(h1Elem.textContent, TEST_URL, "The sidebar content is successfully loaded.");
- });
-});
--- a/browser/locales/en-US/chrome/browser/places/editBookmarkOverlay.dtd
+++ b/browser/locales/en-US/chrome/browser/places/editBookmarkOverlay.dtd
@@ -14,13 +14,11 @@
<!ENTITY editBookmarkOverlay.foldersExpanderDown.tooltip "Show all the bookmarks folders">
<!ENTITY editBookmarkOverlay.expanderUp.tooltip "Hide">
<!ENTITY editBookmarkOverlay.tags.label "Tags:">
<!ENTITY editBookmarkOverlay.tags.accesskey "T">
<!ENTITY editBookmarkOverlay.tagsEmptyDesc.label "Separate tags with commas">
<!ENTITY editBookmarkOverlay.keyword.label "Keyword:">
<!ENTITY editBookmarkOverlay.keyword.accesskey "K">
<!ENTITY editBookmarkOverlay.tagsExpanderDown.tooltip "Show all tags">
-<!ENTITY editBookmarkOverlay.loadInSidebar.label "Load this bookmark in the sidebar">
-<!ENTITY editBookmarkOverlay.loadInSidebar.accesskey "h">
<!ENTITY editBookmarkOverlay.choose.label "Choose…">
<!ENTITY editBookmarkOverlay.newFolderButton.label "New Folder">
<!ENTITY editBookmarkOverlay.newFolderButton.accesskey "o">
--- a/browser/modules/ContentClick.jsm
+++ b/browser/modules/ContentClick.jsm
@@ -40,33 +40,16 @@ var ContentClick = {
// Might be middle mouse navigation.
if (Services.prefs.getBoolPref("middlemouse.contentLoadURL") &&
!Services.prefs.getBoolPref("general.autoScroll")) {
window.middleMousePaste(json);
}
return;
}
- if (json.bookmark) {
- // This is the Opera convention for a special link that, when clicked,
- // allows to add a sidebar panel. The link's title attribute contains
- // the title that should be used for the sidebar panel.
- PlacesUIUtils.showBookmarkDialog({ action: "add",
- type: "bookmark",
- uri: Services.io.newURI(json.href),
- title: json.title,
- loadBookmarkInSidebar: true,
- hiddenRows: [ "location",
- "keyword" ]
- }, window);
- return;
- }
-
- // Note: We don't need the sidebar code here.
-
// Mark the page as a user followed link. This is done so that history can
// distinguish automatic embed visits from user activated ones. For example
// pages loaded in frames are embed visits and lost with the session, while
// visits across frames should be preserved.
try {
if (!PrivateBrowsingUtils.isWindowPrivate(window))
PlacesUIUtils.markPageAsFollowedLink(json.href);
} catch (ex) { /* Skip invalid URIs. */ }
--- a/services/sync/modules/bookmark_validator.js
+++ b/services/sync/modules/bookmark_validator.js
@@ -734,17 +734,17 @@ class BookmarkValidator {
* - childGUIDs (array of strings, only present if type is 'folder'): the
* list of child GUIDs stored on the server.
* - children (array of records, only present if type is 'folder'):
* each record has these same properties. This may differ in content
* from what you may expect from the childGUIDs list, as it won't
* contain any records that could not be found.
* - parent (record): The parent to this record.
* - Unchanged properties send down from the server: id, title, type,
- * parentName, parentid, bmkURI, keyword, tags, pos, queryId, loadInSidebar
+ * parentName, parentid, bmkURI, keyword, tags, pos, queryId
* - root: Root of the server-side bookmark tree. Has the same properties as
* above.
* - deletedRecords: As above, but only contains items that the server sent
* where it also sent indication that the item should be deleted.
* - problemData: a BookmarkProblemData object, with the caveat that
* the fields describing client/server relationship will not have been filled
* out yet.
*/
--- a/services/sync/modules/engines/bookmarks.js
+++ b/services/sync/modules/engines/bookmarks.js
@@ -27,17 +27,17 @@ XPCOMUtils.defineLazyModuleGetters(this,
});
XPCOMUtils.defineLazyGetter(this, "PlacesBundle", () => {
return Services.strings.createBundle("chrome://places/locale/places.properties");
});
XPCOMUtils.defineLazyGetter(this, "ANNOS_TO_TRACK", () => [
PlacesSyncUtils.bookmarks.DESCRIPTION_ANNO,
- PlacesSyncUtils.bookmarks.SIDEBAR_ANNO, PlacesUtils.LMANNO_FEEDURI,
+ PlacesUtils.LMANNO_FEEDURI,
PlacesUtils.LMANNO_SITEURI,
]);
const PLACES_MAINTENANCE_INTERVAL_SECONDS = 4 * 60 * 60; // 4 hours.
const FOLDER_SORTINDEX = 1000000;
// Roots that should be deleted from the server, instead of applied locally.
@@ -153,37 +153,35 @@ Bookmark.prototype = {
__proto__: PlacesItem.prototype,
_logName: "Sync.Record.Bookmark",
toSyncBookmark() {
let info = PlacesItem.prototype.toSyncBookmark.call(this);
info.title = this.title;
info.url = this.bmkUri;
info.description = this.description;
- info.loadInSidebar = this.loadInSidebar;
info.tags = this.tags;
info.keyword = this.keyword;
return info;
},
fromSyncBookmark(item) {
PlacesItem.prototype.fromSyncBookmark.call(this, item);
this.title = item.title;
this.bmkUri = item.url.href;
this.description = item.description;
- this.loadInSidebar = item.loadInSidebar;
this.tags = item.tags;
this.keyword = item.keyword;
},
};
Utils.deferGetSet(Bookmark,
"cleartext",
["title", "bmkUri", "description",
- "loadInSidebar", "tags", "keyword"]);
+ "tags", "keyword"]);
function BookmarkQuery(collection, id) {
Bookmark.call(this, collection, id, "query");
}
BookmarkQuery.prototype = {
__proto__: Bookmark.prototype,
_logName: "Sync.Record.BookmarkQuery",
--- a/services/sync/tests/tps/test_bug562515.js
+++ b/services/sync/tests/tps/test_bug562515.js
@@ -16,17 +16,16 @@ var phases = { "phase1": "profile1",
/*
* Bookmark lists
*/
// the initial list of bookmarks to add to the browser
var bookmarks_initial = {
"menu": [
{ uri: "http://www.google.com",
- loadInSidebar: true,
tags: [ "google", "computers", "internet", "www"]
},
{ uri: "http://bugzilla.mozilla.org/show_bug.cgi?id=%s",
title: "Bugzilla",
keyword: "bz"
},
{ folder: "foldera" },
{ uri: "http://www.mozilla.com" },
@@ -56,17 +55,16 @@ var bookmarks_initial = {
}
]
};
// a list of bookmarks to delete during a 'delete' action
var bookmarks_to_delete = {
"menu": [
{ uri: "http://www.google.com",
- loadInSidebar: true,
tags: [ "google", "computers", "internet", "www"]
}
],
"menu/foldera": [
{ uri: "http://www.yahoo.com",
title: "testing Yahoo"
}
]
--- a/services/sync/tests/tps/test_sync.js
+++ b/services/sync/tests/tps/test_sync.js
@@ -15,21 +15,19 @@ var phases = { "phase1": "profile1",
/*
* Bookmark asset lists: these define bookmarks that are used during the test
*/
// the initial list of bookmarks to be added to the browser
var bookmarks_initial = {
"menu": [
{ uri: "http://www.google.com",
- loadInSidebar: true,
tags: ["google", "computers", "internet", "www"],
changes: {
title: "Google",
- loadInSidebar: false,
tags: ["google", "computers", "misc"],
}
},
{ uri: "http://bugzilla.mozilla.org/show_bug.cgi?id=%s",
title: "Bugzilla",
keyword: "bz",
changes: {
keyword: "bugzilla"
@@ -87,17 +85,16 @@ var bookmarks_after_first_modify = {
"menu": [
{ uri: "http://www.apple.com/iphone/",
title: "iPhone",
before: "Google",
tags: []
},
{ uri: "http://www.google.com",
title: "Google",
- loadInSidebar: false,
tags: [ "google", "computers", "misc"]
},
{ uri: "http://bugzilla.mozilla.org/show_bug.cgi?id=%s",
title: "Bugzilla",
keyword: "bugzilla"
},
{ folder: "foldera" },
{ uri: "http://www.mozilla.com" },
@@ -132,17 +129,16 @@ var bookmarks_after_first_modify = {
]
};
// a list of bookmarks to delete during a 'delete' action
var bookmarks_to_delete = {
"menu": [
{ uri: "http://www.google.com",
title: "Google",
- loadInSidebar: false,
tags: [ "google", "computers", "misc" ]
}
]
};
// the state of bookmarks after the second 'modify' action has been performed
// on them
var bookmarks_after_second_modify = {
@@ -415,10 +411,8 @@ Phase("phase3", [
Phase("phase4", [
[Sync],
[Bookmarks.verify, bookmarks_after_second_modify],
[Passwords.verify, passwords_after_second_modify],
[Bookmarks.verifyNot, bookmarks_absent],
[Passwords.verifyNot, passwords_absent],
[History.verifyNot, history_absent],
]);
-
-
--- a/services/sync/tests/unit/test_bookmark_store.js
+++ b/services/sync/tests/unit/test_bookmark_store.js
@@ -56,17 +56,16 @@ add_task(async function test_bookmark_cr
_("Let's create a new record.");
let fxrecord = new Bookmark("bookmarks", "get-firefox1");
fxrecord.bmkUri = "http://getfirefox.com/";
fxrecord.description = "Firefox is awesome.";
fxrecord.title = "Get Firefox!";
fxrecord.tags = ["firefox", "awesome", "browser"];
fxrecord.keyword = "awesome";
- fxrecord.loadInSidebar = false;
fxrecord.parentName = BookmarksToolbarTitle;
fxrecord.parentid = "toolbar";
await store.applyIncoming(fxrecord);
_("Verify it has been created correctly.");
item = await PlacesUtils.bookmarks.fetch(fxrecord.id);
Assert.equal(item.type, PlacesUtils.bookmarks.TYPE_BOOKMARK);
Assert.equal(item.url.href, "http://getfirefox.com/");
--- a/services/sync/tests/unit/test_engine_changes_during_sync.js
+++ b/services/sync/tests/unit/test_engine_changes_during_sync.js
@@ -349,17 +349,16 @@ add_task(async function test_bookmark_ch
collection.insert(folder2_guid, encryptPayload(remoteFolder.cleartext));
let remoteFxBmk = new Bookmark("bookmarks", bmk2_guid);
remoteFxBmk.bmkUri = "http://getfirefox.com/";
remoteFxBmk.description = "Firefox is awesome.";
remoteFxBmk.title = "Get Firefox!";
remoteFxBmk.tags = ["firefox", "awesome", "browser"];
remoteFxBmk.keyword = "awesome";
- remoteFxBmk.loadInSidebar = false;
remoteFxBmk.parentName = "Folder 1";
remoteFxBmk.parentid = folder1.guid;
collection.insert(bmk2_guid, encryptPayload(remoteFxBmk.cleartext));
// A tag query referencing a nonexistent tag folder, which we should
// create locally when applying the record.
let remoteTagQuery = new BookmarkQuery("bookmarks", tagQuery_guid);
remoteTagQuery.bmkUri = "place:type=7&folder=999";
--- a/services/sync/tps/extensions/tps/resource/modules/bookmarks.jsm
+++ b/services/sync/tps/extensions/tps/resource/modules/bookmarks.jsm
@@ -29,17 +29,16 @@ function extend(child, supertype) {
}
/**
* PlacesItemProps object, holds properties for places items
*/
function PlacesItemProps(props) {
this.location = null;
this.uri = null;
- this.loadInSidebar = null;
this.keyword = null;
this.title = null;
this.description = null;
this.after = null;
this.before = null;
this.folder = null;
this.position = null;
this.delete = false;
@@ -439,39 +438,16 @@ Bookmark.prototype = {
if (entry) {
await PlacesUtils.keywords.remove(entry);
}
await PlacesUtils.keywords.insert({keyword, url: this.props.uri});
}
},
/**
- * SetLoadInSidebar
- *
- * Updates this bookmark's loadInSidebar property.
- *
- * @param loadInSidebar if true, the loadInSidebar property will be set,
- * if false, it will be cleared, and any other value will result
- * in no change
- * @return nothing
- */
- async SetLoadInSidebar(loadInSidebar) {
- let itemId = await PlacesUtils.promiseItemId(this.props.guid);
- if (loadInSidebar)
- PlacesUtils.annotations.setItemAnnotation(itemId,
- "bookmarkProperties/loadInSidebar",
- true,
- 0,
- PlacesUtils.annotations.EXPIRE_NEVER);
- else if (!loadInSidebar)
- PlacesUtils.annotations.removeItemAnnotation(itemId,
- "bookmarkProperties/loadInSidebar");
- },
-
- /**
* SetUri
*
* Updates this bookmark's URI.
*
* @param uri The new URI to set for this boomark; if null, no changes
* are made
* @return nothing
*/
@@ -515,33 +491,31 @@ Bookmark.prototype = {
"bookmark, error creating folder " + this.props.location);
let bookmarkURI = Services.io.newURI(this.props.uri);
let {guid} = await PlacesUtils.bookmarks.insert({parentGuid: this.props.parentGuid,
url: bookmarkURI,
title: this.props.title});
this.props.guid = guid;
await this.SetKeyword(this.props.keyword);
await this.SetDescription(this.props.description);
- await this.SetLoadInSidebar(this.props.loadInSidebar);
await this.SetTags(this.props.tags);
return this.props.guid;
},
/**
* Update
*
* Updates this bookmark's properties according the properties on this
* object's 'updateProps' property.
*
* @return nothing
*/
async Update() {
Logger.AssertTrue(this.props.guid, "Invalid guid during Update");
await this.SetDescription(this.updateProps.description);
- await this.SetLoadInSidebar(this.updateProps.loadInSidebar);
await this.SetTitle(this.updateProps.title);
await this.SetUri(this.updateProps.uri);
await this.SetKeyword(this.updateProps.keyword);
await this.SetTags(this.updateProps.tags);
await this.SetLocation(this.updateProps.location);
await this.SetPosition(this.updateProps.position);
},
@@ -576,31 +550,16 @@ Bookmark.prototype = {
let {keyword} = await PlacesSyncUtils.bookmarks.fetch(this.props.guid);
if (keyword != this.props.keyword) {
Logger.logPotentialError("Incorrect keyword - expected: " +
this.props.keyword + ", actual: " + keyword +
" for " + this.toString());
return null;
}
}
- let itemId = await PlacesUtils.promiseItemId(this.props.guid);
- let loadInSidebar = PlacesUtils.annotations.itemHasAnnotation(
- itemId,
- "bookmarkProperties/loadInSidebar");
- if (loadInSidebar)
- loadInSidebar = PlacesUtils.annotations.getItemAnnotation(
- itemId,
- "bookmarkProperties/loadInSidebar");
- if (this.props.loadInSidebar != null &&
- loadInSidebar != this.props.loadInSidebar) {
- Logger.logPotentialError("Incorrect loadInSidebar setting - expected: " +
- this.props.loadInSidebar + ", actual: " + loadInSidebar +
- " for " + this.toString());
- return null;
- }
if (this.props.tags != null) {
try {
let URI = Services.io.newURI(this.props.uri);
let tags = PlacesUtils.tagging.getTagsForURI(URI, {});
tags.sort();
this.props.tags.sort();
if (JSON.stringify(tags) != JSON.stringify(this.props.tags)) {
Logger.logPotentialError("Wrong tags - expected: " +
--- a/toolkit/components/places/BookmarkHTMLUtils.jsm
+++ b/toolkit/components/places/BookmarkHTMLUtils.jsm
@@ -19,17 +19,16 @@
* Old version used this to set attributes on the current container. We only
* care about the content of the heading container, which contains the title
* of the bookmark container.
* Bookmark := a
* HREF is the destination of the bookmark
* FEEDURL is the URI of the RSS feed if this is a livemark.
* LAST_CHARSET is stored as an annotation so that the next time we go to
* that page we remember the user's preference.
- * WEB_PANEL is set to "true" if the bookmark should be loaded in the sidebar.
* ICON will be stored in the favicon service
* ICON_URI is new for places bookmarks.html, it refers to the original
* URI of the favicon so we don't have to make up favicon URLs.
* Text of the <a> container is the name of the bookmark
* Ignored: LAST_VISIT, ID (writing out non-RDF IDs can confuse Firefox 2)
* Bookmark comment := dd
* This affects the previosly added bookmark
* Separator := hr
@@ -71,17 +70,16 @@ ChromeUtils.defineModuleGetter(this, "Pl
"resource://gre/modules/PlacesBackups.jsm");
const Container_Normal = 0;
const Container_Toolbar = 1;
const Container_Menu = 2;
const Container_Unfiled = 3;
const Container_Places = 4;
-const LOAD_IN_SIDEBAR_ANNO = "bookmarkProperties/loadInSidebar";
const DESCRIPTION_ANNO = "bookmarkProperties/description";
const MICROSEC_PER_SEC = 1000000;
const EXPORT_INDENT = " "; // four spaces
function base64EncodeString(aString) {
let stream = Cc["@mozilla.org/io/string-input-stream;1"]
@@ -497,17 +495,16 @@ BookmarkImporter.prototype = {
// Get the attributes we care about.
let href = this._safeTrim(aElt.getAttribute("href"));
let feedUrl = this._safeTrim(aElt.getAttribute("feedurl"));
let icon = this._safeTrim(aElt.getAttribute("icon"));
let iconUri = this._safeTrim(aElt.getAttribute("icon_uri"));
let lastCharset = this._safeTrim(aElt.getAttribute("last_charset"));
let keyword = this._safeTrim(aElt.getAttribute("shortcuturl"));
let postData = this._safeTrim(aElt.getAttribute("post_data"));
- let webPanel = this._safeTrim(aElt.getAttribute("web_panel"));
let dateAdded = this._safeTrim(aElt.getAttribute("add_date"));
let lastModified = this._safeTrim(aElt.getAttribute("last_modified"));
let tags = this._safeTrim(aElt.getAttribute("tags"));
// For feeds, get the feed URL. If it is invalid, mPreviousFeed will be
// NULL and we'll create it as a normal bookmark.
if (feedUrl) {
frame.previousFeed = feedUrl;
@@ -565,27 +562,16 @@ BookmarkImporter.prototype = {
aTag.length <= Ci.nsITaggingService.MAX_TAG_LENGTH);
// If we end up with none, then delete the property completely.
if (!bookmark.tags.length) {
delete bookmark.tags;
}
}
- if (webPanel && webPanel.toLowerCase() == "true") {
- if (!bookmark.hasOwnProperty("annos")) {
- bookmark.annos = [];
- }
- bookmark.annos.push({ "name": LOAD_IN_SIDEBAR_ANNO,
- "flags": 0,
- "expires": 4,
- "value": 1
- });
- }
-
if (lastCharset) {
bookmark.charset = lastCharset;
}
if (keyword) {
bookmark.keyword = keyword;
}
@@ -1030,18 +1016,16 @@ BookmarkExporter.prototype = {
await this._writeFaviconAttribute(aItem);
if (aItem.keyword) {
this._writeAttribute("SHORTCUTURL", escapeHtmlEntities(aItem.keyword));
if (aItem.postData)
this._writeAttribute("POST_DATA", escapeHtmlEntities(aItem.postData));
}
- if (aItem.annos && aItem.annos.some(anno => anno.name == LOAD_IN_SIDEBAR_ANNO))
- this._writeAttribute("WEB_PANEL", "true");
if (aItem.charset)
this._writeAttribute("LAST_CHARSET", escapeHtmlEntities(aItem.charset));
if (aItem.tags)
this._writeAttribute("TAGS", escapeHtmlEntities(aItem.tags));
this._writeLine(">" + escapeHtmlEntities(aItem.title) + "</A>");
this._writeDescription(aItem, aIndent);
},
--- a/toolkit/components/places/PlacesSyncUtils.jsm
+++ b/toolkit/components/places/PlacesSyncUtils.jsm
@@ -374,17 +374,16 @@ const HistorySyncUtils = PlacesSyncUtils
);
return rows.map(row => row.getResultByName("url"));
},
});
const BookmarkSyncUtils = PlacesSyncUtils.bookmarks = Object.freeze({
SMART_BOOKMARKS_ANNO: "Places/SmartBookmark",
DESCRIPTION_ANNO: "bookmarkProperties/description",
- SIDEBAR_ANNO: "bookmarkProperties/loadInSidebar",
SYNC_PARENT_ANNO: "sync/parent",
SYNC_ID_META_KEY: "sync/bookmarks/syncId",
LAST_SYNC_META_KEY: "sync/bookmarks/lastSync",
WIPE_REMOTE_META_KEY: "sync/bookmarks/wipeRemote",
// Jan 23, 1993 in milliseconds since 1970. Corresponds roughly to the release
// of the original NCSA Mosiac. We can safely assume that any dates before
@@ -1111,17 +1110,16 @@ const BookmarkSyncUtils = PlacesSyncUtil
* - kind: Optional.
* - guid: Required.
* - parentGuid: Optional; reparents the bookmark if specified.
* - title: Optional.
* - url: Optional.
* - tags: Optional; replaces all existing tags.
* - keyword: Optional.
* - description: Optional.
- * - loadInSidebar: Optional.
* - query: Optional.
*
* @param info
* object representing a bookmark-item, as defined above.
*
* @return {Promise} resolved when the update is complete.
* @resolves to an object representing the updated bookmark.
* @rejects if it's not possible to update the given bookmark.
@@ -1143,17 +1141,16 @@ const BookmarkSyncUtils = PlacesSyncUtil
* - kind: Required.
* - guid: Required.
* - parentGuid: Required.
* - url: Required for bookmarks.
* - query: A smart bookmark query string, optional.
* - tags: An optional array of tag strings.
* - keyword: An optional keyword string.
* - description: An optional description string.
- * - loadInSidebar: An optional boolean; defaults to false.
*
* Sync doesn't set the index, since it appends and reorders children
* after applying all incoming items.
*
* @param info
* object representing a synced bookmark.
*
* @return {Promise} resolved when the creation is complete.
@@ -1181,18 +1178,16 @@ const BookmarkSyncUtils = PlacesSyncUtil
* or created on a remote device if known.
* - title ("bookmark", "folder", "livemark", "query"): The item's title.
* Omitted if empty.
* - url ("bookmark", "query"): The item's URL.
* - tags ("bookmark", "query"): An array containing the item's tags.
* - keyword ("bookmark"): The bookmark's keyword, if one exists.
* - description ("bookmark", "folder", "livemark"): The item's description.
* Omitted if one isn't set.
- * - loadInSidebar ("bookmark", "query"): Whether to load the bookmark in
- * the sidebar. Always `false` for queries.
* - feed ("livemark"): A `URL` object pointing to the livemark's feed URL.
* - site ("livemark"): A `URL` object pointing to the livemark's site URL,
* or `null` if one isn't set.
* - childRecordIds ("folder"): An array containing the record IDs of the item's
* children, used to determine child order.
* - folder ("query"): The tag folder name, if this is a tag query.
* - query ("query"): The smart bookmark query name, if this is a smart
* bookmark.
@@ -1610,24 +1605,16 @@ async function insertBookmarkMetadata(db
if (insertInfo.description) {
PlacesUtils.annotations.setItemAnnotation(itemId,
BookmarkSyncUtils.DESCRIPTION_ANNO, insertInfo.description, 0,
PlacesUtils.annotations.EXPIRE_NEVER,
SOURCE_SYNC);
newItem.description = insertInfo.description;
}
- if (insertInfo.loadInSidebar) {
- PlacesUtils.annotations.setItemAnnotation(itemId,
- BookmarkSyncUtils.SIDEBAR_ANNO, insertInfo.loadInSidebar, 0,
- PlacesUtils.annotations.EXPIRE_NEVER,
- SOURCE_SYNC);
- newItem.loadInSidebar = insertInfo.loadInSidebar;
- }
-
return newItem;
}
// Determines the Sync record kind for an existing bookmark.
async function getKindForItem(db, item) {
switch (item.type) {
case PlacesUtils.bookmarks.TYPE_FOLDER: {
let isLivemark = await getAnno(db, item.guid,
@@ -1844,29 +1831,16 @@ async function updateBookmarkMetadata(db
SOURCE_SYNC);
} else {
PlacesUtils.annotations.removeItemAnnotation(itemId,
BookmarkSyncUtils.DESCRIPTION_ANNO, SOURCE_SYNC);
}
newItem.description = updateInfo.description;
}
- if (updateInfo.hasOwnProperty("loadInSidebar")) {
- if (updateInfo.loadInSidebar) {
- PlacesUtils.annotations.setItemAnnotation(itemId,
- BookmarkSyncUtils.SIDEBAR_ANNO, updateInfo.loadInSidebar, 0,
- PlacesUtils.annotations.EXPIRE_NEVER,
- SOURCE_SYNC);
- } else {
- PlacesUtils.annotations.removeItemAnnotation(itemId,
- BookmarkSyncUtils.SIDEBAR_ANNO, SOURCE_SYNC);
- }
- newItem.loadInSidebar = updateInfo.loadInSidebar;
- }
-
if (updateInfo.hasOwnProperty("query")) {
PlacesUtils.annotations.setItemAnnotation(itemId,
BookmarkSyncUtils.SMART_BOOKMARKS_ANNO, updateInfo.query, 0,
PlacesUtils.annotations.EXPIRE_NEVER,
SOURCE_SYNC);
newItem.query = updateInfo.query;
}
@@ -1892,18 +1866,16 @@ function validateNewBookmark(name, info)
tags: { validIf: b => [ BookmarkSyncUtils.KINDS.BOOKMARK,
BookmarkSyncUtils.KINDS.QUERY ].includes(b.kind) },
keyword: { validIf: b => [ BookmarkSyncUtils.KINDS.BOOKMARK,
BookmarkSyncUtils.KINDS.QUERY ].includes(b.kind) },
description: { validIf: b => [ BookmarkSyncUtils.KINDS.BOOKMARK,
BookmarkSyncUtils.KINDS.QUERY,
BookmarkSyncUtils.KINDS.FOLDER,
BookmarkSyncUtils.KINDS.LIVEMARK ].includes(b.kind) },
- loadInSidebar: { validIf: b => [ BookmarkSyncUtils.KINDS.BOOKMARK,
- BookmarkSyncUtils.KINDS.QUERY ].includes(b.kind) },
feed: { validIf: b => b.kind == BookmarkSyncUtils.KINDS.LIVEMARK },
site: { validIf: b => b.kind == BookmarkSyncUtils.KINDS.LIVEMARK },
dateAdded: { required: false }
});
return insertInfo;
}
@@ -2063,17 +2035,17 @@ function syncBookmarkToPlacesBookmark(in
break;
}
}
return bookmarkInfo;
}
// Creates and returns a Sync bookmark object containing the bookmark's
-// tags, keyword, description, and whether it loads in the sidebar.
+// tags, keyword, description.
var fetchBookmarkItem = async function(db, bookmarkItem) {
let item = await placesBookmarkToSyncBookmark(db, bookmarkItem);
if (!item.title) {
item.title = "";
}
item.tags = PlacesUtils.tagging.getTagsForURI(
@@ -2087,19 +2059,16 @@ var fetchBookmarkItem = async function(d
}
let description = await getAnno(db, bookmarkItem.guid,
BookmarkSyncUtils.DESCRIPTION_ANNO);
if (description) {
item.description = description;
}
- item.loadInSidebar = !!(await getAnno(db, bookmarkItem.guid,
- BookmarkSyncUtils.SIDEBAR_ANNO));
-
return item;
};
// Creates and returns a Sync bookmark object containing the folder's
// description and children.
async function fetchFolderItem(db, bookmarkItem) {
let item = await placesBookmarkToSyncBookmark(db, bookmarkItem);
--- a/toolkit/components/places/PlacesUtils.jsm
+++ b/toolkit/components/places/PlacesUtils.jsm
@@ -280,17 +280,16 @@ const SYNC_BOOKMARK_VALIDATORS = Object.
tag.length > Ci.nsITaggingService.MAX_TAG_LENGTH) {
throw new Error(`Invalid tag: ${tag}`);
}
}
return v;
},
keyword: simpleValidateFunc(v => v === null || typeof v == "string"),
description: simpleValidateFunc(v => v === null || typeof v == "string"),
- loadInSidebar: simpleValidateFunc(v => v === true || v === false),
dateAdded: simpleValidateFunc(v => typeof v === "number"
&& v > PlacesSyncUtils.bookmarks.EARLIEST_BOOKMARK_TIMESTAMP),
feed: v => v === null ? v : BOOKMARK_VALIDATORS.url(v),
site: v => v === null ? v : BOOKMARK_VALIDATORS.url(v),
title: BOOKMARK_VALIDATORS.title,
url: BOOKMARK_VALIDATORS.url,
});
--- a/toolkit/components/places/SyncedBookmarksMirror.jsm
+++ b/toolkit/components/places/SyncedBookmarksMirror.jsm
@@ -667,31 +667,30 @@ class SyncedBookmarksMirror {
await this.maybeStoreRemoteURL(url);
let serverModified = determineServerModified(record);
let dateAdded = determineDateAdded(record);
let title = validateTitle(record.title);
let keyword = validateKeyword(record.keyword);
let description = validateDescription(record.description);
- let loadInSidebar = record.loadInSidebar === true ? "1" : null;
await this.db.executeCached(`
REPLACE INTO items(guid, serverModified, needsMerge, kind,
dateAdded, title, keyword,
- urlId, description, loadInSidebar)
+ urlId, description)
VALUES(:guid, :serverModified, :needsMerge, :kind,
:dateAdded, NULLIF(:title, ""), :keyword,
(SELECT id FROM urls
WHERE hash = hash(:url) AND
url = :url),
- :description, :loadInSidebar)`,
+ :description)`,
{ guid, serverModified, needsMerge,
kind: SyncedBookmarksMirror.KIND.BOOKMARK, dateAdded, title, keyword,
- url: url.href, description, loadInSidebar });
+ url: url.href, description });
let tags = record.tags;
if (tags && Array.isArray(tags)) {
for (let rawTag of tags) {
let tag = validateTag(rawTag);
if (!tag) {
continue;
}
@@ -1568,17 +1567,17 @@ class SyncedBookmarksMirror {
{ valueState: BookmarkMergeState.TYPE.REMOTE });
// Stage remaining locally changed items for upload.
await this.db.execute(`
WITH RECURSIVE
${LocalItemsSQLFragment}
INSERT INTO itemsToUpload(id, guid, syncChangeCounter, parentGuid,
parentTitle, dateAdded, type, title, isQuery,
- url, tags, description, loadInSidebar,
+ url, tags, description,
smartBookmarkName, keyword, feedURL, siteURL,
position, tagFolderName)
SELECT s.id, s.guid, s.syncChangeCounter, s.parentGuid, s.parentTitle,
s.dateAdded / 1000, s.type, s.title,
IFNULL(SUBSTR(h.url, 1, 6) = 'place:', 0) AS isQuery,
h.url,
(SELECT GROUP_CONCAT(t.title, ',') FROM moz_bookmarks e
JOIN moz_bookmarks t ON t.id = e.parent
@@ -1586,20 +1585,16 @@ class SyncedBookmarksMirror {
WHERE s.type = :bookmarkType AND
r.guid = :tagsGuid AND
e.fk = h.id),
(SELECT a.content FROM moz_items_annos a
JOIN moz_anno_attributes n ON n.id = a.anno_attribute_id
WHERE s.type IN (:bookmarkType, :folderType) AND
a.item_id = s.id AND
n.name = :descriptionAnno),
- IFNULL((SELECT a.content FROM moz_items_annos a
- JOIN moz_anno_attributes n ON n.id = a.anno_attribute_id
- WHERE a.item_id = s.id AND
- n.name = :sidebarAnno), 0),
(SELECT a.content FROM moz_items_annos a
JOIN moz_anno_attributes n ON n.id = a.anno_attribute_id
WHERE a.item_id = s.id AND
n.name = :smartBookmarkAnno),
(SELECT keyword FROM moz_keywords WHERE place_id = h.id),
(SELECT a.content FROM moz_items_annos a
JOIN moz_anno_attributes n ON n.id = a.anno_attribute_id
WHERE s.type = :folderType AND
@@ -1616,17 +1611,16 @@ class SyncedBookmarksMirror {
FROM localItems s
LEFT JOIN moz_places h ON h.id = s.placeId
LEFT JOIN idsToWeaklyUpload w ON w.id = s.id
WHERE s.syncChangeCounter >= 1 OR
w.id NOT NULL`,
{ bookmarkType: PlacesUtils.bookmarks.TYPE_BOOKMARK,
tagsGuid: PlacesUtils.bookmarks.tagsGuid,
descriptionAnno: PlacesSyncUtils.bookmarks.DESCRIPTION_ANNO,
- sidebarAnno: PlacesSyncUtils.bookmarks.SIDEBAR_ANNO,
smartBookmarkAnno: PlacesSyncUtils.bookmarks.SMART_BOOKMARKS_ANNO,
folderType: PlacesUtils.bookmarks.TYPE_FOLDER,
feedURLAnno: PlacesUtils.LMANNO_FEEDURI,
siteURLAnno: PlacesUtils.LMANNO_SITEURI });
// Record the child GUIDs of locally changed folders, which we use to
// populate the `children` array in the record.
await this.db.execute(`
@@ -1666,17 +1660,17 @@ class SyncedBookmarksMirror {
} else {
childRecordIdsByLocalParentId.set(localParentId, [childRecordId]);
}
}
let itemRows = await this.db.execute(`
SELECT id, syncChangeCounter, guid, isDeleted, type, isQuery,
smartBookmarkName, tagFolderName,
- loadInSidebar, keyword, tags, url, IFNULL(title, "") AS title,
+ keyword, tags, url, IFNULL(title, "") AS title,
description, feedURL, siteURL, position, parentGuid,
IFNULL(parentTitle, "") AS parentTitle, dateAdded
FROM itemsToUpload`);
for await (let row of yieldingIterator(itemRows)) {
let syncChangeCounter = row.getResultByName("syncChangeCounter");
let guid = row.getResultByName("guid");
@@ -1741,20 +1735,16 @@ class SyncedBookmarksMirror {
dateAdded: row.getResultByName("dateAdded") || undefined,
bmkUri: row.getResultByName("url"),
title: row.getResultByName("title"),
};
let description = row.getResultByName("description");
if (description) {
bookmarkCleartext.description = description;
}
- let loadInSidebar = row.getResultByName("loadInSidebar");
- if (loadInSidebar) {
- bookmarkCleartext.loadInSidebar = true;
- }
let keyword = row.getResultByName("keyword");
if (keyword) {
bookmarkCleartext.keyword = keyword;
}
let tags = row.getResultByName("tags");
if (tags) {
bookmarkCleartext.tags = tags.split(",");
}
@@ -1966,16 +1956,18 @@ async function migrateMirrorSchema(db, c
async function initializeMirrorDatabase(db) {
// Key-value metadata table. Stores the server collection last modified time
// and sync ID.
await db.execute(`CREATE TABLE mirror.meta(
key TEXT PRIMARY KEY,
value NOT NULL
)`);
+ // Note: loadInSidebar is not used as of Firefox 63, but remains to avoid
+ // rebuilding the database if the user happens to downgrade.
await db.execute(`CREATE TABLE mirror.items(
id INTEGER PRIMARY KEY,
guid TEXT UNIQUE NOT NULL,
/* The server modified time, in milliseconds. */
serverModified INTEGER NOT NULL DEFAULT 0,
needsMerge BOOLEAN NOT NULL DEFAULT 0,
isDeleted BOOLEAN NOT NULL DEFAULT 0,
kind INTEGER NOT NULL DEFAULT -1,
@@ -2084,20 +2076,16 @@ async function initializeTempMirrorEntit
// Columns in `items` that correspond to annos stored in `moz_items_annos`.
// We use this table to build SQL fragments for the `insertNewLocalItems` and
// `updateExistingLocalItems` triggers below.
const syncedAnnoTriggers = [{
annoName: PlacesSyncUtils.bookmarks.DESCRIPTION_ANNO,
columnName: "newDescription",
type: PlacesUtils.annotations.TYPE_STRING,
}, {
- annoName: PlacesSyncUtils.bookmarks.SIDEBAR_ANNO,
- columnName: "newLoadInSidebar",
- type: PlacesUtils.annotations.TYPE_INT32,
- }, {
annoName: PlacesSyncUtils.bookmarks.SMART_BOOKMARKS_ANNO,
columnName: "newSmartBookmarkName",
type: PlacesUtils.annotations.TYPE_STRING,
}, {
annoName: PlacesUtils.LMANNO_FEEDURI,
columnName: "newFeedURL",
type: PlacesUtils.annotations.TYPE_STRING,
}, {
@@ -2194,17 +2182,17 @@ async function initializeTempMirrorEntit
// on this view to update Places. Note that we can't just `REPLACE INTO
// moz_bookmarks`, because `REPLACE` doesn't fire the `AFTER DELETE` triggers
// that Places uses to maintain schema coherency.
await db.execute(`
CREATE TEMP VIEW itemsToMerge(localId, remoteId, hasRemoteValue, newLevel,
oldGuid, newGuid, newType,
newDateAddedMicroseconds, newTitle,
oldPlaceId, newPlaceId, newKeyword,
- newDescription, newLoadInSidebar,
+ newDescription,
newSmartBookmarkName, newFeedURL,
newSiteURL) AS
SELECT b.id, v.id, r.valueState = ${BookmarkMergeState.TYPE.REMOTE},
r.level, r.localGuid, r.mergedGuid,
(CASE WHEN v.kind IN (${[
SyncedBookmarksMirror.KIND.BOOKMARK,
SyncedBookmarksMirror.KIND.QUERY,
].join(",")}) THEN ${PlacesUtils.bookmarks.TYPE_BOOKMARK}
@@ -2213,17 +2201,17 @@ async function initializeTempMirrorEntit
SyncedBookmarksMirror.KIND.LIVEMARK,
].join(",")}) THEN ${PlacesUtils.bookmarks.TYPE_FOLDER}
ELSE ${PlacesUtils.bookmarks.TYPE_SEPARATOR} END),
/* Take the older creation date. "b.dateAdded" is in microseconds;
"v.dateAdded" is in milliseconds. */
(CASE WHEN b.dateAdded / 1000 < v.dateAdded THEN b.dateAdded
ELSE v.dateAdded * 1000 END),
v.title, h.id, u.newPlaceId, v.keyword, v.description,
- v.loadInSidebar, v.smartBookmarkName, v.feedURL, v.siteURL
+ v.smartBookmarkName, v.feedURL, v.siteURL
FROM items v
JOIN mergeStates r ON r.mergedGuid = v.guid
LEFT JOIN moz_bookmarks b ON b.guid = r.localGuid
LEFT JOIN moz_places h ON h.id = b.fk
LEFT JOIN (
SELECT h.id AS newPlaceId, u.id AS urlId
FROM urls u
JOIN moz_places h ON h.url_hash = u.hash AND
@@ -2691,17 +2679,16 @@ async function initializeTempMirrorEntit
parentTitle TEXT,
dateAdded INTEGER, /* In milliseconds. */
type INTEGER,
title TEXT,
isQuery BOOLEAN NOT NULL DEFAULT 0,
url TEXT,
tags TEXT,
description TEXT,
- loadInSidebar BOOLEAN,
smartBookmarkName TEXT,
tagFolderName TEXT,
keyword TEXT,
feedURL TEXT,
siteURL TEXT,
position INTEGER
)`);
--- a/toolkit/components/places/tests/sync/head_sync.js
+++ b/toolkit/components/places/tests/sync/head_sync.js
@@ -131,17 +131,16 @@ async function promiseManyDatesAdded(gui
async function fetchLocalTree(rootGuid) {
function bookmarkNodeToInfo(node) {
let { guid, index, title, typeCode: type } = node;
let itemInfo = { guid, index, title, type };
if (node.annos) {
let syncableAnnos = node.annos.filter(anno => [
PlacesSyncUtils.bookmarks.DESCRIPTION_ANNO,
- PlacesSyncUtils.bookmarks.SIDEBAR_ANNO,
PlacesSyncUtils.bookmarks.SMART_BOOKMARKS_ANNO,
PlacesUtils.LMANNO_FEEDURI,
PlacesUtils.LMANNO_SITEURI,
].includes(anno.name));
if (syncableAnnos.length) {
itemInfo.annos = syncableAnnos;
}
}
--- a/toolkit/components/places/tests/sync/test_sync_utils.js
+++ b/toolkit/components/places/tests/sync/test_sync_utils.js
@@ -1,17 +1,16 @@
ChromeUtils.import("resource://gre/modules/ObjectUtils.jsm");
ChromeUtils.import("resource://gre/modules/PlacesSyncUtils.jsm");
ChromeUtils.import("resource://testing-common/httpd.js");
ChromeUtils.defineModuleGetter(this, "Preferences",
"resource://gre/modules/Preferences.jsm");
Cu.importGlobalProperties(["URLSearchParams"]);
const DESCRIPTION_ANNO = "bookmarkProperties/description";
-const LOAD_IN_SIDEBAR_ANNO = "bookmarkProperties/loadInSidebar";
const SYNC_PARENT_ANNO = "sync/parent";
var makeGuid = PlacesUtils.history.makeGuid;
function makeLivemarkServer() {
let server = new HttpServer();
server.registerPrefixHandler("/feed/", do_get_file("./livemark.xml"));
server.start(-1);
@@ -1001,40 +1000,16 @@ add_task(async function test_update_anno
description: null,
});
ok(!updatedItem.description, "Should not return cleared description");
let id = await recordIdToId(updatedItem.recordId);
ok(!PlacesUtils.annotations.itemHasAnnotation(id, DESCRIPTION_ANNO),
"Should remove description anno");
}
- info("Add bookmark sidebar anno");
- {
- let updatedItem = await PlacesSyncUtils.bookmarks.update({
- recordId: guids.bmk,
- loadInSidebar: true,
- });
- ok(updatedItem.loadInSidebar, "Should return sidebar anno");
- let id = await recordIdToId(updatedItem.recordId);
- ok(PlacesUtils.annotations.itemHasAnnotation(id, LOAD_IN_SIDEBAR_ANNO),
- "Should set sidebar anno for existing bookmark");
- }
-
- info("Clear bookmark sidebar anno");
- {
- let updatedItem = await PlacesSyncUtils.bookmarks.update({
- recordId: guids.bmk,
- loadInSidebar: false,
- });
- ok(!updatedItem.loadInSidebar, "Should not return cleared sidebar anno");
- let id = await recordIdToId(updatedItem.recordId);
- ok(!PlacesUtils.annotations.itemHasAnnotation(id, LOAD_IN_SIDEBAR_ANNO),
- "Should clear sidebar anno for existing bookmark");
- }
-
await PlacesUtils.bookmarks.eraseEverything();
await PlacesSyncUtils.bookmarks.reset();
});
add_task(async function test_update_move_root() {
info("Move root to same parent");
{
// This should be a no-op.
@@ -1489,47 +1464,16 @@ add_task(async function test_insert_anno
{
equal(descFolder.description, "Folder description",
"Should return new folder description");
let id = await recordIdToId(descFolder.recordId);
equal(PlacesUtils.annotations.getItemAnnotation(id, DESCRIPTION_ANNO),
"Folder description", "Should set new folder description");
}
- info("Bookmark with sidebar anno");
- let sidebarBmk = await PlacesSyncUtils.bookmarks.insert({
- kind: "bookmark",
- url: "https://example.com",
- recordId: makeGuid(),
- parentRecordId: "menu",
- loadInSidebar: true,
- });
- {
- ok(sidebarBmk.loadInSidebar, "Should return sidebar anno for new bookmark");
- let id = await recordIdToId(sidebarBmk.recordId);
- ok(PlacesUtils.annotations.itemHasAnnotation(id, LOAD_IN_SIDEBAR_ANNO),
- "Should set sidebar anno for new bookmark");
- }
-
- info("Bookmark without sidebar anno");
- let noSidebarBmk = await PlacesSyncUtils.bookmarks.insert({
- kind: "bookmark",
- url: "https://example.org",
- recordId: makeGuid(),
- parentRecordId: "toolbar",
- loadInSidebar: false,
- });
- {
- ok(!noSidebarBmk.loadInSidebar,
- "Should not return sidebar anno for new bookmark");
- let id = await recordIdToId(noSidebarBmk.recordId);
- ok(!PlacesUtils.annotations.itemHasAnnotation(id, LOAD_IN_SIDEBAR_ANNO),
- "Should not set sidebar anno for new bookmark");
- }
-
await PlacesUtils.bookmarks.eraseEverything();
await PlacesSyncUtils.bookmarks.reset();
});
add_task(async function test_insert_tag_query() {
info("Use the public tagging API to ensure we added the tag correctly");
await PlacesUtils.bookmarks.insert({
parentGuid: PlacesUtils.bookmarks.menuGuid,
@@ -1818,17 +1762,16 @@ add_task(async function test_fetch() {
description: "Folder description",
});
let bmk = await PlacesSyncUtils.bookmarks.insert({
recordId: makeGuid(),
parentRecordId: "menu",
kind: "bookmark",
url: "https://example.com",
description: "Bookmark description",
- loadInSidebar: true,
tags: ["taggy"],
});
let folderBmk = await PlacesSyncUtils.bookmarks.insert({
recordId: makeGuid(),
parentRecordId: folder.recordId,
kind: "bookmark",
url: "https://example.org",
keyword: "kw",
@@ -1865,39 +1808,37 @@ add_task(async function test_fetch() {
description: "Folder description",
childRecordIds: [folderBmk.recordId, folderSep.recordId],
parentTitle: "menu",
dateAdded: item.dateAdded,
title: "",
}, "Should include description, children, title, and parent title in folder");
}
- info("Fetch bookmark with description, sidebar anno, and tags");
+ info("Fetch bookmark with description and tags");
{
let item = await PlacesSyncUtils.bookmarks.fetch(bmk.recordId);
deepEqual(Object.keys(item).sort(), ["recordId", "kind", "parentRecordId",
- "url", "tags", "description", "loadInSidebar", "parentTitle", "title", "dateAdded"].sort(),
+ "url", "tags", "description", "parentTitle", "title", "dateAdded"].sort(),
"Should include bookmark-specific properties");
equal(item.recordId, bmk.recordId, "Sync ID should match");
equal(item.url.href, "https://example.com/", "Should return URL");
equal(item.parentRecordId, "menu", "Should return parent sync ID");
deepEqual(item.tags, ["taggy"], "Should return tags");
equal(item.description, "Bookmark description", "Should return bookmark description");
- strictEqual(item.loadInSidebar, true, "Should return sidebar anno");
equal(item.parentTitle, "menu", "Should return parent title");
strictEqual(item.title, "", "Should return empty title");
}
- info("Fetch bookmark with keyword; without parent title or annos");
+ info("Fetch bookmark with keyword; without parent title");
{
let item = await PlacesSyncUtils.bookmarks.fetch(folderBmk.recordId);
deepEqual(Object.keys(item).sort(), ["recordId", "kind", "parentRecordId",
- "url", "keyword", "tags", "loadInSidebar", "parentTitle", "title", "dateAdded"].sort(),
+ "url", "keyword", "tags", "parentTitle", "title", "dateAdded"].sort(),
"Should omit blank bookmark-specific properties");
- strictEqual(item.loadInSidebar, false, "Should not load bookmark in sidebar");
deepEqual(item.tags, [], "Tags should be empty");
equal(item.keyword, "kw", "Should return keyword");
strictEqual(item.parentTitle, "", "Should include parent title even if empty");
strictEqual(item.title, "", "Should include bookmark title even if empty");
}
info("Fetch separator");
{
--- a/toolkit/components/places/tests/unit/test_384370.js
+++ b/toolkit/components/places/tests/unit/test_384370.js
@@ -1,9 +1,8 @@
-const LOAD_IN_SIDEBAR_ANNO = "bookmarkProperties/loadInSidebar";
const DESCRIPTION_ANNO = "bookmarkProperties/description";
var tagData = [
{ uri: uri("http://slint.us"), tags: ["indie", "kentucky", "music"] },
{ uri: uri("http://en.wikipedia.org/wiki/Diplodocus"), tags: ["dinosaur", "dj", "rad word"] }
];
var bookmarkData = [
@@ -100,18 +99,16 @@ async function testMenuBookmarks() {
// open test folder, and test the children
folderNode.containerOpen = true;
Assert.equal(folderNode.childCount, 1);
let bookmarkNode = folderNode.getChild(0);
Assert.equal("http://test/post", bookmarkNode.uri);
Assert.equal("test post keyword", bookmarkNode.title);
- Assert.ok(PlacesUtils.annotations.itemHasAnnotation(bookmarkNode.itemId,
- LOAD_IN_SIDEBAR_ANNO));
Assert.equal(bookmarkNode.dateAdded, 1177375336000000);
let entry = await PlacesUtils.keywords.fetch({ url: bookmarkNode.uri });
Assert.equal("test", entry.keyword);
Assert.equal("hidden1%3Dbar&text1%3D%25s", entry.postData);
Assert.equal("ISO-8859-1",
(await PlacesUtils.getCharsetForURI(NetUtil.newURI(bookmarkNode.uri))));
--- a/toolkit/components/places/tests/unit/test_bookmarks_html.js
+++ b/toolkit/components/places/tests/unit/test_bookmarks_html.js
@@ -1,15 +1,14 @@
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
/* vim:set ts=2 sw=2 sts=2 et: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-const LOAD_IN_SIDEBAR_ANNO = "bookmarkProperties/loadInSidebar";
const DESCRIPTION_ANNO = "bookmarkProperties/description";
// An object representing the contents of bookmarks.preplaces.html.
var test_bookmarks = {
menu: [
{ title: "Mozilla Firefox",
children: [
{ title: "Help and Tutorials",
@@ -38,17 +37,16 @@ var test_bookmarks = {
dateAdded: 1177541020000000,
lastModified: 1177541050000000,
children: [
{ title: "test post keyword",
description: "item description",
dateAdded: 1177375336000000,
lastModified: 1177375423000000,
keyword: "test",
- sidebar: true,
postData: "hidden1%3Dbar&text1%3D%25s",
charset: "ISO-8859-1",
url: "http://test/post"
}
]
}
],
toolbar: [
@@ -317,21 +315,16 @@ function checkItem(aExpected, aNode) {
base64EncodeString(String.fromCharCode.apply(String, data));
Assert.ok(base64Icon == aExpected.icon);
break;
case "keyword": {
let entry = await PlacesUtils.keywords.fetch({ url: aNode.uri });
Assert.equal(entry.keyword, aExpected.keyword);
break;
}
- case "sidebar":
- Assert.equal(PlacesUtils.annotations
- .itemHasAnnotation(id, LOAD_IN_SIDEBAR_ANNO),
- aExpected.sidebar);
- break;
case "postData": {
let entry = await PlacesUtils.keywords.fetch({ url: aNode.uri });
Assert.equal(entry.postData, aExpected.postData);
break;
}
case "charset":
let testURI = NetUtil.newURI(aNode.uri);
Assert.equal((await PlacesUtils.getCharsetForURI(testURI)), aExpected.charset);
--- a/toolkit/components/places/tests/unit/test_bookmarks_html_corrupt.js
+++ b/toolkit/components/places/tests/unit/test_bookmarks_html_corrupt.js
@@ -1,15 +1,14 @@
/*
* This test ensures that importing/exporting to HTML does not stop
* if a malformed uri is found.
*/
const DESCRIPTION_ANNO = "bookmarkProperties/description";
-const LOAD_IN_SIDEBAR_ANNO = "bookmarkProperties/loadInSidebar";
const TEST_FAVICON_PAGE_URL = "http://en-US.www.mozilla.com/en-US/firefox/central/";
const TEST_FAVICON_DATA_SIZE = 580;
add_task(async function test_corrupt_file() {
// avoid creating the places smart folder during tests
Services.prefs.setIntPref("browser.places.smartBookmarksVersion", -1);
@@ -77,18 +76,16 @@ var database_check = async function() {
let bookmarkNode = folderNode.getChild(0);
Assert.equal("http://test/post", bookmarkNode.uri);
Assert.equal("test post keyword", bookmarkNode.title);
let entry = await PlacesUtils.keywords.fetch({ url: bookmarkNode.uri });
Assert.equal("test", entry.keyword);
Assert.equal("hidden1%3Dbar&text1%3D%25s", entry.postData);
- Assert.ok(PlacesUtils.annotations.itemHasAnnotation(bookmarkNode.itemId,
- LOAD_IN_SIDEBAR_ANNO));
Assert.equal(bookmarkNode.dateAdded, 1177375336000000);
Assert.equal(bookmarkNode.lastModified, 1177375423000000);
Assert.equal((await PlacesUtils.getCharsetForURI(NetUtil.newURI(bookmarkNode.uri))),
"ISO-8859-1");
Assert.equal("item description",
PlacesUtils.annotations.getItemAnnotation(bookmarkNode.itemId,
--- a/toolkit/components/places/tests/unit/test_bookmarks_json.js
+++ b/toolkit/components/places/tests/unit/test_bookmarks_json.js
@@ -1,15 +1,14 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
ChromeUtils.import("resource://gre/modules/BookmarkJSONUtils.jsm");
-const LOAD_IN_SIDEBAR_ANNO = "bookmarkProperties/loadInSidebar";
const DESCRIPTION_ANNO = "bookmarkProperties/description";
// An object representing the contents of bookmarks.json.
var test_bookmarks = {
menu: [
{ guid: "OCyeUO5uu9FF",
title: "Mozilla Firefox",
children: [
@@ -51,17 +50,16 @@ var test_bookmarks = {
lastModified: 1177541050000000,
children: [
{ guid: "OCyeUO5uu9GX",
title: "test post keyword",
description: "item description",
dateAdded: 1177375336000000,
lastModified: 1177375423000000,
keyword: "test",
- sidebar: true,
postData: "hidden1%3Dbar&text1%3D%25s",
charset: "ISO-8859-1"
}
]
}
],
toolbar: [
{ guid: "OCyeUO5uu9FB",
@@ -212,20 +210,16 @@ async function checkItem(aExpected, aNod
case "keyword": {
let entry = await PlacesUtils.keywords.fetch({ url: aNode.uri });
Assert.equal(entry.keyword, aExpected.keyword);
break;
}
case "guid":
Assert.equal(bookmark.guid, aExpected.guid);
break;
- case "sidebar":
- Assert.equal(PlacesUtils.annotations.itemHasAnnotation(
- id, LOAD_IN_SIDEBAR_ANNO), aExpected.sidebar);
- break;
case "postData": {
let entry = await PlacesUtils.keywords.fetch({ url: aNode.uri });
Assert.equal(entry.postData, aExpected.postData);
break;
}
case "charset":
let testURI = Services.io.newURI(aNode.uri);
Assert.equal((await PlacesUtils.getCharsetForURI(testURI)), aExpected.charset);