248 Commits

Author SHA1 Message Date
Moxie Marlinspike
2e31cfed11 Basic support for composing emoji 2013-06-27 20:57:27 -07:00
Moxie Marlinspike
288b416988 Fix NPEs 2013-06-25 13:20:29 -07:00
Moxie Marlinspike
e00914c977 Fix QR Code Regression. 2013-06-25 10:48:18 -07:00
Moxie Marlinspike
aa25f94291 Enhanced import/export support.
1) Allow imports from the stock SMS database at any time.

2) Provide plaintext export support, in a format compatible with
   the "SMS Backup And Restore" app.

3) Fix the DB weirdness on encrypted restore that previously
   required killing the app.
2013-06-24 21:02:30 -07:00
Moxie Marlinspike
903ab92f5f Basic navigation drawer support. 2013-06-22 21:44:12 -07:00
Moxie Marlinspike
5263ac1f1a Theme Support
1) Broke out the UI elements of the major Activites into stylable
   attributes.

2) Created a 'light' and 'dark' theme for the newly stylable attrs.

3) Touched up some of the UI spacing.

4) Implemented dynamic theme switching support.
2013-06-21 12:14:40 -07:00
Moxie Marlinspike
2928abc98f Catch attempts to dial on devices with no dialer. 2013-06-18 16:43:41 -07:00
Moxie Marlinspike
8524cc5598 Resolved a few MMS issues.
1) Fixed the "Unsupported Encoding!" problem.

2) Workaround for the Sprint issue, where the MMSC is adding a single
   extra byte to the end of each encrypted message.

3) Fixed the "large blob of base64 text" on encrypted MMS problem.
2013-06-15 09:06:15 -07:00
Moxie Marlinspike
d2a78ea84c Fix for contrived NPE on invalid recipient during conversation compose. 2013-06-01 12:42:45 -07:00
Moxie Marlinspike
ad1d927437 Fix for NPE when group selection fragment is no longer attached to activity. 2013-05-30 20:35:56 -07:00
Moxie Marlinspike
0534f9d95a Fix for NPE on null FROM in MMS header. 2013-05-30 20:29:13 -07:00
Moxie Marlinspike
dda5bc8838 Add a 'mark as read' button to expanded notifications. 2013-05-30 12:39:56 -07:00
Moxie Marlinspike
8c1ca6c9e0 Clean up identity key view activity 2013-05-23 18:54:16 -07:00
Moxie Marlinspike
95eb62190a Remove checkboxes from the multi-select UI 2013-05-23 18:37:04 -07:00
Moxie Marlinspike
3743c57edd Clean up list of identity keys. 2013-05-23 17:47:42 -07:00
Moxie Marlinspike
5e2b31af60 Add appropriate text for manual case when identity is trusted. 2013-05-23 17:17:28 -07:00
Moxie Marlinspike
24fc93e9ae Switch to a more heavily TOFU model for identity keys.
1) There is no longer a concept of "verified" or "unverified."
   Only "what we saw last time" and "different from last time."

2) Let's eliminate "verify session," since we're all about
   identity keys now.

