Thu, 15 Jan 2015 15:59:08 +0100
Implement a real Private Browsing Mode condition by changing the API/ABI;
This solves Tor bug #9701, complying with disk avoidance documented in
https://www.torproject.org/projects/torbrowser/design/#disk-avoidance.
1 /*
2 The code in this file is adapted from the original
3 Library Detector add-on
4 (https://addons.mozilla.org/en-US/firefox/addon/library-detector/) written by
5 Paul Bakaus (http://paulbakaus.com/) and made available under the
6 MIT License (http://www.opensource.org/licenses/mit-license.php).
7 */
9 var LD_tests = {
11 'jQuery': {
12 test: function(win) {
13 var jq = win.jQuery || win.$ || win.$jq || win.$j;
14 if(jq && jq.fn && jq.fn.jquery) {
15 return { version: jq.fn.jquery };
16 } else {
17 return false;
18 }
19 }
20 },
22 'jQuery UI': {
23 //phonehome: 'http://jqueryui.com/phone_home',
24 test: function(win) {
26 var jq = win.jQuery || win.$ || win.$jq || win.$j;
27 if(jq && jq.fn && jq.fn.jquery && jq.ui) {
29 var plugins = 'accordion,datepicker,dialog,draggable,droppable,progressbar,resizable,selectable,slider,menu,grid,tabs'.split(','), concat = [];
30 for (var i=0; i < plugins.length; i++) { if(jq.ui[plugins[i]]) concat.push(plugins[i].substr(0,1).toUpperCase() + plugins[i].substr(1)); };
32 return { version: jq.ui.version, details: concat.length ? 'Plugins used: '+concat.join(',') : '' };
33 } else {
34 return false;
35 }
37 }
38 },
40 'MooTools': {
41 test: function(win) {
42 if(win.MooTools && win.MooTools.version) {
43 return { version: win.MooTools.version };
44 } else {
45 return false;
46 }
47 }
48 },
50 'YUI': {
51 test: function(win) {
52 if(win.YAHOO && win.YAHOO.VERSION) {
53 return { version: win.YAHOO.VERSION };
54 } else {
55 return false;
56 }
57 }
58 },
60 'Closure': {
61 test: function(win) {
62 if(win.goog) {
63 return { version: '2.0' };
64 }
65 return false;
66 }
67 },
69 'Modernizr': {
70 test: function(win) {
71 if(win.Modernizr) {
72 return { version: win.Modernizr._version };
73 }
74 return false;
75 }
76 },
79 };
81 function testLibraries() {
82 var win = unsafeWindow;
83 var libraryList = [];
84 for(var i in LD_tests) {
85 var passed = LD_tests[i].test(win);
86 if (passed) {
87 let libraryInfo = {
88 name: i,
89 version: passed.version
90 };
91 libraryList.push(libraryInfo);
92 }
93 }
94 self.postMessage(libraryList);
95 }
97 testLibraries();