summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcyBerta <cyberta@riseup.net>2024-01-25 23:27:59 +0100
committercyBerta <cyberta@riseup.net>2024-01-25 23:34:03 +0100
commitbe8535ff9ab0968187acd008b8c01e1b8d9c336e (patch)
treeb0c73c0c8016fe37816858799469be2e00b9d8b0
parenta8cbf6ea3c794e6cad818979a9c2d4ac95fb7a0f (diff)
ProviderSetupObservable: replace deprecated Observer class with PropertyChangeListener
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/providersetup/ProviderSetupObservable.java46
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/providersetup/fragments/ConfigureProviderFragment.java10
2 files changed, 39 insertions, 17 deletions
diff --git a/app/src/main/java/se/leap/bitmaskclient/providersetup/ProviderSetupObservable.java b/app/src/main/java/se/leap/bitmaskclient/providersetup/ProviderSetupObservable.java
index 90a32fea..c882b0bb 100644
--- a/app/src/main/java/se/leap/bitmaskclient/providersetup/ProviderSetupObservable.java
+++ b/app/src/main/java/se/leap/bitmaskclient/providersetup/ProviderSetupObservable.java
@@ -16,14 +16,19 @@ package se.leap.bitmaskclient.providersetup;
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-import android.os.Handler;
-import android.os.Looper;
-
-import java.util.Observable;
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+import se.leap.bitmaskclient.base.utils.HandlerProvider;
+import se.leap.bitmaskclient.base.utils.HandlerProvider.HandlerInterface;
import se.leap.bitmaskclient.tor.TorStatusObservable;
-public class ProviderSetupObservable extends Observable {
+/**
+ * This Observable tracks the progress of a started provider bootstrapping attempt.
+ * Each required API call us taken into account as well as the state of tor's bootstrapping in case
+ * it is used for censorship circumvention.
+ */
+public class ProviderSetupObservable {
private static final String TAG = ProviderSetupObservable.class.getSimpleName();
@@ -36,9 +41,28 @@ public class ProviderSetupObservable extends Observable {
public static final int DOWNLOADED_VPN_CERTIFICATE = 100;
private static ProviderSetupObservable instance;
- private final Handler handler = new Handler(Looper.getMainLooper());
+ private final PropertyChangeSupport changeSupport;
+ public static final String PROPERTY_CHANGE = "ProviderSetupObservable";
+ private final HandlerInterface handler;
private long lastUpdate = 0;
+
+
+ private ProviderSetupObservable() {
+ handler = HandlerProvider.get();
+ changeSupport = new PropertyChangeSupport(this);
+
+ }
+
+ public void addObserver(PropertyChangeListener propertyChangeListener) {
+ changeSupport.addPropertyChangeListener(propertyChangeListener);
+ }
+
+ public void deleteObserver(PropertyChangeListener propertyChangeListener) {
+ changeSupport.removePropertyChangeListener(propertyChangeListener);
+ }
+
+
public static ProviderSetupObservable getInstance() {
if (instance == null) {
instance = new ProviderSetupObservable();
@@ -58,8 +82,8 @@ public class ProviderSetupObservable extends Observable {
getInstance().progress = progress;
}
- getInstance().setChanged();
- getInstance().notifyObservers();
+ getInstance().changeSupport.firePropertyChange(PROPERTY_CHANGE, null, getInstance());
+
}, now - getInstance().lastUpdate < 500L ? 500L : 0L);
getInstance().lastUpdate = System.currentTimeMillis() + 500;
}
@@ -72,8 +96,7 @@ public class ProviderSetupObservable extends Observable {
getInstance().handler.postDelayed(() -> {
getInstance().progress = (TorStatusObservable.getBootstrapProgress()) / 2;
- getInstance().setChanged();
- getInstance().notifyObservers();
+ getInstance().changeSupport.firePropertyChange(PROPERTY_CHANGE, null, getInstance());
}, now - getInstance().lastUpdate < 500L ? 500L : 0);
getInstance().lastUpdate = System.currentTimeMillis() + 500;
}
@@ -84,8 +107,7 @@ public class ProviderSetupObservable extends Observable {
public static void reset() {
getInstance().progress = 0;
- getInstance().setChanged();
- getInstance().notifyObservers();
+ getInstance().changeSupport.firePropertyChange(PROPERTY_CHANGE, null, getInstance());
}
public static void cancel() {
diff --git a/app/src/main/java/se/leap/bitmaskclient/providersetup/fragments/ConfigureProviderFragment.java b/app/src/main/java/se/leap/bitmaskclient/providersetup/fragments/ConfigureProviderFragment.java
index 877628fb..8477c302 100644
--- a/app/src/main/java/se/leap/bitmaskclient/providersetup/fragments/ConfigureProviderFragment.java
+++ b/app/src/main/java/se/leap/bitmaskclient/providersetup/fragments/ConfigureProviderFragment.java
@@ -42,9 +42,9 @@ import androidx.core.content.res.ResourcesCompat;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
import java.util.List;
-import java.util.Observable;
-import java.util.Observer;
import se.leap.bitmaskclient.R;
import se.leap.bitmaskclient.base.models.Provider;
@@ -57,7 +57,7 @@ import se.leap.bitmaskclient.providersetup.TorLogAdapter;
import se.leap.bitmaskclient.providersetup.activities.CancelCallback;
import se.leap.bitmaskclient.tor.TorStatusObservable;
-public class ConfigureProviderFragment extends BaseSetupFragment implements Observer, CancelCallback, EipSetupListener {
+public class ConfigureProviderFragment extends BaseSetupFragment implements PropertyChangeListener, CancelCallback, EipSetupListener {
private static final String TAG = ConfigureProviderFragment.class.getSimpleName();
@@ -158,8 +158,8 @@ public class ConfigureProviderFragment extends BaseSetupFragment implements Obse
}
@Override
- public void update(Observable o, Object arg) {
- if (o instanceof ProviderSetupObservable) {
+ public void propertyChange(PropertyChangeEvent evt) {
+ if (ProviderSetupObservable.PROPERTY_CHANGE.equals(evt.getPropertyName())) {
Activity activity = getActivity();
if (activity == null || binding == null) {
return;