3) Mark manually processed key exchanges as processed.
2013-05-23 16:36:24 -07:00
Moxie Marlinspike
e080449383 Fix for NPE on import 2013-05-21 13:25:44 -07:00
Moxie Marlinspike
a0a6c3f211 Handle failed bitmap decoding 2013-05-21 10:32:48 -07:00
Moxie Marlinspike
3df67a1643 Properly return unknown recipient from SMS db on empty. 2013-05-21 10:23:27 -07:00
Moxie Marlinspike
b99cca8bfa Fix for NPE on failed icon click. 2013-05-17 12:53:16 -07:00
Moxie Marlinspike
c86e414c5f Include (somehow missed) support for send/receive encrypted MMS. 2013-05-16 13:48:44 -07:00
Moxie Marlinspike
e5f634ba45 Fix for NPE 2013-05-16 13:18:06 -07:00
Moxie Marlinspike
be34f30719 Lower maximum size of cursor window on DB upgrade.
On some systems, the DB upgrade was failing because there were
too many rows for the cursor window.  This moves some looping
operations into single update statements by using the substr()
command, and chunks the rest using a series of LIMITs.
2013-05-16 13:16:42 -07:00
Moxie Marlinspike
ad6760b62c Correctly handle deferred processing of key exchange message when locked. 2013-05-15 14:09:13 -07:00
Moxie Marlinspike
3d49e90779 Add Virgin Mobile US to ApnDefaults. 2013-05-10 09:57:09 -07:00
Moxie Marlinspike
ef554ed265 Remove leaky logging. 2013-05-10 09:01:33 -07:00
Moxie Marlinspike
5c8fa148ca Limit UniversalTransport to SMS for now. 2013-05-07 18:25:36 -07:00
Moxie Marlinspike
5d910a2997 Store last seen application version number at install time. 2013-05-07 16:31:11 -07:00
Moxie Marlinspike
e07c1a8e92 Handle failed MMS connectivity state appropriately. 2013-05-07 15:09:24 -07:00
Moxie Marlinspike
43214a854c Fix for IllegalArgumentException with null URL host. 2013-05-06 19:45:05 -07:00
Moxie Marlinspike
ff41c6763d Fix for detached illegalstateexception 2013-05-06 19:33:31 -07:00
Moxie Marlinspike
6fedc6b737 Fix for double-click NPE? 2013-05-06 19:27:09 -07:00
Moxie Marlinspike
7090ca4a42 Don't remote-encrypt key exchange messages 2013-05-06 19:09:36 -07:00
Moxie Marlinspike
81107a98eb Send m-notifyresp-ind after retrieving MMS 2013-05-06 19:09:06 -07:00
Moxie Marlinspike
a057b628eb Added Rogers APN defaults 2013-05-06 14:18:34 -07:00
Moxie Marlinspike
01658cc454 Fix for notification preference regression 2013-05-06 14:07:28 -07:00
Moxie Marlinspike
1aa84b145f Add 'mark all as read' option 2013-05-06 13:59:40 -07:00
Moxie Marlinspike
b1b9846971 merge liliakai-settings 2013-05-06 12:48:16 -07:00
Moxie Marlinspike
c35aa09806 Filter MMS weirdness 2013-05-06 12:33:42 -07:00
Moxie Marlinspike
50fae64330 Replace LinkedHashMap with a SoftReference LRUCache. Add Slide cache. 2013-05-06 12:22:03 -07:00
Moxie Marlinspike
a362c8755a Don't check for auto-initiation on group threads. 2013-05-06 08:40:56 -07:00
Moxie Marlinspike
0b172cebce Use DB sending type rather than in-memory hashtable. 2013-05-06 08:40:56 -07:00
Moxie Marlinspike
79c554fcc7 Fixed group in-thread notifications 2013-05-06 08:40:56 -07:00
Moxie Marlinspike
723fb4ffdd MMS and Group Messaging Improvements
1) Display the individual sender name in a group conversation.

2) Add an "address" column to MmsDatabase and keep FROM there.

3) Remove all blocking operations from MmsDatabase.Reader path.

4) Strip SMIL and other undisplayable parts from part count.

5) Fix places where messages weren't being correctly decrypted.
2013-05-06 08:40:55 -07:00
Moxie Marlinspike
2305a648fb Minor refactoring 2013-05-06 08:40:55 -07:00
Moxie Marlinspike
e80882b83b Locally encrypted messages no longer show as ciphertext notifications. 2013-05-06 08:40:55 -07:00
Moxie Marlinspike
7c47ea5cec Make MMS more asynchronous and consistent with new SMS types.
1) We now delay MMS notifications until a payload is received,
   or there's an error downloading the payload.  This makes
   group messages more consistent.

2) All "text" parts of an MMS are combined into a second text
   record, which is stored in the MMS row directly rather than
   as a distinct part.  This allows for immediate text loading,
   which means there's no chance a ConversationItem will resize.

   To do this, we need to include MMS in the big DB migration
   that's already staged for this application update.  It's also
   an "application-level" migration, because we need the MasterSecret
   to do it.

3) On conversation display, all image-based parts now have their
   thumbnails loaded asynchronously.  This allows for smooth-scrolling.
   The thumbnails are also scaled more accurately.
2013-05-06 08:40:55 -07:00
Moxie Marlinspike
dd0aecc811 First cut at group messaging refactor. 2013-05-06 08:40:55 -07:00
Moxie Marlinspike
83e260436b Major storage layer refactoring to set the stage for clean GCM.
1) We now try to hand out cursors at a minimum.  There has always been
   a fairly clean insertion layer that handles encrypting message bodies,
   but the process of decrypting message bodies has always been less than
   ideal.  Here we introduce a "Reader" interface that will decrypt message
   bodies when appropriate and return objects that encapsulate record state.

   No more MessageDisplayHelper.  The MmsSmsDatabase interface is also more
   sane.

2) We finally rid ourselves of the technical debt associated with TextSecure's
   initial usage of the default SMS DB.  In that world, we weren't able to use
   anything other than the default "Inbox, Outbox, Sent" types to describe a
   message, and had to overload the message content itself with a set of
   local "prefixes" to describe what it was (encrypted, asymetric encrypted,
   remote encrypted, a key exchange, procssed key exchange), and so on.

   This includes a major schema update that transforms the "type" field into
   a bitmask that describes everything that used to be encoded in a prefix,
   and prefixes have been completely eliminated from the system.

   No more Prefix.java

3) Refactoring of the MultipartMessageHandler code.  It's less of a mess, and
   hopefully more clear as to what's going on.

The next step is to remove what we can from SmsTransportDetails and genericize
that interface for a GCM equivalent.
2013-05-06 08:40:55 -07:00
Moxie Marlinspike
303d1acd45 Initial client support for GCM message send/receive 2013-05-06 08:40:55 -07:00
Moxie Marlinspike
2f39283da3 Initial GCM registration 2013-05-06 08:40:55 -07:00
Moxie Marlinspike
f2475491fe Fix for NPE on null encrypted MMS messages. 2013-04-23 14:49:32 -07:00
Lilia Markham
815613cfaa Reorganize settings menu
Mostly xml work, with one small hack to fix the sub menu themes, found
here: http://code.google.com/p/android/issues/detail?id=4611#c35
2013-04-08 20:16:12 -07:00
Lilia Markham
e3c5e837e1 Remove sign key exchange preference
Yet another setting that most users will never touch. Workaround for
those who would is to use a different identity key per device.

Let this be a sacrifice to the android settings design pattern gods.
2013-03-27 20:57:28 -07:00
Lilia Markham
40eca5e0f6 Remove whitespace tag preference
The vast majority of users will never uncheck this option. Those who
would can send an unencrypted untagged message through the system sms
app. It would then be stored locally in the clear, but it was already
transmitted in the clear and likely stored on the recipient's side in
the clear, so the security gains of locally encrypting are low, and
again, this seems an extremely rare edge case.

By android design pattern specs for the settings menu, we should kill
this preference.
2013-03-27 20:54:42 -07:00
Moxie Marlinspike
fcea8ebc3f Added Telenor Norway to APN Defaults 2013-03-17 11:38:44 -07:00
cavanm
8e2288205c Use APN defaults when no other APN information is available.
Provides an in-app source for APN info for use in the case that the
device store is unavailable and the user hasn't provided local
connection parameters.

