Adding script for building Email app without exchange.
remove-exchange-support.sh makes it possible to build the email app without exchange support. This script: - removes all packages under com.android.exchange. - removes all lines surrounded by EXCHANGE-REMOVE-SECTION-START and EXCHANGE-REMOVE-SECTION-END And the resulting source should still build and run fine. Bug: 2369784
This commit is contained in:
parent
8bb0ee3b92
commit
91237e9dcb
|
@ -18,9 +18,11 @@ include $(CLEAR_VARS)
|
||||||
LOCAL_MODULE_TAGS := optional
|
LOCAL_MODULE_TAGS := optional
|
||||||
|
|
||||||
LOCAL_SRC_FILES := $(call all-java-files-under, src)
|
LOCAL_SRC_FILES := $(call all-java-files-under, src)
|
||||||
|
# EXCHANGE-REMOVE-SECTION-START
|
||||||
LOCAL_SRC_FILES += \
|
LOCAL_SRC_FILES += \
|
||||||
src/com/android/email/service/IEmailService.aidl \
|
src/com/android/email/service/IEmailService.aidl \
|
||||||
src/com/android/email/service/IEmailServiceCallback.aidl
|
src/com/android/email/service/IEmailServiceCallback.aidl
|
||||||
|
# EXCHANGE-REMOVE-SECTION-END
|
||||||
|
|
||||||
|
|
||||||
LOCAL_PACKAGE_NAME := Email
|
LOCAL_PACKAGE_NAME := Email
|
||||||
|
|
|
@ -85,11 +85,13 @@
|
||||||
android:label="@string/account_setup_outgoing_title"
|
android:label="@string/account_setup_outgoing_title"
|
||||||
>
|
>
|
||||||
</activity>
|
</activity>
|
||||||
|
<!--EXCHANGE-REMOVE-SECTION-START-->
|
||||||
<activity
|
<activity
|
||||||
android:name=".activity.setup.AccountSetupExchange"
|
android:name=".activity.setup.AccountSetupExchange"
|
||||||
android:label="@string/account_setup_exchange_title"
|
android:label="@string/account_setup_exchange_title"
|
||||||
>
|
>
|
||||||
</activity>
|
</activity>
|
||||||
|
<!--EXCHANGE-REMOVE-SECTION-END-->
|
||||||
<activity
|
<activity
|
||||||
android:name=".activity.setup.AccountSetupOptions"
|
android:name=".activity.setup.AccountSetupOptions"
|
||||||
android:label="@string/account_setup_options_title"
|
android:label="@string/account_setup_options_title"
|
||||||
|
@ -173,6 +175,7 @@
|
||||||
<category android:name="android.intent.category.DEFAULT" />
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</activity>
|
</activity>
|
||||||
|
<!--EXCHANGE-REMOVE-SECTION-START-->
|
||||||
<receiver android:name="com.android.exchange.EmailSyncAlarmReceiver"/>
|
<receiver android:name="com.android.exchange.EmailSyncAlarmReceiver"/>
|
||||||
<receiver android:name="com.android.exchange.MailboxAlarmReceiver"/>
|
<receiver android:name="com.android.exchange.MailboxAlarmReceiver"/>
|
||||||
<receiver android:name="com.android.exchange.BootReceiver" android:enabled="true">
|
<receiver android:name="com.android.exchange.BootReceiver" android:enabled="true">
|
||||||
|
@ -180,6 +183,7 @@
|
||||||
<action android:name="android.intent.action.BOOT_COMPLETED" />
|
<action android:name="android.intent.action.BOOT_COMPLETED" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</receiver>
|
</receiver>
|
||||||
|
<!--EXCHANGE-REMOVE-SECTION-END-->
|
||||||
|
|
||||||
<receiver android:name=".service.BootReceiver" android:enabled="true">
|
<receiver android:name=".service.BootReceiver" android:enabled="true">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
|
@ -222,6 +226,7 @@
|
||||||
>
|
>
|
||||||
</service>
|
</service>
|
||||||
|
|
||||||
|
<!--EXCHANGE-REMOVE-SECTION-START-->
|
||||||
<!--Required stanza to register the ContactsSyncAdapterService with SyncManager -->
|
<!--Required stanza to register the ContactsSyncAdapterService with SyncManager -->
|
||||||
<service
|
<service
|
||||||
android:name="com.android.exchange.ContactsSyncAdapterService"
|
android:name="com.android.exchange.ContactsSyncAdapterService"
|
||||||
|
@ -282,6 +287,7 @@
|
||||||
android:resource="@xml/authenticator_alternate"
|
android:resource="@xml/authenticator_alternate"
|
||||||
/>
|
/>
|
||||||
</service>
|
</service>
|
||||||
|
<!--EXCHANGE-REMOVE-SECTION-END-->
|
||||||
|
|
||||||
<provider
|
<provider
|
||||||
android:name=".provider.AttachmentProvider"
|
android:name=".provider.AttachmentProvider"
|
||||||
|
|
|
@ -0,0 +1,62 @@
|
||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Copyright (C) 2010 The Android Open Source Project
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
#
|
||||||
|
# Run this script to remove Exchange support from the Email application.
|
||||||
|
#
|
||||||
|
|
||||||
|
set -e # fail fast
|
||||||
|
|
||||||
|
|
||||||
|
# Step 0. Make sure we're in the right directory, and the user really wants it.
|
||||||
|
|
||||||
|
if [[ ! -d src/com/android/email/ ]] ; then
|
||||||
|
echo "Run the script in the root of the email source tree." 1>&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo -n "Do you wish to remove exchange support from the email app? (y/N):"
|
||||||
|
|
||||||
|
read answer
|
||||||
|
if [[ "$answer" != y ]] ; then
|
||||||
|
echo "Aborted." 1>&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# Step 1. Remove all Exchange related packages.
|
||||||
|
|
||||||
|
rm -fr src/com/android/exchange/ \
|
||||||
|
tests/src/com/android/exchange/
|
||||||
|
|
||||||
|
|
||||||
|
# Step 2. Remove lines surrounded by START-EXCHANGE and END-EXCHANGE
|
||||||
|
|
||||||
|
find . \( -name '*.java' -o -name '*.xml' -o -name 'Android.mk' \) -print0 |
|
||||||
|
xargs -0 sed -i -e '/EXCHANGE-REMOVE-SECTION-START/,/EXCHANGE-REMOVE-SECTION-END/d'
|
||||||
|
|
||||||
|
|
||||||
|
# Step 3. Remove all imports from com.android.exchange (and its subpackages).
|
||||||
|
|
||||||
|
find . -name '*.java' -print0 |
|
||||||
|
xargs -0 sed -i -e '/^import com\.android\.exchange/d'
|
||||||
|
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "Exchange support has been successfully removed."
|
||||||
|
|
||||||
|
exit 0
|
|
@ -37,6 +37,7 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/debug_enable_sensitive_logging_label"
|
android:text="@string/debug_enable_sensitive_logging_label"
|
||||||
/>
|
/>
|
||||||
|
<!-- EXCHANGE-REMOVE-SECTION-START -->
|
||||||
<CheckBox
|
<CheckBox
|
||||||
android:id="@+id/exchange_logging"
|
android:id="@+id/exchange_logging"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
@ -49,4 +50,5 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/debug_enable_exchange_file_logging_label"
|
android:text="@string/debug_enable_exchange_file_logging_label"
|
||||||
/>
|
/>
|
||||||
|
<!-- EXCHANGE-REMOVE-SECTION-END -->
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
|
@ -18,7 +18,6 @@ package com.android.email;
|
||||||
|
|
||||||
import com.android.email.mail.store.ExchangeStore;
|
import com.android.email.mail.store.ExchangeStore;
|
||||||
import com.android.email.provider.EmailContent;
|
import com.android.email.provider.EmailContent;
|
||||||
import com.android.exchange.Eas;
|
|
||||||
|
|
||||||
import android.accounts.AccountManagerFuture;
|
import android.accounts.AccountManagerFuture;
|
||||||
import android.content.ContentResolver;
|
import android.content.ContentResolver;
|
||||||
|
|
|
@ -23,7 +23,6 @@ import com.android.email.mail.internet.BinaryTempFileBody;
|
||||||
import com.android.email.provider.EmailContent;
|
import com.android.email.provider.EmailContent;
|
||||||
import com.android.email.service.BootReceiver;
|
import com.android.email.service.BootReceiver;
|
||||||
import com.android.email.service.MailService;
|
import com.android.email.service.MailService;
|
||||||
import com.android.exchange.Eas;
|
|
||||||
|
|
||||||
import android.app.Application;
|
import android.app.Application;
|
||||||
import android.content.ComponentName;
|
import android.content.ComponentName;
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
|
|
||||||
package com.android.email;
|
package com.android.email;
|
||||||
|
|
||||||
|
import com.android.email.mail.MessagingException;
|
||||||
import com.android.email.service.EmailServiceProxy;
|
import com.android.email.service.EmailServiceProxy;
|
||||||
import com.android.email.service.IEmailService;
|
import com.android.email.service.IEmailService;
|
||||||
import com.android.email.service.IEmailServiceCallback;
|
import com.android.email.service.IEmailServiceCallback;
|
||||||
|
@ -23,6 +24,9 @@ import com.android.exchange.SyncManager;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.os.IBinder;
|
||||||
|
import android.os.RemoteException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Utility functions for Exchange support.
|
* Utility functions for Exchange support.
|
||||||
|
@ -32,7 +36,9 @@ public class ExchangeUtils {
|
||||||
* Starts the service for Exchange, if supported.
|
* Starts the service for Exchange, if supported.
|
||||||
*/
|
*/
|
||||||
public static void startExchangeService(Context context) {
|
public static void startExchangeService(Context context) {
|
||||||
|
//EXCHANGE-REMOVE-SECTION-START
|
||||||
context.startService(new Intent(context, SyncManager.class));
|
context.startService(new Intent(context, SyncManager.class));
|
||||||
|
//EXCHANGE-REMOVE-SECTION-END
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -44,7 +50,80 @@ public class ExchangeUtils {
|
||||||
*/
|
*/
|
||||||
public static IEmailService getExchangeEmailService(Context context,
|
public static IEmailService getExchangeEmailService(Context context,
|
||||||
IEmailServiceCallback callback) {
|
IEmailServiceCallback callback) {
|
||||||
// TODO Return an empty IEmailService impl if exchange support is removed
|
IEmailService ret = null;
|
||||||
return new EmailServiceProxy(context, SyncManager.class, callback);
|
//EXCHANGE-REMOVE-SECTION-START
|
||||||
|
ret = new EmailServiceProxy(context, SyncManager.class, callback);
|
||||||
|
//EXCHANGE-REMOVE-SECTION-END
|
||||||
|
if (ret == null) {
|
||||||
|
ret = NullEmailService.INSTANCE;
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An empty {@link IEmailService} implementation which is used instead of
|
||||||
|
* {@link com.android.exchange.SyncManager} on the build with no exchange support.
|
||||||
|
*
|
||||||
|
* <p>In theory, the service in question isn't used on the no-exchange-support build,
|
||||||
|
* because we won't have any exchange accounts in that case, so we wouldn't have to have this
|
||||||
|
* class. However, there are a few places we do use the service even if there's no exchange
|
||||||
|
* accounts (e.g. setLogging), so this class is added for safety and simplicity.
|
||||||
|
*/
|
||||||
|
private static class NullEmailService implements IEmailService {
|
||||||
|
public static final NullEmailService INSTANCE = new NullEmailService();
|
||||||
|
|
||||||
|
public Bundle autoDiscover(String userName, String password) throws RemoteException {
|
||||||
|
return Bundle.EMPTY;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean createFolder(long accountId, String name) throws RemoteException {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean deleteFolder(long accountId, String name) throws RemoteException {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void hostChanged(long accountId) throws RemoteException {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void loadAttachment(long attachmentId, String destinationFile,
|
||||||
|
String contentUriString) throws RemoteException {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void loadMore(long messageId) throws RemoteException {
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean renameFolder(long accountId, String oldName, String newName)
|
||||||
|
throws RemoteException {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void sendMeetingResponse(long messageId, int response) throws RemoteException {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCallback(IEmailServiceCallback cb) throws RemoteException {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLogging(int on) throws RemoteException {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void startSync(long mailboxId) throws RemoteException {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void stopSync(long mailboxId) throws RemoteException {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void updateFolderList(long accountId) throws RemoteException {
|
||||||
|
}
|
||||||
|
|
||||||
|
public int validate(String protocol, String host, String userName, String password,
|
||||||
|
int port, boolean ssl, boolean trustCertificates) throws RemoteException {
|
||||||
|
return MessagingException.UNSPECIFIED_EXCEPTION;
|
||||||
|
}
|
||||||
|
|
||||||
|
public IBinder asBinder() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -53,21 +53,24 @@ public class Debug extends Activity implements OnCheckedChangeListener {
|
||||||
mVersionView = (TextView)findViewById(R.id.version);
|
mVersionView = (TextView)findViewById(R.id.version);
|
||||||
mEnableDebugLoggingView = (CheckBox)findViewById(R.id.debug_logging);
|
mEnableDebugLoggingView = (CheckBox)findViewById(R.id.debug_logging);
|
||||||
mEnableSensitiveLoggingView = (CheckBox)findViewById(R.id.sensitive_logging);
|
mEnableSensitiveLoggingView = (CheckBox)findViewById(R.id.sensitive_logging);
|
||||||
mEnableExchangeLoggingView = (CheckBox)findViewById(R.id.exchange_logging);
|
|
||||||
mEnableExchangeFileLoggingView = (CheckBox)findViewById(R.id.exchange_file_logging);
|
|
||||||
|
|
||||||
mEnableDebugLoggingView.setOnCheckedChangeListener(this);
|
mEnableDebugLoggingView.setOnCheckedChangeListener(this);
|
||||||
mEnableSensitiveLoggingView.setOnCheckedChangeListener(this);
|
mEnableSensitiveLoggingView.setOnCheckedChangeListener(this);
|
||||||
mEnableExchangeLoggingView.setOnCheckedChangeListener(this);
|
|
||||||
mEnableExchangeFileLoggingView.setOnCheckedChangeListener(this);
|
|
||||||
|
|
||||||
mVersionView.setText(String.format(getString(R.string.debug_version_fmt).toString(),
|
mVersionView.setText(String.format(getString(R.string.debug_version_fmt).toString(),
|
||||||
getString(R.string.build_number)));
|
getString(R.string.build_number)));
|
||||||
|
|
||||||
mEnableDebugLoggingView.setChecked(Email.DEBUG);
|
mEnableDebugLoggingView.setChecked(Email.DEBUG);
|
||||||
mEnableSensitiveLoggingView.setChecked(Email.DEBUG_SENSITIVE);
|
mEnableSensitiveLoggingView.setChecked(Email.DEBUG_SENSITIVE);
|
||||||
|
|
||||||
|
//EXCHANGE-REMOVE-SECTION-START
|
||||||
|
mEnableExchangeLoggingView = (CheckBox)findViewById(R.id.exchange_logging);
|
||||||
|
mEnableExchangeFileLoggingView = (CheckBox)findViewById(R.id.exchange_file_logging);
|
||||||
|
mEnableExchangeLoggingView.setOnCheckedChangeListener(this);
|
||||||
|
mEnableExchangeFileLoggingView.setOnCheckedChangeListener(this);
|
||||||
mEnableExchangeLoggingView.setChecked(Eas.USER_LOG);
|
mEnableExchangeLoggingView.setChecked(Eas.USER_LOG);
|
||||||
mEnableExchangeFileLoggingView.setChecked(Eas.FILE_LOG);
|
mEnableExchangeFileLoggingView.setChecked(Eas.FILE_LOG);
|
||||||
|
//EXCHANGE-REMOVE-SECTION-END
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
||||||
|
@ -80,6 +83,7 @@ public class Debug extends Activity implements OnCheckedChangeListener {
|
||||||
Email.DEBUG_SENSITIVE = isChecked;
|
Email.DEBUG_SENSITIVE = isChecked;
|
||||||
mPreferences.setEnableSensitiveLogging(Email.DEBUG_SENSITIVE);
|
mPreferences.setEnableSensitiveLogging(Email.DEBUG_SENSITIVE);
|
||||||
break;
|
break;
|
||||||
|
//EXCHANGE-REMOVE-SECTION-START
|
||||||
case R.id.exchange_logging:
|
case R.id.exchange_logging:
|
||||||
mPreferences.setEnableExchangeLogging(isChecked);
|
mPreferences.setEnableExchangeLogging(isChecked);
|
||||||
break;
|
break;
|
||||||
|
@ -89,6 +93,7 @@ public class Debug extends Activity implements OnCheckedChangeListener {
|
||||||
FileLogger.close();
|
FileLogger.close();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
//EXCHANGE-REMOVE-SECTION-END
|
||||||
}
|
}
|
||||||
|
|
||||||
updateLoggingFlags(this);
|
updateLoggingFlags(this);
|
||||||
|
@ -115,11 +120,13 @@ public class Debug extends Activity implements OnCheckedChangeListener {
|
||||||
* Load enabled debug flags from the preferences and upadte the EAS debug flag.
|
* Load enabled debug flags from the preferences and upadte the EAS debug flag.
|
||||||
*/
|
*/
|
||||||
public static void updateLoggingFlags(Context context) {
|
public static void updateLoggingFlags(Context context) {
|
||||||
|
//EXCHANGE-REMOVE-SECTION-START
|
||||||
Preferences prefs = Preferences.getPreferences(context);
|
Preferences prefs = Preferences.getPreferences(context);
|
||||||
int debugLogging = prefs.getEnableDebugLogging() ? Eas.DEBUG_BIT : 0;
|
int debugLogging = prefs.getEnableDebugLogging() ? Eas.DEBUG_BIT : 0;
|
||||||
int exchangeLogging = prefs.getEnableExchangeLogging() ? Eas.DEBUG_EXCHANGE_BIT : 0;
|
int exchangeLogging = prefs.getEnableExchangeLogging() ? Eas.DEBUG_EXCHANGE_BIT : 0;
|
||||||
int fileLogging = prefs.getEnableExchangeFileLogging() ? Eas.DEBUG_FILE_BIT : 0;
|
int fileLogging = prefs.getEnableExchangeFileLogging() ? Eas.DEBUG_FILE_BIT : 0;
|
||||||
int debugBits = debugLogging | exchangeLogging | fileLogging;
|
int debugBits = debugLogging | exchangeLogging | fileLogging;
|
||||||
Controller.getInstance(context).serviceLogging(debugBits);
|
Controller.getInstance(context).serviceLogging(debugBits);
|
||||||
|
//EXCHANGE-REMOVE-SECTION-END
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,7 +24,6 @@ import com.android.email.mail.Store;
|
||||||
import com.android.email.provider.EmailContent.Account;
|
import com.android.email.provider.EmailContent.Account;
|
||||||
import com.android.email.provider.EmailContent.AccountColumns;
|
import com.android.email.provider.EmailContent.AccountColumns;
|
||||||
import com.android.email.provider.EmailContent.HostAuth;
|
import com.android.email.provider.EmailContent.HostAuth;
|
||||||
import com.android.exchange.Eas;
|
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.ContentResolver;
|
import android.content.ContentResolver;
|
||||||
|
|
|
@ -157,14 +157,16 @@ public class AccountSetupAccountType extends Activity implements OnClickListener
|
||||||
* like this.
|
* like this.
|
||||||
*/
|
*/
|
||||||
private boolean isExchangeAvailable() {
|
private boolean isExchangeAvailable() {
|
||||||
|
//EXCHANGE-REMOVE-SECTION-START
|
||||||
try {
|
try {
|
||||||
URI uri = new URI(mAccount.getStoreUri(this));
|
URI uri = new URI(mAccount.getStoreUri(this));
|
||||||
uri = new URI("eas", uri.getUserInfo(), uri.getHost(), uri.getPort(), null, null, null);
|
uri = new URI("eas", uri.getUserInfo(), uri.getHost(), uri.getPort(), null, null, null);
|
||||||
Store.StoreInfo storeInfo = Store.StoreInfo.getStoreInfo(uri.toString(), this);
|
Store.StoreInfo storeInfo = Store.StoreInfo.getStoreInfo(uri.toString(), this);
|
||||||
return (storeInfo != null && checkAccountInstanceLimit(storeInfo));
|
return (storeInfo != null && checkAccountInstanceLimit(storeInfo));
|
||||||
} catch (URISyntaxException e) {
|
} catch (URISyntaxException e) {
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
//EXCHANGE-REMOVE-SECTION-END
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -25,7 +25,6 @@ import com.android.email.mail.Store;
|
||||||
import com.android.email.mail.StoreSynchronizer;
|
import com.android.email.mail.StoreSynchronizer;
|
||||||
import com.android.email.provider.EmailContent.Account;
|
import com.android.email.provider.EmailContent.Account;
|
||||||
import com.android.email.service.EasAuthenticatorService;
|
import com.android.email.service.EasAuthenticatorService;
|
||||||
import com.android.exchange.Eas;
|
|
||||||
|
|
||||||
import android.accounts.AccountManager;
|
import android.accounts.AccountManager;
|
||||||
import android.accounts.AccountManagerCallback;
|
import android.accounts.AccountManagerCallback;
|
||||||
|
|
|
@ -30,7 +30,6 @@ import com.android.email.provider.EmailContent.MailboxColumns;
|
||||||
import com.android.email.provider.EmailContent.Message;
|
import com.android.email.provider.EmailContent.Message;
|
||||||
import com.android.email.provider.EmailContent.MessageColumns;
|
import com.android.email.provider.EmailContent.MessageColumns;
|
||||||
import com.android.email.provider.EmailContent.SyncColumns;
|
import com.android.email.provider.EmailContent.SyncColumns;
|
||||||
import com.android.exchange.Eas;
|
|
||||||
|
|
||||||
import android.accounts.AccountManager;
|
import android.accounts.AccountManager;
|
||||||
import android.content.ContentProvider;
|
import android.content.ContentProvider;
|
||||||
|
|
|
@ -18,7 +18,6 @@ package com.android.email.service;
|
||||||
|
|
||||||
import com.android.email.Email;
|
import com.android.email.Email;
|
||||||
import com.android.email.activity.setup.AccountSetupBasics;
|
import com.android.email.activity.setup.AccountSetupBasics;
|
||||||
import com.android.exchange.Eas;
|
|
||||||
|
|
||||||
import android.accounts.AbstractAccountAuthenticator;
|
import android.accounts.AbstractAccountAuthenticator;
|
||||||
import android.accounts.Account;
|
import android.accounts.Account;
|
||||||
|
|
|
@ -35,16 +35,16 @@ import java.util.HashSet;
|
||||||
* This is a series of unit tests for the AccountSetupAccountType class.
|
* This is a series of unit tests for the AccountSetupAccountType class.
|
||||||
*/
|
*/
|
||||||
@SmallTest
|
@SmallTest
|
||||||
public class AccountSetupAccountTypeUnitTests
|
public class AccountSetupAccountTypeUnitTests
|
||||||
extends ActivityUnitTestCase<AccountSetupAccountType> {
|
extends ActivityUnitTestCase<AccountSetupAccountType> {
|
||||||
|
|
||||||
// Borrowed from AccountSetupAccountType
|
// Borrowed from AccountSetupAccountType
|
||||||
private static final String EXTRA_ACCOUNT = "account";
|
private static final String EXTRA_ACCOUNT = "account";
|
||||||
|
|
||||||
Context mContext;
|
Context mContext;
|
||||||
|
|
||||||
private HashSet<Account> mAccounts = new HashSet<Account>();
|
private HashSet<Account> mAccounts = new HashSet<Account>();
|
||||||
|
|
||||||
public AccountSetupAccountTypeUnitTests() {
|
public AccountSetupAccountTypeUnitTests() {
|
||||||
super(AccountSetupAccountType.class);
|
super(AccountSetupAccountType.class);
|
||||||
}
|
}
|
||||||
|
@ -52,7 +52,7 @@ public class AccountSetupAccountTypeUnitTests
|
||||||
@Override
|
@Override
|
||||||
protected void setUp() throws Exception {
|
protected void setUp() throws Exception {
|
||||||
super.setUp();
|
super.setUp();
|
||||||
|
|
||||||
mContext = this.getInstrumentation().getTargetContext();
|
mContext = this.getInstrumentation().getTargetContext();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -65,11 +65,11 @@ public class AccountSetupAccountTypeUnitTests
|
||||||
Uri uri = ContentUris.withAppendedId(Account.CONTENT_URI, account.mId);
|
Uri uri = ContentUris.withAppendedId(Account.CONTENT_URI, account.mId);
|
||||||
mContext.getContentResolver().delete(uri, null, null);
|
mContext.getContentResolver().delete(uri, null, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
// must call last because it scrubs member variables
|
// must call last because it scrubs member variables
|
||||||
super.tearDown();
|
super.tearDown();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test store type limit enforcement
|
* Test store type limit enforcement
|
||||||
*/
|
*/
|
||||||
|
@ -77,7 +77,7 @@ public class AccountSetupAccountTypeUnitTests
|
||||||
EmailContent.Account acct1 = createTestAccount("scheme1");
|
EmailContent.Account acct1 = createTestAccount("scheme1");
|
||||||
EmailContent.Account acct2 = createTestAccount("scheme1");
|
EmailContent.Account acct2 = createTestAccount("scheme1");
|
||||||
EmailContent.Account acct3 = createTestAccount("scheme2");
|
EmailContent.Account acct3 = createTestAccount("scheme2");
|
||||||
|
|
||||||
AccountSetupAccountType activity = startActivity(getTestIntent(acct1), null, null);
|
AccountSetupAccountType activity = startActivity(getTestIntent(acct1), null, null);
|
||||||
|
|
||||||
// Test with no limit
|
// Test with no limit
|
||||||
|
@ -85,24 +85,30 @@ public class AccountSetupAccountTypeUnitTests
|
||||||
info.mAccountInstanceLimit = -1;
|
info.mAccountInstanceLimit = -1;
|
||||||
info.mScheme = "scheme1";
|
info.mScheme = "scheme1";
|
||||||
assertTrue("no limit", activity.checkAccountInstanceLimit(info));
|
assertTrue("no limit", activity.checkAccountInstanceLimit(info));
|
||||||
|
|
||||||
// Test with limit, but not reached
|
// Test with limit, but not reached
|
||||||
info.mAccountInstanceLimit = 3;
|
info.mAccountInstanceLimit = 3;
|
||||||
assertTrue("limit, but not reached", activity.checkAccountInstanceLimit(info));
|
assertTrue("limit, but not reached", activity.checkAccountInstanceLimit(info));
|
||||||
|
|
||||||
// Test with limit, reached
|
// Test with limit, reached
|
||||||
info.mAccountInstanceLimit = 2;
|
info.mAccountInstanceLimit = 2;
|
||||||
assertFalse("limit, reached", activity.checkAccountInstanceLimit(info));
|
assertFalse("limit, reached", activity.checkAccountInstanceLimit(info));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Confirm that EAS is presented (supported in this release)
|
* Confirm that EAS is presented, when supported.
|
||||||
*/
|
*/
|
||||||
public void testEasOffered() {
|
public void testEasOffered() {
|
||||||
Account acct1 = createTestAccount("scheme1");
|
Account acct1 = createTestAccount("scheme1");
|
||||||
AccountSetupAccountType activity = startActivity(getTestIntent(acct1), null, null);
|
AccountSetupAccountType activity = startActivity(getTestIntent(acct1), null, null);
|
||||||
View exchangeButton = activity.findViewById(R.id.exchange);
|
View exchangeButton = activity.findViewById(R.id.exchange);
|
||||||
assertEquals(View.VISIBLE, exchangeButton.getVisibility());
|
|
||||||
|
int expected = View.GONE; // Default is hidden
|
||||||
|
//EXCHANGE-REMOVE-SECTION-START
|
||||||
|
expected = View.VISIBLE; // Will be visible if supported.
|
||||||
|
//EXCHANGE-REMOVE-SECTION-END
|
||||||
|
|
||||||
|
assertEquals(expected, exchangeButton.getVisibility());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -115,7 +121,7 @@ public class AccountSetupAccountTypeUnitTests
|
||||||
mAccounts.add(account);
|
mAccounts.add(account);
|
||||||
return account;
|
return account;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create an intent with the Account in it
|
* Create an intent with the Account in it
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -37,17 +37,19 @@ import android.widget.EditText;
|
||||||
@MediumTest
|
@MediumTest
|
||||||
public class AccountSetupExchangeTests extends
|
public class AccountSetupExchangeTests extends
|
||||||
ActivityInstrumentationTestCase2<AccountSetupExchange> {
|
ActivityInstrumentationTestCase2<AccountSetupExchange> {
|
||||||
|
//EXCHANGE-REMOVE-SECTION-START
|
||||||
private AccountSetupExchange mActivity;
|
private AccountSetupExchange mActivity;
|
||||||
private EditText mServerView;
|
private EditText mServerView;
|
||||||
private Button mNextButton;
|
private Button mNextButton;
|
||||||
private CheckBox mSslRequiredCheckbox;
|
private CheckBox mSslRequiredCheckbox;
|
||||||
private CheckBox mTrustAllCertificatesCheckbox;
|
private CheckBox mTrustAllCertificatesCheckbox;
|
||||||
|
//EXCHANGE-REMOVE-SECTION-END
|
||||||
|
|
||||||
public AccountSetupExchangeTests() {
|
public AccountSetupExchangeTests() {
|
||||||
super("com.android.email", AccountSetupExchange.class);
|
super("com.android.email", AccountSetupExchange.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//EXCHANGE-REMOVE-SECTION-START
|
||||||
/**
|
/**
|
||||||
* Common setup code for all tests. Sets up a default launch intent, which some tests
|
* Common setup code for all tests. Sets up a default launch intent, which some tests
|
||||||
* will use (others will override).
|
* will use (others will override).
|
||||||
|
@ -62,7 +64,7 @@ public class AccountSetupExchangeTests extends
|
||||||
Intent i = getTestIntent("eas://user:password@server.com");
|
Intent i = getTestIntent("eas://user:password@server.com");
|
||||||
setActivityIntent(i);
|
setActivityIntent(i);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test processing with a complete, good URI -> good fields
|
* Test processing with a complete, good URI -> good fields
|
||||||
*/
|
*/
|
||||||
|
@ -72,7 +74,7 @@ public class AccountSetupExchangeTests extends
|
||||||
getActivityAndFields();
|
getActivityAndFields();
|
||||||
assertTrue(mNextButton.isEnabled());
|
assertTrue(mNextButton.isEnabled());
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO Add tests for valid usernames in eas
|
// TODO Add tests for valid usernames in eas
|
||||||
// They would be <name> or <name>\<domain> or <name>/<domain> or a valid email address
|
// They would be <name> or <name>\<domain> or <name>/<domain> or a valid email address
|
||||||
|
|
||||||
|
@ -85,7 +87,7 @@ public class AccountSetupExchangeTests extends
|
||||||
getActivityAndFields();
|
getActivityAndFields();
|
||||||
assertFalse(mNextButton.isEnabled());
|
assertFalse(mNextButton.isEnabled());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* No password is not OK - not enabled
|
* No password is not OK - not enabled
|
||||||
*/
|
*/
|
||||||
|
@ -95,7 +97,7 @@ public class AccountSetupExchangeTests extends
|
||||||
getActivityAndFields();
|
getActivityAndFields();
|
||||||
assertFalse(mNextButton.isEnabled());
|
assertFalse(mNextButton.isEnabled());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test for non-standard but OK server names
|
* Test for non-standard but OK server names
|
||||||
*/
|
*/
|
||||||
|
@ -103,11 +105,11 @@ public class AccountSetupExchangeTests extends
|
||||||
public void testGoodServerVariants() {
|
public void testGoodServerVariants() {
|
||||||
getActivityAndFields();
|
getActivityAndFields();
|
||||||
assertTrue(mNextButton.isEnabled());
|
assertTrue(mNextButton.isEnabled());
|
||||||
|
|
||||||
mServerView.setText(" server.com ");
|
mServerView.setText(" server.com ");
|
||||||
assertTrue(mNextButton.isEnabled());
|
assertTrue(mNextButton.isEnabled());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test for non-empty but non-OK server names
|
* Test for non-empty but non-OK server names
|
||||||
*/
|
*/
|
||||||
|
@ -115,10 +117,10 @@ public class AccountSetupExchangeTests extends
|
||||||
public void testBadServerVariants() {
|
public void testBadServerVariants() {
|
||||||
getActivityAndFields();
|
getActivityAndFields();
|
||||||
assertTrue(mNextButton.isEnabled());
|
assertTrue(mNextButton.isEnabled());
|
||||||
|
|
||||||
mServerView.setText(" ");
|
mServerView.setText(" ");
|
||||||
assertFalse(mNextButton.isEnabled());
|
assertFalse(mNextButton.isEnabled());
|
||||||
|
|
||||||
mServerView.setText("serv$er.com");
|
mServerView.setText("serv$er.com");
|
||||||
assertFalse(mNextButton.isEnabled());
|
assertFalse(mNextButton.isEnabled());
|
||||||
}
|
}
|
||||||
|
@ -161,7 +163,7 @@ public class AccountSetupExchangeTests extends
|
||||||
/**
|
/**
|
||||||
* TODO: Directly test validateFields() checking boolean result
|
* TODO: Directly test validateFields() checking boolean result
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the activity (which causes it to be started, using our intent) and get the UI fields
|
* Get the activity (which causes it to be started, using our intent) and get the UI fields
|
||||||
*/
|
*/
|
||||||
|
@ -173,7 +175,7 @@ public class AccountSetupExchangeTests extends
|
||||||
mTrustAllCertificatesCheckbox =
|
mTrustAllCertificatesCheckbox =
|
||||||
(CheckBox) mActivity.findViewById(R.id.account_trust_certificates);
|
(CheckBox) mActivity.findViewById(R.id.account_trust_certificates);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create an intent with the Account in it
|
* Create an intent with the Account in it
|
||||||
*/
|
*/
|
||||||
|
@ -185,5 +187,5 @@ public class AccountSetupExchangeTests extends
|
||||||
i.putExtra(AccountSetupExchange.EXTRA_DISABLE_AUTO_DISCOVER, true);
|
i.putExtra(AccountSetupExchange.EXTRA_DISABLE_AUTO_DISCOVER, true);
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
//EXCHANGE-REMOVE-SECTION-END
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue