diff --git a/MyTracks/src/com/google/android/apps/mytracks/MyTracks.java b/MyTracks/src/com/google/android/apps/mytracks/MyTracks.java index d16d47d9f..45cc41d1f 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/MyTracks.java +++ b/MyTracks/src/com/google/android/apps/mytracks/MyTracks.java @@ -427,7 +427,11 @@ public class MyTracks extends TabActivity implements OnTouchListener, public boolean onTrackballEvent(MotionEvent event) { if (isRecording()) { if (event.getAction() == MotionEvent.ACTION_DOWN) { - insertWaypoint(WaypointType.STATISTICS); + try { + insertWaypoint(WaypointType.STATISTICS); + } catch (Exception e) { + Log.e(MyTracksConstants.TAG, "Cannot insert statistics marker.", e); + } return true; } } @@ -883,32 +887,30 @@ public class MyTracks extends TabActivity implements OnTouchListener, /** * Inserts a waypoint marker. * - * @return the id of the inserted statistics marker, or - * -1 on error + * @return Id of the inserted statistics marker. + * @throws Exception If the insertion failed. */ - public long insertWaypoint(WaypointType type) { - if (trackRecordingService != null) { - try { - long waypointId = - trackRecordingService.insertWaypoint(type); - if (waypointId >= 0) { - Toast.makeText(this, R.string.status_statistics_inserted, - Toast.LENGTH_LONG).show(); - return waypointId; - } else { - Toast.makeText(this, R.string.error_unable_to_insert_marker, - Toast.LENGTH_LONG).show(); - Log.e(MyTracksConstants.TAG, "Cannot insert statistics marker?"); - return -1; - } - } catch (Exception e) { + public long insertWaypoint(WaypointType type) throws Exception { + if (trackRecordingService == null) { + throw new IllegalStateException("The recording service is not bound."); + } + try { + long waypointId = + trackRecordingService.insertWaypoint(type); + if (waypointId >= 0) { + Toast.makeText(this, R.string.status_statistics_inserted, + Toast.LENGTH_LONG).show(); + return waypointId; + } else { Toast.makeText(this, R.string.error_unable_to_insert_marker, Toast.LENGTH_LONG).show(); - Log.e(MyTracksConstants.TAG, "Cannot insert statistics marker?", e); + throw new Exception("Insertion failed."); } - return -1; + } catch (Exception e) { + Toast.makeText(this, R.string.error_unable_to_insert_marker, + Toast.LENGTH_LONG).show(); + throw e; } - return -1; } /** diff --git a/MyTracks/src/com/google/android/apps/mytracks/MyTracksWaypointsList.java b/MyTracks/src/com/google/android/apps/mytracks/MyTracksWaypointsList.java index 33b5813bf..d25a15289 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/MyTracksWaypointsList.java +++ b/MyTracks/src/com/google/android/apps/mytracks/MyTracksWaypointsList.java @@ -29,6 +29,7 @@ import android.content.Intent; import android.content.SharedPreferences; import android.database.Cursor; import android.os.Bundle; +import android.util.Log; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; import android.view.MenuItem; @@ -166,26 +167,29 @@ public class MyTracksWaypointsList extends ListActivity @Override public void onClick(View v) { + WaypointType type; switch (v.getId()) { - case R.id.waypointslist_btn_insert_waypoint: { - long id = MyTracks.getInstance().insertWaypoint(WaypointType.MARKER); - if (id >= 0) { - Intent intent = new Intent(this, MyTracksWaypointDetails.class); - intent.putExtra("waypointid", id); - startActivity(intent); - } + case R.id.waypointslist_btn_insert_waypoint: + type = WaypointType.MARKER; break; - } - case R.id.waypointslist_btn_insert_statistics: { - long id = MyTracks.getInstance().insertWaypoint(WaypointType.STATISTICS); - if (id >= 0) { - Intent intent = new Intent(this, MyTracksWaypointDetails.class); - intent.putExtra("waypointid", id); - startActivity(intent); - } + case R.id.waypointslist_btn_insert_statistics: + type = WaypointType.MARKER; break; - } - + default: + return; + } + long id; + try { + id = MyTracks.getInstance().insertWaypoint(type); + } catch (Exception e) { + Log.e(MyTracksConstants.TAG, "Cannot insert statistics marker.", e); + e.printStackTrace(); + return; + } + if (id >= 0) { + Intent intent = new Intent(this, MyTracksWaypointDetails.class); + intent.putExtra("waypointid", id); + startActivity(intent); } } diff --git a/MyTracksTest/src/com/google/android/apps/mytracks/services/TrackRecordingServiceTest.java b/MyTracksTest/src/com/google/android/apps/mytracks/services/TrackRecordingServiceTest.java index 455e2deb9..a1685b6b2 100644 --- a/MyTracksTest/src/com/google/android/apps/mytracks/services/TrackRecordingServiceTest.java +++ b/MyTracksTest/src/com/google/android/apps/mytracks/services/TrackRecordingServiceTest.java @@ -23,12 +23,9 @@ import com.google.android.apps.mytracks.content.MyTracksProviderUtils; import com.google.android.apps.mytracks.content.Track; import com.google.android.apps.mytracks.content.Waypoint; import com.google.android.apps.mytracks.content.WaypointType; -import com.google.android.apps.mytracks.content.MyTracksProviderUtils.Factory; import com.google.android.apps.mytracks.stats.TripStatistics; -import com.google.android.apps.mytracks.testing.TestingProviderUtilsFactory; import com.google.android.apps.mytracks.util.ApiFeatures; import com.google.android.maps.mytracks.R; -import com.google.android.testing.mocking.AndroidMock; import android.content.BroadcastReceiver; import android.content.ContentResolver; @@ -40,7 +37,6 @@ import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.location.Location; import android.os.IBinder; -import android.os.RemoteException; import android.test.RenamingDelegatingContext; import android.test.ServiceTestCase; import android.test.mock.MockContentResolver;