Skip to content

Commit

Permalink
infer nullity for the UI SDK APIs
Browse files Browse the repository at this point in the history
  • Loading branch information
LukasPaczos committed Aug 17, 2020
1 parent 2aebe1a commit cc93c3d
Show file tree
Hide file tree
Showing 86 changed files with 742 additions and 399 deletions.
144 changes: 72 additions & 72 deletions libnavigation-ui/api/current.txt

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import android.content.res.TypedArray;
import android.util.AttributeSet;

import androidx.annotation.Nullable;
import androidx.annotation.StyleRes;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.core.content.ContextCompat;
Expand All @@ -18,6 +19,7 @@
*/
public class FeedbackButton extends ConstraintLayout implements NavigationButton {
private FloatingActionButton feedbackFab;
@Nullable
private MultiOnClickListener multiOnClickListener = new MultiOnClickListener();

private int primaryColor;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ private void updateFeedbackScreenshot() {
navigationViewModel.updateFeedbackScreenshot(encoded);
}

private void resetViewVisibility(ImageView screenshotView) {
private void resetViewVisibility(@NonNull ImageView screenshotView) {
screenshotView.setVisibility(View.INVISIBLE);
MapView mapView = navigationView.findViewById(R.id.navigationMapView);
mapView.setVisibility(View.VISIBLE);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,7 @@ public class NavigationView extends CoordinatorLayout implements LifecycleOwner,
private NavigationPresenter navigationPresenter;
private NavigationViewEventDispatcher navigationViewEventDispatcher;
private NavigationViewModel navigationViewModel;
@Nullable
private NavigationMapboxMap navigationMap;
private NavigationOnCameraTrackingChangedListener onTrackingChangedListener;
private Bundle mapInstanceState;
Expand All @@ -98,17 +99,18 @@ public class NavigationView extends CoordinatorLayout implements LifecycleOwner,
private boolean isSubscribed;
private boolean logoAndAttributionShownForFirstTime;
private LifecycleRegistry lifecycleRegistry;
@NonNull
private Set<OnNavigationReadyCallback> onNavigationReadyCallbacks = new CopyOnWriteArraySet<>();

public NavigationView(Context context) {
public NavigationView(@NonNull Context context) {
this(context, null);
}

public NavigationView(Context context, @Nullable AttributeSet attrs) {
public NavigationView(@NonNull Context context, @Nullable AttributeSet attrs) {
this(context, attrs, -1);
}

public NavigationView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
public NavigationView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
ThemeSwitcher.setTheme(context, attrs);
initializeView();
Expand Down Expand Up @@ -152,7 +154,7 @@ public boolean onBackPressed() {
*
* @param outState to store state variables
*/
public void onSaveInstanceState(Bundle outState) {
public void onSaveInstanceState(@NonNull Bundle outState) {
int bottomSheetBehaviorState = summaryBehavior == null ? INVALID_STATE : summaryBehavior.getState();
boolean isWayNameVisible = wayNameView.getVisibility() == VISIBLE;
NavigationViewInstanceState navigationViewInstanceState = new NavigationViewInstanceState(
Expand All @@ -172,7 +174,7 @@ public void onSaveInstanceState(Bundle outState) {
*
* @param savedInstanceState to extract state variables
*/
public void onRestoreInstanceState(Bundle savedInstanceState) {
public void onRestoreInstanceState(@NonNull Bundle savedInstanceState) {
String instanceKey = getContext().getString(R.string.navigation_view_instance_state);
NavigationViewInstanceState navigationViewInstanceState = savedInstanceState.getParcelable(instanceKey);
recenterBtn.setVisibility(navigationViewInstanceState.getRecenterButtonVisibility());
Expand Down Expand Up @@ -233,7 +235,7 @@ public Lifecycle getLifecycle() {
* @param mapboxMap used for route, camera, and location UI
*/
@Override
public void onMapReady(final MapboxMap mapboxMap) {
public void onMapReady(@NonNull final MapboxMap mapboxMap) {
mapboxMap.setStyle(ThemeSwitcher.retrieveMapStyle(getContext()), new Style.OnStyleLoaded() {
@Override
public void onStyleLoaded(@NonNull Style style) {
Expand Down Expand Up @@ -298,7 +300,7 @@ public boolean isRecenterButtonVisible() {
}

@Override
public void drawRoute(DirectionsRoute directionsRoute) {
public void drawRoute(@NonNull DirectionsRoute directionsRoute) {
if (navigationMap != null) {
navigationMap.drawRoute(directionsRoute);
}
Expand Down Expand Up @@ -363,6 +365,7 @@ public void setWayNameVisibility(boolean isVisible) {
*
* @return the current text of the way name view
*/
@NonNull
@Override
public String retrieveWayNameText() {
return wayNameView.retrieveWayNameText();
Expand All @@ -384,7 +387,7 @@ public void takeScreenshot() {
* @param directionsRoute where camera should move to
*/
@Override
public void startCamera(DirectionsRoute directionsRoute) {
public void startCamera(@NonNull DirectionsRoute directionsRoute) {
if (navigationMap != null) {
navigationMap.updateLocationLayerRenderMode(RenderMode.GPS);
navigationMap.updateCameraTrackingMode(NavigationCamera.NAVIGATION_TRACKING_MODE_GPS);
Expand All @@ -399,7 +402,7 @@ public void startCamera(DirectionsRoute directionsRoute) {
* @param location where the camera should move to
*/
@Override
public void resumeCamera(Location location) {
public void resumeCamera(@NonNull Location location) {
if (navigationMap != null) {
navigationMap.resumeCamera(location);
}
Expand Down Expand Up @@ -445,7 +448,7 @@ public void onGuidanceViewChange(int left, int top, int width, int height) {
* @param options with containing route / coordinate data
*/
@SuppressLint("MissingPermission")
public void startNavigation(NavigationViewOptions options) {
public void startNavigation(@NonNull NavigationViewOptions options) {
navigationMap.drawRoute(options.directionsRoute());
initializeNavigation(options);
startCamera(options.directionsRoute());
Expand Down Expand Up @@ -644,6 +647,7 @@ private void updateNavigationReadyListeners(boolean isRunning) {
}
}

@NonNull
private OnNavigationReadyCallback internalNavigationReadyCallback = new OnNavigationReadyCallback() {
@Override
public void onNavigationReady(final boolean isRunning) {
Expand Down Expand Up @@ -727,7 +731,7 @@ private void initializeInstructionListener() {
instructionView.setGuidanceViewListener(new NavigationGuidanceViewListener(navigationPresenter));
}

private void initializeNavigationMap(MapView mapView, MapboxMap map) {
private void initializeNavigationMap(@NonNull MapView mapView, @NonNull MapboxMap map) {
if (initialMapCameraPosition != null) {
map.setCameraPosition(initialMapCameraPosition);
}
Expand Down Expand Up @@ -779,7 +783,7 @@ private void initializeWayNameListener() {
navigationMap.addOnWayNameChangedListener(wayNameListener);
}

private void saveNavigationMapInstanceState(Bundle outState) {
private void saveNavigationMapInstanceState(@NonNull Bundle outState) {
if (navigationMap != null) {
navigationMap.saveStateWith(outState);
}
Expand All @@ -806,7 +810,8 @@ private void restoreInstructionMutedState(boolean isMuted) {
((SoundButton) instructionView.retrieveSoundButton()).onRestoreInstanceState(isMuted);
}

private int[] buildRouteOverviewPadding(Context context) {
@NonNull
private int[] buildRouteOverviewPadding(@NonNull Context context) {
Resources resources = context.getResources();
int leftRightPadding = (int) resources.getDimension(R.dimen.route_overview_left_right_padding);
int paddingBuffer = (int) resources.getDimension(R.dimen.route_overview_buffer_padding);
Expand Down Expand Up @@ -835,7 +840,7 @@ private void updatePresenterState(@Nullable Bundle savedInstanceState) {
}
}

private void initializeNavigation(NavigationViewOptions options) {
private void initializeNavigation(@NonNull NavigationViewOptions options) {
navigationViewModel.initialize(options);
establish(options);

Expand All @@ -862,7 +867,7 @@ private void initializeNavigation(NavigationViewOptions options) {
}
}

private void initializeVoiceGuidanceMuteState(final NavigationViewOptions options) {
private void initializeVoiceGuidanceMuteState(@NonNull final NavigationViewOptions options) {
if (options.muteVoiceGuidance() && !isVoiceGuidanceMuted()) {
navigationViewModel.setMuted(((SoundButton) retrieveSoundButton()).toggleMute());
}
Expand All @@ -880,7 +885,7 @@ private void initializeOnCameraTrackingChangedListener() {
navigationMap.addOnCameraTrackingChangedListener(onTrackingChangedListener);
}

private void establish(NavigationViewOptions options) {
private void establish(@NonNull NavigationViewOptions options) {
establishDistanceFormatter();
establishTimeFormat(options);
}
Expand All @@ -891,21 +896,24 @@ private void establishDistanceFormatter() {
summaryBottomSheet.setDistanceFormatter(formatter);
}

private void establishTimeFormat(NavigationViewOptions options) {
private void establishTimeFormat(@NonNull NavigationViewOptions options) {
@TimeFormat.Type
int timeFormatType = options.navigationOptions().getTimeFormatType();
summaryBottomSheet.setTimeFormat(timeFormatType);
}

private void initializeNavigationListeners(NavigationViewOptions options, NavigationViewModel navigationViewModel) {
private void initializeNavigationListeners(
@NonNull NavigationViewOptions options,
@NonNull NavigationViewModel navigationViewModel
) {
navigationMap.addProgressChangeListener(
navigationViewModel.retrieveNavigation(),
options.enableVanishingRouteLine()
);
navigationViewEventDispatcher.initializeListeners(options, navigationViewModel);
}

private void setupNavigationMapboxMap(NavigationViewOptions options) {
private void setupNavigationMapboxMap(@NonNull NavigationViewOptions options) {
navigationMap.updateWaynameQueryMap(options.waynameChipEnabled());
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,23 +25,36 @@
*/
class NavigationViewEventDispatcher {

@Nullable
private RouteProgressObserver routeProgressObserver;
@Nullable
private LocationObserver locationObserver;
@Nullable
private FeedbackListener feedbackListener;
@Nullable
private NavigationListener navigationListener;
@Nullable
private BottomSheetBehavior.BottomSheetCallback bottomSheetCallback;
@Nullable
private InstructionListListener instructionListListener;
@Nullable
private SpeechAnnouncementListener speechAnnouncementListener;
@Nullable
private BannerInstructionsListener bannerInstructionsListener;
@Nullable
private ArrivalObserver arrivalObserver;
@Nullable
private MapboxNavigation navigation;

/**
* Initializes the listeners in the dispatcher, as well as the listeners in the {@link MapboxNavigation}
*
* @param navigationViewOptions that contains all listeners to attach
*/
void initializeListeners(NavigationViewOptions navigationViewOptions, NavigationViewModel navigationViewModel) {
void initializeListeners(
@NonNull NavigationViewOptions navigationViewOptions,
@NonNull NavigationViewModel navigationViewModel
) {
assignFeedbackListener(navigationViewOptions.feedbackListener());
assignNavigationListener(navigationViewOptions.navigationListener(), navigationViewModel);
assignBottomSheetCallback(navigationViewOptions.bottomSheetCallback());
Expand Down Expand Up @@ -73,7 +86,7 @@ void assignFeedbackListener(@Nullable FeedbackListener feedbackListener) {
}

void assignNavigationListener(@Nullable NavigationListener navigationListener,
NavigationViewModel navigationViewModel) {
@NonNull NavigationViewModel navigationViewModel) {
this.navigationListener = navigationListener;
if (navigationListener != null && navigationViewModel.isRunning()) {
navigationListener.onNavigationRunning();
Expand Down Expand Up @@ -132,7 +145,7 @@ void onNavigationRunning() {
}
}

void onBottomSheetStateChanged(View bottomSheet, int newState) {
void onBottomSheetStateChanged(@NonNull View bottomSheet, int newState) {
if (bottomSheetCallback != null) {
bottomSheetCallback.onStateChanged(bottomSheet, newState);
}
Expand All @@ -159,23 +172,23 @@ BannerInstructions onBannerDisplay(BannerInstructions instructions) {
}

private void assignRouteProgressChangeObserver(
NavigationViewOptions navigationViewOptions,
@NonNull MapboxNavigation navigation) {
@NonNull NavigationViewOptions navigationViewOptions,
@NonNull MapboxNavigation navigation) {
this.routeProgressObserver = navigationViewOptions.routeProgressObserver();
if (routeProgressObserver != null) {
navigation.registerRouteProgressObserver(routeProgressObserver);
}
}

private void assignLocationObserver(NavigationViewOptions navigationViewOptions,
private void assignLocationObserver(@NonNull NavigationViewOptions navigationViewOptions,
@NonNull MapboxNavigation navigation) {
this.locationObserver = navigationViewOptions.locationObserver();
if (locationObserver != null) {
navigation.registerLocationObserver(locationObserver);
}
}

private void assignArrivalObserver(NavigationViewOptions navigationViewOptions,
private void assignArrivalObserver(@NonNull NavigationViewOptions navigationViewOptions,
@NonNull MapboxNavigation navigation) {
arrivalObserver = navigationViewOptions.arrivalObserver();
if (arrivalObserver != null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,17 @@
import android.os.Parcel;
import android.os.Parcelable;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

class NavigationViewInstanceState implements Parcelable {

private int bottomSheetBehaviorState;
private int recenterButtonVisibility;
private boolean instructionViewVisible;
private boolean isWayNameVisible;
private boolean isMuted;
@Nullable
private String wayNameText;

NavigationViewInstanceState(int bottomSheetBehaviorState, int recenterButtonVisibility,
Expand Down Expand Up @@ -39,6 +43,7 @@ boolean isWayNameVisible() {
return isWayNameVisible;
}

@Nullable
String getWayNameText() {
return wayNameText;
}
Expand All @@ -47,7 +52,7 @@ boolean isMuted() {
return isMuted;
}

private NavigationViewInstanceState(Parcel in) {
private NavigationViewInstanceState(@NonNull Parcel in) {
bottomSheetBehaviorState = in.readInt();
recenterButtonVisibility = in.readInt();
instructionViewVisible = in.readByte() != 0;
Expand All @@ -57,7 +62,7 @@ private NavigationViewInstanceState(Parcel in) {
}

@Override
public void writeToParcel(Parcel dest, int flags) {
public void writeToParcel(@NonNull Parcel dest, int flags) {
dest.writeInt(bottomSheetBehaviorState);
dest.writeInt(recenterButtonVisibility);
dest.writeByte((byte) (instructionViewVisible ? 1 : 0));
Expand All @@ -72,11 +77,13 @@ public int describeContents() {
}

public static final Creator<NavigationViewInstanceState> CREATOR = new Creator<NavigationViewInstanceState>() {
@NonNull
@Override
public NavigationViewInstanceState createFromParcel(Parcel in) {
public NavigationViewInstanceState createFromParcel(@NonNull Parcel in) {
return new NavigationViewInstanceState(in);
}

@NonNull
@Override
public NavigationViewInstanceState[] newArray(int size) {
return new NavigationViewInstanceState[size];
Expand Down
Loading

0 comments on commit cc93c3d

Please sign in to comment.