inline choose account in share trak dialog

This commit is contained in:
Jimmy Shih
2013-12-26 14:25:43 -08:00
parent c8629cc92a
commit e1f6a57df2
14 changed files with 180 additions and 90 deletions
@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2013 Google Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:ellipsize="marquee"
android:gravity="center_vertical"
android:id="@android:id/text1"
android:layout_height="48dp"
android:layout_width="match_parent"
android:padding="8dp"
android:singleLine="true"
style="@style/TextSmall" />
@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2013 Google Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:ellipsize="marquee"
android:id="@android:id/text1"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:paddingLeft="8dp"
android:singleLine="true"
style="@style/TextSmall" />
+7 -1
View File
@@ -20,7 +20,7 @@ limitations under the License.
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:orientation="vertical"
android:padding="8dp">
android:padding="8dp" >
<CheckBox
android:id="@+id/share_track_public"
android:layout_gravity="center_vertical"
@@ -43,5 +43,11 @@ limitations under the License.
android:singleLine="false"
android:visibility="gone" >
</MultiAutoCompleteTextView>
<Spinner
android:id="@+id/share_track_account"
android:layout_height="wrap_content"
android:layout_marginLeft="8dp"
android:layout_marginTop="24dp"
android:layout_width="wrap_content" />
</LinearLayout>
</ScrollView>
+1
View File
@@ -68,6 +68,7 @@ limitations under the License.
<string name="google_account_key">googleAccount</string>
<string name="recording_track_id_key">recordingTrackId</string>
<string name="recording_track_paused_key">recordingTrackPaused</string>
<string name="share_track_account_key">shareTrackAccountKey</string>
<string name="weight_key">weight</string>
<!-- Keys for non-persisted preferences. Sorted alphabetically. DO NOT TRANSLATE. -->
<string name="settings_advanced_key">settingsAdvanced</string>
+1 -1
View File
@@ -2050,7 +2050,7 @@ limitations under the License.
</string>
<string name="share_track_title"
translation_description="The dialog title to share a track.">
Share track via Google Drive
Share on Google Drive
</string>
<!-- Stats -->
@@ -158,11 +158,18 @@ public abstract class AbstractSendToGoogleActivity extends AbstractMyTracksActiv
*/
protected void shareTrack(long trackId) {
AnalyticsUtils.sendPageViews(this, AnalyticsUtils.ACTION_SHARE_DRIVE);
SendRequest newRequest;
newRequest = new SendRequest(trackId);
newRequest.setSendDrive(true);
newRequest.setDriveShare(true);
sendToGoogle(newRequest);
sendRequest = new SendRequest(trackId);
sendRequest.setSendDrive(true);
ShareTrackDialogFragment.newInstance(sendRequest.getTrackId())
.show(getSupportFragmentManager(), ShareTrackDialogFragment.SHARE_TRACK_DIALOG_TAG);
}
@Override
public void onShareTrackDone(boolean makePublic, String emails, Account account) {
sendRequest.setDriveSharePublic(makePublic);
sendRequest.setDriveShareEmails(emails);
sendRequest.setAccount(account);
onConfirmSyncDone(true);
}
/**
@@ -312,8 +319,6 @@ public abstract class AbstractSendToGoogleActivity extends AbstractMyTracksActiv
* <p>
* isSendDrive and isDriveEnableSync -> enable sync
* <p>
* isSendDrive and isDriveShare -> show {@link ShareTrackDialogFragment}
* <p>
* isSendDrive -> start {@link SendDriveActivity}
* <p>
* isSendMaps -> start {@link SendMapsActivity}
@@ -339,10 +344,6 @@ public abstract class AbstractSendToGoogleActivity extends AbstractMyTracksActiv
// Enable sync for account
SyncUtils.enableSync(sendRequest.getAccount());
return;
} else if (sendRequest.isDriveShare()) {
ShareTrackDialogFragment.newInstance(sendRequest.getTrackId())
.show(getSupportFragmentManager(), ShareTrackDialogFragment.SHARE_TRACK_DIALOG_TAG);
return;
} else {
next = SendDriveActivity.class;
}
@@ -367,15 +368,6 @@ public abstract class AbstractSendToGoogleActivity extends AbstractMyTracksActiv
Toast.makeText(this, R.string.send_google_no_account_permission, Toast.LENGTH_LONG).show();
}
@Override
public void onShareTrackDone(String emails, boolean makePublic) {
sendRequest.setDriveShareEmails(emails);
sendRequest.setDriveSharePublic(makePublic);
Intent intent = IntentUtils.newIntent(this, SendDriveActivity.class)
.putExtra(SendRequest.SEND_REQUEST_KEY, sendRequest);
startActivity(intent);
}
/**
* Delete tracks.
*
@@ -16,9 +16,12 @@
package com.google.android.apps.mytracks.fragments;
import com.google.android.apps.mytracks.Constants;
import com.google.android.apps.mytracks.util.PreferencesUtils;
import com.google.android.maps.mytracks.R;
import android.accounts.Account;
import android.accounts.AccountManager;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
@@ -30,11 +33,13 @@ import android.provider.ContactsContract;
import android.support.v4.app.FragmentActivity;
import android.support.v4.widget.SimpleCursorAdapter;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.FilterQueryProvider;
import android.widget.MultiAutoCompleteTextView;
import android.widget.Spinner;
import android.widget.Toast;
/**
@@ -54,10 +59,11 @@ public class ShareTrackDialogFragment extends AbstractMyTracksDialogFragment {
/**
* Called when share track is done.
*
* @param emails the added emails
* @param makePublic true to make the track public
* @param emails the emails to share the track with
* @param account the google drive account
*/
public void onShareTrackDone(String emails, boolean makePublic);
public void onShareTrackDone(boolean makePublic, String emails, Account account);
}
public static final String SHARE_TRACK_DIALOG_TAG = "shareTrackDialog";
@@ -75,9 +81,13 @@ public class ShareTrackDialogFragment extends AbstractMyTracksDialogFragment {
private ShareTrackCaller caller;
private FragmentActivity fragmentActivity;
private MultiAutoCompleteTextView multiAutoCompleteTextView;
private Account[] accounts;
// UI elements
private CheckBox publicCheckBox;
private CheckBox inviteCheckBox;
private MultiAutoCompleteTextView multiAutoCompleteTextView;
private Spinner accountSpinner;
@Override
public void onAttach(Activity activity) {
@@ -93,14 +103,41 @@ public class ShareTrackDialogFragment extends AbstractMyTracksDialogFragment {
@Override
protected Dialog createDialog() {
fragmentActivity = getActivity();
accounts = AccountManager.get(fragmentActivity).getAccountsByType(Constants.ACCOUNT_TYPE);
if (accounts.length == 0) {
return new AlertDialog.Builder(fragmentActivity).setMessage(
R.string.send_google_no_account_message).setTitle(R.string.send_google_no_account_title)
.setPositiveButton(R.string.generic_ok, null).create();
}
View view = fragmentActivity.getLayoutInflater().inflate(R.layout.share_track, null);
// Setup publicCheckBox
publicCheckBox = (CheckBox) view.findViewById(R.id.share_track_public);
publicCheckBox.setChecked(PreferencesUtils.getBoolean(
fragmentActivity, R.string.share_track_public_key,
PreferencesUtils.SHARE_TRACK_PUBLIC_DEFAULT));
// Setup inviteCheckBox
inviteCheckBox = (CheckBox) view.findViewById(R.id.share_track_invite);
inviteCheckBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
multiAutoCompleteTextView.setVisibility(isChecked ? View.VISIBLE : View.GONE);
}
});
inviteCheckBox.setChecked(PreferencesUtils.getBoolean(
fragmentActivity, R.string.share_track_invite_key,
PreferencesUtils.SHARE_TRACK_INVITE_DEFAULT));
// Setup multiAutoCompleteTextView
multiAutoCompleteTextView = (MultiAutoCompleteTextView) view.findViewById(
R.id.share_track_emails);
multiAutoCompleteTextView.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
SimpleCursorAdapter adapter = new SimpleCursorAdapter(fragmentActivity,
R.layout.add_emails_item, getCursor(fragmentActivity, null), new String[] {
R.layout.add_emails_item, getAutoCompleteCursor(null), new String[] {
ContactsContract.Contacts.DISPLAY_NAME, ContactsContract.CommonDataKinds.Email.DATA },
new int[] { android.R.id.text1, android.R.id.text2 }, 0);
adapter.setCursorToStringConverter(new SimpleCursorAdapter.CursorToStringConverter() {
@@ -113,26 +150,14 @@ public class ShareTrackDialogFragment extends AbstractMyTracksDialogFragment {
adapter.setFilterQueryProvider(new FilterQueryProvider() {
@Override
public Cursor runQuery(CharSequence constraint) {
return getCursor(fragmentActivity, constraint);
return getAutoCompleteCursor(constraint);
}
});
multiAutoCompleteTextView.setAdapter(adapter);
publicCheckBox = (CheckBox) view.findViewById(R.id.share_track_public);
publicCheckBox.setChecked(PreferencesUtils.getBoolean(
fragmentActivity, R.string.share_track_public_key,
PreferencesUtils.SHARE_TRACK_PUBLIC_DEFAULT));
inviteCheckBox = (CheckBox) view.findViewById(R.id.share_track_invite);
inviteCheckBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
multiAutoCompleteTextView.setVisibility(isChecked ? View.VISIBLE : View.GONE);
}
});
inviteCheckBox.setChecked(PreferencesUtils.getBoolean(
fragmentActivity, R.string.share_track_invite_key,
PreferencesUtils.SHARE_TRACK_INVITE_DEFAULT));
// Setup accountSpinner
accountSpinner = (Spinner) view.findViewById(R.id.share_track_account);
setupAccountSpinner(accountSpinner);
return new AlertDialog.Builder(fragmentActivity).setNegativeButton(
R.string.generic_cancel, null)
@@ -150,22 +175,26 @@ public class ShareTrackDialogFragment extends AbstractMyTracksDialogFragment {
.show();
return;
}
Account account = accounts.length > 1 ? accounts[accountSpinner
.getSelectedItemPosition()]
: accounts[0];
PreferencesUtils.setBoolean(
fragmentActivity, R.string.share_track_public_key, publicCheckBox.isChecked());
PreferencesUtils.setBoolean(
fragmentActivity, R.string.share_track_invite_key, inviteCheckBox.isChecked());
caller.onShareTrackDone(acl, publicCheckBox.isChecked());
PreferencesUtils.setString(
fragmentActivity, R.string.share_track_account_key, account.name);
caller.onShareTrackDone(publicCheckBox.isChecked(), acl, account);
}
}).setTitle(R.string.share_track_title).setView(view).create();
}
/**
* Gets the cursor
* Gets the auto complete cursor.
*
* @param activity the activity
* @param constraint the constraint
*/
private Cursor getCursor(Activity activity, CharSequence constraint) {
private Cursor getAutoCompleteCursor(CharSequence constraint) {
String order = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC";
String selection = ContactsContract.Contacts.IN_VISIBLE_GROUP + " = '1'";
if (constraint != null) {
@@ -176,6 +205,28 @@ public class ShareTrackDialogFragment extends AbstractMyTracksDialogFragment {
String[] projection = new String[] { ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME, ContactsContract.CommonDataKinds.Email.DATA };
Uri uri = ContactsContract.CommonDataKinds.Email.CONTENT_URI;
return activity.getContentResolver().query(uri, projection, selection, null, order);
return fragmentActivity.getContentResolver().query(uri, projection, selection, null, order);
}
private void setupAccountSpinner(Spinner spinner) {
boolean hasMultiple = accounts.length > 1;
spinner.setVisibility(hasMultiple ? View.VISIBLE : View.GONE);
if (hasMultiple) {
String shareTrackAccount = PreferencesUtils.getString(fragmentActivity,
R.string.share_track_account_key, PreferencesUtils.SHARE_TRACK_ACCOUNT_DEFAULT);
ArrayAdapter<CharSequence> adapter = new ArrayAdapter<CharSequence>(
fragmentActivity, R.layout.account_spinner_item);
int selection = 0;
for (int i = 0; i < accounts.length; i++) {
String name = accounts[i].name;
adapter.add(name);
if (name.equals(shareTrackAccount)) {
selection = i;
}
}
adapter.setDropDownViewResource(R.layout.account_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setSelection(selection);
}
}
}
@@ -59,6 +59,7 @@ public class PreferenceBackupHelper {
doNotBackup.add(context.getString(R.string.google_account_key));
doNotBackup.add(context.getString(R.string.recording_track_id_key));
doNotBackup.add(context.getString(R.string.recording_track_paused_key));
doNotBackup.add(context.getString(R.string.share_track_account_key));
doNotBackup.add(context.getString(R.string.weight_key));
}
@@ -21,8 +21,10 @@ import com.google.android.apps.mytracks.content.Track;
import com.google.android.apps.mytracks.io.sendtogoogle.AbstractSendAsyncTask;
import com.google.android.apps.mytracks.io.sendtogoogle.SendToGoogleUtils;
import com.google.android.apps.mytracks.io.sync.SyncUtils;
import com.google.android.apps.mytracks.util.PreferencesUtils;
import com.google.android.gms.auth.GoogleAuthException;
import com.google.android.gms.auth.UserRecoverableAuthException;
import com.google.android.maps.mytracks.R;
import com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential;
import com.google.api.client.googleapis.extensions.android.gms.auth.UserRecoverableAuthIOException;
import com.google.api.services.drive.Drive;
@@ -88,7 +90,10 @@ public class SendDriveAsyncTask extends AbstractSendAsyncTask {
Track track = myTracksProviderUtils.getTrack(trackId);
String driveId = track.getDriveId();
if (driveId != null && !driveId.equals("")) {
String syncAccount = PreferencesUtils.getString(
context, R.string.google_account_key, PreferencesUtils.GOOGLE_ACCOUNT_DEFAULT);
boolean sameAccount = account.name.equals(syncAccount);
if (sameAccount && driveId != null && !driveId.equals("")) {
File driveFile = drive.files().get(driveId).execute();
if (driveFile != null && updateDriveFile(drive, driveFile, folderId, track)) {
addPermission(drive, driveFile);
@@ -101,7 +106,7 @@ public class SendDriveAsyncTask extends AbstractSendAsyncTask {
// insert new drive file
File file = SyncUtils.insertDriveFile(
drive, folderId, context, myTracksProviderUtils, track, false);
drive, folderId, context, myTracksProviderUtils, track, false, sameAccount);
if (file == null) {
return false;
}
@@ -38,9 +38,8 @@ public class SendRequest implements Parcelable {
private boolean driveSync = false; // to enable Drive sync
private boolean driveSyncConfirm = false;
private boolean driveShare = false; // to enable Drive share
private String driveShareEmails = null; // for driveShare, emails to share
private boolean driveSharePublic = false; // for driveShare, share as public
private String driveShareEmails = null; // for driveShare, emails to share
private Account account = null;
@@ -111,22 +110,6 @@ public class SendRequest implements Parcelable {
this.driveSyncConfirm = driveSyncConfirm;
}
public boolean isDriveShare() {
return driveShare;
}
public void setDriveShare(boolean driveShare) {
this.driveShare = driveShare;
}
public String getDriveShareEmails() {
return driveShareEmails;
}
public void setDriveShareEmails(String driveShareEmails) {
this.driveShareEmails = driveShareEmails;
}
public boolean isDriveSharePublic() {
return driveSharePublic;
}
@@ -134,6 +117,14 @@ public class SendRequest implements Parcelable {
public void setDriveSharePublic(boolean driveSharePublic) {
this.driveSharePublic = driveSharePublic;
}
public String getDriveShareEmails() {
return driveShareEmails;
}
public void setDriveShareEmails(String driveShareEmails) {
this.driveShareEmails = driveShareEmails;
}
public Account getAccount() {
return account;
@@ -191,9 +182,8 @@ public class SendRequest implements Parcelable {
sendSpreadsheets = in.readByte() == 1;
driveSync = in.readByte() == 1;
driveSyncConfirm = in.readByte() == 1;
driveShare = in.readByte() == 1;
driveShareEmails = in.readString();
driveSharePublic = in.readByte() == 1;
driveShareEmails = in.readString();
account = in.readParcelable(null);
driveSuccess = in.readByte() == 1;
mapsSuccess = in.readByte() == 1;
@@ -216,9 +206,8 @@ public class SendRequest implements Parcelable {
out.writeByte((byte) (sendSpreadsheets ? 1 : 0));
out.writeByte((byte) (driveSync ? 1 : 0));
out.writeByte((byte) (driveSyncConfirm ? 1 : 0));
out.writeByte((byte) (driveShare ? 1 : 0));
out.writeString(driveShareEmails);
out.writeByte((byte) (driveSharePublic ? 1 : 0));
out.writeString(driveShareEmails);
out.writeParcelable(account, 0);
out.writeByte((byte) (driveSuccess ? 1 : 0));
out.writeByte((byte) (mapsSuccess ? 1 : 0));
@@ -365,7 +365,8 @@ public class SyncAdapter extends AbstractThreadedSyncAdapter {
continue;
}
// If not successful, the next sync will retry again
SyncUtils.insertDriveFile(drive, folderId, context, myTracksProviderUtils, track, true);
SyncUtils.insertDriveFile(
drive, folderId, context, myTracksProviderUtils, track, true, true);
} while (cursor.moveToNext());
}
} finally {
@@ -298,10 +298,11 @@ public class SyncUtils {
* @param myTracksProviderUtils the myTracksProviderUtils
* @param track the track
* @param canRetry true if can retry
* @param updateTrack true to update track
* @return the added drive file or null.
*/
public static File insertDriveFile(Drive drive, String folderId, Context context,
MyTracksProviderUtils myTracksProviderUtils, Track track, boolean canRetry)
MyTracksProviderUtils myTracksProviderUtils, Track track, boolean canRetry, boolean updateTrack)
throws IOException {
java.io.File file = null;
try {
@@ -318,7 +319,9 @@ public class SyncUtils {
Log.e(TAG, "Unable to add Drive file. Uploaded file is null for track " + track.getName());
return null;
}
SyncUtils.updateTrack(myTracksProviderUtils, track, uploadedFile);
if (updateTrack) {
SyncUtils.updateTrack(myTracksProviderUtils, track, uploadedFile);
}
return uploadedFile;
} finally {
if (file != null) {
@@ -97,6 +97,7 @@ public class PreferencesUtils {
public static final String SENSOR_TYPE_DEFAULT = "NONE";
// Share track
public static final String SHARE_TRACK_ACCOUNT_DEFAULT = "";
public static final boolean SHARE_TRACK_INVITE_DEFAULT = false;
public static final boolean SHARE_TRACK_PUBLIC_DEFAULT = false;
@@ -130,7 +130,6 @@ public class SendRequestTest extends AndroidTestCase {
parcel.writeByte((byte) 1);
parcel.writeByte((byte) 1);
parcel.writeString(DRIVE_SHARE_EMAILS);
parcel.writeByte((byte) 1);
Account account = new Account(ACCOUNTNAME, ACCOUNTYPE);
parcel.writeParcelable(account, 0);
parcel.writeByte((byte) 1);
@@ -147,9 +146,8 @@ public class SendRequestTest extends AndroidTestCase {
assertTrue(sendRequest.isSendSpreadsheets());
assertTrue(sendRequest.isDriveSync());
assertTrue(sendRequest.isDriveSyncConfirm());
assertTrue(sendRequest.isDriveShare());
assertEquals(DRIVE_SHARE_EMAILS, sendRequest.getDriveShareEmails());
assertTrue(sendRequest.isDriveSharePublic());
assertEquals(DRIVE_SHARE_EMAILS, sendRequest.getDriveShareEmails());
assertEquals(account, sendRequest.getAccount());
assertTrue(sendRequest.isDriveSuccess());
assertTrue(sendRequest.isMapsSuccess());
@@ -173,7 +171,6 @@ public class SendRequestTest extends AndroidTestCase {
parcel.writeByte((byte) 0);
parcel.writeByte((byte) 0);
parcel.writeString(null);
parcel.writeByte((byte) 0);
Account account = new Account(ACCOUNTNAME, ACCOUNTYPE);
parcel.writeParcelable(account, 0);
parcel.writeByte((byte) 0);
@@ -190,9 +187,8 @@ public class SendRequestTest extends AndroidTestCase {
assertFalse(sendRequest.isSendSpreadsheets());
assertFalse(sendRequest.isDriveSync());
assertFalse(sendRequest.isDriveSyncConfirm());
assertFalse(sendRequest.isDriveShare());
assertNull(sendRequest.getDriveShareEmails());
assertFalse(sendRequest.isDriveSharePublic());
assertNull(sendRequest.getDriveShareEmails());
assertEquals(account, sendRequest.getAccount());
assertFalse(sendRequest.isDriveSuccess());
assertFalse(sendRequest.isMapsSuccess());
@@ -217,9 +213,8 @@ public class SendRequestTest extends AndroidTestCase {
boolean sendSpreadsheets = parcel.readByte() == 1;
boolean driveSync = parcel.readByte() == 1;
boolean driveSyncConfirm = parcel.readByte() == 1;
boolean driveShare = parcel.readByte() == 1;
String dirveShareEmails = parcel.readString();
boolean driveSharePublic = parcel.readByte() == 1;
String dirveShareEmails = parcel.readString();
Parcelable account = parcel.readParcelable(null);
boolean driveSuccess = parcel.readByte() == 1;
boolean mapsSuccess = parcel.readByte() == 1;
@@ -233,9 +228,8 @@ public class SendRequestTest extends AndroidTestCase {
assertFalse(sendSpreadsheets);
assertFalse(driveSync);
assertFalse(driveSyncConfirm);
assertFalse(driveShare);
assertNull(dirveShareEmails);
assertFalse(driveSharePublic);
assertNull(dirveShareEmails);
assertNull(account);
assertFalse(driveSuccess);
assertFalse(mapsSuccess);
@@ -255,9 +249,8 @@ public class SendRequestTest extends AndroidTestCase {
sendRequest.setSendSpreadsheets(true);
sendRequest.setDriveSync(true);
sendRequest.setDriveSyncConfirm(true);
sendRequest.setDriveShare(true);
sendRequest.setDriveShareEmails(DRIVE_SHARE_EMAILS);
sendRequest.setDriveSharePublic(true);
sendRequest.setDriveShareEmails(DRIVE_SHARE_EMAILS);
Account accountNew = new Account(ACCOUNTNAME + "2", ACCOUNTYPE + "2");
sendRequest.setAccount(accountNew);
sendRequest.setMapsSuccess(true);
@@ -276,9 +269,8 @@ public class SendRequestTest extends AndroidTestCase {
boolean sendSpreadsheets = parcel.readByte() == 1;
boolean driveSync = parcel.readByte() == 1;
boolean driveSyncConfirm = parcel.readByte() == 1;
boolean driveShare = parcel.readByte() == 1;
String driveShareEmails = parcel.readString();
boolean driveSharePublic = parcel.readByte() == 1;
String driveShareEmails = parcel.readString();
Parcelable account = parcel.readParcelable(null);
boolean driveSuccess = parcel.readByte() == 1;
boolean mapsSuccess = parcel.readByte() == 1;
@@ -292,9 +284,8 @@ public class SendRequestTest extends AndroidTestCase {
assertTrue(sendSpreadsheets);
assertTrue(driveSync);
assertTrue(driveSyncConfirm);
assertTrue(driveShare);
assertEquals(DRIVE_SHARE_EMAILS, driveShareEmails);
assertTrue(driveSharePublic);
assertEquals(DRIVE_SHARE_EMAILS, driveShareEmails);
assertEquals(accountNew, account);
assertTrue(driveSuccess);
assertTrue(mapsSuccess);