diff --git a/MyTracks/res/layout/choose_activity_list_item.xml b/MyTracks/res/layout/choose_activity_list_item.xml
new file mode 100644
index 000000000..86bff7de9
--- /dev/null
+++ b/MyTracks/res/layout/choose_activity_list_item.xml
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/MyTracks/res/layout/upload_service_chooser.xml b/MyTracks/res/layout/upload_service_chooser.xml
index 189ed9921..d97cf5de8 100644
--- a/MyTracks/res/layout/upload_service_chooser.xml
+++ b/MyTracks/res/layout/upload_service_chooser.xml
@@ -21,7 +21,7 @@ limitations under the License.
android:layout_width="fill_parent"
android:padding="8dp"
android:stretchColumns="1" >
-
+
-
+
-
+
-
- minRecordingInterval
minRequiredAccuracy
pickExistingMap
- preferredAccount
recordingTrackId
reportSpeed
selectedTrackId
@@ -47,7 +46,7 @@ limitations under the License.
sendToFusionTables
sendToMaps
sensorType
- shareUrlOnly
+ sharingAccount
showCheckUnitsDialog
showWelcomeDialog
splitFrequency
diff --git a/MyTracks/res/values/strings.xml b/MyTracks/res/values/strings.xml
index 08e559fee..b6f072971 100644
--- a/MyTracks/res/values/strings.xml
+++ b/MyTracks/res/values/strings.xml
@@ -821,6 +821,12 @@ limitations under the License.
+
+ Application
+
Marker
@@ -1096,24 +1102,6 @@ limitations under the License.
translation_description="In the menu, to share a track.">
Share
-
- %1$s file
-
-
- Fusion Table URL
-
-
- Map URL
-
Show on map
@@ -1342,11 +1330,6 @@ limitations under the License.
%1$s: service name. 'Google Maps', 'Google Fusion Tables', or 'Google Docs'.">
Sending to %1$s...
-
- Share track URL
-
@@ -1861,6 +1844,14 @@ limitations under the License.
Character limit: ~26 (1 line)">
Sharing
+
+ Switch account
+
+
+ Switch account used when sending a track to Google.
+
Make new maps created in Google Maps public.
-
- Share only URL
-
-
- Include descriptive text when sharing a URL with friends.
-
-
- Remove any descriptive text when sharing a URL with friends.
-
- Share track using:
+ the user to select an application.">
+ Select an application
+
+
+ Share track URL
diff --git a/MyTracks/res/xml/sharing_settings.xml b/MyTracks/res/xml/sharing_settings.xml
index 04276f123..60c2b9ddc 100644
--- a/MyTracks/res/xml/sharing_settings.xml
+++ b/MyTracks/res/xml/sharing_settings.xml
@@ -16,18 +16,17 @@ limitations under the License.
-->
+
-
displayInfos = getDisplayInfos();
+
+ ArrayAdapter arrayAdapter = new ArrayAdapter(getActivity(),
+ R.layout.choose_activity_list_item, R.id.choose_activity_list_item_text1, displayInfos) {
+ @Override
+ public View getView(int position, View convertView, ViewGroup parent) {
+ View view;
+ if (convertView == null) {
+ view = getActivity()
+ .getLayoutInflater().inflate(R.layout.choose_activity_list_item, parent, false);
+ } else {
+ view = convertView;
+ }
+ DisplayInfo displayInfo = getItem(position);
+ TextView text1 = (TextView) view.findViewById(R.id.choose_activity_list_item_text1);
+ TextView text2 = (TextView) view.findViewById(R.id.choose_activity_list_item_text2);
+ ImageView icon = (ImageView) view.findViewById(R.id.choose_activity_list_item_icon);
+ text1.setText(displayInfo.primaryLabel);
+ if (displayInfo.secondaryLabel != null) {
+ text2.setVisibility(View.VISIBLE);
+ text2.setText(displayInfo.secondaryLabel);
+ } else {
+ text2.setVisibility(View.GONE);
+ }
+ icon.setImageDrawable(displayInfo.icon);
+ return view;
+ }
+ };
+ return new AlertDialog.Builder(getActivity())
+ .setSingleChoiceItems(arrayAdapter, 0, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ AlertDialog alertDialog = (AlertDialog) dialog;
+ DisplayInfo displayInfo = (DisplayInfo) alertDialog.getListView()
+ .getItemAtPosition(which);
+ ActivityInfo activityInfo = displayInfo.resolveInfo.activityInfo;
+ String packageName = activityInfo.applicationInfo.packageName;
+ String className = activityInfo.name;
+
+ String trackUrl = getArguments().getString(KEY_TRACK_URL);
+ if (trackUrl == null) {
+ SendRequest sendRequest = new SendRequest(getArguments().getLong(KEY_TRACK_ID));
+ sendRequest.setSendMaps(true);
+ sendRequest.setNewMap(true);
+ sendRequest.setSharingAppPackageName(packageName);
+ sendRequest.setSharingAppClassName(className);
+ Intent intent = IntentUtils.newIntent(getActivity(), AccountChooserActivity.class)
+ .putExtra(SendRequest.SEND_REQUEST_KEY, sendRequest);
+ startActivity(intent);
+ dismiss();
+ } else {
+ Intent intent = IntentUtils.newShareUrlIntent(
+ getActivity(), trackUrl, packageName, className);
+ startActivity(intent);
+ getActivity().finish();
+ }
+ }
+ })
+ .setTitle(R.string.share_track_picker_title)
+ .create();
+ }
+
+ /**
+ * Gets the display info.
+ */
+ private List getDisplayInfos() {
+ List displayInfos = new ArrayList();
+ Intent intent = ShareCompat.IntentBuilder.from(getActivity())
+ .setType(IntentUtils.TEXT_PLAIN_TYPE).getIntent();
+ List resolveInfos = packageManager.queryIntentActivities(
+ intent, PackageManager.MATCH_DEFAULT_ONLY);
+ if (resolveInfos != null && resolveInfos.size() > 0) {
+ int size = resolveInfos.size();
+ ResolveInfo firstResolveInfo = resolveInfos.get(0);
+ for (int i = 1; i < size; i++) {
+ ResolveInfo resolveInfo = resolveInfos.get(i);
+ if (firstResolveInfo.priority != resolveInfo.priority
+ || firstResolveInfo.isDefault != resolveInfo.isDefault) {
+ while (i < size) {
+ resolveInfos.remove(i);
+ size--;
+ }
+ }
+ }
+ if (size > 1) {
+ ResolveInfo.DisplayNameComparator displayNameComparator = new ResolveInfo.DisplayNameComparator(
+ packageManager);
+ Collections.sort(resolveInfos, displayNameComparator);
+ }
+
+ firstResolveInfo = resolveInfos.get(0);
+ int start = 0;
+ CharSequence firstLabel = firstResolveInfo.loadLabel(packageManager);
+ for (int i = 1; i < size; i++) {
+ if (firstLabel == null) {
+ firstLabel = firstResolveInfo.activityInfo.packageName;
+ }
+ ResolveInfo resolveInfo = resolveInfos.get(i);
+ CharSequence label = resolveInfo.loadLabel(packageManager);
+ if (label == null) {
+ label = resolveInfo.activityInfo.packageName;
+ }
+ if (label.equals(firstLabel)) {
+ continue;
+ }
+ processGroup(resolveInfos, displayInfos, start, i - 1);
+ firstResolveInfo = resolveInfo;
+ firstLabel = label;
+ start = i;
+ }
+ // Process last group
+ processGroup(resolveInfos, displayInfos, start, size - 1);
+ }
+ return displayInfos;
+ }
+
+ /**
+ * Contains display info.
+ *
+ * @author Jimmy Shih
+ */
+ private final class DisplayInfo {
+ private ResolveInfo resolveInfo;
+ private CharSequence primaryLabel;
+ private CharSequence secondaryLabel;
+ private Drawable icon;
+
+ public DisplayInfo(ResolveInfo resolveInfo, CharSequence primaryLabel,
+ CharSequence secondaryLabel, Drawable icon) {
+ this.resolveInfo = resolveInfo;
+ this.primaryLabel = primaryLabel;
+ this.secondaryLabel = secondaryLabel;
+ this.icon = icon;
+ }
+ }
+
+ /**
+ * Processes a group of items with the same label.
+ *
+ * @param resolveInfos list of resolve infos
+ * @param displayInfos list of display infos
+ * @param start start index
+ * @param end end index
+ */
+ private void processGroup(
+ List resolveInfos, List displayInfos, int start, int end) {
+ ResolveInfo startResolveInfo = resolveInfos.get(start);
+ CharSequence primaryLabel = startResolveInfo.loadLabel(packageManager);
+ Drawable icon = startResolveInfo.loadIcon(packageManager);
+
+ int num = end - start + 1;
+ if (num == 1) {
+ // Only one, set the secondary label to null
+ displayInfos.add(new DisplayInfo(startResolveInfo, primaryLabel, null, icon));
+ } else {
+ // Decide package name or application name for the secondary label
+ boolean usePackageName = false;
+ CharSequence appName = startResolveInfo.activityInfo.applicationInfo.loadLabel(
+ packageManager);
+ if (appName == null) {
+ usePackageName = true;
+ } else {
+ // Use HashSet to track duplicates
+ HashSet duplicates = new HashSet();
+ duplicates.add(appName);
+ for (int i = start + 1; i <= end; i++) {
+ ResolveInfo resolveInfo = resolveInfos.get(i);
+ CharSequence name = resolveInfo.activityInfo.applicationInfo.loadLabel(packageManager);
+ if ((name == null) || (duplicates.contains(name))) {
+ usePackageName = true;
+ break;
+ } else {
+ duplicates.add(name);
+ }
+ }
+ // Clear HashSet for later use
+ duplicates.clear();
+ }
+ for (int i = start; i <= end; i++) {
+ ResolveInfo resolveInfo = resolveInfos.get(i);
+ CharSequence secondaryLabel = usePackageName ? resolveInfo.activityInfo.packageName
+ : resolveInfo.activityInfo.applicationInfo.loadLabel(packageManager);
+ displayInfos.add(new DisplayInfo(resolveInfo, primaryLabel, secondaryLabel, icon));
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/MyTracks/src/com/google/android/apps/mytracks/io/sendtogoogle/AbstractSendAsyncTask.java b/MyTracks/src/com/google/android/apps/mytracks/io/sendtogoogle/AbstractSendAsyncTask.java
index 710d21c6d..11dab9c5c 100644
--- a/MyTracks/src/com/google/android/apps/mytracks/io/sendtogoogle/AbstractSendAsyncTask.java
+++ b/MyTracks/src/com/google/android/apps/mytracks/io/sendtogoogle/AbstractSendAsyncTask.java
@@ -80,9 +80,6 @@ public abstract class AbstractSendAsyncTask extends AsyncTask entries = new ArrayList();
diff --git a/MyTracks/src/com/google/android/apps/mytracks/settings/SharingSettingsActivity.java b/MyTracks/src/com/google/android/apps/mytracks/settings/SharingSettingsActivity.java
index a322ce262..eb16dead6 100644
--- a/MyTracks/src/com/google/android/apps/mytracks/settings/SharingSettingsActivity.java
+++ b/MyTracks/src/com/google/android/apps/mytracks/settings/SharingSettingsActivity.java
@@ -16,16 +16,23 @@
package com.google.android.apps.mytracks.settings;
+import com.google.android.apps.mytracks.Constants;
import com.google.android.apps.mytracks.util.DialogUtils;
import com.google.android.maps.mytracks.R;
+import android.accounts.Account;
+import android.accounts.AccountManager;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
+import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceChangeListener;
+import java.util.ArrayList;
+import java.util.List;
+
/**
* An activity for accessing the sharing settings.
*
@@ -56,6 +63,21 @@ public class SharingSettingsActivity extends AbstractSettingsActivity {
}
}
});
+
+ ListPreference sharingAccountListPreference = (ListPreference) findPreference(
+ getString(R.string.sharing_account_key));
+ List entries = new ArrayList();
+ Account[] accounts = AccountManager.get(this).getAccountsByType(Constants.ACCOUNT_TYPE);
+ for (Account account : accounts) {
+ entries.add(account.name);
+ }
+
+ sharingAccountListPreference.setEntries(entries.toArray(new CharSequence[entries.size()]));
+ sharingAccountListPreference.setEntryValues(entries.toArray(
+ new CharSequence[entries.size()]));
+ if (entries.size() == 1) {
+ sharingAccountListPreference.setValueIndex(0);
+ }
}
@Override
diff --git a/MyTracks/src/com/google/android/apps/mytracks/util/IntentUtils.java b/MyTracks/src/com/google/android/apps/mytracks/util/IntentUtils.java
index e38b55cff..fc303efe5 100644
--- a/MyTracks/src/com/google/android/apps/mytracks/util/IntentUtils.java
+++ b/MyTracks/src/com/google/android/apps/mytracks/util/IntentUtils.java
@@ -16,6 +16,9 @@
package com.google.android.apps.mytracks.util;
+import com.google.android.maps.mytracks.R;
+
+import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
@@ -26,6 +29,9 @@ import android.content.Intent;
*/
public class IntentUtils {
+ public static final String TEXT_PLAIN_TYPE = "text/plain";
+ private static final String TWITTER_PACKAGE_NAME = "com.twitter.android";
+
private IntentUtils() {}
/**
@@ -39,4 +45,23 @@ public class IntentUtils {
return new Intent(context, cls).addFlags(
Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
}
+
+ /**
+ * Creates an intent to share a url with a sharing app.
+ *
+ * @param context the context
+ * @param url the url
+ * @param packageName the sharing app package name
+ * @param className the sharing app class name
+ */
+ public static final Intent newShareUrlIntent(
+ Context context, String url, String packageName, String className) {
+ return new Intent(Intent.ACTION_SEND)
+ .addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT | Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP)
+ .putExtra(Intent.EXTRA_SUBJECT, context.getString(R.string.share_track_subject))
+ .putExtra(Intent.EXTRA_TEXT, TWITTER_PACKAGE_NAME.equals(packageName)
+ ? url : context.getString(R.string.share_track_url_body_format, url))
+ .setComponent(new ComponentName(packageName, className))
+ .setType(TEXT_PLAIN_TYPE);
+ }
}
diff --git a/MyTracks/src/com/google/android/apps/mytracks/util/PreferencesUtils.java b/MyTracks/src/com/google/android/apps/mytracks/util/PreferencesUtils.java
index bf4a338ba..6ee57feca 100644
--- a/MyTracks/src/com/google/android/apps/mytracks/util/PreferencesUtils.java
+++ b/MyTracks/src/com/google/android/apps/mytracks/util/PreferencesUtils.java
@@ -66,14 +66,13 @@ public class PreferencesUtils {
public static final int MIN_REQUIRED_ACCURACY_POOR = 5000;
public static final boolean PICK_EXISTING_MAP_DEFAULT = false;
- public static final String PREFERRED_ACCOUNT_DEFAULT = "";
public static final long RECORDING_TRACK_ID_DEFAULT = -1L;
public static final boolean REPORT_SPEED_DEFAULT = true;
public static final long SELECTED_TRACK_ID_DEFAULT = -1L;
public static final boolean SEND_TO_DOCS_DEFAULT = true;
public static final boolean SEND_TO_FUSION_TABLES_DEFAULT = true;
public static final boolean SEND_TO_MAPS_DEFAULT = true;
- public static final boolean SHARE_URL_ONLY_DEFAULT = false;
+ public static final String SHARING_ACCOUNT_DEFAULT = "";
public static final boolean SHOW_CHECK_UNITS_DIALOG_DEFAULT = true;
public static final boolean SHOW_WELCOME_DIALOG_DEFAULT = true;
public static final int SPLIT_FREQUENCY_DEFAULT = 0;
diff --git a/MyTracksTest/src/com/google/android/apps/mytracks/io/fusiontables/SendFusionTablesActivityTest.java b/MyTracksTest/src/com/google/android/apps/mytracks/io/fusiontables/SendFusionTablesActivityTest.java
index 09b095a5f..800053ba8 100644
--- a/MyTracksTest/src/com/google/android/apps/mytracks/io/fusiontables/SendFusionTablesActivityTest.java
+++ b/MyTracksTest/src/com/google/android/apps/mytracks/io/fusiontables/SendFusionTablesActivityTest.java
@@ -34,7 +34,7 @@ public class SendFusionTablesActivityTest extends AndroidTestCase {
@Override
protected void setUp() throws Exception {
super.setUp();
- sendRequest = new SendRequest(1L, true, false, true);
+ sendRequest = new SendRequest(1L);
sendFusionTablesActivity = new SendFusionTablesActivity();
}
diff --git a/MyTracksTest/src/com/google/android/apps/mytracks/io/maps/SendMapsActivityTest.java b/MyTracksTest/src/com/google/android/apps/mytracks/io/maps/SendMapsActivityTest.java
index d2646609a..97f2c0982 100644
--- a/MyTracksTest/src/com/google/android/apps/mytracks/io/maps/SendMapsActivityTest.java
+++ b/MyTracksTest/src/com/google/android/apps/mytracks/io/maps/SendMapsActivityTest.java
@@ -35,7 +35,7 @@ public class SendMapsActivityTest extends AndroidTestCase {
@Override
protected void setUp() throws Exception {
super.setUp();
- sendRequest = new SendRequest(1L, true, false, true);
+ sendRequest = new SendRequest(1L);
sendMapsActivity = new SendMapsActivity();
}
diff --git a/MyTracksTest/src/com/google/android/apps/mytracks/io/maps/SendMapsAsyncTaskTest.java b/MyTracksTest/src/com/google/android/apps/mytracks/io/maps/SendMapsAsyncTaskTest.java
index 65f4fd92c..904114791 100644
--- a/MyTracksTest/src/com/google/android/apps/mytracks/io/maps/SendMapsAsyncTaskTest.java
+++ b/MyTracksTest/src/com/google/android/apps/mytracks/io/maps/SendMapsAsyncTaskTest.java
@@ -86,7 +86,7 @@ public class SendMapsAsyncTaskTest extends AndroidTestCase {
prepareAndUploadPointsCounter = 0;
sendMapsActivityMock = AndroidMock.createMock(SendMapsActivity.class);
myTracksProviderUtilsMock = AndroidMock.createMock(MyTracksProviderUtils.class);
- sendRequest = new SendRequest(TRACK_ID, false, true, false);
+ sendRequest = new SendRequest(TRACK_ID);
AndroidMock.expect(sendMapsActivityMock.getApplicationContext()).andReturn(getContext());
}
diff --git a/MyTracksTest/src/com/google/android/apps/mytracks/io/sendtogoogle/SendRequestTest.java b/MyTracksTest/src/com/google/android/apps/mytracks/io/sendtogoogle/SendRequestTest.java
index 0ad6bfa1b..f9ff8ab5d 100644
--- a/MyTracksTest/src/com/google/android/apps/mytracks/io/sendtogoogle/SendRequestTest.java
+++ b/MyTracksTest/src/com/google/android/apps/mytracks/io/sendtogoogle/SendRequestTest.java
@@ -35,7 +35,7 @@ public class SendRequestTest extends AndroidTestCase {
@Override
protected void setUp() throws Exception {
super.setUp();
- sendRequest = new SendRequest(1, true, true, true);
+ sendRequest = new SendRequest(1);
}
/**
@@ -46,44 +46,6 @@ public class SendRequestTest extends AndroidTestCase {
assertEquals(1, sendRequest.getTrackId());
}
- /**
- * Tests the method {@link SendRequest#isShowMaps()}. The value should be set
- * to true when it is initialed in setup method.
- */
- public void testIsShowMaps() {
- assertEquals(true, sendRequest.isShowMaps());
- }
-
- /**
- * Tests the method {@link SendRequest#isShowFusionTables()}. The value should
- * be set to true when it is initialed in setup method.
- */
- public void testIsShowFusionTables() {
- assertEquals(true, sendRequest.isShowFusionTables());
- }
-
- /**
- * Tests the method {@link SendRequest#isShowDocs()}. The value should be set
- * to true when it is initialed in setup method.
- */
- public void testIsShowDocs() {
- assertEquals(true, sendRequest.isShowDocs());
- }
-
- public void testIsShowAll() {
- assertEquals(true, sendRequest.isShowAll());
- sendRequest = new SendRequest(1, false, true, true);
- assertEquals(false, sendRequest.isShowAll());
- sendRequest = new SendRequest(1, true, false, true);
- assertEquals(false, sendRequest.isShowAll());
- sendRequest = new SendRequest(1, true, true, false);
- assertEquals(false, sendRequest.isShowAll());
- sendRequest = new SendRequest(1, false, true, false);
- assertEquals(false, sendRequest.isShowAll());
- sendRequest = new SendRequest(1, false, false, false);
- assertEquals(false, sendRequest.isShowAll());
- }
-
public void testIsSendMaps() {
assertEquals(false, sendRequest.isSendMaps());
sendRequest.setSendMaps(true);
@@ -174,120 +136,114 @@ public class SendRequestTest extends AndroidTestCase {
* Tests SendRequest.CREATOR.createFromParcel when all values are true.
*/
public void testCreateFromParcel_true() {
- Parcel sourceParcel = Parcel.obtain();
- sourceParcel.setDataPosition(0);
- sourceParcel.writeLong(2);
- sourceParcel.writeByte((byte) 1);
- sourceParcel.writeByte((byte) 1);
- sourceParcel.writeByte((byte) 1);
- sourceParcel.writeByte((byte) 1);
- sourceParcel.writeByte((byte) 1);
- sourceParcel.writeByte((byte) 1);
- sourceParcel.writeByte((byte) 1);
+ Parcel parcel = Parcel.obtain();
+ parcel.setDataPosition(0);
+ parcel.writeLong(2);
+ parcel.writeString("");
+ parcel.writeString("");
+ parcel.writeByte((byte) 1);
+ parcel.writeByte((byte) 1);
+ parcel.writeByte((byte) 1);
+ parcel.writeByte((byte) 1);
Account account = new Account(ACCOUNTNAME, ACCOUNTYPE);
- sourceParcel.writeParcelable(account, 0);
- sourceParcel.writeString(MAPID);
- sourceParcel.writeByte((byte) 1);
- sourceParcel.writeByte((byte) 1);
- sourceParcel.writeByte((byte) 1);
- sourceParcel.setDataPosition(0);
- sendRequest = SendRequest.CREATOR.createFromParcel(sourceParcel);
+ parcel.writeParcelable(account, 0);
+ parcel.writeString(MAPID);
+ parcel.writeByte((byte) 1);
+ parcel.writeByte((byte) 1);
+ parcel.writeByte((byte) 1);
+ parcel.setDataPosition(0);
+ sendRequest = SendRequest.CREATOR.createFromParcel(parcel);
assertEquals(2, sendRequest.getTrackId());
- assertEquals(true, sendRequest.isShowMaps());
- assertEquals(true, sendRequest.isShowFusionTables());
- assertEquals(true, sendRequest.isShowDocs());
- assertEquals(true, sendRequest.isSendMaps());
- assertEquals(true, sendRequest.isSendFusionTables());
- assertEquals(true, sendRequest.isSendDocs());
- assertEquals(true, sendRequest.isNewMap());
+ assertEquals("", sendRequest.getSharingAppPackageName());
+ assertEquals("", sendRequest.getSharingAppClassName());
+ assertTrue(sendRequest.isSendMaps());
+ assertTrue(sendRequest.isSendFusionTables());
+ assertTrue(sendRequest.isSendDocs());
+ assertTrue(sendRequest.isNewMap());
assertEquals(account, sendRequest.getAccount());
assertEquals(MAPID, sendRequest.getMapId());
- assertEquals(true, sendRequest.isMapsSuccess());
- assertEquals(true, sendRequest.isFusionTablesSuccess());
- assertEquals(true, sendRequest.isDocsSuccess());
+ assertTrue(sendRequest.isMapsSuccess());
+ assertTrue(sendRequest.isFusionTablesSuccess());
+ assertTrue(sendRequest.isDocsSuccess());
}
/**
* Tests SendRequest.CREATOR.createFromParcel when all values are false.
*/
public void testCreateFromParcel_false() {
- Parcel sourceParcel = Parcel.obtain();
- sourceParcel.setDataPosition(0);
- sourceParcel.writeLong(4);
- sourceParcel.writeByte((byte) 0);
- sourceParcel.writeByte((byte) 0);
- sourceParcel.writeByte((byte) 0);
- sourceParcel.writeByte((byte) 0);
- sourceParcel.writeByte((byte) 0);
- sourceParcel.writeByte((byte) 0);
- sourceParcel.writeByte((byte) 0);
+ Parcel parcel = Parcel.obtain();
+ parcel.setDataPosition(0);
+ parcel.writeLong(4);
+ parcel.writeString(null);
+ parcel.writeString(null);
+ parcel.writeByte((byte) 0);
+ parcel.writeByte((byte) 0);
+ parcel.writeByte((byte) 0);
+ parcel.writeByte((byte) 0);
Account account = new Account(ACCOUNTNAME, ACCOUNTYPE);
- sourceParcel.writeParcelable(account, 0);
- sourceParcel.writeString(MAPID);
- sourceParcel.writeByte((byte) 0);
- sourceParcel.writeByte((byte) 0);
- sourceParcel.writeByte((byte) 0);
- sourceParcel.setDataPosition(0);
- sendRequest = SendRequest.CREATOR.createFromParcel(sourceParcel);
+ parcel.writeParcelable(account, 0);
+ parcel.writeString(MAPID);
+ parcel.writeByte((byte) 0);
+ parcel.writeByte((byte) 0);
+ parcel.writeByte((byte) 0);
+ parcel.setDataPosition(0);
+ sendRequest = SendRequest.CREATOR.createFromParcel(parcel);
assertEquals(4, sendRequest.getTrackId());
- assertEquals(false, sendRequest.isShowMaps());
- assertEquals(false, sendRequest.isShowFusionTables());
- assertEquals(false, sendRequest.isShowDocs());
- assertEquals(false, sendRequest.isSendMaps());
- assertEquals(false, sendRequest.isSendFusionTables());
- assertEquals(false, sendRequest.isSendDocs());
- assertEquals(false, sendRequest.isNewMap());
+ assertNull(sendRequest.getSharingAppPackageName());
+ assertNull(sendRequest.getSharingAppClassName());
+ assertFalse(sendRequest.isSendMaps());
+ assertFalse(sendRequest.isSendFusionTables());
+ assertFalse(sendRequest.isSendDocs());
+ assertFalse(sendRequest.isNewMap());
assertEquals(account, sendRequest.getAccount());
assertEquals(MAPID, sendRequest.getMapId());
- assertEquals(false, sendRequest.isMapsSuccess());
- assertEquals(false, sendRequest.isFusionTablesSuccess());
- assertEquals(false, sendRequest.isDocsSuccess());
+ assertFalse(sendRequest.isMapsSuccess());
+ assertFalse(sendRequest.isFusionTablesSuccess());
+ assertFalse(sendRequest.isDocsSuccess());
}
/**
- * Tests {@link SendRequest#writeToParcel(Parcel, int)} when all input values
- * are true or affirmative.
+ * Tests {@link SendRequest#writeToParcel(Parcel, int)} with default values.
*/
- public void testWriteToParcel_allTrue() {
- sendRequest = new SendRequest(1, false, false, false);
- Parcel parcelWrite1st = Parcel.obtain();
- parcelWrite1st.setDataPosition(0);
- sendRequest.writeToParcel(parcelWrite1st, 1);
- parcelWrite1st.setDataPosition(0);
- long trackId = parcelWrite1st.readLong();
- boolean showMaps = parcelWrite1st.readByte() == 1;
- boolean showFusionTables = parcelWrite1st.readByte() == 1;
- boolean showDocs = parcelWrite1st.readByte() == 1;
- boolean sendMaps = parcelWrite1st.readByte() == 1;
- boolean sendFusionTables = parcelWrite1st.readByte() == 1;
- boolean sendDocs = parcelWrite1st.readByte() == 1;
- boolean newMap = parcelWrite1st.readByte() == 1;
- Parcelable account = parcelWrite1st.readParcelable(null);
- String mapId = parcelWrite1st.readString();
- boolean mapsSuccess = parcelWrite1st.readByte() == 1;
- boolean fusionTablesSuccess = parcelWrite1st.readByte() == 1;
- boolean docsSuccess = parcelWrite1st.readByte() == 1;
+ public void testWriteToParcel_default() {
+ sendRequest = new SendRequest(1);
+ Parcel parcel = Parcel.obtain();
+ parcel.setDataPosition(0);
+ sendRequest.writeToParcel(parcel, 1);
+ parcel.setDataPosition(0);
+ long trackId = parcel.readLong();
+ String sharingAppPackageName = parcel.readString();
+ String sharingAppClassName = parcel.readString();
+ boolean sendMaps = parcel.readByte() == 1;
+ boolean sendFusionTables = parcel.readByte() == 1;
+ boolean sendDocs = parcel.readByte() == 1;
+ boolean newMap = parcel.readByte() == 1;
+ Parcelable account = parcel.readParcelable(null);
+ String mapId = parcel.readString();
+ boolean mapsSuccess = parcel.readByte() == 1;
+ boolean fusionTablesSuccess = parcel.readByte() == 1;
+ boolean docsSuccess = parcel.readByte() == 1;
assertEquals(1, trackId);
- assertEquals(false, showMaps);
- assertEquals(false, showFusionTables);
- assertEquals(false, showDocs);
- assertEquals(false, sendMaps);
- assertEquals(false, sendFusionTables);
- assertEquals(false, sendDocs);
- assertEquals(false, newMap);
- assertEquals(null, account);
- assertEquals(null, mapId);
- assertEquals(false, mapsSuccess);
- assertEquals(false, fusionTablesSuccess);
- assertEquals(false, docsSuccess);
+ assertNull(sharingAppPackageName);
+ assertNull(sharingAppClassName);
+ assertFalse(sendMaps);
+ assertFalse(sendFusionTables);
+ assertFalse(sendDocs);
+ assertFalse(newMap);
+ assertNull(account);
+ assertNull(mapId);
+ assertFalse(mapsSuccess);
+ assertFalse(fusionTablesSuccess);
+ assertFalse(docsSuccess);
}
/**
- * Tests {@link SendRequest#writeToParcel(Parcel, int)} when all input values
- * are false or negative.
+ * Tests {@link SendRequest#writeToParcel(Parcel, int)}.
*/
- public void testWriteToParcel_allFalse() {
- sendRequest = new SendRequest(4, true, true, true);
+ public void testWriteToParcel() {
+ sendRequest = new SendRequest(4);
+ sendRequest.setSharingAppPackageName("package");
+ sendRequest.setSharingAppClassName("class");
sendRequest.setSendMaps(true);
sendRequest.setSendFusionTables(true);
sendRequest.setSendDocs(true);
@@ -298,36 +254,33 @@ public class SendRequestTest extends AndroidTestCase {
sendRequest.setMapsSuccess(true);
sendRequest.setFusionTablesSuccess(true);
sendRequest.setDocsSuccess(true);
- Parcel parcelWrite2nd = Parcel.obtain();
- parcelWrite2nd.setDataPosition(0);
- sendRequest.writeToParcel(parcelWrite2nd, 1);
- parcelWrite2nd.setDataPosition(0);
- long trackId = parcelWrite2nd.readLong();
- boolean showMaps = parcelWrite2nd.readByte() == 1;
- boolean showFusionTables = parcelWrite2nd.readByte() == 1;
- boolean showDocs = parcelWrite2nd.readByte() == 1;
- boolean sendMaps = parcelWrite2nd.readByte() == 1;
- boolean sendFusionTables = parcelWrite2nd.readByte() == 1;
- boolean sendDocs = parcelWrite2nd.readByte() == 1;
- boolean newMap = parcelWrite2nd.readByte() == 1;
- Parcelable account = parcelWrite2nd.readParcelable(null);
- String mapId = parcelWrite2nd.readString();
- boolean mapsSuccess = parcelWrite2nd.readByte() == 1;
- boolean fusionTablesSuccess = parcelWrite2nd.readByte() == 1;
- boolean docsSuccess = parcelWrite2nd.readByte() == 1;
+ Parcel parcel = Parcel.obtain();
+ parcel.setDataPosition(0);
+ sendRequest.writeToParcel(parcel, 1);
+ parcel.setDataPosition(0);
+ long trackId = parcel.readLong();
+ String sharingAppPackageName = parcel.readString();
+ String sharingAppClassName = parcel.readString();
+ boolean sendMaps = parcel.readByte() == 1;
+ boolean sendFusionTables = parcel.readByte() == 1;
+ boolean sendDocs = parcel.readByte() == 1;
+ boolean newMap = parcel.readByte() == 1;
+ Parcelable account = parcel.readParcelable(null);
+ String mapId = parcel.readString();
+ boolean mapsSuccess = parcel.readByte() == 1;
+ boolean fusionTablesSuccess = parcel.readByte() == 1;
+ boolean docsSuccess = parcel.readByte() == 1;
assertEquals(4, trackId);
- assertEquals(true, showMaps);
- assertEquals(true, showFusionTables);
- assertEquals(true, showDocs);
- assertEquals(true, sendMaps);
- assertEquals(true, sendFusionTables);
- assertEquals(true, sendDocs);
- assertEquals(true, newMap);
+ assertEquals("package", sharingAppPackageName);
+ assertEquals("class", sharingAppClassName);
+ assertTrue(sendMaps);
+ assertTrue(sendFusionTables);
+ assertTrue(sendDocs);
+ assertTrue(newMap);
assertEquals(accountNew, account);
assertEquals(MAPID, mapId);
- assertEquals(true, mapsSuccess);
- assertEquals(true, fusionTablesSuccess);
- assertEquals(true, docsSuccess);
+ assertTrue(mapsSuccess);
+ assertTrue(fusionTablesSuccess);
+ assertTrue(docsSuccess);
}
-
}
diff --git a/MyTracksTest/src/com/google/android/apps/mytracks/io/sendtogoogle/UploadResultActivityTest.java b/MyTracksTest/src/com/google/android/apps/mytracks/io/sendtogoogle/UploadResultActivityTest.java
index b363ad9c5..f56de3b42 100644
--- a/MyTracksTest/src/com/google/android/apps/mytracks/io/sendtogoogle/UploadResultActivityTest.java
+++ b/MyTracksTest/src/com/google/android/apps/mytracks/io/sendtogoogle/UploadResultActivityTest.java
@@ -97,7 +97,7 @@ public class UploadResultActivityTest
private void initialActivity(boolean isSendMaps, boolean isSendFusionTables, boolean isSendDocs,
boolean isMapsSuccess, boolean isFusionTablesSuccess, boolean isDocsSuccess) {
Intent intent = new Intent();
- SendRequest sendRequest = new SendRequest(1L, true, true, true);
+ SendRequest sendRequest = new SendRequest(1L);
sendRequest.setSendMaps(isSendMaps);
sendRequest.setSendFusionTables(isSendFusionTables);
sendRequest.setSendDocs(isSendDocs);
diff --git a/MyTracksTest/src/com/google/android/apps/mytracks/io/sendtogoogle/UploadServiceChooserActivityTest.java b/MyTracksTest/src/com/google/android/apps/mytracks/io/sendtogoogle/UploadServiceChooserActivityTest.java
index ff72cfb5b..e1caf2cf3 100644
--- a/MyTracksTest/src/com/google/android/apps/mytracks/io/sendtogoogle/UploadServiceChooserActivityTest.java
+++ b/MyTracksTest/src/com/google/android/apps/mytracks/io/sendtogoogle/UploadServiceChooserActivityTest.java
@@ -50,7 +50,7 @@ public class UploadServiceChooserActivityTest extends
*/
public void testOnCreateDialog_displayAll() {
// Initials activity to display all send items.
- initialActivity(true, true, true);
+ initialActivity();
instrumentation.waitForIdleSync();
assertTrue(getMapsCheckBox().isShown());
assertTrue(getFusionTablesCheckBox().isShown());
@@ -79,46 +79,13 @@ public class UploadServiceChooserActivityTest extends
assertFalse(getExistingMapRadioButton().isShown());
}
- /**
- * Tests the logic to display only the "Send to Google Maps" option.
- */
- public void testOnCreateDialog_displayOne() {
- // Initials activity to display all send items.
- initialActivity(true, false, false);
- instrumentation.waitForIdleSync();
- assertTrue(getMapsCheckBox().isShown());
-
- // Clicks to enable this items.
- uploadServiceChooserActivity.runOnUiThread(new Runnable() {
- public void run() {
- if (!getMapsCheckBox().isChecked()) {
- getMapsCheckBox().performClick();
- }
- }
- });
- instrumentation.waitForIdleSync();
- assertTrue(getMapsCheckBox().isShown());
- assertTrue(getNewMapRadioButton().isShown());
- assertTrue(getExistingMapRadioButton().isShown());
- }
-
- /**
- * Tests the logic to display no option.
- */
- public void testOnCreateDialog_displayNone() {
- initialActivity(false, false, false);
- assertFalse(getMapsCheckBox().isShown());
- assertFalse(getFusionTablesCheckBox().isShown());
- assertFalse(getDocsCheckBox().isShown());
- }
-
/**
* Tests the logic to initial state of check box to unchecked. This test cover
* code in method {@link UploadServiceChooserActivity#onCreateDialog(int)},
* {@link UploadServiceChooserActivity#initState()}.
*/
public void testOnCreateDialog_initStateUnchecked() {
- initialActivity(true, true, true);
+ initialActivity();
// Initial all values to false in SharedPreferences.
PreferencesUtils.setBoolean(uploadServiceChooserActivity, R.string.send_to_maps_key, false);
PreferencesUtils.setBoolean(
@@ -141,7 +108,7 @@ public class UploadServiceChooserActivityTest extends
* {@link UploadServiceChooserActivity#initState()}.
*/
public void testOnCreateDialog_initStateChecked() {
- initialActivity(true, true, true);
+ initialActivity();
// Initial all values to true in SharedPreferences.
PreferencesUtils.setBoolean(uploadServiceChooserActivity, R.string.pick_existing_map_key, true);
PreferencesUtils.setBoolean(uploadServiceChooserActivity, R.string.send_to_maps_key, true);
@@ -168,7 +135,7 @@ public class UploadServiceChooserActivityTest extends
* {@link UploadServiceChooserActivity#saveState()},
*/
public void testOnCreateDialog_saveState() {
- initialActivity(true, true, true);
+ initialActivity();
// Initial all values to true in SharedPreferences.
PreferencesUtils.setBoolean(uploadServiceChooserActivity, R.string.send_to_maps_key, true);
PreferencesUtils.setBoolean(
@@ -197,7 +164,7 @@ public class UploadServiceChooserActivityTest extends
* {@link UploadServiceChooserActivity#startNextActivity()}.
*/
public void testOnCreateDialog_startNextActivity() {
- initialActivity(true, true, true);
+ initialActivity();
// Initial all values to true or false in SharedPreferences.
PreferencesUtils.setBoolean(uploadServiceChooserActivity, R.string.send_to_maps_key, true);
PreferencesUtils.setBoolean(uploadServiceChooserActivity, R.string.send_to_docs_key, true);
@@ -224,10 +191,9 @@ public class UploadServiceChooserActivityTest extends
* @param showFusionTables
* @param showDocs
*/
- private void initialActivity(boolean showMaps, boolean showFusionTables, boolean showDocs) {
+ private void initialActivity() {
Intent intent = new Intent();
- intent.putExtra(SendRequest.SEND_REQUEST_KEY, new SendRequest(1L, showMaps, showFusionTables,
- showDocs));
+ intent.putExtra(SendRequest.SEND_REQUEST_KEY, new SendRequest(1L));
setActivityIntent(intent);
uploadServiceChooserActivity = this.getActivity();
}