Only covers T-Moble USA, AT&T, and Verizon right now. Only T-Mobile is
tested. Other carriers can be added and tested on an ongoing basis.
2013-03-17 11:31:17 -07:00
Moxie Marlinspike
fb21c09dbe Catch NPE thrown by APN provider. 2013-03-17 11:19:36 -07:00
Moxie Marlinspike
5df88cc0a7 Scrub recipients for MMS messages so they'll be valid PLMN. 2013-03-14 15:59:28 -07:00
Moxie Marlinspike
ecaaff50da Switch UA to Android default and added x-wap-profile header 2013-03-14 08:44:42 -07:00
Moxie Marlinspike
cdd6d59e6e Remove send button smart enable/disabled.
Temporarily remove this functionality, since it doesn't account for
attachments yet.
2013-03-13 17:45:32 -07:00
Jake McGinty
674cd68ebd Modern-style Android chat icons (incl. secure icon)
Make the send-button appearance more similar to the default Android
messenger application
2013-03-10 16:05:35 -07:00
Moxie Marlinspike
b05c840616 Fix for MMS send bug with an APN proxy. 2013-03-10 15:47:13 -07:00
Moxie Marlinspike
58961fe0a8 Minor spelling correction. 2013-03-10 14:50:55 -07:00
Moxie Marlinspike
bb3777aa68 Fix for viewing group recipients without contact information. 2013-03-07 17:47:57 -08:00
Moxie Marlinspike
07c59d969a Prompt user for APN details when missing.
If TextSecure is running on a device without APN details, we prompt
the user to manually specify them when the user goes to send an MMS
message.
2013-03-04 17:43:04 -08:00
Moxie Marlinspike
01fdb1115d We don't support unknown content lengths yet. 2013-03-03 18:50:13 -08:00
Moxie Marlinspike
2e55e9cdca Guard NPE 2013-03-03 18:49:55 -08:00
Moxie Marlinspike
6230abb524 Add synchronized access to cache 2013-03-03 18:49:39 -08:00
Moxie Marlinspike
ef6a5c69af Tweak MMS retrieval and submission.
1) Only attempt direct connect outside of MMS radio mode on CDMA.

2) Don't switch back to normal radio state if pending messages remain.
2013-03-03 18:44:58 -08:00
Moxie Marlinspike
48576dbb58 Catch mysterious SMS too large exception. 2013-02-26 22:57:09 -08:00
Moxie Marlinspike
5ca7b1080c Fix for concurrentmodificationexception on race condition. 2013-02-26 22:56:48 -08:00
Moxie Marlinspike
eb9b2ef318 Fix for NPE on null mms bytes. 2013-02-26 22:56:15 -08:00
Moxie Marlinspike
6bd0f35787 Sometimes querying the APN DB throws this exception as well. 2013-02-26 22:55:23 -08:00
Moxie Marlinspike
2397176d9e Search support in ConversationList for <3.0 devices.
Switch to the newly-introduced ActionBarSherlock SearchView.
2013-02-24 19:37:37 -08:00
Moxie Marlinspike
34822557a6 Catch exception triggered by bug in telephony provider during import. 2013-02-24 11:59:43 -08:00
Moxie Marlinspike
bac6b78b11 Clear passphrase field on invalid entry. 2013-02-21 14:47:18 -08:00
Moxie Marlinspike
5bf5b404a1 Fix for notification NPE on unknown sender. 2013-02-20 20:44:38 -08:00
Moxie Marlinspike
f73adfc8f5 Change MMS network request pattern.
Currently we're flipping the radio in "MMS" mode, and connecting through
any proxies specified in the APN.  This always work, or at least doesn't
seem to work on Sprint, since the configured mms proxy rejects proxy
requests.

Instead we try the following in this order:

1) Connect over normal data connection directly to MMSC.
2) Connect over MMS radio connection to MMSC.
3) Connect over MMS radio connection with any configured proxy to MMSC.

