Use Clock in DefaultBandwidthMeter instead of SystemClock.

The default behaviour stays the same as Clock.DEFAULT == SystemClock. And it
enables bandwidth measurements in tests with simulated clocks.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=162350852
This commit is contained in:
tonihei 2017-07-18 07:43:21 -07:00 committed by Oliver Woodman
parent 3ff9695a73
commit fb2dbf2c77

View file

@ -16,8 +16,8 @@
package com.google.android.exoplayer2.upstream;
import android.os.Handler;
import android.os.SystemClock;
import com.google.android.exoplayer2.util.Assertions;
import com.google.android.exoplayer2.util.Clock;
import com.google.android.exoplayer2.util.SlidingPercentile;
/**
@ -37,6 +37,7 @@ public final class DefaultBandwidthMeter implements BandwidthMeter, TransferList
private final Handler eventHandler;
private final EventListener eventListener;
private final SlidingPercentile slidingPercentile;
private final Clock clock;
private int streamCount;
private long sampleStartTimeMs;
@ -55,9 +56,15 @@ public final class DefaultBandwidthMeter implements BandwidthMeter, TransferList
}
public DefaultBandwidthMeter(Handler eventHandler, EventListener eventListener, int maxWeight) {
this(eventHandler, eventListener, maxWeight, Clock.DEFAULT);
}
public DefaultBandwidthMeter(Handler eventHandler, EventListener eventListener, int maxWeight,
Clock clock) {
this.eventHandler = eventHandler;
this.eventListener = eventListener;
this.slidingPercentile = new SlidingPercentile(maxWeight);
this.clock = clock;
bitrateEstimate = NO_ESTIMATE;
}
@ -69,7 +76,7 @@ public final class DefaultBandwidthMeter implements BandwidthMeter, TransferList
@Override
public synchronized void onTransferStart(Object source, DataSpec dataSpec) {
if (streamCount == 0) {
sampleStartTimeMs = SystemClock.elapsedRealtime();
sampleStartTimeMs = clock.elapsedRealtime();
}
streamCount++;
}
@ -82,7 +89,7 @@ public final class DefaultBandwidthMeter implements BandwidthMeter, TransferList
@Override
public synchronized void onTransferEnd(Object source) {
Assertions.checkState(streamCount > 0);
long nowMs = SystemClock.elapsedRealtime();
long nowMs = clock.elapsedRealtime();
int sampleElapsedTimeMs = (int) (nowMs - sampleStartTimeMs);
totalElapsedTimeMs += sampleElapsedTimeMs;
totalBytesTransferred += sampleBytesTransferred;