aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/ui/src/main/java/com/wireguard/android/BootShutdownReceiver.java
diff options
context:
space:
mode:
Diffstat (limited to 'ui/src/main/java/com/wireguard/android/BootShutdownReceiver.java')
-rw-r--r--ui/src/main/java/com/wireguard/android/BootShutdownReceiver.java38
1 files changed, 38 insertions, 0 deletions
diff --git a/ui/src/main/java/com/wireguard/android/BootShutdownReceiver.java b/ui/src/main/java/com/wireguard/android/BootShutdownReceiver.java
new file mode 100644
index 00000000..e3ffce7a
--- /dev/null
+++ b/ui/src/main/java/com/wireguard/android/BootShutdownReceiver.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright © 2017-2019 WireGuard LLC. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.wireguard.android;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.util.Log;
+
+import com.wireguard.android.backend.WgQuickBackend;
+import com.wireguard.android.model.TunnelManager;
+import com.wireguard.android.util.ExceptionLoggers;
+
+public class BootShutdownReceiver extends BroadcastReceiver {
+ private static final String TAG = "WireGuard/" + BootShutdownReceiver.class.getSimpleName();
+
+ @Override
+ public void onReceive(final Context context, final Intent intent) {
+ Application.getBackendAsync().thenAccept(backend -> {
+ if (!(backend instanceof WgQuickBackend))
+ return;
+ final String action = intent.getAction();
+ if (action == null)
+ return;
+ final TunnelManager tunnelManager = Application.getTunnelManager();
+ if (Intent.ACTION_BOOT_COMPLETED.equals(action)) {
+ Log.i(TAG, "Broadcast receiver restoring state (boot)");
+ tunnelManager.restoreState(false).whenComplete(ExceptionLoggers.D);
+ } else if (Intent.ACTION_SHUTDOWN.equals(action)) {
+ Log.i(TAG, "Broadcast receiver saving state (shutdown)");
+ tunnelManager.saveState();
+ }
+ });
+ }
+}