b/15721931
This follows an example pattern from GoogleHttpClient.
It tries to get the SSLCertificateSocketFactory from
GmsCore using reflection. If that fails, (because GmsCore
is not installed on the device) then it will fall back
to the platform implementation.
MailApplication sets a static object in SSLUtils that
allows it to get an externally created SSLCertifcateSocketFactory.
If this method is set, then it will use it, otherwise it
will fall back to the platform factory. This way there
is no reference to GmsCore in the AOSP email.
Change-Id: I0890fe4c3d79283fb98a4dc5a62a32efd320e52a
b/16463253
The FAB compose button overlaps the action button found in the TL footer
when network errors occur during sync. To avoid this overlap, the snackbar
is used to display these errors and they no longer appear as a TL footer.
In order to signal the sync error to AAC for display in the snackbar, the
Folder.lastSyncResult needed to be encoded in the manner that AAC reads.
This was not happening for POP/IMAP/Exchange accounts, so a large portion
of this change is encoding that value properly every place it is written.
To ensure the value is read/written properly everywhere, common methods were
introduced in UIProvider that do this work. UIProviderTest was also added
to ensure the read/write methods agree with each other.
Finally, the display of the "Load More" TL footer was updated to match the
latest spec.
Change-Id: I9d3ae1157f288f05b0fed4d1385858f6c9ebfbf9
b/17443087
When we migrate exchange accounts, we copy mailboxes over to the
new account (in order to preserve sync frequency and window).
The problem with this is, you may have many accounts/mailboxes.
After starting the app, it may take quite a long time before all
mailboxes are synced. If the user visits some mailbox near the
bottom, they'll see a misleading "folder is empty" view.
Now, when migrating, we'll set the uisyncstatus to INITIAL_SYNC_NEEDED.
Here I needed to add INITAL_SYNC_NEEDED to the list of states
that EmailConversationCursor will consider incompletely loaded.
Change-Id: Idef13adf9d691c03665830a2f926b1806d7591da
There is still work to be done here:
* The debug setting is not persisted in Exchange, so if
the exchange service is killed, when it restarts the logging
will not be active.
* Nothing in Exchange actually does any additional logging
if this logging is turned on.
Change-Id: Ic578e6956f70dd47fba9b2895385312f71c47abf
The only way that the ServiceConnection was not being freed is if
there was an Exception (other than RemoteException) being thrown
out of mTask.run(). Now the call to unbindService() is called
in a finally() block surrounding that block of code.
Change-Id: I597412233381894be76d3c8bdf99fc7d96794dc2
Add version support
Change deleteAccountPIMData to deleteExternalAccountPIMData.
Data kept inside the EmailProvider can be deleted from within
the Email app. Only external data (e.g. contacts and calendar)
need to be deleted by the service which has protocol specific
knowlege.
Change-Id: I875d3051d0cfdbaf52775ec20eb114a345894a93
We want a separate class for communicating HostAuth objects
to and from IEmailService. The issue is that the HostAuth object
was being used for both to and from the database, and to and from
IEmailService. This is dangerous because The Email app may change
out of band with the Exchange app, and may need to change the
format of HostAuth. This bit us before when adding OAuth.
Now communication to IEmailService is done using HostAuthCompat.
Change-Id: I2fb8c2bd8158f58a7bb9bc3dc83a7936948c718c
b/9566150
- Install PublicPreferenceActivity
- Create AccountServerSettingsActivity to contain all the crazy
logic we don't want in AccountSettings
- Add restoreAccountWithAddress to Account
- Refactor almost everything out of AccountSettings
- Tidy the QuickResponse fragment
- Majorly refactor the AccountSettingsFragment to decouple it from
the activity, and make it save settings immediately instead of
when pausing
- Move login warning dialog to AccountSettingsFragment
- Tweak HeadlessAccountSettingsLoader
Change-Id: Ie69181d968b9c3e5940cfef9690b1f5c70e21aa8
This enables the client of the provider to suppress the email combined
account. Later, the UI can enable a combined account that spans all of
the account types
Change-Id: I77e201f751019240af2274a1f74e2124b9889aab
b/14998528
These are particularly important since they are stored in JSON form within the
Account Manager, so maintaining backward compatibility when future changes are
introduced is crucial.
Change-Id: I51333a364726a4c7e2fe88ee888e8c4cc11d962f
Fix re-displaying the dialog on orientation change b/5622284
Add host/port when available b/4988512
Disambiguate intent between AOSP and EmailGoogle
Change-Id: Ideeda20dfd9bd0070998ccf42d8042765866ca0e
This doesn't need to be part of the service because the
implementation doesn't need to be different between any
of the different protocols.
Change-Id: Ifddf16dd3ccaf397029f08f6d4283d9a5630f717
b/14596165. When setting the package of the service intent,
query the app that implements the Email content authority since
that is the same app that should handle the intent.
Change-Id: I29a34a056516edda78acb83b9c89547ca0dc5ca1
Add support for abbreviated dates with no timestamp (eg, "2009-01-02") to
parseEmailDateTimeToMillis.
Bug:14496986
Change-Id: Ifc77cb75fd9e23536b48c8f6ecefc0e2e8f1cc2c
Detect fully qualified and abbreviated date/time stamps in parseDateTime.
Previously parsed fully qualified forms like 20090211T180303Z; now also
parses 20090211.
Bug:14279251
Change-Id: I9a99ae16a5c1fe87b977fbebdba307baa653d539