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; 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 * An interface through which system clocks can be read and {@link HandlerWrapper}s created. The
* used for all non-test cases. Implementations must also be able to create a {@link HandlerWrapper} * {@link #DEFAULT} implementation must be used for all non-test cases.
* which uses the underlying clock to schedule delayed messages.
*/ */
public interface Clock extends HandlerWrapper.Factory { public interface Clock {
/** /**
* Default {@link Clock} to use for all non-test cases. * 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) * @see android.os.SystemClock#sleep(long)
*/ */
void sleep(long sleepTimeMs); 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.Handler;
import android.os.Looper; import android.os.Looper;
import android.os.Message; 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 * An interface to call through to a {@link Handler}. Instances must be created by calling {@link
* used for all non-test cases. * Clock#createHandler(Looper, Handler.Callback)} on {@link Clock#DEFAULT} for all non-test cases.
*/ */
public interface HandlerWrapper { 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(). */ /** @see Handler#getLooper(). */
Looper getLooper(); Looper getLooper();

View File

@ -15,6 +15,7 @@
*/ */
package com.google.android.exoplayer2.util; package com.google.android.exoplayer2.util;
import android.os.Handler;
import android.os.Handler.Callback; import android.os.Handler.Callback;
import android.os.Looper; import android.os.Looper;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
@ -36,6 +37,6 @@ import android.support.annotation.Nullable;
@Override @Override
public HandlerWrapper createHandler(Looper looper, @Nullable Callback callback) { 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; package com.google.android.exoplayer2.util;
import android.os.Handler.Callback;
import android.os.Looper; import android.os.Looper;
import android.os.Message; import android.os.Message;
import android.os.SystemClock; import android.os.SystemClock;
/** The standard implementation of {@link HandlerWrapper}. */ /** The standard implementation of {@link HandlerWrapper}. */
/* package */ final class SystemHandler implements HandlerWrapper { /* package */ final class SystemHandlerWrapper 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));
}
}
private final android.os.Handler handler; private final android.os.Handler handler;
private SystemHandler(android.os.Handler handler) { public SystemHandlerWrapper(android.os.Handler handler) {
this.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.DataSource;
import com.google.android.exoplayer2.upstream.DefaultBandwidthMeter; import com.google.android.exoplayer2.upstream.DefaultBandwidthMeter;
import com.google.android.exoplayer2.upstream.TransferListener; 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.HandlerWrapper;
import com.google.android.exoplayer2.util.Util; import com.google.android.exoplayer2.util.Util;
import com.google.android.exoplayer2.video.VideoRendererEventListener; import com.google.android.exoplayer2.video.VideoRendererEventListener;
@ -188,8 +189,7 @@ public abstract class ExoHostedTest extends Player.DefaultEventListener implemen
player.addAudioDebugListener(this); player.addAudioDebugListener(this);
player.addVideoDebugListener(this); player.addVideoDebugListener(this);
player.setPlayWhenReady(true); player.setPlayWhenReady(true);
actionHandler = actionHandler = Clock.DEFAULT.createHandler(Looper.myLooper(), /* callback= */ null);
HandlerWrapper.Factory.DEFAULT.createHandler(Looper.myLooper(), /* callback= */ null);
// Schedule any pending actions. // Schedule any pending actions.
if (pendingSchedule != null) { if (pendingSchedule != null) {
pendingSchedule.start(player, trackSelector, surface, actionHandler, /* callback= */ null); pendingSchedule.start(player, trackSelector, surface, actionHandler, /* callback= */ null);