diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2018-06-04 02:50:08 +0200 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2018-06-04 07:06:28 +0200 |
commit | a2ccbf003cc10369c177a3a354558f903df44e39 (patch) | |
tree | f66cf36a19961907881543f8f0257606c5e7b6d2 /app/src/main/java/com/wireguard/android/model | |
parent | 10ca2c86814a0719f15fce4bf6fc22707f22bb49 (diff) |
TunnelManager: new intents
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'app/src/main/java/com/wireguard/android/model')
-rw-r--r-- | app/src/main/java/com/wireguard/android/model/TunnelManager.java | 37 |
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); + } + } } |