Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
The Tor Project
Applications
android-components
Commits
ebf4d5ce
Verified
Commit
ebf4d5ce
authored
Oct 21, 2020
by
Alex Catarineu
Committed by
boklm
May 12, 2021
Browse files
Bug 40022: Migrate Tor security level from Fennec
parent
d90206b2
Changes
3
Hide whitespace changes
Inline
Side-by-side
components/support/migration/src/main/java/mozilla/components/support/migration/FennecMigrator.kt
View file @
ebf4d5ce
...
...
@@ -991,7 +991,7 @@ class FennecMigrator private constructor(
return
try
{
logger
.
debug
(
"Migrating gecko files..."
)
val
result
=
GeckoMigration
.
migrate
(
profile
.
path
,
migrationVersion
)
val
result
=
GeckoMigration
.
migrate
(
profile
.
path
,
migrationVersion
,
context
)
logger
.
debug
(
"Migrated gecko files."
)
if
(
result
is
Result
.
Failure
<
GeckoMigrationResult
>)
{
...
...
components/support/migration/src/main/java/mozilla/components/support/migration/GeckoMigration.kt
View file @
ebf4d5ce
...
...
@@ -4,6 +4,7 @@
package
mozilla.components.support.migration
import
android.content.Context
import
android.util.AtomicFile
import
androidx.annotation.VisibleForTesting
import
mozilla.components.support.ktx.util.writeString
...
...
@@ -12,6 +13,9 @@ import java.io.IOException
private
const
val
PREFS_FILE
=
"prefs.js"
private
const
val
PREFS_BACKUP_FILE
=
"prefs.js.backup.v"
private
const
val
SEC_LEVEL_OFFSET
=
50
private
const
val
SEC_LEVEL_MIN
=
0
private
const
val
SEC_LEVEL_MAX
=
4
@VisibleForTesting
internal
var
userPrefsToKeep
=
setOf
(
"extensions.webextensions.uuids"
)
...
...
@@ -95,7 +99,8 @@ internal object GeckoMigration {
*/
fun
migrate
(
profilePath
:
String
,
migrationVersion
:
Int
migrationVersion
:
Int
,
context
:
Context
):
Result
<
GeckoMigrationResult
>
{
// GeckoView will happily pick up the profile from Fennec and reuse all data in it. So this
// migration is mostly focused on removing all prefs that we do not want to reuse.
...
...
@@ -118,6 +123,26 @@ internal object GeckoMigration {
}.
toList
()
}
val
secLevel
=
prefsjs
.
useLines
{
// The prefs are auto-generated, so we can expect the offset to be always the same
it
.
find
{
line
->
line
.
startsWith
(
"$USER_PREF(\"extensions.torbutton.security_slider\""
)
}
?.
substring
(
SEC_LEVEL_OFFSET
,
SEC_LEVEL_OFFSET
+
1
)
?.
toIntOrNull
()
}
if
(
secLevel
!=
null
&&
secLevel
>
SEC_LEVEL_MIN
&&
secLevel
<
SEC_LEVEL_MAX
)
{
val
prefVal
=
when
(
secLevel
)
{
1
->
"pref_key_tor_security_level_safest_option"
else
->
"pref_key_tor_security_level_safer_option"
}
val
fenixAppPrefs
=
context
.
getSharedPreferences
(
FennecSettingsMigration
.
FENIX_SHARED_PREFS_NAME
,
Context
.
MODE_PRIVATE
)
fenixAppPrefs
.
edit
()
.
putBoolean
(
"pref_key_tor_security_level_standard_option"
,
false
)
.
putBoolean
(
prefVal
,
true
)
.
apply
()
}
return
if
(
transformed
.
isEmpty
())
{
removePrefsFile
(
prefsjs
)
}
else
{
...
...
config/detekt-baseline.xml
View file @
ebf4d5ce
...
...
@@ -8,6 +8,7 @@
<ID>
ComplexMethod:Browsers.kt$Browsers$findKnownBrowsers
</ID>
<ID>
ComplexMethod:Evaluator.kt$Evaluator$filterStatic
</ID>
<ID>
ComplexMethod:ExperimentEvaluator.kt$ExperimentEvaluator$matches
</ID>
<ID>
ComplexMethod:GeckoMigration.kt$GeckoMigration$migrate
</ID>
<ID>
ComplexMethod:InlineAutocompleteEditText.kt$InlineAutocompleteEditText$addAutocompleteText
</ID>
<ID>
ComplexMethod:InlineAutocompleteEditText.kt$InlineAutocompleteEditText.TextChangeListener$afterTextChanged
</ID>
<ID>
ComplexMethod:LegacySessionManager.kt$LegacySessionManager$findNearbySession
</ID>
...
...
@@ -253,6 +254,7 @@
<ID>
UndocumentedPublicClass:ToolbarFeature.kt$ToolbarFeature.RenderStyle$ColoredUrl : RenderStyle
</ID>
<ID>
UndocumentedPublicClass:ToolbarFeature.kt$ToolbarFeature.RenderStyle$RegistrableDomain : RenderStyle
</ID>
<ID>
UndocumentedPublicClass:ToolbarFeature.kt$ToolbarFeature.RenderStyle$UncoloredUrl : RenderStyle
</ID>
<ID>
UndocumentedPublicClass:TorUtils.kt$TorUtils
</ID>
<ID>
UndocumentedPublicClass:URLStringUtils.kt$URLStringUtils
</ID>
<ID>
UndocumentedPublicClass:WebAppManifest.kt$WebAppManifest.Icon$Purpose
</ID>
<ID>
UndocumentedPublicClass:WorkManagerSyncManager.kt$WorkManagerSyncDispatcher : SyncDispatcherObservableCloseable
</ID>
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment