Commit Graph

158 Commits

Author SHA1 Message Date
Jake Klinker
ebc64c5bae Use UriUtil when checking if a URI is a file.
UriUtil.isFileUri contains several additional fixes, so this ensure that existing instances where we check for the file scheme use this method as well. This covers all existing instances in the app of SCHEME_FILE.

Change-Id: I1f3131b33823eae3e620aa9608be8e72b2e84aa2
Bug: 215212561
2022-01-31 20:29:42 +00:00
Jake Klinker
0b258f030a Fix isFileUri to recognize URIs with spaces.
The underlying framework recognizes " file://..." as a valid URI and fetches the file, allowing for a possible exploit (see b/209965112). This trims the URI so that we can properly recognize it as a file from within our code.

Bug: 209965112
Change-Id: I8d9d9100e9a8c3bd64d19015d2177a14ec2306f3
Test: See repro steps on http://b/209965112, was no longer able to repro.
2022-01-11 00:38:25 +00:00
Jake Klinker
9607c95e71 Convert URI scheme to lower case before checking if it is a file.
This fixes an edge case where a "File://" style URI could be passed in
but not pass this check, even though the underlying framework recognizes
this as a legitimate file.

Bug: 197328178
Test: See repro steps on http://b/197328178, was no longer able to
repro.

Change-Id: Id837744a79d1aca91b41d24207dc9b98f2b5b5e9
2021-10-06 21:17:05 +00:00
Santiago Seifert
9f113182be Merge "Handle MediaMetadataRetriever.release IOException" 2021-10-05 19:51:27 +00:00
Santiago Seifert
c4ce65c11e Handle MediaMetadataRetriever.release IOException
MediaMetadataRetriever.release now declares a thrown IOException.

Bug: 200173116
Test: Should be a non-functional change (only relevant when using MediaDataSource).
Change-Id: Ia3f5f01ee79feb35a10ec8bbbef6db88b32f2161
2021-09-22 10:56:34 +00:00
Timi Rautamäki
78ecab8743 Messaging: allow selecting text inside the selected message
Test: receive a message, select it by long press, verify text is selectable.
Change-Id: I9f80df970c6ee1c06b8056c78bffe942eb8eb9bf
Signed-off-by: Timi Rautamäki <timi.rautamaki@gmail.com>
2021-09-19 20:10:11 +00:00
Taesu Lee
bccecb6393 Fix wrong sync message issue for pending outgoing messages
If sync operation is occurred between ResendMessageAction and
SendMessageAction, the pending outgoing messages in local db are deleted
and new messages are added from remote db.

To fix this issue, ResendMessageAction will update RETRY_TIMESTAMP only.
And RECEIVED_TIMESTAMP and SENT_TIMESTAMP will be updated in
SendMessageAction when the message is queued.

Test: manual

Change-Id: I0ffa6f46a7094ec3dfd2954d4313b78dd57d6994
Signed-off-by: Taesu Lee <taesu82.lee@samsung.com>
2021-01-12 18:50:34 +09:00
Taesu Lee
8c08a3f419 Mark messages as failed if SIM is inactive
If a SIM is inactive, Mark messages corresponding to the SIM as failed
instead of updating selfId as default selfId. The failed messages could
be sent through the SIM manually if the SIM is re-activated.

Test: Manual

Change-Id: I1eee7c12aaedebe8aa3e0c41b4b057758a3b17a2
Signed-off-by: Taesu Lee <taesu82.lee@samsung.com>
2020-10-06 12:33:21 +09:00
Taesu Lee
9c97af9b83 Fix creating a new conversation including own number
If a device own phone number is unknown and there is only a single
address in all TO and CC for incoming MMS, ignore the address as it is
device own phone number.

Test: Manual

Change-Id: I26de39bd3b71d3ad391372f35cfce0bd5c7b66ed
Signed-off-by: Taesu Lee <taesu82.lee@samsung.com>
2020-09-16 15:19:58 +09:00
Raman Tenneti
4b52654e98 AOSP/Messaging - Update language to comply with Android's inclusive language guidance.
See https://source.android.com/setup/contribute/respectful-code for reference

BUG=161896447

Test: make and make messagingtests
Change-Id: I01c520f1d5e9eab8dbb25b08d133ae34bd301093
2020-07-29 16:43:46 -07:00
Raman Tenneti
b1aa213ce9 AOSP/Messaging - Changes to make unit tests to run and pass.
+ Added missing androix libraries to LOCAL_STATIC_ANDROID_LIBRARIES.
+ Added keep class statements for androidx and messaging classes.
+ Deleted Assert.isEngBuild call (this package is the last user of that method).
+ Added import statements for androidx classes.

Test: manual - Tested the messaging UI. Ran the following tests on Pixel phone.

$ make -j 40
$ make messagingtests -j
$ find out -name "messaging*.apk" -print -exec ls -l {} \;
-rw-r----- 1 rtenneti primarygroup 733809 Jul  9 17:42 out/target/product/bonito/testcases/messagingtests/arm64/messagingtests.apk
-rw-r----- 1 rtenneti primarygroup 10799132 Jul  9 18:34 out/target/product/bonito/product/app/messaging/messaging.apk

$ adb install -r -d -t  out/target/product/bonito/product/app/messaging/messaging.apk
$ adb install -r -d -t  out/target/product/bonito/testcases/messagingtests/arm64/messagingtests.apk
$ adb shell am instrument -w com.android.messaging.test

com.android.messaging.datamodel.BindingTest:.......
com.android.messaging.datamodel.BitmapPoolTest:....
com.android.messaging.datamodel.ConversationListTest:.
com.android.messaging.datamodel.DataModelTest:...
com.android.messaging.datamodel.FrequentContactsCursorBuilderTest:...
com.android.messaging.datamodel.MemoryCacheManagerTest:.
com.android.messaging.datamodel.ParticipantRefreshTest:..........
com.android.messaging.datamodel.action.ActionServiceSystemTest:.....
com.android.messaging.datamodel.action.ActionServiceTest:..
com.android.messaging.datamodel.action.ActionTest:.....
com.android.messaging.datamodel.action.GetOrCreateConversationActionTest:.
com.android.messaging.datamodel.action.ReadWriteDraftMessageActionTest:......
com.android.messaging.datamodel.data.ConversationMessageDataTest:...
com.android.messaging.datamodel.data.ConversationParticipantsDataTest:.
com.android.messaging.datamodel.media.ImageRequestTest:..
com.android.messaging.datamodel.media.MediaResourceManagerTest:.....
com.android.messaging.ui.CustomHeaderViewPagerTest:.
com.android.messaging.ui.MultiAttachmentLayoutTest:...
com.android.messaging.ui.attachmentchooser.AttachmentChooserFragmentTest:.
com.android.messaging.ui.contact.ContactListItemViewTest:....
com.android.messaging.ui.contact.ContactPickerFragmentTest:......
com.android.messaging.ui.conversation.ComposeMessageViewTest:..
com.android.messaging.ui.conversation.ConversationActivityUiStateTest:....
com.android.messaging.ui.conversation.ConversationFragmentTest:..
com.android.messaging.ui.conversation.ConversationInputManagerTest:.....
com.android.messaging.ui.conversation.ConversationMessageViewTest:...
com.android.messaging.ui.conversationlist.ConversationListFragmentTest:...
com.android.messaging.ui.conversationlist.ConversationListItemViewTest:....
com.android.messaging.ui.mediapicker.AudioRecordViewTest:.
com.android.messaging.ui.mediapicker.CameraManagerTest:......
com.android.messaging.ui.mediapicker.GalleryGridItemViewTest:.....
com.android.messaging.ui.mediapicker.MediaPickerTest:..
com.android.messaging.util.BugleGservicesTest:.
com.android.messaging.util.YouTubeUtilTest:.
Test results for InstrumentationTestRunner=.........................................
.........................................
...............................
Time: 9.903

OK (113 tests)

