aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/app/src/main/java/com/wireguard/android/model/TunnelManager.java
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2018-06-04 02:50:08 +0200
committerJason A. Donenfeld <Jason@zx2c4.com>2018-06-04 07:06:28 +0200
commita2ccbf003cc10369c177a3a354558f903df44e39 (patch)
treef66cf36a19961907881543f8f0257606c5e7b6d2 /app/src/main/java/com/wireguard/android/model/TunnelManager.java
parentPreferences: don't use round icon (diff)
downloadwireguard-android-a2ccbf003cc10369c177a3a354558f903df44e39.tar.xz
wireguard-android-a2ccbf003cc10369c177a3a354558f903df44e39.zip
TunnelManager: new intents
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'app/src/main/java/com/wireguard/android/model/TunnelManager.java')
-rw-r--r--app/src/main/java/com/wireguard/android/model/TunnelManager.java37
1 files changed, 37 insertions, 0 deletions
diff --git a/app/src/main/java/com/wireguard/android/model/TunnelManager.java b/app/src/main/java/com/wireguard/android/model/TunnelManager.java
index 8c9da7e1..4267e76c 100644
--- a/app/src/main/java/com/wireguard/android/model/TunnelManager.java
+++ b/app/src/main/java/com/wireguard/android/model/TunnelManager.java
@@ -6,11 +6,15 @@
package com.wireguard.android.model;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
import android.content.SharedPreferences;
import android.databinding.BaseObservable;
import android.databinding.Bindable;
import android.support.annotation.NonNull;
+import com.wireguard.android.Application;
import com.wireguard.android.Application.ApplicationScope;
import com.wireguard.android.BR;
import com.wireguard.android.backend.Backend;
@@ -264,4 +268,37 @@ public final class TunnelManager extends BaseObservable {
saveState();
});
}
+
+ public static final class IntentReceiver extends BroadcastReceiver {
+ @Override
+ public void onReceive(final Context context, final Intent intent) {
+ final TunnelManager manager = Application.getComponent().getTunnelManager();
+ if (intent == null)
+ return;
+ final String action = intent.getAction();
+ if (action == null)
+ return;
+
+ if ("com.wireguard.android.action.REFRESH_TUNNEL_STATES".equals(action)) {
+ manager.refreshTunnelStates();
+ return;
+ }
+
+ final State state;
+ if ("com.wireguard.android.action.SET_TUNNEL_UP".equals(action))
+ state = State.UP;
+ else if ("com.wireguard.android.action.SET_TUNNEL_DOWN".equals(action))
+ state = State.DOWN;
+ else
+ return;
+
+ final String tunnelName = intent.getStringExtra("tunnel");
+ if (tunnelName == null)
+ return;
+ final Tunnel tunnel = manager.getTunnels().get(tunnelName);
+ if (tunnel == null)
+ return;
+ manager.setTunnelState(tunnel, state);
+ }
+ }
}