Revert "Add Sms/Mms sent failure reasons parsing in sl4a. am: aa6562e1cc am: 427a48e566" am: 24a9ffaf6b
am: e75962b48d

Change-Id: Ia905ca7a85521177c2a351ff9468afa95c8564ea
diff --git a/Common/src/com/googlecode/android_scripting/facade/telephony/SmsFacade.java b/Common/src/com/googlecode/android_scripting/facade/telephony/SmsFacade.java
index 69d2285..178f597 100644
--- a/Common/src/com/googlecode/android_scripting/facade/telephony/SmsFacade.java
+++ b/Common/src/com/googlecode/android_scripting/facade/telephony/SmsFacade.java
@@ -43,13 +43,10 @@
 import com.google.android.mms.InvalidHeaderValueException;
 import com.google.android.mms.pdu.CharacterSets;
 import com.google.android.mms.pdu.EncodedStringValue;
-import com.google.android.mms.pdu.GenericPdu;
 import com.google.android.mms.pdu.PduBody;
 import com.google.android.mms.pdu.PduComposer;
 import com.google.android.mms.pdu.PduHeaders;
-import com.google.android.mms.pdu.PduParser;
 import com.google.android.mms.pdu.PduPart;
-import com.google.android.mms.pdu.SendConf;
 import com.google.android.mms.pdu.SendReq;
 import com.googlecode.android_scripting.Log;
 import com.googlecode.android_scripting.facade.EventFacade;
@@ -88,8 +85,6 @@
     private boolean mCdmaEmergencyCBListenerRegistered;
     private boolean mSentReceiversRegistered;
     private Object lock = new Object();
-    private File mMmsSendFile;
-    private String mPackageName;
 
     private BroadcastReceiver mMmsSendListener;
     private BroadcastReceiver mMmsIncomingListener;
@@ -98,15 +93,15 @@
     TelephonyManager mTelephonyManager;
 
     private static final String SMS_MESSAGE_STATUS_DELIVERED_ACTION =
-            "com.googlecode.android_scripting.facade.telephony.SMS_DELIVERED";
+            "com.googlecode.android_scripting.sms.MESSAGE_STATUS_DELIVERED";
     private static final String SMS_MESSAGE_SENT_ACTION =
-            "com.googlecode.android_scripting.facade.telephony.SMS_SENT";
+            "com.googlecode.android_scripting.sms.MESSAGE_SENT";
 
     private static final String EMERGENCY_CB_MESSAGE_RECEIVED_ACTION =
             "android.provider.Telephony.SMS_EMERGENCY_CB_RECEIVED";
 
     private static final String MMS_MESSAGE_SENT_ACTION =
-            "com.googlecode.android_scripting.facade.telephony.MMS_SENT";
+            "com.googlecode.android_scripting.mms.MESSAGE_SENT";
 
     private final int MAX_MESSAGE_LENGTH = 160;
     private final int INTERNATIONAL_NUMBER_LENGTH = 12;
@@ -148,7 +143,6 @@
         mContext = mService;
         mSms = SmsManager.getDefault();
         mEventFacade = manager.getReceiver(EventFacade.class);
-        mPackageName = mContext.getPackageName();
         mSmsSendListener = new SmsSendListener();
         mSmsIncomingListener = new SmsIncomingListener();
         mNumExpectedSentEvents = 0;
@@ -203,12 +197,12 @@
 
     // FIXME: Move to a utility class
     private boolean writeBytesToCacheFile(String fileName, byte[] pdu) {
-        mMmsSendFile = new File(mContext.getCacheDir(), fileName);
+        File mmsFile = new File(mContext.getCacheDir(), fileName);
         Log.d(String.format("filename:%s, directory:%s", fileName,
                 mContext.getCacheDir().toString()));
         FileOutputStream writer = null;
         try {
-            writer = new FileOutputStream(mMmsSendFile);
+            writer = new FileOutputStream(mmsFile);
             writer.write(pdu);
             return true;
         } catch (final IOException e) {
@@ -301,6 +295,14 @@
             mTelephonyManager.getLine1Number(); //TODO: b/21592513 - multi-sim awareness
         }
 
+        if (DBG) {
+            Log.d(String.format(
+                    "Params:toPhoneNumber(%s),subject(%s),message(%s),fromPhoneNumber(%s),filename(%s)",
+                    toPhoneNumber, subject, message,
+                    (fromPhoneNumber != null) ? fromPhoneNumber : "",
+                            (fileName != null) ? fileName : ""));
+        }
+
         mms.setFromPhoneNumber((fromPhoneNumber != null) ? fromPhoneNumber : DEFAULT_FROM_PHONE_NUMBER);
         mms.setSubject(subject);
         mms.setDate();
@@ -334,12 +336,14 @@
 
         if (contentUri != null) {
             Log.d(String.format("URI String: %s", contentUri.toString()));
-            mSms.sendMultimediaMessage(mContext, contentUri, null/* locationUrl */,
-                    null/* configOverrides */,
-                    createBroadcastPendingIntent(MMS_MESSAGE_SENT_ACTION));
+            SmsManager.getDefault().sendMultimediaMessage(mContext,
+                    contentUri, null/* locationUrl */, null/* configOverrides */,
+                    PendingIntent.getBroadcast(mService, 0,
+                            new Intent(MMS_MESSAGE_SENT_ACTION), 0)
+                    );
         }
         else {
-            Log.e("smsSendMultimediaMessage():Content URI String is null");
+            Log.d("smsSendMultimediaMessage():Content URI String is null");
         }
     }
 
