diff --git a/browser/base/content/browser.css b/browser/base/content/browser.css
index 3a5069551a6..3330848d5b4 100644
--- a/browser/base/content/browser.css
+++ b/browser/base/content/browser.css
@@ -3,6 +3,10 @@ searchbar {
}
/* ::::: location bar ::::: */
+#urlbar {
+ -moz-binding: url(chrome://browser/content/urlbarBindings.xml#urlbar);
+}
+
#PopupAutoComplete {
-moz-binding: url("chrome://browser/content/urlbarBindings.xml#urlbar-result-popup");
}
diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js
index 7561b38df7d..98af79a85e5 100644
--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
@@ -1016,8 +1016,10 @@ function delayedStartup()
goButtonStack.setAttribute("hidden", "true");
}
- if (gURLBar)
+ if (gURLBar) {
+ gURLBar.addEventListener("dragover", URLBarOnDragOver, true);
gURLBar.addEventListener("dragdrop", URLBarOnDrop, true);
+ }
gBrowser.addEventListener("pageshow", function(evt) { setTimeout(pageShowEventHandlers, 0, evt); }, true);
@@ -2469,12 +2471,21 @@ function PageProxyClickHandler(aEvent)
return true;
}
+function URLBarOnDragOver(evt)
+{
+ nsDragAndDrop.dragOver(evt, urlbarObserver);
+}
+
function URLBarOnDrop(evt)
{
nsDragAndDrop.drop(evt, urlbarObserver);
}
var urlbarObserver = {
+ onDragOver: function ()
+ {
+ return true;
+ },
onDrop: function (aEvent, aXferData, aDragSession)
{
var url = transferUtils.retrieveURLFromData(aXferData.data, aXferData.flavour.contentType);
diff --git a/browser/base/content/browser.xul b/browser/base/content/browser.xul
index 7404282573b..bc91b23d286 100644
--- a/browser/base/content/browser.xul
+++ b/browser/base/content/browser.xul
@@ -132,6 +132,10 @@
+
+
+
+
#ifndef MOZ_PLACES
diff --git a/browser/base/content/urlbarBindings.xml b/browser/base/content/urlbarBindings.xml
index fff7bf3af3f..3bb141d84ec 100644
--- a/browser/base/content/urlbarBindings.xml
+++ b/browser/base/content/urlbarBindings.xml
@@ -22,6 +22,7 @@
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
+# Dão Gottwald
#
# Alternatively, the contents of this file may be used under the terms of
# either the GNU General Public License Version 2 or later (the "GPL"), or
@@ -37,7 +38,496 @@
#
# ***** END LICENSE BLOCK *****
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ []
+
+
+
+ []
+
+
+ document.getAnonymousElementByAttribute(this, "anonid", "textbox-input-box");
+
+
+ document.getAnonymousElementByAttribute(this, "anonid", "presentation-box");
+
+
+ document.getAnonymousElementByAttribute(this, "anonid", "overflow-ellipsis");
+
+
+ document.getAnonymousElementByAttribute(this, "anonid", "prePath");
+
+
+ document.getAnonymousElementByAttribute(this, "anonid", "protocol");
+
+
+ document.getAnonymousElementByAttribute(this, "anonid", "subdomain");
+
+
+ document.getAnonymousElementByAttribute(this, "anonid", "domain");
+
+
+ document.getAnonymousElementByAttribute(this, "anonid", "port");
+
+
+ document.getAnonymousElementByAttribute(this, "anonid", "directory");
+
+
+ document.getAnonymousElementByAttribute(this, "anonid", "fileBaseName");
+
+
+ document.getAnonymousElementByAttribute(this, "anonid", "fileExtension");
+
+
+ document.getAnonymousElementByAttribute(this, "anonid", "param");
+
+
+ document.getAnonymousElementByAttribute(this, "anonid", "query");
+
+
+ document.getAnonymousElementByAttribute(this, "anonid", "ref");
+
+
+ document.getElementById("urlTooltip");
+
+
+ this._urlTooltip.getElementsByTagName("label")[0];
+
+
+ Components.classes["@mozilla.org/network/effective-tld-service;1"]
+ .getService(Components.interfaces.nsIEffectiveTLDService);
+
+
+ Components.classes["@mozilla.org/network/io-service;1"]
+ .getService(Components.interfaces.nsIIOService);
+
+
+ Components.classes["@mozilla.org/preferences-service;1"]
+ .getService(Components.interfaces.nsIPrefService)
+ .getBranch("browser.urlbar.")
+ .QueryInterface(Components.interfaces.nsIPrefBranch2);
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+ 1 ? arguments : arguments[0];
+ ]]>
+
+
+
+
+ -1;
+ this._subDomain.removeAttribute("value");
+ this._port.removeAttribute("value");
+
+ var host = this._uri.host;
+ if (host) {
+ //XXX workaround for bug 364129
+ if (!/^[.0-9]+$/.test(host)) {
+ // getEffectiveTLDLength might convert our host and return a misleading length.
+ // To avoid this, pass the ASCII host, count the dots of its effective TLD
+ // and use that number to operate on our actual host.
+
+ var asciiHost = this._uri.asciiHost;
+ var domainSegments = host.split(".");
+ var cSubdomain = domainSegments.length -
+ asciiHost.slice(asciiHost.length -
+ this._tldService.getEffectiveTLDLength(asciiHost))
+ .split(".").length - 1;
+ if (cSubdomain > 0) {
+ host = domainSegments;
+ var subdomain = host.splice(0, cSubdomain);
+ this._subDomain.setAttribute("value", subdomain.join(".") + ".");
+ host = host.join(".");
+ }
+ }
+ this._domain.setAttribute("value", host);
+ if (this._uri.port > -1)
+ this._port.setAttribute("value", ":" + this._uri.port);
+ } else {
+ this._domain.removeAttribute("value");
+ }
+
+ [directory, fileBaseName, fileExtension, param, query, ref]
+ = this._decodeURI(this._uri.directory,
+ this._uri.fileBaseName,
+ this._uri.fileExtension,
+ this._uri.param,
+ this._uri.query,
+ this._uri.ref);
+
+ this._directory.setAttribute("value", directory);
+ this._fileBaseName.setAttribute("value", fileBaseName);
+ this._fileExtension.setAttribute("value", fileExtension ? "." + fileExtension : "");
+ this._param.setAttribute("value", param ? ";" + param : "");
+ this._query.setAttribute("value", query ? "?" + query : "");
+ this._ref.setAttribute("value", ref ? "#" + ref : "");
+ ]]>
+
+
+
+
+
+
+
+
+ 0) {
+ opacity -= opacity * DECLINATION_REL + DECLINATION_ABS;
+ if (opacity < 0)
+ opacity = 0;
+ this._blendingTimers.push(setTimeout(processFrame, delay, opacity, delay == INITIAL_DELAY));
+ delay += FRAME_LENGTH;
+ }
+ ]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ pBO.screenX + pBO.width)
+ return;
+ }
+ this._mouseover = true;
+ setTimeout(function(self) {
+ if (self._mouseover) {
+ self.plain = true;
+ if (!self._focused && self._contentIsCropped)
+ self._initURLTooltip(function() {
+ return this.plain ? this.value : null;
+ }, self, "start");
+ }
+ }, 60, this);
+ ]]>
+
+
+
+
+
+
+
+
+
+