Change-Id: If8fd8036791027739eb9bbb1d3849a46211a5137
2020-07-09 18:37:41 -07:00
Taesu Lee
f2d9199bfb Fix NoSuchMethodError for getTypeInfo()
Load an icon image for audio files from app resources instead because
ContentResolver#getTypeInfo() is for API level >= 29.
And it includes size-fit ic_photo_library_light images also.

Bug: 159987488
Test: Manual

Change-Id: Ie8f766f148a30e105e598e4b7e6b1b22bccda6ae
Signed-off-by: Taesu Lee <taesu82.lee@samsung.com>
2020-06-29 15:51:07 +09:00
Taesu Lee
392850a825 Remove advanced category if no preference
Test: In debug mode, turn off all the configs for advanced category

Signed-off-by: Taesu Lee <taesu82.lee@samsung.com>
Change-Id: I52ea0905b9d4f03a57b4849e5b575bc5e508dd2d
2020-06-26 19:25:05 +09:00
Treehugger Robot
be4c269813 Merge "Fix SecurityException at getActiveSubscriptionInfoList() on N and O" 2020-06-22 16:38:07 +00:00
Taesu Lee
615ebb9dd6 Fix SecurityException at getActiveSubscriptionInfoList() on N and O
Creating ConnectivityUtil instances after checking the minimum set of
permissions since SubscriptionManager#getActiveSubscriptionInfoList()
requires READ_PHONE_STATE and users can revoke the permission.
On P and beyond, the subscription list will be filtered instead when no
permission.

Bug: 159421050
Test: Manual

Signed-off-by: Taesu Lee <taesu82.lee@samsung.com>
Change-Id: Iafc3c57060e1893a91e629b1b3e3ba9ad78967cb
2020-06-22 19:15:39 +09:00
Taesu Lee
297a6f7047 Fix app initialization issue if no permissions
Call onRequiredPermissionsAcquired() before calling redirect() so that
BugleApplication initialization can be done completed always even
PermissionCheckActivity#onResume() case.

Test: Manual

Signed-off-by: Taesu Lee <taesu82.lee@samsung.com>
Change-Id: I01bb681442e0b391238bc162ce139ff40d947eaf
2020-06-22 19:14:52 +09:00
Raman Tenneti
7f4bb54ece AOSP/Messaging - Changed midSdkVersion to 14 and reverted to using Telephony.Carriers.CONTENT_URI instead of Telephony.Carriers.SIM_APN_URI.
Fixes error: "NoSuchFieldError exception: Telephony.Carriers.SIM_APN_URI requires API level 29"

Bug: 159055957

Test: manual - Tested the messaging UI. Without this change the app is crashing when we click on it.

$ make -j 40

Change-Id: Ic34ccac673531a61386c1eaa3bbfff950d19517b
2020-06-19 21:58:29 +00:00
Treehugger Robot
d626bcaf0c Merge "Fix handling format based on API level accordingly." 2020-06-19 16:55:25 +00:00
Taesu Lee
0c7ab8c20a Remove only one Lambda Exp for JAVA 7
Remove a Lambda Exp and replace ConcurrentHashMap#computeIfAbsent() with
containsKey() and put() so that this app can be built using JAVA 7.

Test: Build

Signed-off-by: Taesu Lee <taesu82.lee@samsung.com>
Change-Id: I7ff8a3b5fc4673dfe05c5ecc9418d377f3ed4f2e
2020-06-19 19:30:58 +09:00
Taesu Lee
bd3b711aca Fix handling format based on API level accordingly.
Use SmsMessage#createFromPdu(pdu, format) at least on M and replace
SmsMessage#FORMAT_3GPP2 with "3gpp2".
 - SmsMessage#createFromPdu(pdu, format) is added in API level 23.
 - SmsMessage#FORMAT_3GPP2 is added in API level 28.

Test: Manual

Signed-off-by: Taesu Lee <taesu82.lee@samsung.com>
Change-Id: Icab2c6c3c86ee8b6597881bfac6066fed60db4d2
2020-06-19 18:34:20 +09:00
Taesu Lee
dcfe928ff3 Fix creating ConnectivityUtil to work on any platform
After this CL, ConnectivityUtil for default subId is used again on pre
N because TelephonyManager has createForSubscriptionId() for a specific
subId from N.
Nevertheless, listen() uses the default subId on PhoneStateListener
instead of the subId on the manager still even N. On O and beyond,
ConnectivityUtil works correctly on multi-sim devices.