@@ -351,20 +355,19 @@
             String message,
                         @RpcParameter(name = "deliveryReportRequired")
             Boolean deliveryReportRequired) {
-        int message_length = message.length();
-        Log.d(String.format("Send SMS message of length %d", message_length));
-        if (message_length > MAX_MESSAGE_LENGTH) {
+
+        if (message.length() > MAX_MESSAGE_LENGTH) {
             ArrayList<String> messagesParts = mSms.divideMessage(message);
             mNumExpectedSentEvents = mNumExpectedDeliveredEvents = messagesParts.size();
-            Log.d(String.format("SMS message of length %d is divided into %d parts",
-                    message_length, mNumExpectedSentEvents));
             ArrayList<PendingIntent> sentIntents = new ArrayList<PendingIntent>();
             ArrayList<PendingIntent> deliveredIntents = new ArrayList<PendingIntent>();
             for (int i = 0; i < messagesParts.size(); i++) {
-                sentIntents.add(createBroadcastPendingIntent(SMS_MESSAGE_SENT_ACTION));
+                sentIntents.add(PendingIntent.getBroadcast(mService, 0,
+                        new Intent(SMS_MESSAGE_SENT_ACTION), 0));
                 if (deliveryReportRequired) {
-                    deliveredIntents.add(createBroadcastPendingIntent(
-                            SMS_MESSAGE_STATUS_DELIVERED_ACTION));
+                    deliveredIntents.add(
+                            PendingIntent.getBroadcast(mService, 0,
+                                    new Intent(SMS_MESSAGE_STATUS_DELIVERED_ACTION), 0));
                 }
             }
             mSms.sendMultipartTextMessage(
@@ -372,9 +375,13 @@
                     sentIntents, deliveryReportRequired ? deliveredIntents : null);
         } else {
             mNumExpectedSentEvents = mNumExpectedDeliveredEvents = 1;
-            mSms.sendTextMessage(phoneNumber, null, message, createBroadcastPendingIntent(
-                    SMS_MESSAGE_SENT_ACTION), deliveryReportRequired ? createBroadcastPendingIntent(
-                            SMS_MESSAGE_STATUS_DELIVERED_ACTION) : null);
+            PendingIntent sentIntent = PendingIntent.getBroadcast(mService, 0,
+                    new Intent(SMS_MESSAGE_SENT_ACTION), 0);
+            PendingIntent deliveredIntent = PendingIntent.getBroadcast(mService, 0,
+                    new Intent(SMS_MESSAGE_STATUS_DELIVERED_ACTION), 0);
+            mSms.sendTextMessage(
+                    phoneNumber, null, message, sentIntent,
+                    deliveryReportRequired ? deliveredIntent : null);
         }
     }
 
@@ -444,11 +451,10 @@
         @Override
         public void onReceive(Context context, Intent intent) {
             Bundle event = new Bundle();
+            event.putString("Type", "SmsDeliverStatus");
             String action = intent.getAction();
             int resultCode = getResultCode();
-            event.putString("ResultCode", Integer.toString(resultCode));
             if (SMS_MESSAGE_STATUS_DELIVERED_ACTION.equals(action)) {
-                event.putString("Type", "SmsDeliverStatus");
                 if (resultCode == Activity.RESULT_OK) {
                     if (mNumExpectedDeliveredEvents == 1) {
                         Log.d("SMS Message delivered successfully");
@@ -473,9 +479,31 @@
                         mNumExpectedSentEvents--;
                     }
                 } else {
-                    Log.e(String.format("SMS Message send failed with code %s", resultCode));
+                    Log.e("SMS Message send failed");
                     event.putString("Type", "SmsSentFailure");
-                    event.putString("Reason", getSmsFailureReason(resultCode));
+                    switch (resultCode) {
+                        case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
+                            event.putString("Reason", "GenericFailure");
+                            break;
+                        case SmsManager.RESULT_ERROR_RADIO_OFF:
+                            event.putString("Reason", "RadioOff");
+                            break;
+                        case SmsManager.RESULT_ERROR_NULL_PDU:
+                            event.putString("Reason", "NullPdu");
+                            break;
+                        case SmsManager.RESULT_ERROR_NO_SERVICE:
+                            event.putString("Reason", "NoService");
+                            break;
+                        case SmsManager.RESULT_ERROR_LIMIT_EXCEEDED:
+                            event.putString("Reason", "LimitExceeded");
+                            break;
+                        case SmsManager.RESULT_ERROR_FDN_CHECK_FAILURE:
+                            event.putString("Reason", "FdnCheckFailure");
+                            break;
+                        default:
+                            event.putString("Reason", "Unknown");
+                            break;
+                    }
                     mEventFacade.postEvent(TelephonyConstants.EventSmsSentFailure, event);
                 }
             }
@@ -522,42 +550,14 @@
             String action = intent.getAction();
             int resultCode = getResultCode();
             event.putString("ResultCode", Integer.toString(resultCode));
-            String eventType = TelephonyConstants.EventMmsSentFailure;
             if (MMS_MESSAGE_SENT_ACTION.equals(action)) {
-                mMmsSendFile.delete();
                 if (resultCode == Activity.RESULT_OK) {
-                    final byte[] response = intent.getByteArrayExtra(SmsManager.EXTRA_MMS_DATA);
-                    if (response != null) {
-                        boolean shouldParse = SmsManager.getDefault().getCarrierConfigValues(
-                            ).getBoolean(
-                                SmsManager.MMS_CONFIG_SUPPORT_MMS_CONTENT_DISPOSITION, true);
-                        final GenericPdu pdu = new PduParser(response, shouldParse).parse();
-                        if (pdu instanceof SendConf) {
-                            final SendConf sendConf = (SendConf) pdu;
-                            if (sendConf.getResponseStatus() == PduHeaders.RESPONSE_STATUS_OK) {
-                                Log.d("MMS Message sent successfully");
-                                eventType = TelephonyConstants.EventMmsSentSuccess;
-                            } else {
-                                String responseStatus = String.format(
-                                        "%d", sendConf.getResponseStatus());
-                                Log.e("MMS sent, error=" + responseStatus);
-                                event.putString("Reason", responseStatus);
-                            }
-                        } else {
-                            Log.e("MMS sent, invalid response");
-                            event.putString("Reason", "InvalidResponse");
-                        }
-                    } else {
-                        Log.e("MMS sent, empty response");
-                        event.putString("Reason", "EmptyResponse");
-                    }
+                    Log.d("MMS Message sent successfully");
+                    mEventFacade.postEvent(TelephonyConstants.EventMmsSentSuccess, event);
                 } else {
-                    Log.e(String.format("MMS Message send failed with code %d", resultCode));
-                    event.putString("Reason", getMmsFailureReason(resultCode));
+                    Log.e(String.format("MMS Message send failed: %d", resultCode));
+                    mEventFacade.postEvent(TelephonyConstants.EventMmsSentFailure, event);
                 }
-                event.putString("Type", eventType);
-                mEventFacade.postEvent(eventType, event);
-                mMmsSendFile = null;
             } else {
                 Log.e("MMS Send Listener Received Invalid Event" + intent.toString());
             }
@@ -669,89 +669,6 @@
         }
     }
 
