diff --git a/chromium/background-scripts/background.js b/chromium/background-scripts/background.js index 9d19dfb1c017..3e1bab36ec0a 100644 --- a/chromium/background-scripts/background.js +++ b/chromium/background-scripts/background.js @@ -1,3 +1,5 @@ +/* global bowser */ + "use strict"; (function(exports) { @@ -326,8 +328,7 @@ function onBeforeRequest(details) { var upgradeToSecure = false; var newuristr = null; // check rewritten URIs against the trivially upgraded URI - var trivialUpgradeUri = canonical_url.replace(rules.trivial_rule_from_c, - rules.trivial_rule_to); + var trivialUpgradeUri = canonical_url.replace(/^http:/, "https:"); for (let ruleset of potentiallyApplicable) { appliedRulesets.addRulesetToTab(details.tabId, details.type, ruleset); @@ -381,7 +382,7 @@ function onBeforeRequest(details) { } } - if (upgradeToSecure && getBrowserInfo().name == 'Firefox' && getBrowserInfo().version >= 59) { + if (upgradeToSecure && bowser.firefox && bowser.version >= 59) { return {upgradeToSecure: true}; } else if (newuristr) { return {redirectUrl: newuristr}; diff --git a/chromium/background-scripts/util.js b/chromium/background-scripts/util.js index 001cb0edd08a..9d7dfc98bde3 100644 --- a/chromium/background-scripts/util.js +++ b/chromium/background-scripts/util.js @@ -106,48 +106,3 @@ Object.assign(exports, { }); })(typeof exports == 'undefined' ? require.scopes.util = {} : exports); - -// from -// https://www.gregoryvarghese.com/how-to-get-browser-name-and-version-via-javascript/ -function getBrowserInfo() { - var agent = navigator.userAgent, - match = agent.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i); - - if (!match) { - return { - name: null, - version: null - }; - } - - var name = match[1], - version = match[2]; - - if (/trident/i.test(name)) { - var ieMatch = /\brv[ :]+(\d+)/g.exec(agent) || []; - return { - name: 'IE ', - version: (ieMatch[1] || '') - }; - } - - if (name === 'Chrome') { - var opMatch = agent.match(/\bOPR\/(\d+)/); - if (tem != null) { - return { - name: 'Opera', - version: match[1] - }; - } - } - - var vMatch = agent.match(/version\/(\d+)/i); - if (vMatch != null) { - version = vMatch[1]; - } - - return { - name: name, - version: version - }; -} diff --git a/chromium/external/README.md b/chromium/external/README.md index 10bc76a2dffe..8a8d3b063474 100644 --- a/chromium/external/README.md +++ b/chromium/external/README.md @@ -51,3 +51,16 @@ $ npm install pako@1.0.5 ``` $ cp node_modules/pako/dist/pako_inflate.js pako-1.0.5/pako_inflate.min.js ``` + +## Bowser 1.9.3 + +```bash +curl -L -o bowser.js https://github.com/lancedikson/bowser/releases/download/1.9.3/bowser.js + +openssl dgst -sha256 bowser.js +# SHA256(bowser.js)= 0de3decea68d298502b5db3ea16524840ac3e5185108d6071625e38c0732b0c1 + +npm install uglify-js@3.1.9 + +uglifyjs --compress --mangle --comments '/copyright"|"license/i' --output bowser.min.js bowser.js +``` diff --git a/chromium/external/bowser-1.9.3/bowser.min.js b/chromium/external/bowser-1.9.3/bowser.min.js new file mode 100644 index 000000000000..20e86efb172f --- /dev/null +++ b/chromium/external/bowser-1.9.3/bowser.min.js @@ -0,0 +1,6 @@ +/*! + * Bowser - a browser detector + * https://github.com/ded/bowser + * MIT License | (c) Dustin Diaz 2015 + */ +!function(e,i,s){"undefined"!=typeof module&&module.exports?module.exports=s():"function"==typeof define&&define.amd?define("bowser",s):e.bowser=s()}(this,0,function(){function e(e){function i(i){var s=e.match(i);return s&&s.length>1&&s[1]||""}function s(i){var s=e.match(i);return s&&s.length>1&&s[2]||""}var o,r=i(/(ipod|iphone|ipad)/i).toLowerCase(),t=!/like android/i.test(e)&&/android/i.test(e),a=/nexus\s*[0-6]\s*/i.test(e),d=!a&&/nexus\s*[0-9]+/i.test(e),m=/CrOS/.test(e),v=/silk/i.test(e),p=/sailfish/i.test(e),l=/tizen/i.test(e),c=/(web|hpw)os/i.test(e),u=/windows phone/i.test(e),f=(/SamsungBrowser/i.test(e),!u&&/windows/i.test(e)),h=!r&&!v&&/macintosh/i.test(e),w=!t&&!p&&!l&&!c&&/linux/i.test(e),b=s(/edg([ea]|ios)\/(\d+(\.\d+)?)/i),g=i(/version\/(\d+(\.\d+)?)/i),k=/tablet/i.test(e)&&!/tablet pc/i.test(e),x=!k&&/[^-]mobi/i.test(e),y=/xbox/i.test(e);/opera/i.test(e)?o={name:"Opera",opera:n,version:g||i(/(?:opera|opr|opios)[\s\/](\d+(\.\d+)?)/i)}:/opr\/|opios/i.test(e)?o={name:"Opera",opera:n,version:i(/(?:opr|opios)[\s\/](\d+(\.\d+)?)/i)||g}:/SamsungBrowser/i.test(e)?o={name:"Samsung Internet for Android",samsungBrowser:n,version:g||i(/(?:SamsungBrowser)[\s\/](\d+(\.\d+)?)/i)}:/coast/i.test(e)?o={name:"Opera Coast",coast:n,version:g||i(/(?:coast)[\s\/](\d+(\.\d+)?)/i)}:/yabrowser/i.test(e)?o={name:"Yandex Browser",yandexbrowser:n,version:g||i(/(?:yabrowser)[\s\/](\d+(\.\d+)?)/i)}:/ucbrowser/i.test(e)?o={name:"UC Browser",ucbrowser:n,version:i(/(?:ucbrowser)[\s\/](\d+(?:\.\d+)+)/i)}:/mxios/i.test(e)?o={name:"Maxthon",maxthon:n,version:i(/(?:mxios)[\s\/](\d+(?:\.\d+)+)/i)}:/epiphany/i.test(e)?o={name:"Epiphany",epiphany:n,version:i(/(?:epiphany)[\s\/](\d+(?:\.\d+)+)/i)}:/puffin/i.test(e)?o={name:"Puffin",puffin:n,version:i(/(?:puffin)[\s\/](\d+(?:\.\d+)?)/i)}:/sleipnir/i.test(e)?o={name:"Sleipnir",sleipnir:n,version:i(/(?:sleipnir)[\s\/](\d+(?:\.\d+)+)/i)}:/k-meleon/i.test(e)?o={name:"K-Meleon",kMeleon:n,version:i(/(?:k-meleon)[\s\/](\d+(?:\.\d+)+)/i)}:u?(o={name:"Windows Phone",osname:"Windows Phone",windowsphone:n},b?(o.msedge=n,o.version=b):(o.msie=n,o.version=i(/iemobile\/(\d+(\.\d+)?)/i))):/msie|trident/i.test(e)?o={name:"Internet Explorer",msie:n,version:i(/(?:msie |rv:)(\d+(\.\d+)?)/i)}:m?o={name:"Chrome",osname:"Chrome OS",chromeos:n,chromeBook:n,chrome:n,version:i(/(?:chrome|crios|crmo)\/(\d+(\.\d+)?)/i)}:/edg([ea]|ios)/i.test(e)?o={name:"Microsoft Edge",msedge:n,version:b}:/vivaldi/i.test(e)?o={name:"Vivaldi",vivaldi:n,version:i(/vivaldi\/(\d+(\.\d+)?)/i)||g}:p?o={name:"Sailfish",osname:"Sailfish OS",sailfish:n,version:i(/sailfish\s?browser\/(\d+(\.\d+)?)/i)}:/seamonkey\//i.test(e)?o={name:"SeaMonkey",seamonkey:n,version:i(/seamonkey\/(\d+(\.\d+)?)/i)}:/firefox|iceweasel|fxios/i.test(e)?(o={name:"Firefox",firefox:n,version:i(/(?:firefox|iceweasel|fxios)[ \/](\d+(\.\d+)?)/i)},/\((mobile|tablet);[^\)]*rv:[\d\.]+\)/i.test(e)&&(o.firefoxos=n,o.osname="Firefox OS")):v?o={name:"Amazon Silk",silk:n,version:i(/silk\/(\d+(\.\d+)?)/i)}:/phantom/i.test(e)?o={name:"PhantomJS",phantom:n,version:i(/phantomjs\/(\d+(\.\d+)?)/i)}:/slimerjs/i.test(e)?o={name:"SlimerJS",slimer:n,version:i(/slimerjs\/(\d+(\.\d+)?)/i)}:/blackberry|\bbb\d+/i.test(e)||/rim\stablet/i.test(e)?o={name:"BlackBerry",osname:"BlackBerry OS",blackberry:n,version:g||i(/blackberry[\d]+\/(\d+(\.\d+)?)/i)}:c?(o={name:"WebOS",osname:"WebOS",webos:n,version:g||i(/w(?:eb)?osbrowser\/(\d+(\.\d+)?)/i)},/touchpad\//i.test(e)&&(o.touchpad=n)):/bada/i.test(e)?o={name:"Bada",osname:"Bada",bada:n,version:i(/dolfin\/(\d+(\.\d+)?)/i)}:l?o={name:"Tizen",osname:"Tizen",tizen:n,version:i(/(?:tizen\s?)?browser\/(\d+(\.\d+)?)/i)||g}:/qupzilla/i.test(e)?o={name:"QupZilla",qupzilla:n,version:i(/(?:qupzilla)[\s\/](\d+(?:\.\d+)+)/i)||g}:/chromium/i.test(e)?o={name:"Chromium",chromium:n,version:i(/(?:chromium)[\s\/](\d+(?:\.\d+)?)/i)||g}:/chrome|crios|crmo/i.test(e)?o={name:"Chrome",chrome:n,version:i(/(?:chrome|crios|crmo)\/(\d+(\.\d+)?)/i)}:t?o={name:"Android",version:g}:/safari|applewebkit/i.test(e)?(o={name:"Safari",safari:n},g&&(o.version=g)):r?(o={name:"iphone"==r?"iPhone":"ipad"==r?"iPad":"iPod"},g&&(o.version=g)):o=/googlebot/i.test(e)?{name:"Googlebot",googlebot:n,version:i(/googlebot\/(\d+(\.\d+))/i)||g}:{name:i(/^(.*)\/(.*) /),version:s(/^(.*)\/(.*) /)},!o.msedge&&/(apple)?webkit/i.test(e)?(/(apple)?webkit\/537\.36/i.test(e)?(o.name=o.name||"Blink",o.blink=n):(o.name=o.name||"Webkit",o.webkit=n),!o.version&&g&&(o.version=g)):!o.opera&&/gecko\//i.test(e)&&(o.name=o.name||"Gecko",o.gecko=n,o.version=o.version||i(/gecko\/(\d+(\.\d+)?)/i)),o.windowsphone||!t&&!o.silk?!o.windowsphone&&r?(o[r]=n,o.ios=n,o.osname="iOS"):h?(o.mac=n,o.osname="macOS"):y?(o.xbox=n,o.osname="Xbox"):f?(o.windows=n,o.osname="Windows"):w&&(o.linux=n,o.osname="Linux"):(o.android=n,o.osname="Android");var S="";o.windows?S=function(e){switch(e){case"NT":return"NT";case"XP":return"XP";case"NT 5.0":return"2000";case"NT 5.1":return"XP";case"NT 5.2":return"2003";case"NT 6.0":return"Vista";case"NT 6.1":return"7";case"NT 6.2":return"8";case"NT 6.3":return"8.1";case"NT 10.0":return"10";default:return}}(i(/Windows ((NT|XP)( \d\d?.\d)?)/i)):o.windowsphone?S=i(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i):o.mac?S=(S=i(/Mac OS X (\d+([_\.\s]\d+)*)/i)).replace(/[_\s]/g,"."):r?S=(S=i(/os (\d+([_\s]\d+)*) like mac os x/i)).replace(/[_\s]/g,"."):t?S=i(/android[ \/-](\d+(\.\d+)*)/i):o.webos?S=i(/(?:web|hpw)os\/(\d+(\.\d+)*)/i):o.blackberry?S=i(/rim\stablet\sos\s(\d+(\.\d+)*)/i):o.bada?S=i(/bada\/(\d+(\.\d+)*)/i):o.tizen&&(S=i(/tizen[\/\s](\d+(\.\d+)*)/i)),S&&(o.osversion=S);var B=!o.windows&&S.split(".")[0];return k||d||"ipad"==r||t&&(3==B||B>=4&&!x)||o.silk?o.tablet=n:(x||"iphone"==r||"ipod"==r||t||a||o.blackberry||o.webos||o.bada)&&(o.mobile=n),o.msedge||o.msie&&o.version>=10||o.yandexbrowser&&o.version>=15||o.vivaldi&&o.version>=1||o.chrome&&o.version>=20||o.samsungBrowser&&o.version>=4||o.firefox&&o.version>=20||o.safari&&o.version>=6||o.opera&&o.version>=10||o.ios&&o.osversion&&o.osversion.split(".")[0]>=6||o.blackberry&&o.version>=10.1||o.chromium&&o.version>=20?o.a=n:o.msie&&o.version<10||o.chrome&&o.version<20||o.firefox&&o.version<20||o.safari&&o.version<6||o.opera&&o.version<10||o.ios&&o.osversion&&o.osversion.split(".")[0]<6||o.chromium&&o.version<20?o.c=n:o.x=n,o}function i(e){return e.split(".").length}function s(e,i){var s,o=[];if(Array.prototype.map)return Array.prototype.map.call(e,i);for(s=0;s=0;){if(r[0][o]>r[1][o])return 1;if(r[0][o]!==r[1][o])return-1;if(0===o)return 0}}function r(i,s,r){var n=t;"string"==typeof s&&(r=s,s=void 0),void 0===s&&(s=!1),r&&(n=e(r));var a=""+n.version;for(var d in i)if(i.hasOwnProperty(d)&&n[d]){if("string"!=typeof i[d])throw new Error("Browser version in the minVersion map should be a string: "+d+": "+String(i));return o([a,i[d]])<0}return s}var n=!0,t=e("undefined"!=typeof navigator?navigator.userAgent||"":"");return t.test=function(e){for(var i=0;i