From 0821f578e8ca51fda23b9cddf901ed1f594bd493 Mon Sep 17 00:00:00 2001 From: olly Date: Tue, 2 Jan 2018 10:04:24 -0800 Subject: [PATCH] Remove HandlerWrapper.Factory ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=180558741 --- .../google/android/exoplayer2/util/Clock.java | 19 ++++++++++++++---- .../exoplayer2/util/HandlerWrapper.java | 20 ++----------------- .../android/exoplayer2/util/SystemClock.java | 3 ++- ...Handler.java => SystemHandlerWrapper.java} | 13 ++---------- .../exoplayer2/testutil/ExoHostedTest.java | 4 ++-- 5 files changed, 23 insertions(+), 36 deletions(-) rename library/core/src/main/java/com/google/android/exoplayer2/util/{SystemHandler.java => SystemHandlerWrapper.java} (85%) diff --git a/library/core/src/main/java/com/google/android/exoplayer2/util/Clock.java b/library/core/src/main/java/com/google/android/exoplayer2/util/Clock.java index 7731cca68c..43c01bf53a 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/util/Clock.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/util/Clock.java @@ -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); } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/util/HandlerWrapper.java b/library/core/src/main/java/com/google/android/exoplayer2/util/HandlerWrapper.java index b9f3a750d7..b101a5e199 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/util/HandlerWrapper.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/util/HandlerWrapper.java @@ -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(); diff --git a/library/core/src/main/java/com/google/android/exoplayer2/util/SystemClock.java b/library/core/src/main/java/com/google/android/exoplayer2/util/SystemClock.java index 8a5bdf549f..b24a38ea3c 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/util/SystemClock.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/util/SystemClock.java @@ -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)); } } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/util/SystemHandler.java b/library/core/src/main/java/com/google/android/exoplayer2/util/SystemHandlerWrapper.java similarity index 85% rename from library/core/src/main/java/com/google/android/exoplayer2/util/SystemHandler.java rename to library/core/src/main/java/com/google/android/exoplayer2/util/SystemHandlerWrapper.java index e99c626057..aa290d9313 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/util/SystemHandler.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/util/SystemHandlerWrapper.java @@ -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; } diff --git a/testutils/src/main/java/com/google/android/exoplayer2/testutil/ExoHostedTest.java b/testutils/src/main/java/com/google/android/exoplayer2/testutil/ExoHostedTest.java index 3a5f3ccd7a..2298a2f0cc 100644 --- a/testutils/src/main/java/com/google/android/exoplayer2/testutil/ExoHostedTest.java +++ b/testutils/src/main/java/com/google/android/exoplayer2/testutil/ExoHostedTest.java @@ -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);