Revert "Fix missing computeIfAbsent() method in L_MR1 and M"

This reverts commit f0ccb76d8d.

Reason for revert: Manage ConnectivityUtil instances for subIds at least
                   on N instead.

Test: Manual

Signed-off-by: Taesu Lee <taesu82.lee@samsung.com>
Change-Id: I2f08928a6798a2ce275c5c75569ad379999d274c
2020-06-18 19:24:27 +09:00
Treehugger Robot
db1ebc265c Merge "Fix missing computeIfAbsent() method in L_MR1 and M" 2020-06-17 16:15:32 +00:00
Taesu Lee
f0ccb76d8d Fix missing computeIfAbsent() method in L_MR1 and M
Replace ConcurrentHashMap#computeIfAbsent() with containsKey() and put()
since computeIfAbsent() is added in API level 24.

Bug: 158846265
Test: Build

Signed-off-by: Taesu Lee <taesu82.lee@samsung.com>
Change-Id: I3c43f0d7b1f289f0442c9359de4f099217244387
2020-06-17 19:03:26 +09:00
Taesu Lee
c9e85fd21a Remove unnecessary methods from MmsUtils
Same methods in PhoneUtils are used everywhere instead.

Test: Build

Signed-off-by: Taesu Lee <taesu82.lee@samsung.com>
Change-Id: Ia17c1f17511c53a9235af462fa0809146726e89f
2020-06-16 11:00:42 +09:00
Taesu Lee
8b347325fa Allow call to phone numbers or voice mail numbers only
It allows to call to well-formatted phone numbers or carrier specific
phone numbers starting with star sign such as *20 so that user can make
a call directly in a conversation for voice mail SMSs.

Revert "Check whether dialable only"

This reverts commit dbc43316cf.

Reason for revert: a call icon is disappeared for well-formatted phone
                   number with parentheses, dash and etc.

Test: Check the call icon in conversations for phone numbers and voice
      mail numbers.

Signed-off-by: Taesu Lee <taesu82.lee@samsung.com>
Change-Id: I1b279f8a5372b00a5a0c572f9969731f1e633389
2020-06-11 18:56:04 +09:00
Taesu Lee
f3ea99181b Check CONFIG_SEND_MULTIPART_SMS_AS_SEPARATE_MESSAGES always
Check CONFIG_SEND_MULTIPART_SMS_AS_SEPARATE_MESSAGES directly for each
sending messages always so that the correct config can be used for each
SIM cards in multi-sim devices.

Test: Manual

Signed-off-by: Taesu Lee <taesu82.lee@samsung.com>
Change-Id: Iff80d093f43014ff2fe97caf6929aefe43911192
2020-06-08 16:12:02 +09:00
Taesu Lee
845aa217fc Fix ConcurrentModificationException
ConcurrentModificationException could be happened during iterating if
parts are added newly.

Test: Select several images on Gallery app and attach them to a message
via Sharing

Signed-off-by: Taesu Lee <taesu82.lee@samsung.com>
Change-Id: Idb96239ef2c05a08fc0727797b97739aa89f12a4
2020-06-05 14:46:51 +09:00
Taesu Lee
fcf6699742 Parse recipients from RESPOND_VIA_MESSAGE correctly
UriUtil#parseRecipientsFromSmsMmsUri() will returns a comma-separated
recipients for common use so that InsertNewMessageAction#createMessage()
can create or get a conversation correctly for RESPOND_VIA_MESSAGE.
In addition, mms/mmsto schemes are added. And it includes small cleanup
intent-filters for LaunchConversationActivity.

Test: adb shell am startservice
-a android.intent.action.RESPOND_VIA_MESSAGE -d "sms:12345678,87654321"
-e android.intent.extra.TEXT "Text"