Hopefully this doesn't fuck up shit on other unknown networks.
2013-02-20 18:10:33 -08:00
Moxie Marlinspike
df05508a6f Switch to AndroidHttpClient and explicit targeting. 2013-02-20 10:25:53 -08:00
Moxie Marlinspike
1ff4fd842c Pass on incoming messages until DB is imported. 2013-02-17 15:09:01 -08:00
Moxie Marlinspike
5eb04328d3 Improve passphrase and onboarding UI. Abstract out routing.
1) Update the create, prompt, and change passphrase activities.
   They are no longer dialog themed, and should look a little
   less ugly.

2) Update the import DB activity to be less ugly and more robust.

3) Abstract all of the state handling stuff out of
   ConversationListActivity.  This is now handled by RoutingActivity,
   which all launch intents move through.
2013-02-17 15:09:01 -08:00
Moxie Marlinspike
0a7181670c Radio updates happen frequently on some phones, switch to dynamic. 2013-02-14 20:42:29 -08:00
Moxie Marlinspike
d0d85ea52c Fix for duplicate message bug. 2013-02-14 19:15:40 -08:00
Moxie Marlinspike
c2dcf7ae74 Refactor MasterSecret initialization, access, and timeout paths.
1) Consolidate all of the KeyCachingService interaction into a single
   mixin. Activities extend delegates which call through to the mixin.

2) Switch Activity increment/decrement triggers from onStop to onPause
   in order to account for some screen locks that don't stop activities.
2013-02-10 17:30:51 -08:00
Moxie Marlinspike
90280a62ae Poor man's styling. 2013-02-09 17:43:31 -08:00
Moxie Marlinspike
2277dbd572 Localize ok/cancel 2013-02-09 17:38:33 -08:00
Moxie Marlinspike
471ef16a5b Support for robust delivery.
1) If a message fails to be delivered, post a notification in the
   status bar if that thread is not active and visible.

2) If a message fails to be delivered because there is no service,
   keep retrying every time service becomes available again.
2013-02-09 15:17:55 -08:00
Moxie Marlinspike
71f43075a9 Distinguish unread threads with background color. 2013-02-09 10:03:38 -08:00
Moxie Marlinspike
0a8c62e0e3 Include incoming message body in notifications.
1) Refactor the master secret reset logic to properly interact with
   services.

2) Add support for "BigText" and "Inbox" style notifications.

3) Decrypt message bodies when unlocked, display 'encrypted' when
   locked.
2013-02-08 16:27:43 -08:00
Moxie Marlinspike
49ea135e37 Don't auto-set thread to read on send. 2013-02-06 16:40:09 -08:00
Moxie Marlinspike
a29120d911 Fix for IndexOutOfBoundException (race condition on Recipients resolution) 2013-02-04 22:09:17 -08:00
Moxie Marlinspike
b044a68168 Fix for mysterious 'anonymous sender' NPE. 2013-02-04 21:51:25 -08:00
Moxie Marlinspike
01a5c889b0 Export stray strings for localization. 2013-02-04 11:12:03 -08:00
Moxie Marlinspike
dcf73cd009 Fix for 'group message' regression. 2013-02-04 11:03:19 -08:00
Moxie Marlinspike
bf92de394b Add support for resuming compose drafts. 2013-02-04 00:13:07 -08:00
Moxie Marlinspike
209711ae40 Fix notification behavior.
1) Don't add a notification item to the notification bar if the thread the
   message is for is active and visible.

2) Only sound the notification ringtone at 1/4th volume if the thread the
   message is for is active and visible.

3) Auto-clear the notification in the notification bar when a thread becomes
   visible from a screen-off situation.

4) Make notification updates asynchronous.
2013-02-03 18:41:34 -08:00
Moxie Marlinspike
288e2b5572 Suppport receiving 'share' actions from other apps. 2013-02-02 20:37:40 -08:00
Moxie Marlinspike
232e7bba2d A conversation can't be trimmed to 0. 2013-01-14 12:10:57 -08:00