Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
Tor Browser
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Wiki
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Container registry
Operate
Environments
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
The Tor Project
Applications
Tor Browser
Commits
9d79898b
Verified
Commit
9d79898b
authored
Mar 28, 2023
by
ma1
Committed by
Pier Angelo Vendrame
Apr 4, 2023
Browse files
Options
Downloads
Patches
Plain Diff
fixup! Bug 10760: Integrate TorButton to TorBrowser core
parent
3f92800f
Branches
Branches containing commit
Tags
Tags containing commit
1 merge request
!609
Bug 41687: Rebased alpha to 102.10
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
toolkit/torbutton/chrome/content/torbutton.js
+0
-236
0 additions, 236 deletions
toolkit/torbutton/chrome/content/torbutton.js
with
0 additions
and
236 deletions
toolkit/torbutton/chrome/content/torbutton.js
+
0
−
236
View file @
9d79898b
...
...
@@ -54,19 +54,12 @@ var torbutton_new_circuit;
m_tb_prefs
.
addObserver
(
"
extensions.torbutton
"
,
this
);
m_tb_prefs
.
addObserver
(
"
browser.privatebrowsing.autostart
"
,
this
);
m_tb_prefs
.
addObserver
(
"
javascript
"
,
this
);
m_tb_prefs
.
addObserver
(
"
privacy.resistFingerprinting
"
,
this
);
m_tb_prefs
.
addObserver
(
"
privacy.resistFingerprinting.letterboxing
"
,
this
);
},
unregister
()
{
m_tb_prefs
.
removeObserver
(
"
extensions.torbutton
"
,
this
);
m_tb_prefs
.
removeObserver
(
"
browser.privatebrowsing.autostart
"
,
this
);
m_tb_prefs
.
removeObserver
(
"
javascript
"
,
this
);
m_tb_prefs
.
removeObserver
(
"
privacy.resistFingerprinting
"
,
this
);
m_tb_prefs
.
removeObserver
(
"
privacy.resistFingerprinting.letterboxing
"
,
this
);
},
// topic: what event occurred
...
...
@@ -83,10 +76,6 @@ var torbutton_new_circuit;
case
"
extensions.torbutton.use_nontor_proxy
"
:
torbutton_use_nontor_proxy
();
break
;
case
"
privacy.resistFingerprinting
"
:
case
"
privacy.resistFingerprinting.letterboxing
"
:
torbutton_update_fingerprinting_prefs
();
break
;
}
},
};
...
...
@@ -666,21 +655,6 @@ var torbutton_new_circuit;
Services
.
prefs
.
savePrefFile
(
null
);
}
function
torbutton_update_fingerprinting_prefs
()
{
var
mode
=
m_tb_prefs
.
getBoolPref
(
"
privacy.resistFingerprinting
"
);
var
letterboxing
=
m_tb_prefs
.
getBoolPref
(
"
privacy.resistFingerprinting.letterboxing
"
,
false
);
m_tb_prefs
.
setBoolPref
(
"
extensions.torbutton.resize_new_windows
"
,
mode
&&
!
letterboxing
);
// Force prefs to be synced to disk
Services
.
prefs
.
savePrefFile
(
null
);
}
// Bug 1506 P1: This function just cleans up prefs that got set badly in previous releases
function
torbutton_fixup_old_prefs
()
{
if
(
m_tb_prefs
.
getIntPref
(
"
extensions.torbutton.pref_fixup_version
"
)
<
1
)
{
...
...
@@ -728,9 +702,6 @@ var torbutton_new_circuit;
// Bug 1506: Should probably be moved to an XPCOM component
torbutton_do_main_window_startup
();
// For charsets
torbutton_update_fingerprinting_prefs
();
// Bug 30565: sync browser.privatebrowsing.autostart with security.nocertdb
torbutton_update_disk_prefs
();
...
...
@@ -741,46 +712,6 @@ var torbutton_new_circuit;
}
}
// Bug 1506 P3: Used to decide if we should resize the window.
//
// Returns true if the window wind is neither maximized, full screen,
// ratpoisioned/evilwmed, nor minimized.
function
torbutton_is_windowed
(
wind
)
{
torbutton_log
(
3
,
"
Window: (
"
+
wind
.
outerWidth
+
"
,
"
+
wind
.
outerHeight
+
"
) ?= (
"
+
wind
.
screen
.
availWidth
+
"
,
"
+
wind
.
screen
.
availHeight
+
"
)
"
);
if
(
wind
.
windowState
==
Ci
.
nsIDOMChromeWindow
.
STATE_MINIMIZED
||
wind
.
windowState
==
Ci
.
nsIDOMChromeWindow
.
STATE_MAXIMIZED
)
{
torbutton_log
(
2
,
"
Window is minimized/maximized
"
);
return
false
;
}
if
(
"
fullScreen
"
in
wind
&&
wind
.
fullScreen
)
{
torbutton_log
(
2
,
"
Window is fullScreen
"
);
return
false
;
}
if
(
wind
.
outerHeight
==
wind
.
screen
.
availHeight
&&
wind
.
outerWidth
==
wind
.
screen
.
availWidth
)
{
torbutton_log
(
3
,
"
Window is ratpoisoned/evilwm'ed
"
);
return
false
;
}
torbutton_log
(
2
,
"
Window is normal
"
);
return
true
;
}
// Bug 1506 P3: This is needed pretty much only for the window resizing.
// See comments for individual functions for details
function
torbutton_new_window
(
event
)
{
...
...
@@ -797,17 +728,6 @@ var torbutton_new_circuit;
}
torbutton_do_startup
();
let
progress
=
Cc
[
"
@mozilla.org/docloaderservice;1
"
].
getService
(
Ci
.
nsIWebProgress
);
if
(
torbutton_is_windowed
(
window
))
{
progress
.
addProgressListener
(
torbutton_resizelistener
,
Ci
.
nsIWebProgress
.
NOTIFY_STATE_DOCUMENT
);
}
}
// Bug 1506 P2: This is only needed because we have observers
...
...
@@ -815,8 +735,6 @@ var torbutton_new_circuit;
function
torbutton_close_window
(
event
)
{
torbutton_tor_check_observer
.
unregister
();
window
.
removeEventListener
(
"
sizemodechange
"
,
m_tb_resize_handler
);
// TODO: This is a real ghetto hack.. When the original window
// closes, we need to find another window to handle observing
// unique events... The right way to do this is to move the
...
...
@@ -856,158 +774,4 @@ var torbutton_new_circuit;
window
.
addEventListener
(
"
load
"
,
torbutton_new_window
);
window
.
addEventListener
(
"
unload
"
,
torbutton_close_window
);
var
m_tb_resize_handler
=
null
;
var
m_tb_resize_date
=
null
;
// Bug 1506 P1/P3: Setting a fixed window size is important, but
// probably not for android.
var
torbutton_resizelistener
=
{
QueryInterface
:
ChromeUtils
.
generateQI
([
"
nsIWebProgressListener
"
,
"
nsISupportsWeakReference
"
,
]),
onLocationChange
(
aProgress
,
aRequest
,
aURI
)
{},
onStateChange
(
aProgress
,
aRequest
,
aFlag
,
aStatus
)
{
if
(
aFlag
&
Ci
.
nsIWebProgressListener
.
STATE_STOP
)
{
window
.
promiseDocumentFlushed
(()
=>
{
// Here we're guaranteed to read the "final" (!) initial size, rather than [1, 1].
torbutton_resizelistener
.
originalSize
=
{
width
:
window
.
outerWidth
,
height
:
window
.
outerHeight
,
};
});
m_tb_resize_handler
=
async
function
()
{
// Wait for end of execution queue to ensure we have correct windowState.
await
new
Promise
(
resolve
=>
setTimeout
(
resolve
,
0
));
if
(
window
.
windowState
===
window
.
STATE_MAXIMIZED
||
window
.
windowState
===
window
.
STATE_FULLSCREEN
)
{
const
kRemainingWarnings
=
"
extensions.torbutton.maximize_warnings_remaining
"
;
if
(
Services
.
prefs
.
getBoolPref
(
"
extensions.torbutton.resize_new_windows
"
)
&&
Services
.
prefs
.
getIntPref
(
kRemainingWarnings
)
>
0
)
{
// Do not add another notification if one is already showing.
const
kNotificationName
=
"
torbutton-maximize-notification
"
;
const
box
=
gNotificationBox
;
if
(
box
.
getNotificationWithValue
(
kNotificationName
))
{
return
;
}
// Rate-limit showing our notification if needed.
if
(
m_tb_resize_date
===
null
)
{
m_tb_resize_date
=
Date
.
now
();
}
else
{
// We wait at least another second before we show a new
// notification. Should be enough to rule out OSes that call our
// handler rapidly due to internal workings.
if
(
Date
.
now
()
-
m_tb_resize_date
<
1000
)
{
return
;
}
// Resizing but we need to reset |m_tb_resize_date| now.
m_tb_resize_date
=
Date
.
now
();
}
// No need to get "OK" translated again.
const
bundle
=
Services
.
strings
.
createBundle
(
"
chrome://global/locale/commonDialogs.properties
"
);
const
decreaseWarningsCount
=
()
=>
{
const
currentCount
=
Services
.
prefs
.
getIntPref
(
kRemainingWarnings
);
if
(
currentCount
>
0
)
{
Services
.
prefs
.
setIntPref
(
kRemainingWarnings
,
currentCount
-
1
);
}
};
let
buttons
=
[
{
label
:
bundle
.
GetStringFromName
(
"
OK
"
),
accessKey
:
"
O
"
,
popup
:
null
,
callback
()
{
// reset notification timer to work-around resize race conditions
m_tb_resize_date
=
Date
.
now
();
// restore the original (rounded) size we had stored on window startup
let
{
originalSize
}
=
torbutton_resizelistener
;
window
.
resizeTo
(
originalSize
.
width
,
originalSize
.
height
);
},
},
];
const
label
=
torbutton_get_property_string
(
"
torbutton.maximize_warning
"
);
box
.
appendNotification
(
kNotificationName
,
{
label
,
priority
:
box
.
PRIORITY_WARNING_LOW
,
eventCallback
(
event
)
{
if
(
event
===
"
dismissed
"
)
{
// user manually dismissed the notification
decreaseWarningsCount
();
}
},
},
buttons
);
}
}
};
// m_tb_resize_handler
// We need to handle OSes that auto-maximize windows depending on user
// settings and/or screen resolution in the start-up phase and users that
// try to shoot themselves in the foot by maximizing the window manually.
// We add a listener which is triggerred as soon as the window gets
// maximized (windowState = 1). We are resizing during start-up but not
// later as the user should see only a warning there as a stopgap before
// #14229 lands.
// Alas, the Firefox window code is handling the event not itself:
// "// Note the current implementation of SetSizeMode just stores
// // the new state; it doesn't actually resize. So here we store
// // the state and pass the event on to the OS."
// (See: https://mxr.mozilla.org/mozilla-esr31/source/xpfe/appshell/src/
// nsWebShellWindow.cpp#348)
// This means we have to cope with race conditions and resizing in the
// sizemodechange listener is likely to fail. Thus, we add a specific
// resize listener that is doing the work for us. It seems (at least on
// Ubuntu) to be the case that maximizing (and then again normalizing) of
// the window triggers more than one resize event the first being not the
// one we need. Thus we can't remove the listener after the first resize
// event got fired. Thus, we have the rather klunky setTimeout() call.
window
.
addEventListener
(
"
sizemodechange
"
,
m_tb_resize_handler
);
let
progress
=
Cc
[
"
@mozilla.org/docloaderservice;1
"
].
getService
(
Ci
.
nsIWebProgress
);
progress
.
removeProgressListener
(
this
);
}
},
// onStateChange
onProgressChange
(
aProgress
,
aRequest
,
curSelfProgress
,
maxSelfProgress
,
curTotalProgress
,
maxTotalProgress
)
{},
onStatusChange
(
aProgress
,
aRequest
,
stat
,
message
)
{},
onSecurityChange
()
{},
};
})();
//vim:set ts=4
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
sign in
to comment