From 2de7ff44cbfeefb065f849fd44d220a1dac35dd8 Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Fri, 10 Apr 2020 00:03:53 +0200 Subject: Allow Proguard to optimize androidx packages This reduces the method count from 64k to 44k and the apk size from 8MB to 7MB --- .../de/test/antennapod/playback/PlaybackTest.java | 36 ++++++++----- .../test/antennapod/storage/AutoDownloadTest.java | 59 +++++++--------------- .../de/test/antennapod/storage/DBReaderTest.java | 1 + .../test/antennapod/ui/NavigationDrawerTest.java | 2 +- .../de/test/antennapod/ui/SpeedChangeTest.java | 1 + .../java/de/test/antennapod/ui/UITestUtils.java | 36 ++++--------- 6 files changed, 55 insertions(+), 80 deletions(-) (limited to 'app/src/androidTest/java/de') diff --git a/app/src/androidTest/java/de/test/antennapod/playback/PlaybackTest.java b/app/src/androidTest/java/de/test/antennapod/playback/PlaybackTest.java index efd6070bb..12227d258 100644 --- a/app/src/androidTest/java/de/test/antennapod/playback/PlaybackTest.java +++ b/app/src/androidTest/java/de/test/antennapod/playback/PlaybackTest.java @@ -4,7 +4,6 @@ import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.preference.PreferenceManager; -import android.view.KeyEvent; import android.view.View; import androidx.test.filters.LargeTest; import androidx.test.platform.app.InstrumentationRegistry; @@ -13,6 +12,7 @@ import de.danoeh.antennapod.R; import de.danoeh.antennapod.activity.MainActivity; import de.danoeh.antennapod.core.feed.FeedItem; import de.danoeh.antennapod.core.feed.FeedMedia; +import de.danoeh.antennapod.core.preferences.PlaybackPreferences; import de.danoeh.antennapod.core.preferences.UserPreferences; import de.danoeh.antennapod.core.service.playback.PlaybackService; import de.danoeh.antennapod.core.service.playback.PlayerStatus; @@ -20,6 +20,7 @@ import de.danoeh.antennapod.core.storage.DBReader; import de.danoeh.antennapod.core.storage.DBWriter; import de.danoeh.antennapod.core.util.IntentUtils; import de.danoeh.antennapod.core.util.LongList; +import de.danoeh.antennapod.core.util.playback.PlaybackController; import de.test.antennapod.EspressoTestUtils; import de.test.antennapod.IgnoreOnCi; import de.test.antennapod.ui.UITestUtils; @@ -71,6 +72,7 @@ public class PlaybackTest { public String playerToUse; private UITestUtils uiTestUtils; protected Context context; + private PlaybackController controller; @Parameterized.Parameters(name = "{0}") public static Collection initParameters() { @@ -96,6 +98,14 @@ public class PlaybackTest { activityTestRule.finishActivity(); EspressoTestUtils.tryKillPlaybackService(); uiTestUtils.tearDown(); + if (controller != null) { + controller.release(); + } + } + + private void setupPlaybackController() { + controller = new PlaybackController(activityTestRule.getActivity()); + controller.init(); } @Test @@ -103,9 +113,10 @@ public class PlaybackTest { setContinuousPlaybackPreference(false); uiTestUtils.addLocalFeedData(true); activityTestRule.launchActivity(new Intent()); + setupPlaybackController(); playFromQueue(0); - Awaitility.await().atMost(5, TimeUnit.SECONDS).until( - () -> uiTestUtils.getPlaybackController(getActivity()).getStatus() == PlayerStatus.INITIALIZED); + Awaitility.await().atMost(5, TimeUnit.SECONDS) + .until(() -> controller.getStatus() == PlayerStatus.INITIALIZED); } @Test @@ -120,9 +131,9 @@ public class PlaybackTest { playFromQueue(0); Awaitility.await().atMost(2, TimeUnit.SECONDS).until( - () -> first.getMedia().equals(uiTestUtils.getCurrentMedia())); + () -> first.getMedia().getId() == PlaybackPreferences.getCurrentlyPlayingFeedMediaId()); Awaitility.await().atMost(6, TimeUnit.SECONDS).until( - () -> second.getMedia().equals(uiTestUtils.getCurrentMedia())); + () -> second.getMedia().getId() == PlaybackPreferences.getCurrentlyPlayingFeedMediaId()); } @@ -152,6 +163,7 @@ public class PlaybackTest { uiTestUtils.addLocalFeedData(true); activityTestRule.launchActivity(new Intent()); + setupPlaybackController(); final int fiIdx = 0; final FeedItem feedItem = DBReader.getQueue().get(fiIdx); @@ -161,11 +173,11 @@ public class PlaybackTest { // let playback run a bit then pause Awaitility.await() .atMost(1000, MILLISECONDS) - .until(() -> PlayerStatus.PLAYING == uiTestUtils.getPlaybackController(getActivity()).getStatus()); + .until(() -> PlayerStatus.PLAYING == controller.getStatus()); pauseEpisode(); Awaitility.await() .atMost(1000, MILLISECONDS) - .until(() -> PlayerStatus.PAUSED == uiTestUtils.getPlaybackController(getActivity()).getStatus()); + .until(() -> PlayerStatus.PAUSED == controller.getStatus()); assertThat("Ensure even with smart mark as play, after pause, the item remains in the queue.", DBReader.getQueue(), hasItems(feedItem)); @@ -232,7 +244,7 @@ public class PlaybackTest { FeedMedia media = episodes.get(0).getMedia(); Awaitility.await().atMost(1, TimeUnit.SECONDS).until( - () -> media.equals(uiTestUtils.getCurrentMedia())); + () -> media.getId() == PlaybackPreferences.getCurrentlyPlayingFeedMediaId()); } /** @@ -248,7 +260,7 @@ public class PlaybackTest { FeedMedia media = queue.get(itemIdx).getMedia(); Awaitility.await().atMost(1, TimeUnit.SECONDS).until( - () -> media.equals(uiTestUtils.getCurrentMedia())); + () -> media.getId() == PlaybackPreferences.getCurrentlyPlayingFeedMediaId()); } @@ -265,15 +277,15 @@ public class PlaybackTest { startLocalPlayback(); FeedMedia media = episodes.get(0).getMedia(); Awaitility.await().atMost(1, TimeUnit.SECONDS).until( - () -> media.equals(uiTestUtils.getCurrentMedia())); + () -> media.getId() == PlaybackPreferences.getCurrentlyPlayingFeedMediaId()); Awaitility.await().atMost(5, TimeUnit.SECONDS).until( - () -> !media.equals(uiTestUtils.getCurrentMedia())); + () -> media.getId() != PlaybackPreferences.getCurrentlyPlayingFeedMediaId()); startLocalPlayback(); Awaitility.await().atMost(1, TimeUnit.SECONDS).until( - () -> media.equals(uiTestUtils.getCurrentMedia())); + () -> media.getId() == PlaybackPreferences.getCurrentlyPlayingFeedMediaId()); } protected void doTestSmartMarkAsPlayed_Skip_ForEpisode(int itemIdxNegAllowed) throws Exception { diff --git a/app/src/androidTest/java/de/test/antennapod/storage/AutoDownloadTest.java b/app/src/androidTest/java/de/test/antennapod/storage/AutoDownloadTest.java index 41f2ec864..5396b218d 100644 --- a/app/src/androidTest/java/de/test/antennapod/storage/AutoDownloadTest.java +++ b/app/src/androidTest/java/de/test/antennapod/storage/AutoDownloadTest.java @@ -1,37 +1,27 @@ package de.test.antennapod.storage; import android.content.Context; -import android.content.Intent; - import androidx.annotation.NonNull; -import androidx.annotation.Nullable; import androidx.test.core.app.ApplicationProvider; - -import androidx.test.platform.app.InstrumentationRegistry; -import de.danoeh.antennapod.core.util.playback.PlaybackServiceStarter; -import de.test.antennapod.EspressoTestUtils; -import org.awaitility.Awaitility; -import org.awaitility.core.ConditionTimeoutException; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -import java.util.List; -import java.util.concurrent.TimeUnit; - import de.danoeh.antennapod.core.ClientConfig; import de.danoeh.antennapod.core.DBTasksCallbacks; import de.danoeh.antennapod.core.feed.FeedItem; import de.danoeh.antennapod.core.feed.FeedMedia; +import de.danoeh.antennapod.core.preferences.PlaybackPreferences; import de.danoeh.antennapod.core.preferences.UserPreferences; -import de.danoeh.antennapod.core.service.playback.PlaybackService; import de.danoeh.antennapod.core.storage.AutomaticDownloadAlgorithm; import de.danoeh.antennapod.core.storage.DBReader; -import de.danoeh.antennapod.core.storage.DBTasks; import de.danoeh.antennapod.core.storage.EpisodeCleanupAlgorithm; -import de.danoeh.antennapod.core.storage.PodDBAdapter; -import de.danoeh.antennapod.core.util.playback.Playable; +import de.danoeh.antennapod.core.util.playback.PlaybackServiceStarter; +import de.test.antennapod.EspressoTestUtils; import de.test.antennapod.ui.UITestUtils; +import org.awaitility.Awaitility; +import org.awaitility.core.ConditionTimeoutException; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +import java.util.List; import static java.util.concurrent.TimeUnit.MILLISECONDS; import static org.junit.Assert.assertTrue; @@ -100,13 +90,12 @@ public class AutoDownloadTest { // ensure that currently playing has been advanced to the next one by this point. Awaitility.await("advanced to the next episode") .atMost(6000, MILLISECONDS) // the test mp3 media is 3-second long. twice should be enough - .until(() -> item1.equals(stubDownloadAlgorithm.getCurrentlyPlayingAtDownload())); + .until(() -> item1.getMedia().getId() == stubDownloadAlgorithm.getCurrentlyPlayingAtDownload()); } catch (ConditionTimeoutException cte) { - FeedItem actual = stubDownloadAlgorithm.getCurrentlyPlayingAtDownload(); + long actual = stubDownloadAlgorithm.getCurrentlyPlayingAtDownload(); fail("when auto download is triggered, the next episode should be playing: (" + item1.getId() + ", " + item1.getTitle() + ") . " - + "Actual playing: (" - + (actual == null ? "" : actual.getId() + ", " + actual.getTitle()) + ")" + + "Actual playing: (" + actual + ")" ); } @@ -121,15 +110,7 @@ public class AutoDownloadTest { .start(); Awaitility.await("episode is playing") .atMost(2000, MILLISECONDS) - .until(() -> item.equals(getCurrentlyPlaying())); - } - - private FeedItem getCurrentlyPlaying() { - Playable playable = Playable.PlayableUtils.createInstanceFromPreferences(context); - if (playable == null) { - return null; - } - return ((FeedMedia) playable).getItem(); + .until(() -> item.getMedia().getId() == PlaybackPreferences.getCurrentlyPlayingFeedMediaId()); } private void useDownloadAlgorithm(final AutomaticDownloadAlgorithm downloadAlgorithm) { @@ -146,23 +127,21 @@ public class AutoDownloadTest { }; } - private class StubDownloadAlgorithm implements AutomaticDownloadAlgorithm { - @Nullable - private FeedItem currentlyPlaying; + private static class StubDownloadAlgorithm implements AutomaticDownloadAlgorithm { + private long currentlyPlaying = -1; @Override public Runnable autoDownloadUndownloadedItems(Context context) { return () -> { - if (currentlyPlaying == null) { - currentlyPlaying = getCurrentlyPlaying(); + if (currentlyPlaying == -1) { + currentlyPlaying = PlaybackPreferences.getCurrentlyPlayingFeedMediaId(); } else { throw new AssertionError("Stub automatic download should be invoked once and only once"); } }; } - @Nullable - FeedItem getCurrentlyPlayingAtDownload() { + long getCurrentlyPlayingAtDownload() { return currentlyPlaying; } } diff --git a/app/src/androidTest/java/de/test/antennapod/storage/DBReaderTest.java b/app/src/androidTest/java/de/test/antennapod/storage/DBReaderTest.java index f4a66ee61..b2458bac6 100644 --- a/app/src/androidTest/java/de/test/antennapod/storage/DBReaderTest.java +++ b/app/src/androidTest/java/de/test/antennapod/storage/DBReaderTest.java @@ -404,6 +404,7 @@ public class DBReaderTest { List feeds = saveFeedlist(1, 1, false, true, NUM_CHAPTERS); FeedItem item1 = feeds.get(0).getItems().get(0); FeedItem item2 = DBReader.getFeedItem(item1.getId()); + DBReader.loadChaptersOfFeedItem(item2); assertTrue(item2.hasChapters()); assertEquals(item1.getChapters(), item2.getChapters()); } diff --git a/app/src/androidTest/java/de/test/antennapod/ui/NavigationDrawerTest.java b/app/src/androidTest/java/de/test/antennapod/ui/NavigationDrawerTest.java index 86b167db2..d5251ace7 100644 --- a/app/src/androidTest/java/de/test/antennapod/ui/NavigationDrawerTest.java +++ b/app/src/androidTest/java/de/test/antennapod/ui/NavigationDrawerTest.java @@ -183,7 +183,7 @@ public class NavigationDrawerTest { onView(first(withText(R.string.queue_label))).perform(longClick()); for (int i = 0; i < titles.length; i++) { String title = titles[i]; - onView(first(withText(title))).perform(click()); + onView(allOf(withText(title), isDisplayed())).perform(click()); if (i == 3) { onView(withId(R.id.select_dialog_listview)).perform(swipeUp()); diff --git a/app/src/androidTest/java/de/test/antennapod/ui/SpeedChangeTest.java b/app/src/androidTest/java/de/test/antennapod/ui/SpeedChangeTest.java index e91554521..288b862b8 100644 --- a/app/src/androidTest/java/de/test/antennapod/ui/SpeedChangeTest.java +++ b/app/src/androidTest/java/de/test/antennapod/ui/SpeedChangeTest.java @@ -83,6 +83,7 @@ public class SpeedChangeTest { @After public void tearDown() throws Exception { uiTestUtils.tearDown(); + controller.release(); } @Test diff --git a/app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java b/app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java index 4294349fc..1dddca6b5 100644 --- a/app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java +++ b/app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java @@ -1,14 +1,20 @@ package de.test.antennapod.ui; import android.content.Context; -import android.graphics.Bitmap; import android.util.Log; - import de.danoeh.antennapod.core.event.FeedListUpdateEvent; -import de.danoeh.antennapod.core.util.playback.Playable; +import de.danoeh.antennapod.core.event.QueueEvent; +import de.danoeh.antennapod.core.feed.Feed; +import de.danoeh.antennapod.core.feed.FeedItem; +import de.danoeh.antennapod.core.feed.FeedMedia; +import de.danoeh.antennapod.core.storage.PodDBAdapter; +import de.test.antennapod.util.service.download.HTTPBin; +import de.test.antennapod.util.syndication.feedgenerator.RSS2Generator; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; +import org.greenrobot.eventbus.EventBus; +import org.junit.Assert; import java.io.File; import java.io.FileOutputStream; @@ -19,19 +25,6 @@ import java.util.Date; import java.util.List; import java.util.Locale; -import de.danoeh.antennapod.activity.MainActivity; -import de.danoeh.antennapod.core.event.QueueEvent; -import de.danoeh.antennapod.core.feed.Feed; -import de.danoeh.antennapod.core.feed.FeedItem; -import de.danoeh.antennapod.core.feed.FeedMedia; -import de.danoeh.antennapod.core.storage.PodDBAdapter; -import de.danoeh.antennapod.core.util.playback.PlaybackController; -import de.danoeh.antennapod.fragment.ExternalPlayerFragment; -import de.test.antennapod.util.service.download.HTTPBin; -import de.test.antennapod.util.syndication.feedgenerator.RSS2Generator; -import org.greenrobot.eventbus.EventBus; -import org.junit.Assert; - /** * Utility methods for UI tests. * Starts a web server that hosts feeds, episodes and images. @@ -200,17 +193,6 @@ public class UITestUtils { EventBus.getDefault().post(QueueEvent.setQueue(queue)); } - public PlaybackController getPlaybackController(MainActivity mainActivity) { - ExternalPlayerFragment fragment = (ExternalPlayerFragment) mainActivity.getSupportFragmentManager() - .findFragmentByTag(ExternalPlayerFragment.TAG); - return fragment.getPlaybackControllerTestingOnly(); - } - - public FeedMedia getCurrentMedia() { - Playable playable = Playable.PlayableUtils.createInstanceFromPreferences(context); - return (FeedMedia) playable; - } - public void setMediaFileName(String filename) { testFileName = filename; } -- cgit v1.2.3