Change-Id: I291dc765a46846982d059016d44f90873c687867
Signed-off-by: Taesu Lee <taesu82.lee@samsung.com>
2020-05-28 16:43:29 +09:00
Treehugger Robot
ab856cb957 Merge "Disallow making a call to emergency numbers" 2020-05-25 20:52:01 +00:00
Treehugger Robot
0e0bf43d46 Merge "Auto re-sending MMS for all the transient failures" 2020-05-25 20:51:40 +00:00
Treehugger Robot
6287290cea Merge "Remove dead code" 2020-05-25 20:51:30 +00:00
Taesu Lee
ea623cfb18 Remove dead code
No need code to handle any retry case after downloading MMS.

Test: No behavior change

Signed-off-by: Taesu Lee <taesu82.lee@samsung.com>
Change-Id: I053f85e0260f7c4cd76d52114077d220ac0b25ba
2020-05-25 18:30:12 +09:00
Taesu Lee
9a0a21e836 Disallow making a call to emergency numbers
Show an error toast instead since ACTION_CALL intent cannot be used to
call emergency numbers.

Test: Make a call to an emergency number.

Signed-off-by: Taesu Lee <taesu82.lee@samsung.com>
Change-Id: Ia42c588848b643def068dec1d73e2e917a4b8214
2020-05-25 17:52:44 +09:00
Taesu Lee
dbc43316cf Check whether dialable only
It allows to call to any sender such as *20(Voice Mail Number for
Chile Claro).

Test: Manual

Signed-off-by: Taesu Lee <taesu82.lee@samsung.com>
Change-Id: Ifca83c5f05018de627fa38318fd4b6db20370910
2020-05-25 15:22:26 +09:00
Taesu Lee
6bef426148 Auto re-sending MMS for all the transient failures
All the transient failures should be treated as same even reserved
values for future purposes.
(OMA-MMS-ENC-V1_2, 7.2.37. X-Mms-Response-Status field)

Test: Manual

Signed-off-by: Taesu Lee <taesu82.lee@samsung.com>
Change-Id: Ia2739baebbf156b6fadee0fee71956b044c14234
2020-05-25 14:05:31 +09:00
Raman Tenneti
eb1e0417eb Revert "Messaging: Add "Mark as read" quick action for message notifications"
This reverts commit f19e916a0d.

Reason for revert: Reverting per Taesu Lee's comments, because it doesn't work and has issues.

Change-Id: I778362b628f4c3ae076dd943e77dee415984fba0
2020-05-20 19:47:44 +00:00
Treehugger Robot
3de360b933 Merge "Revert "Messaging: Show quick reply choices only on wearable devices"" 2020-05-20 18:57:44 +00:00
Raman Tenneti
3a9f54cee8 Revert "Messaging: Show quick reply choices only on wearable devices"
This reverts commit dffc4fa578.

Reason for revert: Reverting per Taesu Lee's comments - https://android-review.googlesource.com/c/platform/packages/apps/Messaging/+/1259839

@Raman,
This new feature still doesn't work properly.
As we know Luca has been submitted CL:1271087 and CL:1271088 to fix it. But it still has issues.

Change-Id: I2e8eb1fce302b12f3f30b8163da7e749c08733d9
2020-05-19 22:17:39 +00:00
Taesu Lee
0ff700cea4 Rescheduling pending messages after outside window failure
No more rescheduling for pending messages after DownloadMmsAction is
failed caused by outside window. Any pending download messages will be
remained as the DOWNLOADING state without actual downloading operations
and sending a DEFERRED M-NotifyResp.ind even.
It will reschedule pending messages whenever sending or downloading is
failed including outside window failure case. And it also removes dup
scheduling and fix some typo.

Test: Manual

Change-Id: Ie37088347c69f25d838875830fc65ce7727fefe6
Signed-off-by: Taesu Lee <taesu82.lee@samsung.com>
2020-05-18 13:16:50 +09:00
Taesu Lee
9635b646d8 Fix NPE on MultiConversationNotificationState
Use the most recent notification's state to print out log because
mContent is null in case of a notification for multiple messages in at
least 2 different conversations.
And no need sanitizePII() since this log is only for VERBOSE already.

Test: 1) adb shell setprop log.tag.MessagingAppNotif VERBOSE
      2) Receive SMS from different senders

