From d8d0594984b9b35a348173bc07600d588f72eb84 Mon Sep 17 00:00:00 2001
From: Jesse <jesse@orangecoding.com>
Date: Fri, 4 Jul 2014 21:57:39 -0400
Subject: [PATCH] Changed JavaScript Tracking Code generation to use "//",
 instead of verifying whether the site is using "https", or not, and
 generating a corresponding URL.

"//" has been part of the RFC for well over 18 years. It has been confirmed to work in all major browsers (Firefox, Chrome, IE, Opera).

References:
- RFC 1808 Section 4: http://www.ietf.org/rfc/rfc1808.txt
- RFC 3986 Section 5.2: http://www.ietf.org/rfc/rfc3986.txt
- Stack Overflow QA 1: http://stackoverflow.com/q/4659345/238722
- Stack Overflow QA 2: http://stackoverflow.com/q/6785442/238722
---
 core/Piwik.php                                              | 4 ++--
 misc/others/tracker_simpleImageTracker.php                  | 6 +++---
 misc/proxy-hide-piwik-url/README.md                         | 6 +++---
 ...etReportMetadata_year__SitesManager.getJavascriptTag.xml | 6 +++---
 4 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/core/Piwik.php b/core/Piwik.php
index 7e64d9021e..b043fe24ad 100644
--- a/core/Piwik.php
+++ b/core/Piwik.php
@@ -204,12 +204,12 @@ class Piwik
         self::postEvent('Piwik.getJavascriptCode', array(&$codeImpl, $parameters));
 
         if (!empty($codeImpl['httpsPiwikUrl'])) {
-            $setTrackerUrl = 'var u=(("https:" == document.location.protocol) ? "https://{$httpsPiwikUrl}/" : '
+            $setTrackerUrl = 'var u=((document.location.protocol === "https:") ? "https://{$httpsPiwikUrl}/" : '
                            . '"http://{$piwikUrl}/");';
 
             $codeImpl['httpsPiwikUrl'] = rtrim($codeImpl['httpsPiwikUrl'], "/");
         } else {
-            $setTrackerUrl = 'var u=(("https:" == document.location.protocol) ? "https" : "http") + "://{$piwikUrl}/";';
+            $setTrackerUrl = 'var u="//{$piwikUrl}/";';
         }
         $codeImpl = array('setTrackerUrl' => htmlentities($setTrackerUrl)) + $codeImpl;
 
diff --git a/misc/others/tracker_simpleImageTracker.php b/misc/others/tracker_simpleImageTracker.php
index 30f6c2b211..6bcaf21fd1 100644
--- a/misc/others/tracker_simpleImageTracker.php
+++ b/misc/others/tracker_simpleImageTracker.php
@@ -12,11 +12,11 @@ $trackingURL = Piwik_getUrlTrackPageView($idSite = 16, $customTitle = 'This titl
 <script type="text/javascript">
     var _paq = _paq || [];
     (function() {
-        var u=(("https:" == document.location.protocol) ? "https" : "http") + "://localhost/piwik-master/";
+        var u="//localhost/piwik-master/";
         _paq.push(["setTrackerUrl", u+"piwik.php"]);
         _paq.push(["setSiteId", "16"]);
-        var d=document, g=d.createElement("script"), s=d.getElementsByTagName("script")[0]; g.type="text/javascript";
-        g.defer=true; g.async=true; g.src=u+"js/piwik.js"; s.parentNode.insertBefore(g,s);
+        var d=document, g=d.createElement("script"), s=d.getElementsByTagName("script")[0];
+        g.type="text/javascript"; g.async=true; g.defer=true; g.src=u+"piwik.js"; s.parentNode.insertBefore(g,s);
     })();
 </script>
 <!-- End Piwik Code -->
diff --git a/misc/proxy-hide-piwik-url/README.md b/misc/proxy-hide-piwik-url/README.md
index 016bbe1536..fcdf168c6e 100644
--- a/misc/proxy-hide-piwik-url/README.md
+++ b/misc/proxy-hide-piwik-url/README.md
@@ -29,11 +29,11 @@ To run this properly you will need
    ```
    [...]
    (function() {
-       var u=(("https:" == document.location.protocol) ? "https" : "http") + "://trackedsite.com/";
+       var u="//trackedsite.com/";
        _paq.push(["setTrackerUrl", u+"piwik.php"]);
        _paq.push(["setSiteId", "trackedsite-id"]);
-       var d=document, g=d.createElement("script"), s=d.getElementsByTagName("script")[0]; g.type="text/javascript";
-       g.defer=true; g.async=true; g.src=u+"piwik.php"; s.parentNode.insertBefore(g,s);
+       var d=document, g=d.createElement("script"), s=d.getElementsByTagName("script")[0];
+       g.type="text/javascript"; g.async=true; g.defer=true; g.src=u+"piwik.php"; s.parentNode.insertBefore(g,s);
    })();
    </script>
    <!-- End Piwik Code -->
diff --git a/tests/PHPUnit/Integration/expected/test_apiGetReportMetadata_year__SitesManager.getJavascriptTag.xml b/tests/PHPUnit/Integration/expected/test_apiGetReportMetadata_year__SitesManager.getJavascriptTag.xml
index 3da4a2d812..9d3ec5fb2a 100644
--- a/tests/PHPUnit/Integration/expected/test_apiGetReportMetadata_year__SitesManager.getJavascriptTag.xml
+++ b/tests/PHPUnit/Integration/expected/test_apiGetReportMetadata_year__SitesManager.getJavascriptTag.xml
@@ -5,11 +5,11 @@
   _paq.push(['trackPageView']);
   _paq.push(['enableLinkTracking']);
   (function() {
-    var u=((&quot;https:&quot; == document.location.protocol) ? &quot;https&quot; : &quot;http&quot;) + &quot;://example.org/piwik/&quot;;
+    var u=&quot;//example.org/piwik/&quot;;
     _paq.push(['setTrackerUrl', u+'piwik.php']);
     _paq.push(['setSiteId', 1]);
-    var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.type='text/javascript';
-    g.defer=true; g.async=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);
+    var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
+    g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);
   })();
 &lt;/script&gt;
 &lt;noscript&gt;&lt;p&gt;&lt;img src=&quot;http://example.org/piwik/piwik.php?idsite=1&quot; style=&quot;border:0;&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/noscript&gt;
-- 
GitLab