From 5070a27a838825379bcb6060b0f671e16a5eb568 Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Tue, 18 Dec 2018 18:12:05 -0200 Subject: [PATCH] [android] also fix some activity nullability issues --- .../briar/android/StartupFailureActivity.java | 13 +++++++++--- .../briar/android/activity/BaseActivity.java | 4 ++++ .../briar/android/activity/BriarActivity.java | 9 ++++++--- .../android/navdrawer/NavDrawerActivity.java | 20 +++++++++++++------ 4 files changed, 34 insertions(+), 12 deletions(-) diff --git a/briar-android/src/main/java/org/briarproject/briar/android/StartupFailureActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/StartupFailureActivity.java index 307feb148..dd3746623 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/StartupFailureActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/StartupFailureActivity.java @@ -3,22 +3,29 @@ package org.briarproject.briar.android; import android.app.NotificationManager; import android.content.Intent; import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault; +import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault; import org.briarproject.briar.R; import org.briarproject.briar.android.activity.ActivityComponent; import org.briarproject.briar.android.activity.BaseActivity; import org.briarproject.briar.android.fragment.BaseFragment.BaseFragmentListener; import org.briarproject.briar.android.fragment.ErrorFragment; +import static java.util.Objects.requireNonNull; import static org.briarproject.bramble.api.lifecycle.LifecycleManager.StartResult; import static org.briarproject.briar.android.BriarService.EXTRA_NOTIFICATION_ID; import static org.briarproject.briar.android.BriarService.EXTRA_START_RESULT; +@MethodsNotNullByDefault +@ParametersNotNullByDefault public class StartupFailureActivity extends BaseActivity implements BaseFragmentListener { @Override - public void onCreate(Bundle state) { + public void onCreate(@Nullable Bundle state) { super.onCreate(state); setContentView(R.layout.activity_fragment_container); @@ -38,7 +45,7 @@ public class StartupFailureActivity extends BaseActivity implements // cancel notification if (notificationId > -1) { Object o = getSystemService(NOTIFICATION_SERVICE); - NotificationManager nm = (NotificationManager) o; + NotificationManager nm = (NotificationManager) requireNonNull(o); nm.cancel(notificationId); } @@ -66,7 +73,7 @@ public class StartupFailureActivity extends BaseActivity implements } @Override - public void runOnDbThread(Runnable runnable) { + public void runOnDbThread(@NonNull Runnable runnable) { throw new AssertionError("Deprecated and should not be used"); } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/activity/BaseActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/activity/BaseActivity.java index 290c44a42..3cc44414f 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/activity/BaseActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/activity/BaseActivity.java @@ -15,6 +15,8 @@ import android.view.ViewGroup.LayoutParams; import android.view.inputmethod.InputMethodManager; import org.briarproject.bramble.api.db.DbException; +import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault; +import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault; import org.briarproject.briar.R; import org.briarproject.briar.android.AndroidComponent; import org.briarproject.briar.android.BriarApplication; @@ -51,6 +53,8 @@ import static org.briarproject.briar.android.TestingConstants.PREVENT_SCREENSHOT * Warning: Some activities don't extend {@link BaseActivity}. * E.g. {@link DevReportActivity} */ +@MethodsNotNullByDefault +@ParametersNotNullByDefault public abstract class BaseActivity extends AppCompatActivity implements DestroyableContext, OnTapFilteredListener { diff --git a/briar-android/src/main/java/org/briarproject/briar/android/activity/BriarActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/activity/BriarActivity.java index e8e2670d3..7cbd63944 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/activity/BriarActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/activity/BriarActivity.java @@ -1,6 +1,5 @@ package org.briarproject.briar.android.activity; -import android.annotation.SuppressLint; import android.content.Intent; import android.support.annotation.RequiresApi; import android.support.v7.app.ActionBar; @@ -10,6 +9,8 @@ import android.transition.Transition; import android.view.Window; import android.widget.CheckBox; +import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault; +import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault; import org.briarproject.briar.R; import org.briarproject.briar.android.controller.BriarController; import org.briarproject.briar.android.controller.DbController; @@ -36,7 +37,8 @@ import static org.briarproject.briar.android.util.UiUtils.excludeSystemUi; import static org.briarproject.briar.android.util.UiUtils.getDozeWhitelistingIntent; import static org.briarproject.briar.android.util.UiUtils.isSamsung7; -@SuppressLint("Registered") +@MethodsNotNullByDefault +@ParametersNotNullByDefault public abstract class BriarActivity extends BaseActivity { public static final String GROUP_ID = "briar.GROUP_ID"; @@ -60,7 +62,8 @@ public abstract class BriarActivity extends BaseActivity { } @Override - protected void onActivityResult(int request, int result, Intent data) { + protected void onActivityResult(int request, int result, + @Nullable Intent data) { super.onActivityResult(request, result, data); if (request == REQUEST_PASSWORD) { // The result can be RESULT_CANCELED if there's no account diff --git a/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerActivity.java index 9b7727ff9..67d6d8195 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerActivity.java @@ -5,6 +5,7 @@ import android.content.Intent; import android.content.res.Configuration; import android.os.Bundle; import android.support.annotation.NonNull; +import android.support.annotation.Nullable; import android.support.design.widget.NavigationView; import android.support.design.widget.NavigationView.OnNavigationItemSelectedListener; import android.support.v4.app.ActivityCompat; @@ -12,6 +13,7 @@ import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.support.v4.content.ContextCompat; import android.support.v4.widget.DrawerLayout; +import android.support.v7.app.ActionBar; import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.widget.Toolbar; import android.view.LayoutInflater; @@ -25,6 +27,8 @@ import android.widget.TextView; import org.briarproject.bramble.api.db.DbException; import org.briarproject.bramble.api.lifecycle.LifecycleManager; +import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault; +import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault; import org.briarproject.bramble.api.plugin.BluetoothConstants; import org.briarproject.bramble.api.plugin.LanTcpConstants; import org.briarproject.bramble.api.plugin.TorConstants; @@ -54,6 +58,7 @@ import static android.support.v4.view.GravityCompat.START; import static android.support.v4.widget.DrawerLayout.LOCK_MODE_LOCKED_CLOSED; import static android.view.View.GONE; import static android.view.View.VISIBLE; +import static java.util.Objects.requireNonNull; import static org.briarproject.bramble.api.lifecycle.LifecycleManager.LifecycleState.RUNNING; import static org.briarproject.briar.android.BriarService.EXTRA_STARTUP_FAILED; import static org.briarproject.briar.android.activity.RequestCodes.REQUEST_PASSWORD; @@ -61,6 +66,8 @@ import static org.briarproject.briar.android.navdrawer.NavDrawerController.Expir import static org.briarproject.briar.android.navdrawer.NavDrawerController.ExpiryWarning.UPDATE; import static org.briarproject.briar.android.util.UiUtils.getDaysUntilExpiry; +@MethodsNotNullByDefault +@ParametersNotNullByDefault public class NavDrawerActivity extends BriarActivity implements BaseFragmentListener, TransportStateListener, OnNavigationItemSelectedListener { @@ -112,9 +119,8 @@ public class NavDrawerActivity extends BriarActivity implements component.inject(this); } - @SuppressWarnings("ConstantConditions") @Override - public void onCreate(Bundle state) { + public void onCreate(@Nullable Bundle state) { super.onCreate(state); exitIfStartupFailed(getIntent()); setContentView(R.layout.activity_nav_drawer); @@ -125,8 +131,9 @@ public class NavDrawerActivity extends BriarActivity implements GridView transportsView = findViewById(R.id.transportsView); setSupportActionBar(toolbar); - getSupportActionBar().setDisplayHomeAsUpEnabled(true); - getSupportActionBar().setHomeButtonEnabled(true); + ActionBar actionBar = requireNonNull(getSupportActionBar()); + actionBar.setDisplayHomeAsUpEnabled(true); + actionBar.setHomeButtonEnabled(true); drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.nav_drawer_open_description, @@ -165,7 +172,8 @@ public class NavDrawerActivity extends BriarActivity implements } @Override - protected void onActivityResult(int request, int result, Intent data) { + protected void onActivityResult(int request, int result, + @Nullable Intent data) { super.onActivityResult(request, result, data); if (request == REQUEST_PASSWORD && result == RESULT_OK) { controller.shouldAskForDozeWhitelisting(this, @@ -253,7 +261,7 @@ public class NavDrawerActivity extends BriarActivity implements } @Override - public void onPostCreate(Bundle savedInstanceState) { + public void onPostCreate(@Nullable Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); drawerToggle.syncState(); }