Remove HandlerWrapper.Factory

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=180558741
This commit is contained in:
olly 2018-01-02 10:04:24 -08:00 committed by Oliver Woodman
parent 22f8ee37d4
commit 0821f578e8
5 changed files with 23 additions and 36 deletions

View File

@ -15,12 +15,15 @@
*/
package com.google.android.exoplayer2.util;
import android.os.Handler;
import android.os.Looper;
import android.support.annotation.Nullable;
/**
* An interface through which system clocks can be read. The {@link #DEFAULT} implementation must be
* used for all non-test cases. Implementations must also be able to create a {@link HandlerWrapper}
* which uses the underlying clock to schedule delayed messages.
* An interface through which system clocks can be read and {@link HandlerWrapper}s created. The
* {@link #DEFAULT} implementation must be used for all non-test cases.
*/
public interface Clock extends HandlerWrapper.Factory {
public interface Clock {
/**
* Default {@link Clock} to use for all non-test cases.
@ -36,4 +39,12 @@ public interface Clock extends HandlerWrapper.Factory {
* @see android.os.SystemClock#sleep(long)
*/
void sleep(long sleepTimeMs);
/**
* Creates a {@link HandlerWrapper} using a specified looper and a specified callback for handling
* messages.
*
* @see Handler#Handler(Looper, Handler.Callback).
*/
HandlerWrapper createHandler(Looper looper, @Nullable Handler.Callback callback);
}

View File

@ -18,29 +18,13 @@ package com.google.android.exoplayer2.util;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.support.annotation.Nullable;
/**
* An interface to call through to an {@link Handler}. The {@link Factory#DEFAULT} factory must be
* used for all non-test cases.
* An interface to call through to a {@link Handler}. Instances must be created by calling {@link
* Clock#createHandler(Looper, Handler.Callback)} on {@link Clock#DEFAULT} for all non-test cases.
*/
public interface HandlerWrapper {
/** A factory for handler instances. */
interface Factory {
/** Default HandlerWrapper factory to use for all non-test cases. */
Factory DEFAULT = new SystemHandler.Factory();
/**
* Creates a HandlerWrapper running a specified looper and using a specified callback for
* messages.
*
* @see Handler#Handler(Looper, Handler.Callback).
*/
HandlerWrapper createHandler(Looper looper, @Nullable Handler.Callback callback);
}
/** @see Handler#getLooper(). */
Looper getLooper();

View File

@ -15,6 +15,7 @@
*/
package com.google.android.exoplayer2.util;
import android.os.Handler;
import android.os.Handler.Callback;
import android.os.Looper;
import android.support.annotation.Nullable;
@ -36,6 +37,6 @@ import android.support.annotation.Nullable;
@Override
public HandlerWrapper createHandler(Looper looper, @Nullable Callback callback) {
return HandlerWrapper.Factory.DEFAULT.createHandler(looper, callback);
return new SystemHandlerWrapper(new Handler(looper, callback));
}
}

View File

@ -15,25 +15,16 @@
*/
package com.google.android.exoplayer2.util;
import android.os.Handler.Callback;
import android.os.Looper;
import android.os.Message;
import android.os.SystemClock;
/** The standard implementation of {@link HandlerWrapper}. */
/* package */ final class SystemHandler implements HandlerWrapper {
/* package */ static final class Factory implements HandlerWrapper.Factory {
@Override
public HandlerWrapper createHandler(Looper looper, Callback callback) {
return new SystemHandler(new android.os.Handler(looper, callback));
}
}
/* package */ final class SystemHandlerWrapper implements HandlerWrapper {
private final android.os.Handler handler;
private SystemHandler(android.os.Handler handler) {
public SystemHandlerWrapper(android.os.Handler handler) {
this.handler = handler;
}

View File

@ -42,6 +42,7 @@ import com.google.android.exoplayer2.upstream.BandwidthMeter;
import com.google.android.exoplayer2.upstream.DataSource;
import com.google.android.exoplayer2.upstream.DefaultBandwidthMeter;
import com.google.android.exoplayer2.upstream.TransferListener;
import com.google.android.exoplayer2.util.Clock;
import com.google.android.exoplayer2.util.HandlerWrapper;
import com.google.android.exoplayer2.util.Util;
import com.google.android.exoplayer2.video.VideoRendererEventListener;
@ -188,8 +189,7 @@ public abstract class ExoHostedTest extends Player.DefaultEventListener implemen
player.addAudioDebugListener(this);
player.addVideoDebugListener(this);
player.setPlayWhenReady(true);
actionHandler =
HandlerWrapper.Factory.DEFAULT.createHandler(Looper.myLooper(), /* callback= */ null);
actionHandler = Clock.DEFAULT.createHandler(Looper.myLooper(), /* callback= */ null);
// Schedule any pending actions.
if (pendingSchedule != null) {
pendingSchedule.start(player, trackSelector, surface, actionHandler, /* callback= */ null);