Bug 1257804 - avoid copy-pasting about:reader and copy-paste the URL instead, r?dolske draft
authorGijs Kruitbosch <gijskruitbosch@gmail.com>
Mon, 21 Mar 2016 11:25:17 +0000
changeset 342841 7d752e42ae22902e4a45e3d62b56f1af624c1087
parent 342840 8279c04272ee46eac5fc60ba52065ed7aefc5b28
child 516628 0556514ae05deccf05f8c850dca57dfe3dd4d7a7
push id13464
push usergijskruitbosch@gmail.com
push dateMon, 21 Mar 2016 11:25:45 +0000
reviewersdolske
bugs1257804
milestone48.0a1
Bug 1257804 - avoid copy-pasting about:reader and copy-paste the URL instead, r?dolske MozReview-Commit-ID: IzBVSG4ZUte
browser/base/content/test/general/browser_readerMode.js
browser/base/content/urlbarBindings.xml
--- a/browser/base/content/test/general/browser_readerMode.js
+++ b/browser/base/content/test/general/browser_readerMode.js
@@ -55,16 +55,25 @@ add_task(function* test_reader_button() 
 
   let readerUrl = gBrowser.selectedBrowser.currentURI.spec;
   ok(readerUrl.startsWith("about:reader"), "about:reader loaded after clicking reader mode button");
   is_element_visible(readerButton, "Reader mode button is present on about:reader");
 
   is(gURLBar.value, readerUrl, "gURLBar value is about:reader URL");
   is(gURLBar.textValue, url.substring("http://".length), "gURLBar is displaying original article URL");
 
+  // Check selected value for URL bar
+  yield new Promise((resolve, reject) => {
+    waitForClipboard(url, function () {
+      gURLBar.focus();
+      gURLBar.select();
+      goDoCommand("cmd_copy");
+    }, resolve, reject);
+  });
+
   // Switch page back out of reader mode.
   readerButton.click();
   yield promiseTabLoadEvent(tab);
   is(gBrowser.selectedBrowser.currentURI.spec, url,
     "Original page loaded after clicking active reader mode button");
 
   // Load a new tab that is NOT reader-able.
   let newTab = gBrowser.selectedTab = gBrowser.addTab();
--- a/browser/base/content/urlbarBindings.xml
+++ b/browser/base/content/urlbarBindings.xml
@@ -607,16 +607,22 @@ file, You can obtain one at http://mozil
             // We're dealing with an autocompleted value, create a new URI from that.
             try {
               uri = uriFixup.createFixupURI(inputVal, Ci.nsIURIFixup.FIXUP_FLAG_NONE);
             } catch (e) {}
             if (!uri)
               return selectedVal;
           }
 
+          // Avoid copying 'about:reader?url=', and always provide the original URI:
+          let readerOriginalURL = ReaderMode.getOriginalUrl(uri.spec);
+          if (readerOriginalURL) {
+            uri = uriFixup.createFixupURI(readerOriginalURL, Ci.nsIURIFixup.FIXUP_FLAG_NONE);
+          }
+
           // Only copy exposable URIs
           try {
             uri = uriFixup.createExposableURI(uri);
           } catch (ex) {}
 
           // If the entire URL is selected, just use the actual loaded URI.
           if (inputVal == selectedVal) {
             // ... but only if  isn't a javascript: or data: URI, since those