-    private PendingIntent createBroadcastPendingIntent(String intentAction) {
-        return PendingIntent.getBroadcast(mService, 0, new Intent(intentAction).setPackage(
-                mPackageName), 0);
-    }
-
-    private static String getSmsFailureReason(int resultCode) {
-        switch (resultCode) {
-            case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
-                return "GenericFailure";
-            case SmsManager.RESULT_ERROR_RADIO_OFF:
-                return "RadioOff";
-            case SmsManager.RESULT_ERROR_NULL_PDU:
-                return "NullPdu";
-            case SmsManager.RESULT_ERROR_NO_SERVICE:
-                return "NoService";
-            case SmsManager.RESULT_ERROR_LIMIT_EXCEEDED:
-                return "LimitExceeded";
-            case SmsManager.RESULT_ERROR_FDN_CHECK_FAILURE:
-                return "FdnCheckFailure";
-            case SmsManager.RESULT_ERROR_SHORT_CODE_NOT_ALLOWED:
-                return "ShortCodeNotAllowed";
-            case SmsManager.RESULT_ERROR_SHORT_CODE_NEVER_ALLOWED:
-                return "ShortCodeNeverAllowed";
-            case SmsManager.RESULT_RADIO_NOT_AVAILABLE:
-                return "RadioNotAvailable";
-            case SmsManager.RESULT_NETWORK_REJECT:
-                return "NetworkReject";
-            case SmsManager.RESULT_INVALID_ARGUMENTS:
-                return "InvalidArguments";
-            case SmsManager.RESULT_INVALID_STATE:
-                return "InvalidState";
-            case SmsManager.RESULT_NO_MEMORY:
-                return "NoMemory";
-            case SmsManager.RESULT_INVALID_SMS_FORMAT:
-                return "InvalidSmsFormat";
-            case SmsManager.RESULT_SYSTEM_ERROR:
-                return "SystemError";
-            case SmsManager.RESULT_MODEM_ERROR:
-                return "ModemError";
-            case SmsManager.RESULT_NETWORK_ERROR:
-                return "NetworkError";
-            case SmsManager.RESULT_ENCODING_ERROR:
-                return "EncodingError";
-            case SmsManager.RESULT_INVALID_SMSC_ADDRESS:
-                return "InvalidSmscAddress";
-            case SmsManager.RESULT_OPERATION_NOT_ALLOWED:
-                return "OperationNotAllowed";
-            case SmsManager.RESULT_INTERNAL_ERROR:
-                return "ResultInternalError";
-            case SmsManager.RESULT_NO_RESOURCES:
-                return "NoResources";
-            case SmsManager.RESULT_CANCELLED:
-                return "ResultCancelled";
-            case SmsManager.RESULT_REQUEST_NOT_SUPPORTED:
-                return "RequestNotSupported";
-            default:
-                return String.format("UnknownCode-%s", resultCode);
-        }
-    }
-
-    private static String getMmsFailureReason(int resultCode) {
-        switch (resultCode) {
-            case SmsManager.MMS_ERROR_UNSPECIFIED:
-                return "ErrorUnspecified";
-            case SmsManager.MMS_ERROR_INVALID_APN:
-                return "InvalidApn";
-            case SmsManager.MMS_ERROR_UNABLE_CONNECT_MMS:
-                return "UnableConnectMms";
-            case SmsManager.MMS_ERROR_HTTP_FAILURE:
-                return "HttpFailure";
-            case SmsManager.MMS_ERROR_IO_ERROR:
-                return "IoError";
-            case SmsManager.MMS_ERROR_RETRY:
-                return "Retry";
-            case SmsManager.MMS_ERROR_CONFIGURATION_ERROR:
-                return "ConfigurationError";
-            case SmsManager.MMS_ERROR_NO_DATA_NETWORK:
-                return "NoDataNetwork";
-            default:
-                return String.format("UnknownCode-%s", resultCode);
-        }
-    }
-
     private static String getETWSWarningType(int type) {
         switch (type) {
             case SmsCbEtwsInfo.ETWS_WARNING_TYPE_EARTHQUAKE:
diff --git a/ScriptingLayerForAndroid/AndroidManifest.xml b/ScriptingLayerForAndroid/AndroidManifest.xml
index 0611ce6..0d80394 100644
--- a/ScriptingLayerForAndroid/AndroidManifest.xml
+++ b/ScriptingLayerForAndroid/AndroidManifest.xml
@@ -20,9 +20,7 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.googlecode.android_scripting"
     android:sharedUserId="android.uid.system">
-    <protected-broadcast android:name="com.googlecode.android_scripting.facade.telephony.MMS_SENT" />
-    <protected-broadcast android:name="com.googlecode.android_scripting.facade.telephony.SMS_DELIVERED" />
-    <protected-broadcast android:name="com.googlecode.android_scripting.facade.telephony.SMS_SENT" />
+    <protected-broadcast android:name="com.googlecode.android_scripting.sms.MESSAGE_SENT" />
     <uses-permission android:name="com.android.permission.WHITELIST_BLUETOOTH_DEVICE"
         android:protectionLevel="signature" />
     <uses-permission android:name="android.permission.ACCESS_BLUETOOTH_SHARE"
@@ -213,13 +211,6 @@
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
-        <service android:name=".facade.telephony.SmsFacade">
-            <intent-filter>
-                <action android:name="com.googlecode.android_scripting.facade.telephony.MMS_SENT"/>
-                <action android:name="com.googlecode.android_scripting.facade.telephony.SMS_SENT"/>
-                <action android:name="com.googlecode.android_scripting.facade.telephony.SMS_DELIVERED"/>
-            </intent-filter>
-        </service>
         <provider android:name=".provider.ScriptProvider" android:authorities="com.googlecode.android_scripting.provider.scriptprovider" />
         <provider android:name=".provider.ApiProvider" android:authorities="com.googlecode.android_scripting.provider.apiprovider" />
         <provider android:name=".facade.telephony.MmsFileProvider"