diff --git a/mozilla/browser/base/content/browser.js b/mozilla/browser/base/content/browser.js
index ec941a74cf9..c3f1c6e2ab2 100644
--- a/mozilla/browser/base/content/browser.js
+++ b/mozilla/browser/base/content/browser.js
@@ -519,10 +519,84 @@ function BrowserHome()
loadURI(homePage);
}
-function updateGoMenu(event)
+function constructGoMenuItem(goMenu, beforeItem, url, title)
{
- // XXX Write me - dwh
+ const kXULNS =
+ "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
+ var menuitem = document.createElementNS(kXULNS, "menuitem");
+ menuitem.setAttribute("url", url);
+ menuitem.setAttribute("label", title);
+ goMenu.insertBefore(menuitem, beforeItem);
+ return menuitem;
+}
+
+function onGoMenuHidden()
+{
+ setTimeout("destroyGoMenuItems(document.getElementById('goPopup'));", 0);
+}
+
+function destroyGoMenuItems(goMenu) {
+ var history = document.getElementById("hiddenHistoryTree");
+ history.removeAttribute("ref");
+
+ var startSeparator = document.getElementById("startHistorySeparator");
+ var endSeparator = document.getElementById("endHistorySeparator");
+ endSeparator.hidden = true;
+
+ // Destroy the items.
+ var destroy = false;
+ for (var i = 0; i < goMenu.childNodes.length; i++) {
+ var item = goMenu.childNodes[i];
+ if (item == endSeparator)
+ break;
+
+ if (destroy) {
+ i--;
+ goMenu.removeChild(item);
+ }
+
+ if (item == startSeparator)
+ destroy = true;
+ }
+}
+
+function updateGoMenu(goMenu)
+{
+ var history = document.getElementById("hiddenHistoryTree");
+ if (history.hidden)
+ history.hidden = false;
+
+ if (!history.ref)
+ history.ref = "NC:HistoryRoot";
+
+ var count = history.treeBoxObject.view.rowCount;
+ if (count > 10)
+ count = 10;
+
+ if (count == 0)
+ return;
+
+ const NC_NS = "http://home.netscape.com/NC-rdf#";
+
+ if (!gRDF)
+ gRDF = Components.classes["@mozilla.org/rdf/rdf-service;1"]
+ .getService(Components.interfaces.nsIRDFService);
+
+ var builder = history.builder.QueryInterface(Components.interfaces.nsIXULTreeBuilder);
+
+ var beforeItem = document.getElementById("endHistorySeparator");
+ beforeItem.hidden = false;
+
+ var nameResource = gRDF.GetResource(NC_NS + "Name");
+
+ for (var i = count-1; i >= 0; i--) {
+ var res = builder.getResourceAtIndex(i);
+ var url = res.Value;
+ var titleRes = history.database.GetTarget(res, nameResource, true);
+ var titleLiteral = titleRes.QueryInterface(Components.interfaces.nsIRDFLiteral);
+ beforeItem = constructGoMenuItem(goMenu, beforeItem, url, titleLiteral.Value);
+ }
}
function addGroupmarkAs()
diff --git a/mozilla/browser/base/content/browser.xul b/mozilla/browser/base/content/browser.xul
index 83dbafd1a8d..1c519d95ca8 100644
--- a/mozilla/browser/base/content/browser.xul
+++ b/mozilla/browser/base/content/browser.xul
@@ -429,6 +429,30 @@ Contributor(s):
oncommand="gContextMenu.showMetadata();"/>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -634,14 +658,14 @@ Contributor(s):
-