From 22a8445d32b20032b72f49d97c7f7c190b1dd009 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20R=C3=B6sch?= Date: Wed, 4 Nov 2020 09:58:50 +0100 Subject: [PATCH 01/11] add trigger exposure check button to debug fragment, allows to retrigger the exposure computation in all non-productive apps --- .../admin/bag/dp3t/debug/DebugFragment.java | 4 ++ .../admin/bag/dp3t/debug/DebugFragment.java | 4 ++ .../admin/bag/dp3t/debug/DebugFragment.java | 55 +++++++++++++++++-- app/src/main/res/layout/fragment_debug.xml | 32 +++++++++++ .../admin/bag/dp3t/debug/DebugFragment.java | 4 ++ 5 files changed, 93 insertions(+), 6 deletions(-) diff --git a/app/src/abnahme/java/ch/admin/bag/dp3t/debug/DebugFragment.java b/app/src/abnahme/java/ch/admin/bag/dp3t/debug/DebugFragment.java index 7ce7f4f0..3eae6855 100644 --- a/app/src/abnahme/java/ch/admin/bag/dp3t/debug/DebugFragment.java +++ b/app/src/abnahme/java/ch/admin/bag/dp3t/debug/DebugFragment.java @@ -19,6 +19,7 @@ import androidx.fragment.app.FragmentManager; import org.dpppt.android.sdk.DP3T; +import org.dpppt.android.sdk.internal.nearby.ExposureWindowMatchingWorker; import ch.admin.bag.dp3t.R; import ch.admin.bag.dp3t.networking.CertificatePinning; @@ -58,6 +59,9 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat CertificatePinning.setEnabled(isChecked, v.getContext()); DP3T.setCertificatePinner(CertificatePinning.getCertificatePinner()); }); + + view.findViewById(R.id.debug_trigger_exposure_check) + .setOnClickListener(v -> ExposureWindowMatchingWorker.startMatchingWorker(v.getContext())); } } diff --git a/app/src/dev/java/ch/admin/bag/dp3t/debug/DebugFragment.java b/app/src/dev/java/ch/admin/bag/dp3t/debug/DebugFragment.java index 0987deeb..b859f7cb 100644 --- a/app/src/dev/java/ch/admin/bag/dp3t/debug/DebugFragment.java +++ b/app/src/dev/java/ch/admin/bag/dp3t/debug/DebugFragment.java @@ -28,6 +28,7 @@ import java.util.Arrays; import org.dpppt.android.sdk.DP3T; +import org.dpppt.android.sdk.internal.nearby.ExposureWindowMatchingWorker; import org.dpppt.android.sdk.internal.storage.ExposureDayStorage; import org.dpppt.android.sdk.models.DayDate; import org.dpppt.android.sdk.models.ExposureDay; @@ -98,6 +99,9 @@ private void setupSdkViews(View view) { CertificatePinning.setEnabled(isChecked, v.getContext()); DP3T.setCertificatePinner(CertificatePinning.getCertificatePinner()); }); + + view.findViewById(R.id.debug_trigger_exposure_check) + .setOnClickListener(v -> ExposureWindowMatchingWorker.startMatchingWorker(v.getContext())); } private void setupStateOptions(View view) { diff --git a/app/src/log/java/ch/admin/bag/dp3t/debug/DebugFragment.java b/app/src/log/java/ch/admin/bag/dp3t/debug/DebugFragment.java index e6a4fd78..a535bc24 100644 --- a/app/src/log/java/ch/admin/bag/dp3t/debug/DebugFragment.java +++ b/app/src/log/java/ch/admin/bag/dp3t/debug/DebugFragment.java @@ -9,16 +9,59 @@ */ package ch.admin.bag.dp3t.debug; +import android.os.Bundle; +import android.view.View; +import android.widget.CheckBox; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.widget.Toolbar; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; +import org.dpppt.android.sdk.DP3T; +import org.dpppt.android.sdk.internal.nearby.ExposureWindowMatchingWorker; + +import ch.admin.bag.dp3t.R; +import ch.admin.bag.dp3t.networking.CertificatePinning; + public class DebugFragment extends Fragment { - /** - * DOES NOT (AND MUST NOT) EXIST ON PROD. - */ - public static final boolean EXISTS = false; + public static final boolean EXISTS = true; + + public static void startDebugFragment(FragmentManager parentFragmentManager) { + parentFragmentManager.beginTransaction() + .setCustomAnimations(R.anim.slide_enter, R.anim.slide_exit, R.anim.slide_pop_enter, R.anim.slide_pop_exit) + .replace(R.id.main_fragment_container, DebugFragment.newInstance()) + .addToBackStack(DebugFragment.class.getCanonicalName()) + .commit(); + } + + public static DebugFragment newInstance() { + return new DebugFragment(); + } + + public DebugFragment() { + super(R.layout.fragment_debug); + } + + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + Toolbar toolbar = view.findViewById(R.id.contacts_toolbar); + toolbar.setNavigationOnClickListener(v -> getParentFragmentManager().popBackStack()); + + view.findViewById(R.id.debug_card_sdkstate).setVisibility(View.GONE); + + view.findViewById(R.id.debug_card_overridestate).setVisibility(View.GONE); + + CheckBox certPinningCheckbox = view.findViewById(R.id.debug_certificate_pinning); + certPinningCheckbox.setChecked(CertificatePinning.isEnabled()); + certPinningCheckbox.setOnCheckedChangeListener((v, isChecked) -> { + CertificatePinning.setEnabled(isChecked, v.getContext()); + DP3T.setCertificatePinner(CertificatePinning.getCertificatePinner()); + }); - public static void startDebugFragment(FragmentManager parentFragmentManager) { } + view.findViewById(R.id.debug_trigger_exposure_check) + .setOnClickListener(v -> ExposureWindowMatchingWorker.startMatchingWorker(v.getContext())); + } -} +} \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_debug.xml b/app/src/main/res/layout/fragment_debug.xml index 56ac8f8b..92852f78 100644 --- a/app/src/main/res/layout/fragment_debug.xml +++ b/app/src/main/res/layout/fragment_debug.xml @@ -217,6 +217,38 @@ + + + + + + +