Added two new functions:
- UiUtilities.getView()
is a fail-fast version of findViewById(). Crashes when there's no view
- setVisibilitySafe()
same as View.setVisibility, but doesn't crash even if a view doesn't exist
Let's try to avoid the use of findViewById(), and instead use getView(), *right
after* the layout is inflated, so that we'll always fail-fast if a layout
doesn't have a required view. (Rather than getting a NPE only when the view
is really accessed, which can be in a code path which is rarely executed--e.g.
only when there's a protocol error.)
Let's only use findViewById() only when we're sure no all the variants of a
layout have the view in question and leave a comment to make it clear it's on
purpose.
(UiUtilities has been moved from com.android.email to
com.android.email.activity)
Change-Id: I36e0bab65a989f5d34cf636f13e1eaee084547af
* Add the checker fragment (instead of replacing)
* Don't refresh progress/error dialogs until onResume (a bit later)
* Don't recreate terminal error dialogs that were automatically
regenerated by the fragment manager.
Bug: 3020074
Change-Id: Ia2947965b758f6846c62ac394ce51da2432523ee
* For each of incoming, outgoing, exchange fragment, create a "settings
mode" which slightly alters the layout for use in AccountSettingsXL.
* Build a settings mode wrapper layout around the basic fragment
* Add new constructor to set "settings mode" and select layout
* Add wiring for cancel/next buttons in the fragment
* AccountSettingsXL configures each fragment in its settings mode
* Remove old actionbar "Next" options (no longer needed)
TODO: Pixel perfect adjustments, colors, fonts, etc.
Bug: 3188951
Change-Id: Iba26281b214333db301dd40d6c016b6c5a932c2d
* new checkbox in debug fragment
* saved value in prefs so it's sticky
* each Activity calls a helper to enable/disable per that flag
Change-Id: I1af1ae9f401bc746cc97da00dfb0e06407b79d46
* Separate/identical fixes for incoming, outgoing, exchange
* Unit tests
* Some protocols will fail anyway (e.g. POP3)
TODO: Some sort of warning (master only - won't backport that)
Bug: 2981433
Change-Id: I82984e5912fc7fcb88e747815d0fe33cb36605e7
* Remove AccountSetupCheckSettings and related resources
* Remove all handling of EDIT flow in setup activities
Change-Id: I7b87d87978533b52b9c974d006920749389418d8
* AccountCheckSettingsFragment now supports AutoDiscover
* Clean up callbacks for account check & autodiscover errors
* AccountSetupExchange now supports rotation
* Remove dead code in SetupData & AccountSetupBasics
TODO next CL: Remove all edit flows from setup activities
TODO next CL: Remove old CheckSettings activity
Change-Id: I3c9884856ca6e70226374fdb28400bfb3588387e
* Activities modified to use new check-settings fragment:
* AccountSetupBasics (auto-setup for imap/pop)
* AccountSetupIncoming
* AccountSetupOutgoing
Next CL: Same work for exchange, and terminate old CheckSettings activity.
Change-Id: If5c5bfe331161b2429f7d7a4bd13290932f03c47
Some of these broke in 8bcb572ccf
which changed the [Next] button to an ActionBar menu item.
However, the entirety of AccountSettingsXLTests needed to be disabled
because the PreferenceActivity is very different on phone or XL sized
devices, and the tests infrastructure will need to be refactored to deal
with that (on another day.)
Change-Id: I9adbfc9b8da6179e4c4e82d29bb872ee05619a41
* All setup activities given UI makeover:
* Remove legacy themes from manifest - exposes default holo theme
* Remove bottom row button(s)
* Replace with action bar button(s)
* No change to workflow or activity/fragment organization
Change-Id: I07ce11a0a2b4b767b5ac111d466e68400fe0f30b
* From account settings, switch to incoming/outgoing/eas fragments
* Show "Next" button in actionbar (may be dup'd in single-pane view)
* Common base class for in/out/eas fragments
* Depends on PreferenceActivity.startPreferenceFragment(), new API
* If the user clicks an account header while editing server settings,
present a dialog before discarding the changes that haven't been
checked yet.
* Confirm working (if a bit ungainly in appearance) on phone screen
Change-Id: I03591b9a8ffd11fe26fc6f58a5698740e61d0090
There are two major, interrelated parts to this CL:
1) Clean up the activities to reduce the use of Intents to pass
information between activities; instead, we use a common
SetupData structure that automatically saved/restored as necessary
during the setup flow. A fair amount of code and inconsistent
use of Bundle extras has been eliminated in the process.
* Create SetupData structure, setters/getters, and initialization
methods to simplify the preservation of state during setup flow
* Remove all state/flow extras from Intents; Intents now only
specify the Activity to be started, which should greatly simplify
the transition to Fragments.
* Remove all state/flow fields from Activities
* Modify existing setup activity unit tests and confirm tests pass
2) Create AccountManager accounts for POP/IMAP email accounts to
provide consistency in user experience. Also, internal flows are
now identical as between account types.
* Move account reconciliation from SyncManager to MailService, so
that reconciliation is consistent between email and exchange
accounts; move unit tests as appropriate
* Add a "Sync Email" setting for POP/IMAP/EAS
* Change MailService to respect the "Sync Email" setting in
Settings -> Accounts & sync
* Create PopImapSyncAdapterService to handle manual POP/IMAP sync as
requested by SyncManager; add EmailSyncAdapterService to perform
the same function for EAS
* Use new PopImapAuthenticatorService to add AccountManager accounts
for POP/IMAP accounts; setup appropriate stanzas in AndroidManifest
and add related xml files
* Update AccountSettings to use SetupData
Miscellaneous other changes:
* Only allow valid port numbers in incoming/outgoing setup
Bug: 1712475
Change-Id: Ibdac52fb2c5578b86bf3992ddb1acd10f162391a
* To avoid having to use a mock deviceId with FolderSync in validation, we now
simply use the real deviceId with the correct SyncKey ("0" for a new account,
or the actual sync key if the account already exists)
* Rework utility code that finds existing accounts
* Write unit test for findExistingAccount
Bug: 2589243
Change-Id: Ia532b2e209aec3aa01ca06617b4da78c3d986b32
- Fix misnomered fields. (e.g. static mMember -> static sMember)
- Reduce visibility. (e.g. mark as private)
- Mark final / static if possible.
Note it's on master.
There's a lot more cleanup oppotunities in the activities, but they're going
to go through a major overhaul, so I didn't bother.
Change-Id: I3fde73ba5f1f9ff675fff07c510e1e49521dde42
* Workaround for (HTC bug 2275383) & (Moto bug 2226582)
* Adds checkpoints for backing up and restoring accounts
* Uses legacy Account / prefs to back up accounts - this is because
some of this code will be reused for legacy account migration
* Unit tests of Account & LegacyConversions
* Unit tests of backup & restore
* Not done: testing of EAS/Account Manager interface (this will require
deeper dependency injection, to avoid the embedded calls to the Account
Manager and other system services.)
* Autodiscover allows complete configuration using only email address
and password
* Code handles the two standard autodiscover addresses and redirect
* Autodiscover process starts when the user chooses "Exchange" as the
account type. If the account is created via the AccountManager,
autodiscover begins upon tapping "Next" for the first time
* If autodiscover fails due to anything other than auth failure for
autodiscover-capable servers, the user is placed into the standard manual
configuration screen
Bug: 2366019
Change-Id: I936712b924833d9a133e8da04e11c3ba45d92f92
* Removed obsolete "delete after 7 days" option from pop-up prefs
* Mark deleted message sentinels as "read" so they don't contribute
to unread counts.
Bug # 2157487 and Bug # 2159278
Change-Id: Ic3cbc51d6f5ede2eb923e2d0e5c0dfee377764f5
* Add "Accept all certificates" modes to incoming/outgoing secure choices
* Change URI scheme slightly to make "trust" a flag, not part of the
protocol.
* Change Stores to know about new URI scheme
* Slightly rework Transport API to make "trust" an independent flag
* Adapt HostAuth to handle new Uri scheme
* Remove the old ambiguous "optional" code, which was allowing
some unsigned certificates, but was *also* allowing TLS to
optionally start (though not SSL, despite the UI strings.)
* Add a few unit tests to EmailContent
* Add logging and a bunch of comments to TrustManagerFactory, and a bit
of simple cleanup to make it more readable.
* Add missing conversion of SSLException->CertificateValidationException
in TLS so we get the correct certificate errors from TLS too.
* Re-enable TLS for mac.com accounts (which had a certificate problem)
Fixes bug http://b/2119755, http://b/1374780, and probably a raft of
earlier and/or external bugs about certificate problems.
Change-Id: Iaf99a8da3eaadaa4cdeec224737838b5d6813e55
* in onActivityResult, we not only need to update the Account, but also
the relevant HostAuth (both if coming from AccountSetupExchange)
Change-Id: I0657ff257fe949e46e100eb3e6cfec6162514aa9
* Remove SSL-Optional and TLS-Optional choices from UI
* Remove SSL-Optional and TLS-Optional choices from providers.xml
* Switch over most SMTP connections from 25 to 587
* Clean up the providers list which has a lot of "optional" cases
that were probably falling back to unencrypted.
Fixes bugs:
2110243 Settings UI shouldn't offer SSL/TLS (if available) options
2089070 Update list of providers
Change-Id: I57be57b349eed33a5284121d904528279a36a91c
* Check for existing accounts with matching servername + username
* Show a dialog and block account creation
* Triggers in three cases:
* After input of an auto-setup account (e.g. Gmail or AOL)
* After input of manual setup (incoming) parameters
* After changing incoming parameters of *any* existing account
* Made some notes in EmailContent regarding fields in HostAuth that we
are not actually using.
* Added HostAuth unit tests
Primarily fixes bug # 1964449
Bonus fix for bug # 1594408
Change-Id: I49310faf6654280582e0ab3d3e40f2701bfcd21d
* Numerous classes modified to deal with this change
* Fixes bugs 1993292 and 1994671
* Renamed various setter and getter methods to reflect the underlying
field names
* Renamed syncFrequency to syncInterval in Account and Mailbox
* Convenience method added to AccountSettings to save only user settings
* Calls to content.update(context, content.toContentValues()), which save
all fields, should be double-checked for correctness, making sure that
content has current data and will not conflict with other threads that
might modify that data
* Ran all unit tests to confirm proper function
NOTE: The logic to enforce single default account no longer works,
because that logic is in Account.save() and does not run via
Account.update(). I have patched out a small section of the relevant unit
test and will file a bug to come back for this fix.
What works:
* Editing existing accounts
* Create new accounts
* Checking account settings against server
What breaks (in approx order of planned fixes)
* Some details of account editing
* Viewing mailboxes & messages
* Mail sync using accounts
* Import of existing accounts
* Editing existing accounts
* Two placeholder accounts are written
What breaks (in approx order of planned fixes)
* Some details of account editing
* New account creation,
* Viewing mailboxes & messages
* Mail sync using accounts
* Import of existing accounts
errors, inconsistencies in passing Application/Activity/Context, and
some error handling cleanups. These are all changes that would have
probably been made before the original submits, but I didn't want
to fix them in the integration step.
Original author: stadler
Automated import of CL 144522