From 496cf9145b01b77cad345a6782c00b0722d957cf Mon Sep 17 00:00:00 2001 From: Dennis Guse Date: Tue, 10 Sep 2019 21:58:51 +0200 Subject: [PATCH] Removed usage of Broadcast (were used by Widget). --- metadata/en-US/changelogs/next_release.txt | 3 +- .../services/TrackRecordingServiceTest.java | 68 ------------------- .../services/TrackRecordingService.java | 14 ---- src/main/res/values/broadcast.xml | 25 ------- src/main/res/values/do_not_translate.xml | 5 -- 5 files changed, 2 insertions(+), 113 deletions(-) delete mode 100644 src/main/res/values/broadcast.xml diff --git a/metadata/en-US/changelogs/next_release.txt b/metadata/en-US/changelogs/next_release.txt index 596d90b1a..dbba5270c 100644 --- a/metadata/en-US/changelogs/next_release.txt +++ b/metadata/en-US/changelogs/next_release.txt @@ -9,4 +9,5 @@ Bugfix: Developer: - Fixed (some) test cases - Removed unused parcelable functionality -- Major cleanup and reformatting \ No newline at end of file +- Major cleanup and reformatting +- Do not use broadcast for app to widget communication \ No newline at end of file diff --git a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTest.java b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTest.java index 1b431274a..76a0e7f3c 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTest.java @@ -19,7 +19,6 @@ import android.content.BroadcastReceiver; import android.content.ContentProvider; import android.content.Context; import android.content.Intent; -import android.content.IntentFilter; import android.content.SharedPreferences; import android.location.Location; import android.os.IBinder; @@ -272,43 +271,6 @@ public class TrackRecordingServiceTest { Assert.assertEquals(PreferencesUtils.RECORDING_TRACK_ID_DEFAULT, service.getRecordingTrackId()); } - @MediumTest - @Test - public void testStartNewTrack_noRecording() throws Exception { - // NOTICE: due to the way Android permissions work, if this fails, uninstall the test apk then retry. - // The test must be installed *after* the app (go figure). - // Reference: http://code.google.com/p/android/issues/detail?id=5521 - BlockingBroadcastReceiver startReceiver = new BlockingBroadcastReceiver(); - String startAction = context.getString(R.string.track_started_broadcast_action); - context.registerReceiver(startReceiver, new IntentFilter(startAction)); - - List tracks = providerUtils.getAllTracks(); - Assert.assertTrue(tracks.isEmpty()); - - ITrackRecordingService service = ((ITrackRecordingService) mServiceRule.bindService(createStartIntent(context))); - Assert.assertFalse(service.isRecording()); - - long newTrackId = service.startNewTrack(); - Assert.assertTrue(newTrackId >= 0); - Assert.assertTrue(service.isRecording()); - Track track = providerUtils.getTrack(newTrackId); - Assert.assertNotNull(track); - Assert.assertEquals(newTrackId, track.getId()); - Assert.assertEquals(PreferencesUtils.getString(context, R.string.default_activity_key, PreferencesUtils.DEFAULT_ACTIVITY_DEFAULT), track.getCategory()); - Assert.assertEquals(newTrackId, PreferencesUtils.getLong(context, R.string.recording_track_id_key)); - Assert.assertEquals(newTrackId, service.getRecordingTrackId()); - - // Verify that the start broadcast was received. - Assert.assertTrue(startReceiver.waitUntilReceived(1)); - List receivedIntents = startReceiver.getReceivedIntents(); - Assert.assertEquals(1, receivedIntents.size()); - Intent broadcastIntent = receivedIntents.get(0); - Assert.assertEquals(startAction, broadcastIntent.getAction()); - Assert.assertEquals(newTrackId, broadcastIntent.getLongExtra(context.getString(R.string.track_id_broadcast_extra), -1L)); - - context.unregisterReceiver(startReceiver); - } - @MediumTest @Test public void testStartNewTrack_alreadyRecording() throws Exception { @@ -324,36 +286,6 @@ public class TrackRecordingServiceTest { Assert.assertEquals(trackId, service.getRecordingTrackId()); } - @MediumTest - @Test - public void testEndCurrentTrack_alreadyRecording() throws Exception { - // See comment above if this fails randomly. - BlockingBroadcastReceiver stopReceiver = new BlockingBroadcastReceiver(); - String stopAction = context.getString(R.string.track_stopped_broadcast_action); - context.registerReceiver(stopReceiver, new IntentFilter(stopAction)); - - createDummyTrack(trackId, -1L, true); - - ITrackRecordingService service = ((ITrackRecordingService) mServiceRule.bindService(createStartIntent(context))); - Assert.assertTrue(service.isRecording()); - - // End the current track. - service.endCurrentTrack(); - Assert.assertFalse(service.isRecording()); - Assert.assertEquals(PreferencesUtils.RECORDING_TRACK_ID_DEFAULT, PreferencesUtils.getLong(context, R.string.recording_track_id_key)); - Assert.assertEquals(PreferencesUtils.RECORDING_TRACK_ID_DEFAULT, service.getRecordingTrackId()); - - // Verify that the stop broadcast was received. - Assert.assertTrue(stopReceiver.waitUntilReceived(1)); - List receivedIntents = stopReceiver.getReceivedIntents(); - Assert.assertEquals(1, receivedIntents.size()); - Intent broadcastIntent = receivedIntents.get(0); - Assert.assertEquals(stopAction, broadcastIntent.getAction()); - Assert.assertEquals(trackId, broadcastIntent.getLongExtra(context.getString(R.string.track_id_broadcast_extra), -1L)); - - context.unregisterReceiver(stopReceiver); - } - @MediumTest @Test public void testEndCurrentTrack_noRecording() throws Exception { diff --git a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingService.java b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingService.java index 1e5010416..683bdb252 100644 --- a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingService.java +++ b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingService.java @@ -602,7 +602,6 @@ public class TrackRecordingService extends Service { isIdle = false; startGps(); - sendTrackBroadcast(trackStarted ? R.string.track_started_broadcast_action : R.string.track_resumed_broadcast_action, recordingTrackId); // Restore periodic tasks voiceExecutor.restore(); @@ -700,7 +699,6 @@ public class TrackRecordingService extends Service { } lastLocation = null; - sendTrackBroadcast(trackStopped ? R.string.track_stopped_broadcast_action : R.string.track_paused_broadcast_action, trackId); stopGps(trackStopped); } @@ -881,7 +879,6 @@ public class TrackRecordingService extends Service { } voiceExecutor.update(); splitExecutor.update(); - sendTrackBroadcast(R.string.track_update_broadcast_action, track.getId()); } /** @@ -983,17 +980,6 @@ public class TrackRecordingService extends Service { } } - /** - * Sends track broadcast. - * - * @param actionId the intent action id - * @param trackId the track id - */ - private void sendTrackBroadcast(int actionId, long trackId) { - Intent intent = new Intent().setAction(getString(actionId)).putExtra(getString(R.string.track_id_broadcast_extra), trackId); - sendBroadcast(intent, getString(R.string.permission_notification_value)); - } - /** * TODO: There is a bug in Android that leaks Binder instances. This bug is * especially visible if we have a non-static class, as there is no way to diff --git a/src/main/res/values/broadcast.xml b/src/main/res/values/broadcast.xml deleted file mode 100644 index b8913efe7..000000000 --- a/src/main/res/values/broadcast.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - TRACK_ID - TRACK_PAUSED - TRACK_RESUMED - TRACK_STARTED - TRACK_STOPPED - TRACK_UPDATE - \ No newline at end of file diff --git a/src/main/res/values/do_not_translate.xml b/src/main/res/values/do_not_translate.xml index c01bdbb0d..a35480c73 100644 --- a/src/main/res/values/do_not_translate.xml +++ b/src/main/res/values/do_not_translate.xml @@ -21,7 +21,6 @@ limitations under the License. Google\'s androidX support (Apache License, Version 2.0) http://maps.google.com/mapfiles/ms/micons/ylw-pushpin.png http://maps.google.com/mapfiles/ms/micons/blue-pushpin.png - de.dennisguse.opentracks.MYTRACKS_NOTIFICATIONS NONE BPM DATE_ISO_8601 @@ -31,9 +30,5 @@ limitations under the License. SPEED IMPERIAL METRIC - de.dennisguse.opentracks.END_CURRENT_TRACK - de.dennisguse.opentracks.PAUSE_CURRENT_TRACK - de.dennisguse.opentracks.RESUME_CURRENT_TRACK - de.dennisguse.opentracks.START_NEW_TRACK - \ No newline at end of file