Signed-off-by: Taesu Lee <taesu82.lee@samsung.com>
Change-Id: Ie300620f0014577ca65b9a7e3a4c397a39717992
2020-05-08 19:01:59 +09:00
Taesu Lee
95ceb12cdb Hide APN prefs if platform APIs are used
The APN prefs is available if legacy APIs are used with local APN db
only.

Test: Manual

Change-Id: I5883dcb2c406acc601787edd02e0d3272732e6d7
Signed-off-by: Taesu Lee <taesu82.lee@samsung.com>
2020-05-04 19:30:12 +09:00
Taesu Lee
116073d016 Use ic_add_white for consistency instead
Test: Check "New APN" icon in ApnSettingsActivity.

Change-Id: I0fc29384e0714a780842652178e3e88ff311456a
Signed-off-by: Taesu Lee <taesu82.lee@samsung.com>
2020-05-04 18:48:30 +09:00
Taesu Lee
14853cb490 Fix to show APN prefs correctly
Test: Settings -> Advanced -> Access Point Names

Change-Id: Ia3ad443ac056a877abd6cd258c2219d8ee6ff181
Signed-off-by: Taesu Lee <taesu82.lee@samsung.com>
2020-05-04 18:48:30 +09:00
Taesu Lee
1a0f1591de Fix NPE
Check whether SMS delivery report preference is available first because
it could be removed if carriers don't support it.

Test: Manual

Signed-off-by: Taesu Lee <taesu82.lee@samsung.com>
Change-Id: I9e0049dd61713f7a9638fb19a37aaa261f35d768
2020-04-28 17:28:42 +09:00
Taesu Lee
7ccb748e61 Handle delivered messages as completed messages
Delivered messages could be forwarded and sent time can be shown on
MessageDetailsDialog.

Test: Manual

Signed-off-by: Taesu Lee <taesu82.lee@samsung.com>
Change-Id: I6e24bdfe6a037ab588914327dbd8abf3f30512ea
2020-04-24 10:22:39 +09:00
Taesu Lee
aa23161c03 Dismiss SnackBar when detached
SnackBarManager state is not cleared when SnackBar is detached from a
window without dismiss(). After then it is remained as dismissing state
forever.

Test: 1) Long-press a conversation and click archive action.
      2) Press back key before the snackbar is dismissed.
      3) Repeat 1) and check the snackbar is shown or not.

Change-Id: Icf2cdcd30aea42685db68e5ac36436a34c9c94ae
Signed-off-by: Taesu Lee <taesu82.lee@samsung.com>
2020-04-01 09:58:13 +09:00
Treehugger Robot
2af5b4b045 Merge "Fix assert fail during onSaveInstanceState()" 2020-03-31 19:02:43 +00:00
Taesu Lee
b41ce08cab Fix assert fail during onSaveInstanceState()
Selected attachment from GalleryGridView will be destroyed when same
attachment is already existed in DraftMessageData. It will make assert
fail during onSaveInstanceState() because mDestroyed in MessagePartData
is true already.
It destroys existing attachment and replaces with new attachment instead
so that selected attachments could be maintained correctly.

Test: 1) Select one image in GalleryMediaChooser.
      2) Reopen the chooser and long-press same image again to enter to
      the multi-selection mode.
      3) Long-press the attachment on draft message to open
      AttachmentChooser.
      4) Check Assert fail.

Change-Id: I029d778779260d0097ce30bf5338fceba05e1f77
Signed-off-by: Taesu Lee <taesu82.lee@samsung.com>
2020-03-31 18:34:54 +09:00
Han Wang
dffc4fa578 Messaging: Show quick reply choices only on wearable devices
Change-Id: I4b81643c051a9b1377f2046c1aa0515c590736fc
2020-03-28 14:39:04 +01:00
Paul Keith
f19e916a0d Messaging: Add "Mark as read" quick action for message notifications
Signed-off-by: Luca Stefani <luca.stefani.ge1@gmail.com>
Change-Id: I7194dca022e5062926fa35709de282721ca64320
2020-03-16 15:14:40 +01:00