mirror of
https://github.com/samsonjs/media.git
synced 2026-04-09 11:55:46 +00:00
Remove all null-tolerant methods from BundleableUtil.
In most cases it's clearer to in-line these null-checks with ternary operators. PiperOrigin-RevId: 449474621
This commit is contained in:
parent
e9d5381b54
commit
aef2f154a7
10 changed files with 84 additions and 109 deletions
|
|
@ -1527,7 +1527,9 @@ public final class Format implements Bundleable {
|
|||
bundle.putFloat(keyForField(FIELD_PIXEL_WIDTH_HEIGHT_RATIO), pixelWidthHeightRatio);
|
||||
bundle.putByteArray(keyForField(FIELD_PROJECTION_DATA), projectionData);
|
||||
bundle.putInt(keyForField(FIELD_STEREO_MODE), stereoMode);
|
||||
bundle.putBundle(keyForField(FIELD_COLOR_INFO), BundleableUtil.toNullableBundle(colorInfo));
|
||||
if (colorInfo != null) {
|
||||
bundle.putBundle(keyForField(FIELD_COLOR_INFO), colorInfo.toBundle());
|
||||
}
|
||||
// Audio specific.
|
||||
bundle.putInt(keyForField(FIELD_CHANNEL_COUNT), channelCount);
|
||||
bundle.putInt(keyForField(FIELD_SAMPLE_RATE), sampleRate);
|
||||
|
|
@ -1594,11 +1596,13 @@ public final class Format implements Bundleable {
|
|||
bundle.getFloat(
|
||||
keyForField(FIELD_PIXEL_WIDTH_HEIGHT_RATIO), DEFAULT.pixelWidthHeightRatio))
|
||||
.setProjectionData(bundle.getByteArray(keyForField(FIELD_PROJECTION_DATA)))
|
||||
.setStereoMode(bundle.getInt(keyForField(FIELD_STEREO_MODE), DEFAULT.stereoMode))
|
||||
.setColorInfo(
|
||||
BundleableUtil.fromNullableBundle(
|
||||
ColorInfo.CREATOR, bundle.getBundle(keyForField(FIELD_COLOR_INFO))))
|
||||
// Audio specific.
|
||||
.setStereoMode(bundle.getInt(keyForField(FIELD_STEREO_MODE), DEFAULT.stereoMode));
|
||||
Bundle colorInfoBundle = bundle.getBundle(keyForField(FIELD_COLOR_INFO));
|
||||
if (colorInfoBundle != null) {
|
||||
builder.setColorInfo(ColorInfo.CREATOR.fromBundle(colorInfoBundle));
|
||||
}
|
||||
// Audio specific.
|
||||
builder
|
||||
.setChannelCount(bundle.getInt(keyForField(FIELD_CHANNEL_COUNT), DEFAULT.channelCount))
|
||||
.setSampleRate(bundle.getInt(keyForField(FIELD_SAMPLE_RATE), DEFAULT.sampleRate))
|
||||
.setPcmEncoding(bundle.getInt(keyForField(FIELD_PCM_ENCODING), DEFAULT.pcmEncoding))
|
||||
|
|
|
|||
|
|
@ -36,7 +36,6 @@ import com.google.android.exoplayer2.metadata.Metadata;
|
|||
import com.google.android.exoplayer2.text.Cue;
|
||||
import com.google.android.exoplayer2.text.CueGroup;
|
||||
import com.google.android.exoplayer2.trackselection.TrackSelectionParameters;
|
||||
import com.google.android.exoplayer2.util.BundleableUtil;
|
||||
import com.google.android.exoplayer2.util.FlagSet;
|
||||
import com.google.android.exoplayer2.util.Util;
|
||||
import com.google.android.exoplayer2.video.VideoSize;
|
||||
|
|
@ -295,7 +294,9 @@ public interface Player {
|
|||
public Bundle toBundle() {
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putInt(keyForField(FIELD_MEDIA_ITEM_INDEX), mediaItemIndex);
|
||||
bundle.putBundle(keyForField(FIELD_MEDIA_ITEM), BundleableUtil.toNullableBundle(mediaItem));
|
||||
if (mediaItem != null) {
|
||||
bundle.putBundle(keyForField(FIELD_MEDIA_ITEM), mediaItem.toBundle());
|
||||
}
|
||||
bundle.putInt(keyForField(FIELD_PERIOD_INDEX), periodIndex);
|
||||
bundle.putLong(keyForField(FIELD_POSITION_MS), positionMs);
|
||||
bundle.putLong(keyForField(FIELD_CONTENT_POSITION_MS), contentPositionMs);
|
||||
|
|
@ -310,10 +311,10 @@ public interface Player {
|
|||
private static PositionInfo fromBundle(Bundle bundle) {
|
||||
int mediaItemIndex =
|
||||
bundle.getInt(keyForField(FIELD_MEDIA_ITEM_INDEX), /* defaultValue= */ C.INDEX_UNSET);
|
||||
@Nullable Bundle mediaItemBundle = bundle.getBundle(keyForField(FIELD_MEDIA_ITEM));
|
||||
@Nullable
|
||||
MediaItem mediaItem =
|
||||
BundleableUtil.fromNullableBundle(
|
||||
MediaItem.CREATOR, bundle.getBundle(keyForField(FIELD_MEDIA_ITEM)));
|
||||
mediaItemBundle == null ? null : MediaItem.CREATOR.fromBundle(mediaItemBundle);
|
||||
int periodIndex =
|
||||
bundle.getInt(keyForField(FIELD_PERIOD_INDEX), /* defaultValue= */ C.INDEX_UNSET);
|
||||
long positionMs =
|
||||
|
|
|
|||
|
|
@ -17,8 +17,6 @@ package com.google.android.exoplayer2;
|
|||
|
||||
import static com.google.android.exoplayer2.util.Assertions.checkArgument;
|
||||
import static com.google.android.exoplayer2.util.Assertions.checkNotNull;
|
||||
import static com.google.android.exoplayer2.util.BundleableUtil.fromBundleNullableList;
|
||||
import static com.google.android.exoplayer2.util.BundleableUtil.fromNullableBundle;
|
||||
import static com.google.android.exoplayer2.util.BundleableUtil.toBundleArrayList;
|
||||
import static java.lang.annotation.ElementType.TYPE_USE;
|
||||
|
||||
|
|
@ -26,6 +24,7 @@ import android.os.Bundle;
|
|||
import androidx.annotation.IntDef;
|
||||
import androidx.annotation.Nullable;
|
||||
import com.google.android.exoplayer2.source.TrackGroup;
|
||||
import com.google.android.exoplayer2.util.BundleableUtil;
|
||||
import com.google.common.base.MoreObjects;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.primitives.Booleans;
|
||||
|
|
@ -249,10 +248,10 @@ public final class Tracks implements Bundleable {
|
|||
/** Object that can restore a group of tracks from a {@link Bundle}. */
|
||||
public static final Creator<Group> CREATOR =
|
||||
bundle -> {
|
||||
// Can't create a Tracks.Group without a TrackGroup
|
||||
TrackGroup trackGroup =
|
||||
fromNullableBundle(
|
||||
TrackGroup.CREATOR, bundle.getBundle(keyForField(FIELD_TRACK_GROUP)));
|
||||
checkNotNull(trackGroup); // Can't create a trackGroup info without a trackGroup
|
||||
TrackGroup.CREATOR.fromBundle(
|
||||
checkNotNull(bundle.getBundle(keyForField(FIELD_TRACK_GROUP))));
|
||||
final @C.FormatSupport int[] trackSupport =
|
||||
MoreObjects.firstNonNull(
|
||||
bundle.getIntArray(keyForField(FIELD_TRACK_SUPPORT)), new int[trackGroup.length]);
|
||||
|
|
@ -400,11 +399,12 @@ public final class Tracks implements Bundleable {
|
|||
/** Object that can restore tracks from a {@link Bundle}. */
|
||||
public static final Creator<Tracks> CREATOR =
|
||||
bundle -> {
|
||||
@Nullable
|
||||
List<Bundle> groupBundles = bundle.getParcelableArrayList(keyForField(FIELD_TRACK_GROUPS));
|
||||
List<Group> groups =
|
||||
fromBundleNullableList(
|
||||
Group.CREATOR,
|
||||
bundle.getParcelableArrayList(keyForField(FIELD_TRACK_GROUPS)),
|
||||
/* defaultValue= */ ImmutableList.of());
|
||||
groupBundles == null
|
||||
? ImmutableList.of()
|
||||
: BundleableUtil.fromBundleList(Group.CREATOR, groupBundles);
|
||||
return new Tracks(groups);
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -185,11 +185,12 @@ public final class TrackGroup implements Bundleable {
|
|||
/** Object that can restore {@code TrackGroup} from a {@link Bundle}. */
|
||||
public static final Creator<TrackGroup> CREATOR =
|
||||
bundle -> {
|
||||
@Nullable
|
||||
List<Bundle> formatBundles = bundle.getParcelableArrayList(keyForField(FIELD_FORMATS));
|
||||
List<Format> formats =
|
||||
BundleableUtil.fromBundleNullableList(
|
||||
Format.CREATOR,
|
||||
bundle.getParcelableArrayList(keyForField(FIELD_FORMATS)),
|
||||
ImmutableList.of());
|
||||
formatBundles == null
|
||||
? ImmutableList.of()
|
||||
: BundleableUtil.fromBundleList(Format.CREATOR, formatBundles);
|
||||
String id = bundle.getString(keyForField(FIELD_ID), /* defaultValue= */ "");
|
||||
return new TrackGroup(id, formats.toArray(new Format[0]));
|
||||
};
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ import static java.lang.annotation.ElementType.TYPE_USE;
|
|||
import android.graphics.Bitmap;
|
||||
import android.os.Bundle;
|
||||
import androidx.annotation.IntDef;
|
||||
import androidx.annotation.Nullable;
|
||||
import com.google.android.exoplayer2.Bundleable;
|
||||
import com.google.android.exoplayer2.util.BundleableUtil;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
|
|
@ -27,6 +28,7 @@ import java.lang.annotation.Documented;
|
|||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/** Class to represent the state of active {@link Cue Cues} at a particular time. */
|
||||
|
|
@ -71,11 +73,11 @@ public final class CueGroup implements Bundleable {
|
|||
public static final Creator<CueGroup> CREATOR = CueGroup::fromBundle;
|
||||
|
||||
private static final CueGroup fromBundle(Bundle bundle) {
|
||||
@Nullable ArrayList<Bundle> cueBundles = bundle.getParcelableArrayList(keyForField(FIELD_CUES));
|
||||
List<Cue> cues =
|
||||
BundleableUtil.fromBundleNullableList(
|
||||
Cue.CREATOR,
|
||||
bundle.getParcelableArrayList(keyForField(FIELD_CUES)),
|
||||
/* defaultValue= */ ImmutableList.of());
|
||||
cueBundles == null
|
||||
? ImmutableList.of()
|
||||
: BundleableUtil.fromBundleList(Cue.CREATOR, cueBundles);
|
||||
return new CueGroup(cues);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -16,7 +16,6 @@
|
|||
package com.google.android.exoplayer2.trackselection;
|
||||
|
||||
import static com.google.android.exoplayer2.util.Assertions.checkNotNull;
|
||||
import static com.google.android.exoplayer2.util.BundleableUtil.fromBundleNullableList;
|
||||
import static com.google.android.exoplayer2.util.BundleableUtil.toBundleArrayList;
|
||||
import static com.google.common.base.MoreObjects.firstNonNull;
|
||||
|
||||
|
|
@ -31,6 +30,7 @@ import androidx.annotation.RequiresApi;
|
|||
import com.google.android.exoplayer2.Bundleable;
|
||||
import com.google.android.exoplayer2.C;
|
||||
import com.google.android.exoplayer2.source.TrackGroup;
|
||||
import com.google.android.exoplayer2.util.BundleableUtil;
|
||||
import com.google.android.exoplayer2.util.Util;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
|
|
@ -246,11 +246,13 @@ public class TrackSelectionParameters implements Bundleable {
|
|||
bundle.getBoolean(
|
||||
keyForField(FIELD_FORCE_HIGHEST_SUPPORTED_BITRATE),
|
||||
DEFAULT_WITHOUT_CONTEXT.forceHighestSupportedBitrate);
|
||||
@Nullable
|
||||
List<Bundle> overrideBundleList =
|
||||
bundle.getParcelableArrayList(keyForField(FIELD_SELECTION_OVERRIDES));
|
||||
List<TrackSelectionOverride> overrideList =
|
||||
fromBundleNullableList(
|
||||
TrackSelectionOverride.CREATOR,
|
||||
bundle.getParcelableArrayList(keyForField(FIELD_SELECTION_OVERRIDES)),
|
||||
ImmutableList.of());
|
||||
overrideBundleList == null
|
||||
? ImmutableList.of()
|
||||
: BundleableUtil.fromBundleList(TrackSelectionOverride.CREATOR, overrideBundleList);
|
||||
overrides = new HashMap<>();
|
||||
for (int i = 0; i < overrideList.size(); i++) {
|
||||
TrackSelectionOverride override = overrideList.get(i);
|
||||
|
|
|
|||
|
|
@ -30,34 +30,6 @@ import java.util.List;
|
|||
/** Utilities for {@link Bundleable}. */
|
||||
public final class BundleableUtil {
|
||||
|
||||
/**
|
||||
* Converts a {@link Bundleable} to a {@link Bundle}. It's a convenience wrapper of {@link
|
||||
* Bundleable#toBundle} that can take nullable values.
|
||||
*/
|
||||
@Nullable
|
||||
public static Bundle toNullableBundle(@Nullable Bundleable bundleable) {
|
||||
return bundleable == null ? null : bundleable.toBundle();
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts a {@link Bundle} to a {@link Bundleable}. It's a convenience wrapper of {@link
|
||||
* Bundleable.Creator#fromBundle} that can take nullable values.
|
||||
*/
|
||||
@Nullable
|
||||
public static <T extends Bundleable> T fromNullableBundle(
|
||||
Bundleable.Creator<T> creator, @Nullable Bundle bundle) {
|
||||
return bundle == null ? null : creator.fromBundle(bundle);
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts a {@link Bundle} to a {@link Bundleable}. It's a convenience wrapper of {@link
|
||||
* Bundleable.Creator#fromBundle} that provides default value to ensure non-null.
|
||||
*/
|
||||
public static <T extends Bundleable> T fromNullableBundle(
|
||||
Bundleable.Creator<T> creator, @Nullable Bundle bundle, T defaultValue) {
|
||||
return bundle == null ? defaultValue : creator.fromBundle(bundle);
|
||||
}
|
||||
|
||||
/** Converts a list of {@link Bundleable} to a list {@link Bundle}. */
|
||||
public static <T extends Bundleable> ImmutableList<Bundle> toBundleList(List<T> bundleableList) {
|
||||
ImmutableList.Builder<Bundle> builder = ImmutableList.builder();
|
||||
|
|
@ -80,34 +52,6 @@ public final class BundleableUtil {
|
|||
return builder.build();
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts a list of {@link Bundle} to a list of {@link Bundleable}. Returns {@code defaultValue}
|
||||
* if {@code bundleList} is null.
|
||||
*/
|
||||
public static <T extends Bundleable> List<T> fromBundleNullableList(
|
||||
Bundleable.Creator<T> creator, @Nullable List<Bundle> bundleList, List<T> defaultValue) {
|
||||
return (bundleList == null) ? defaultValue : fromBundleList(creator, bundleList);
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts a {@link SparseArray} of {@link Bundle} to a {@link SparseArray} of {@link
|
||||
* Bundleable}. Returns {@code defaultValue} if {@code bundleSparseArray} is null.
|
||||
*/
|
||||
public static <T extends Bundleable> SparseArray<T> fromBundleNullableSparseArray(
|
||||
Bundleable.Creator<T> creator,
|
||||
@Nullable SparseArray<Bundle> bundleSparseArray,
|
||||
SparseArray<T> defaultValue) {
|
||||
if (bundleSparseArray == null) {
|
||||
return defaultValue;
|
||||
}
|
||||
// Can't use ImmutableList as it doesn't support null elements.
|
||||
SparseArray<T> result = new SparseArray<>(bundleSparseArray.size());
|
||||
for (int i = 0; i < bundleSparseArray.size(); i++) {
|
||||
result.put(bundleSparseArray.keyAt(i), creator.fromBundle(bundleSparseArray.valueAt(i)));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts a collection of {@link Bundleable} to an {@link ArrayList} of {@link Bundle} so that
|
||||
* the returned list can be put to {@link Bundle} using {@link Bundle#putParcelableArrayList}
|
||||
|
|
@ -122,6 +66,19 @@ public final class BundleableUtil {
|
|||
return arrayList;
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts a {@link SparseArray} of {@link Bundle} to a {@link SparseArray} of {@link
|
||||
* Bundleable}.
|
||||
*/
|
||||
public static <T extends Bundleable> SparseArray<T> fromBundleSparseArray(
|
||||
Bundleable.Creator<T> creator, SparseArray<Bundle> bundleSparseArray) {
|
||||
SparseArray<T> result = new SparseArray<>(bundleSparseArray.size());
|
||||
for (int i = 0; i < bundleSparseArray.size(); i++) {
|
||||
result.put(bundleSparseArray.keyAt(i), creator.fromBundle(bundleSparseArray.valueAt(i)));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts a {@link SparseArray} of {@link Bundleable} to an {@link SparseArray} of {@link
|
||||
* Bundle} so that the returned {@link SparseArray} can be put to {@link Bundle} using {@link
|
||||
|
|
|
|||
|
|
@ -31,7 +31,6 @@ import com.google.android.exoplayer2.C.FormatSupport;
|
|||
import com.google.android.exoplayer2.source.MediaPeriodId;
|
||||
import com.google.android.exoplayer2.source.MediaSource;
|
||||
import com.google.android.exoplayer2.util.Assertions;
|
||||
import com.google.android.exoplayer2.util.BundleableUtil;
|
||||
import com.google.android.exoplayer2.util.Util;
|
||||
import java.io.IOException;
|
||||
import java.lang.annotation.Documented;
|
||||
|
|
@ -245,9 +244,9 @@ public final class ExoPlaybackException extends PlaybackException {
|
|||
rendererName = bundle.getString(keyForField(FIELD_RENDERER_NAME));
|
||||
rendererIndex =
|
||||
bundle.getInt(keyForField(FIELD_RENDERER_INDEX), /* defaultValue= */ C.INDEX_UNSET);
|
||||
@Nullable Bundle rendererFormatBundle = bundle.getBundle(keyForField(FIELD_RENDERER_FORMAT));
|
||||
rendererFormat =
|
||||
BundleableUtil.fromNullableBundle(
|
||||
Format.CREATOR, bundle.getBundle(keyForField(FIELD_RENDERER_FORMAT)));
|
||||
rendererFormatBundle == null ? null : Format.CREATOR.fromBundle(rendererFormatBundle);
|
||||
rendererFormatSupport =
|
||||
bundle.getInt(
|
||||
keyForField(FIELD_RENDERER_FORMAT_SUPPORT), /* defaultValue= */ C.FORMAT_HANDLED);
|
||||
|
|
@ -409,8 +408,9 @@ public final class ExoPlaybackException extends PlaybackException {
|
|||
bundle.putInt(keyForField(FIELD_TYPE), type);
|
||||
bundle.putString(keyForField(FIELD_RENDERER_NAME), rendererName);
|
||||
bundle.putInt(keyForField(FIELD_RENDERER_INDEX), rendererIndex);
|
||||
bundle.putBundle(
|
||||
keyForField(FIELD_RENDERER_FORMAT), BundleableUtil.toNullableBundle(rendererFormat));
|
||||
if (rendererFormat != null) {
|
||||
bundle.putBundle(keyForField(FIELD_RENDERER_FORMAT), rendererFormat.toBundle());
|
||||
}
|
||||
bundle.putInt(keyForField(FIELD_RENDERER_FORMAT_SUPPORT), rendererFormatSupport);
|
||||
bundle.putBoolean(keyForField(FIELD_IS_RECOVERABLE), isRecoverable);
|
||||
return bundle;
|
||||
|
|
|
|||
|
|
@ -136,12 +136,15 @@ public final class TrackGroupArray implements Bundleable {
|
|||
/** Object that can restores a TrackGroupArray from a {@link Bundle}. */
|
||||
public static final Creator<TrackGroupArray> CREATOR =
|
||||
bundle -> {
|
||||
List<TrackGroup> trackGroups =
|
||||
BundleableUtil.fromBundleNullableList(
|
||||
TrackGroup.CREATOR,
|
||||
bundle.getParcelableArrayList(keyForField(FIELD_TRACK_GROUPS)),
|
||||
/* defaultValue= */ ImmutableList.of());
|
||||
return new TrackGroupArray(trackGroups.toArray(new TrackGroup[0]));
|
||||
@Nullable
|
||||
List<Bundle> trackGroupBundles =
|
||||
bundle.getParcelableArrayList(keyForField(FIELD_TRACK_GROUPS));
|
||||
if (trackGroupBundles == null) {
|
||||
return new TrackGroupArray();
|
||||
}
|
||||
return new TrackGroupArray(
|
||||
BundleableUtil.fromBundleList(TrackGroup.CREATOR, trackGroupBundles)
|
||||
.toArray(new TrackGroup[0]));
|
||||
};
|
||||
|
||||
private void verifyCorrectness() {
|
||||
|
|
|
|||
|
|
@ -839,18 +839,23 @@ public class DefaultTrackSelector extends MappingTrackSelector {
|
|||
int[] rendererIndices =
|
||||
bundle.getIntArray(
|
||||
Parameters.keyForField(Parameters.FIELD_SELECTION_OVERRIDES_RENDERER_INDICES));
|
||||
@Nullable
|
||||
ArrayList<Bundle> trackGroupArrayBundles =
|
||||
bundle.getParcelableArrayList(
|
||||
Parameters.keyForField(Parameters.FIELD_SELECTION_OVERRIDES_TRACK_GROUP_ARRAYS));
|
||||
List<TrackGroupArray> trackGroupArrays =
|
||||
BundleableUtil.fromBundleNullableList(
|
||||
TrackGroupArray.CREATOR,
|
||||
bundle.getParcelableArrayList(
|
||||
Parameters.keyForField(Parameters.FIELD_SELECTION_OVERRIDES_TRACK_GROUP_ARRAYS)),
|
||||
/* defaultValue= */ ImmutableList.of());
|
||||
trackGroupArrayBundles == null
|
||||
? ImmutableList.of()
|
||||
: BundleableUtil.fromBundleList(TrackGroupArray.CREATOR, trackGroupArrayBundles);
|
||||
@Nullable
|
||||
SparseArray<Bundle> selectionOverrideBundles =
|
||||
bundle.getSparseParcelableArray(
|
||||
Parameters.keyForField(Parameters.FIELD_SELECTION_OVERRIDES));
|
||||
SparseArray<SelectionOverride> selectionOverrides =
|
||||
BundleableUtil.fromBundleNullableSparseArray(
|
||||
SelectionOverride.CREATOR,
|
||||
bundle.getSparseParcelableArray(
|
||||
Parameters.keyForField(Parameters.FIELD_SELECTION_OVERRIDES)),
|
||||
/* defaultValue= */ new SparseArray<>());
|
||||
selectionOverrideBundles == null
|
||||
? new SparseArray<>()
|
||||
: BundleableUtil.fromBundleSparseArray(
|
||||
SelectionOverride.CREATOR, selectionOverrideBundles);
|
||||
|
||||
if (rendererIndices == null || rendererIndices.length != trackGroupArrays.size()) {
|
||||
return; // Incorrect format, ignore all overrides.
|
||||
|
|
|
|||
Loading…
Reference in a new issue