Skip to content
Snippets Groups Projects
Verified Commit 2511a1c1 authored by Dan Ballard's avatar Dan Ballard Committed by Pier Angelo Vendrame
Browse files

fixup! Bug 42247: Android helpers for the TorProvider

Fix settings loading issues and saving
parent 972359d7
Branches
Tags
1 merge request!889Bug 42366: Tor Browser 115.7.0esr alpha rebase
......@@ -7,6 +7,7 @@
package org.mozilla.geckoview;
import android.content.Context;
import android.os.AsyncTask;
import android.util.Log;
import androidx.annotation.AnyThread;
......@@ -129,7 +130,11 @@ public class TorIntegrationAndroid implements BundleEventListener {
} else if (EVENT_MEEK_STOP.equals(event)) {
stopMeek(message, callback);
} else if (EVENT_SETTINGS_READY.equals(event)) {
loadSettings(message);
try {
new SettingsLoader().execute(message);
} catch(Exception e) {
Log.e(TAG, "SettingsLoader error: "+ e.toString());
}
} else if (EVENT_BOOTSTRAP_STATE_CHANGED.equals(event)) {
String state = message.getString("state");
for (BootstrapStateChangeListener listener: mBootstrapStateListeners) {
......@@ -155,14 +160,24 @@ public class TorIntegrationAndroid implements BundleEventListener {
}
}
private void loadSettings(GeckoBundle message) {
private class SettingsLoader extends AsyncTask<GeckoBundle, Void, TorSettings> {
protected TorSettings doInBackground(GeckoBundle... messages) {
GeckoBundle message = messages[0];
TorSettings settings;
if (TorLegacyAndroidSettings.unmigrated()) {
mSettings = TorLegacyAndroidSettings.loadTorSettings();
setSettings(mSettings);
settings = TorLegacyAndroidSettings.loadTorSettings();
setSettings(settings, true, true);
TorLegacyAndroidSettings.setMigrated();
} else {
GeckoBundle bundle = message.getBundle("settings");
mSettings = new TorSettings(bundle);
settings = new TorSettings(bundle);
}
return settings;
}
@Override
protected void onPostExecute(TorSettings torSettings) {
mSettings = torSettings;
}
}
......@@ -508,8 +523,12 @@ public class TorIntegrationAndroid implements BundleEventListener {
return EventDispatcher.getInstance().queryBundle(EVENT_SETTINGS_GET);
}
public @NonNull GeckoResult<Void> setSettings(final TorSettings settings) {
return EventDispatcher.getInstance().queryVoid(EVENT_SETTINGS_SET, settings.asGeckoBundle());
public @NonNull GeckoResult<Void> setSettings(final TorSettings settings, boolean save, boolean apply) {
GeckoBundle bundle = new GeckoBundle(3);
bundle.putBoolean("save", save);
bundle.putBoolean("apply", apply);
bundle.putBundle("settings", settings.asGeckoBundle());
return EventDispatcher.getInstance().queryVoid(EVENT_SETTINGS_SET, bundle);
}
public @NonNull GeckoResult<Void> applySettings() {
......
......@@ -136,13 +136,19 @@ class TorAndroidIntegrationImpl {
return;
case ListenedEvents.settingsSet:
// This does not throw, so we do not have any way to report the error!
lazy.TorSettings.setSettings(data);
lazy.TorSettings.setSettings(data.settings);
if (data.save) {
lazy.TorSettings.saveToPrefs();
}
if (data.apply) {
lazy.TorSettings.applySettings();
}
break;
case ListenedEvents.settingsApply:
await lazy.TorSettings.applySettings();
break;
case ListenedEvents.settingsSave:
await lazy.TorSettings.saveSettings();
await lazy.TorSettings.saveToPrefs();
break;
case ListenedEvents.bootstrapBegin:
lazy.TorConnect.beginBootstrap();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment