From 43b7d3c2a0e3ca7348453d46874da64393c3e273 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A3o=20Gottwald?= Date: Tue, 20 Sep 2011 05:35:33 +0200 Subject: [PATCH] Bug 668019 - prepend http:// to URL copy selection if URL has been selected (but not loaded) from location bar. r=gavin --- browser/base/content/browser.js | 1 + browser/base/content/test/browser_bug556061.js | 2 ++ .../base/content/test/browser_urlbarCopying.js | 4 +++- .../base/content/test/browser_urlbarTrimURLs.js | 2 ++ browser/base/content/urlbarBindings.xml | 16 +++++++++++++--- toolkit/content/widgets/autocomplete.xml | 3 +++ 6 files changed, 24 insertions(+), 4 deletions(-) diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js index a696a12a743..a4515795ff4 100644 --- a/browser/base/content/browser.js +++ b/browser/base/content/browser.js @@ -2509,6 +2509,7 @@ function URLBarSetURI(aURI) { } gURLBar.value = value; + gURLBar.valueIsTyped = !valid; SetPageProxyState(valid ? "valid" : "invalid"); } diff --git a/browser/base/content/test/browser_bug556061.js b/browser/base/content/test/browser_bug556061.js index e0f23fdea7b..45ad22114b3 100644 --- a/browser/base/content/test/browser_bug556061.js +++ b/browser/base/content/test/browser_bug556061.js @@ -63,6 +63,7 @@ let tests = [ expected: testURL, setup: function() { gURLBar.value = testActionURL; + gURLBar.valueIsTyped = true; is(gURLBar.value, testActionURL, "gURLBar.value starts with correct value"); // Focus the urlbar so we can select it all & copy @@ -103,6 +104,7 @@ let tests = [ setup: function() { // Reset urlbar value gURLBar.value = testActionURL; + gURLBar.valueIsTyped = true; // Sanity check that we have the right value is(gURLBar.value, testActionURL, "gURLBar.value starts with correct value"); diff --git a/browser/base/content/test/browser_urlbarCopying.js b/browser/base/content/test/browser_urlbarCopying.js index 8024fd4b6b4..65c82084e7c 100644 --- a/browser/base/content/test/browser_urlbarCopying.js +++ b/browser/base/content/test/browser_urlbarCopying.js @@ -126,8 +126,10 @@ function nextTest() { function runTest(test, cb) { function doCheck() { - if (test.setURL || test.loadURL) + if (test.setURL || test.loadURL) { + gURLBar.valueIsTyped = !!test.setURL; is(gURLBar.value, test.expectedURL, "url bar value set"); + } testCopy(test.copyVal, test.copyExpected, cb); } diff --git a/browser/base/content/test/browser_urlbarTrimURLs.js b/browser/base/content/test/browser_urlbarTrimURLs.js index df70890f7b7..74ee78a0a38 100644 --- a/browser/base/content/test/browser_urlbarTrimURLs.js +++ b/browser/base/content/test/browser_urlbarTrimURLs.js @@ -4,6 +4,7 @@ function testVal(originalValue, targetValue) { gURLBar.value = originalValue; + gURLBar.valueIsTyped = false; is(gURLBar.value, targetValue || originalValue, "url bar value set"); } @@ -63,6 +64,7 @@ function test() { testCopy("example.com", "http://example.com/", function () { SetPageProxyState("invalid"); + gURLBar.valueIsTyped = true; testCopy("example.com", "example.com", finish); }); }, true); diff --git a/browser/base/content/urlbarBindings.xml b/browser/base/content/urlbarBindings.xml index 641e750a43b..6ea464fdca6 100644 --- a/browser/base/content/urlbarBindings.xml +++ b/browser/base/content/urlbarBindings.xml @@ -185,6 +185,8 @@ @@ -497,13 +499,21 @@ // If the selection doesn't start at the beginning or URL bar is // modified, nothing else to do here. - if (this.getAttribute("pageproxystate") != "valid" || this.selectionStart > 0) + if (this.selectionStart > 0 || this.valueIsTyped) + return selectedVal; + + let uriFixup = Cc["@mozilla.org/docshell/urifixup;1"].getService(Ci.nsIURIFixup); + + let uri; + try { + uri = uriFixup.createFixupURI(inputVal, Ci.nsIURIFixup.FIXUP_FLAG_NONE); + } catch (e) {} + if (!uri) return selectedVal; - let uri = gBrowser.currentURI; // Only copy exposable URIs try { - uri = Cc["@mozilla.org/docshell/urifixup;1"].getService(Ci.nsIURIFixup).createExposableURI(uri); + uri = uriFixup.createExposableURI(uri); } catch (ex) {} // If the entire URL is selected, just use the actual loaded URI. diff --git a/toolkit/content/widgets/autocomplete.xml b/toolkit/content/widgets/autocomplete.xml index 51ec8179dc0..c525b84f39c 100644 --- a/toolkit/content/widgets/autocomplete.xml +++ b/toolkit/content/widgets/autocomplete.xml @@ -265,6 +265,7 @@ + false