Commit Graph

2414 Commits

Author SHA1 Message Date
Marc Blank
095eee4156 Set selfAttendeeStatus and busyStatus properly on downsync/upsync
* Set selfAttendeeStatus on download from busy status
* Set busyStatus on upload from selfAttendeeStatus

Bug: 2587076

Change-Id: I34eaa0d3861bcec0cbfd51761b31965e44f5162b
2010-04-16 13:39:51 -07:00
Andrew Stadler
ce592f32f9 Merge "Remove incorrect error reporting in MessageList" into froyo 2010-04-15 15:08:12 -07:00
Andrew Stadler
54607e872d Remove incorrect error reporting in MessageList
* Previously I added a call to updateBanner() during the sequence where
    we update the mailboxlist (searching for the requested mailbox to
    display.)  This was an attempt to provide some error information
    for certain corner case security configuration problems.
* This was misfiring during legitimate connections (specifically, initial
    sync of valid EAS accounts) and causing a Connection Error message
    when none was intended.
* Rather than continue hacking, I'm simply removing the error banner
    from updateMailboxList.
* This is essentially a direct rollback of change
    c98b64c801, although I've added
    a bit more commentary than there was originally.
* The long-term solution, rather than continue band-aiding this, is to
    move most of this logic into a service independent of the UI, and
    provide more organized error reporting.

Bug: 2585159
Bug: 2599377
Change-Id: I99b7b1c8a7cfaa3fd3ff9b578d5721f05133d88a
2010-04-15 14:53:56 -07:00
Marc Blank
a97d85014f Merge "Properly decode a uid from the globalObjId in invites" into froyo 2010-04-15 13:41:04 -07:00
Marc Blank
7e30b2e22f Properly decode a uid from the globalObjId in invites
* Meeting invitations in EAS include a globalObjId.  It turns out
  that this id is EITHER the actual uid (if Exchange created it)
  or a wrapper for the actual uid (if some other client created it)
* To find out which case we're dealing with, we have to look at
  the base64 decoded string for the magic "vCal-Uid" substring
* If it's there, we pull the real uid out of the decoded string
* Otherwise, we build a hex strong from the decoded bytes
* Write unit test for this process

Bug: 2598201
Change-Id: I1cc40af6d1e45be44c19465eb8a4c31851ec8157
2010-04-15 13:12:40 -07:00
Kenny Root
c4d1395d83 Merge "Import revised translations" into froyo 2010-04-15 05:55:49 -07:00
Andrew Stadler
186aa619dc Cleanup probable causes of close cursor access
* Monkey is hitting this fairly often
* Multiple fixes that are all good
  * We were launching LoadAccountsTask twice
  * Don't use a managed cursor for the inner accounts cursor - always
      close it manually by calling changeCursor(null) and letting the
      MergeCursor handle its sub-cursors.
  * Add isCancelled() check
  * When replacing adapter, be sure to close cursor

Bug: 2524465
Change-Id: I2309e033d65430810f2856285c1fa9bf2f8fb5e3
2010-04-14 23:51:35 -07:00
Andrew Stadler
3b3b5b0f2b Run the account reconciler every time we start SyncManager
* This takes care of *some* of the race conditions where the
  account DB is blown away but the Email app is not running, so we
  don't get any notification of a change;  We have to try and
  sort this out early.
* SyncManager is started by Welcome, so this catches many cases of
  entering the email app.

Bug: 2567986
Change-Id: I76bea5b636802ba5c1677d8b1825fb3c61f7b2d9
2010-04-14 22:18:14 -07:00
Makoto Onuki
d2a0d23380 Use consistent device-id even the device is wiped.
Use hash of device id (TelephonyManager.getDeviceId()) instead of a random
value.

Bug 2596537

Change-Id: I22303f7287ee6e9edccec349d03f14adbd33f6f7
2010-04-14 21:39:18 -07:00
Kenny Root
4aff10da4a Import revised translations
Change-Id: I648e39b3c3295325bfbb967fa193187869ee562a
2010-04-14 20:33:06 -07:00
Andrew Stadler
79ef52cfb3 Improve handling of UI reset cases
* When account disappears (e.g. delete from Accounts & Sync) the Welcome
   activity should launch with FLAG_ACTIVITY_CLEAR_TOP to remove any
   stacked activities as well.
* When account disappears entering AccountSetupNames, don't fall out
   of Eas Flow Mode.
* Followup to 5e354cd1db

Bug: 2563998
Change-Id: Ifbe086e26205bb28c2514f84cb28e839888b1eb0
2010-04-14 19:16:46 -07:00
Andrew Stadler
694fe3b0c7 Merge "Safer error handling in AccountNames" into froyo 2010-04-14 17:42:55 -07:00
Andrew Stadler
fa669234be Safer error handling in AccountNames
The error handling for (mAccount == null) would crash.  Use a simpler
path here and just abandon the setup process.

The root cause of this (the account being null) is probably solved
by 3ae84b247d, but still a good idea to
clean this up.

Bug: 2558344
Change-Id: I3167234f99e9d39844f2b56a4d94f25465c7c269
2010-04-14 17:41:28 -07:00
Makoto Onuki
162b017140 Change account colors to what aren't used in Calendar.
Bug 2535090

Change-Id: I252e04afa402303d226a56f1d7852f50dc26e2ec
2010-04-14 15:18:12 -07:00
Marc Blank
d8a4e4d25d Merge "Don't allow Exchange logger to recurse on failure" into froyo 2010-04-14 14:29:21 -07:00
Andrew Stadler
5e354cd1db Exit most activities when accounts are deleted
This resolves cases like this:  You are in the inbox of an Exchange
account.  You click home, settings, accounts & sync, and you delete
the account.  Now re-enter the Email app.  You'll be left in a strangely
empty inbox, for an account that no longer exists.

* Set a flag any time the reconciler deletes an account
* Check that flag in onResume of any activity that depends on the account
    list and could be left in an "empty" state if account(s) are deleted.
* The Activities in which we check it are:
  * AccountFolderList
  * AccountSettings
  * MailboxList
  * MessageCompose
  * MessageList
  * MessageView
* Clear the flag any time we come in through Welcome, which will dispatch
    to other activities properly based on the number of accounts found.

Bug: 2563998
Change-Id: I00fc542581c2bed92d744a4c2e48a88f83737f11
2010-04-14 09:28:04 -07:00
Andrew Stadler
383b7dd29d Merge "Final cleanup for account provisioning failures" into froyo 2010-04-14 09:14:33 -07:00
Marc Blank
3fdaa32969 Only set ORIGINAL_INSTANCE_TIME in exceptions
* We were setting this for all events, but apparently CalendarProvider
  does not approve, and generates warnings
* Only set this for exceptions

Bug: 2550631
Change-Id: I8a7152eb0d4233432b1a5b5664da964d5433fbae
2010-04-14 08:41:38 -07:00
Andrew Stadler
c98b64c801 Final cleanup for account provisioning failures
* Now that we get proper callbacks on updateMailboxListCallback(),
    show the error banner if there's a problem
* Follow-on to 63186a5442

Bug: 2585159
Change-Id: I2b4f365d02b639bc3ceff9f8938333185d5ba693
2010-04-13 23:49:24 -07:00
Marc Blank
c89e1a8616 Don't allow Exchange logger to recurse on failure
Bug: 2594331
Change-Id: Ie5de4ac11259e5be30d4bf9812164823b9ca46ae
2010-04-13 20:34:13 -07:00
Marc Blank
627006a8e3 Fix issue with deleted recurrence
* It turns out that this bug is due to a bad rebase/merge for a previous CL
  in which the changed code appears in its new form AND old form
* Fixes change SHA c3aa318200 (CL 48406)
* Don't say it.

Bug: 2587775
Change-Id: I3f70a97e498db30345452b942909448049680fdf
2010-04-13 19:50:51 -07:00
Marc Blank
c07cd159d4 Merge "Try a longer timeout for initial sync" into froyo 2010-04-13 19:35:19 -07:00
Marc Blank
3093b61668 Try a longer timeout for initial sync
* We are still seeing an issue with at least one user on initial
  calendar sync.
* Increase the read timeout a great deal for initial sync, as it
  can a very long time for the server to respond

Bug: 2569162
Change-Id: I495c38dc58d9a80c5a21e40b6fc5d165d10a3c1a
2010-04-13 18:27:58 -07:00
Makoto Onuki
0f3d36010d Merge "Show device id on the exchange setting screen." into froyo 2010-04-13 17:28:02 -07:00
Makoto Onuki
12b4bc9e80 Show device id on the exchange setting screen.
I've attached a screenshot on the referenced bug.

Also fixed a bug in SyncManager.getDeviceId() where sDeviceId cache wasn't
working.

Bug 2591124

Change-Id: I4b58517c095a96d47fb57179d70091b2c7af5249
2010-04-13 17:10:26 -07:00
Marc Blank
0005eba750 Fix cancellation messages for deleted attendee
* We weren't sending a proper ics file for the deleted attendee, and
  this caused Exchange to send a message to the wrong people (the
  referenced bug)
* Split out code that adds attendees to outgoing mail
* Changed the optional last argument to createMessageForX to be a specified
  attendee, i.e. the only addressee to be used for the message

Bug: 2548465
Change-Id: I629fcfaffe621408ea460d42c9c7c283929f7e79
2010-04-13 13:37:51 -07:00
Marc Blank
63186a5442 Send callback if reloadFolderList fails w/ uninit'ed account
Bug: 2585159
Change-Id: I12d9dd84090d10675e3d403124e28dbb6bede3d8
2010-04-13 10:44:00 -07:00
Andrew Stadler
a87f8d8bbc Changes to improve security policy setup
* SecurityPolicy:  Fix bug that prevents any notifications after the
    user hits "cancel all" from the notification pane.
* AccountSecurity: If the user cancels the device admin acceptance
    activity, repost the notification.
* MesageList:  Catch security hold condition when entering a mailbox, and
    launch security setup activity.

Bug: 2585159
Change-Id: I60d5d8c693cc5f00fe98a9cc69265802f5bee813
2010-04-13 02:15:37 -07:00
Marc Blank
0cd062ebd0 Merge "Fix acknowledgment of Exchange remote wipe" into froyo 2010-04-12 17:59:40 -07:00
Marc Blank
2f194cefbb Fix acknowledgment of Exchange remote wipe
* The XML acknowledging the wipe was malformed

Bug: 2589695
Change-Id: I24428a21ce5b08f32c372dcbb50b24d6e6c42645
2010-04-12 17:48:17 -07:00
Marc Blank
de30222689 Always check serverId AND calendarId in queries
* With multiple accounts, serverId's are not guaranteed to be unique
  (indeed, they rarely are)
* There were two queries in CalendarSyncAdapter that checked only
  serverId and this has caused the referenced bug PLUS others that
  would have turned up later on
* This is a critical fix

Bug: 2589815
Change-Id: I49bc6cb5bb4708f4bf4ca60a891ff78f0b25e989
2010-04-12 16:37:50 -07:00
Marc Blank
b5253606ee Merge "Sync description with exceptions" into froyo 2010-04-12 15:53:50 -07:00
Marc Blank
1e3f86dfd4 Merge "Increase timeouts for Exchange sync; prevent early upload sync" into froyo 2010-04-12 14:42:44 -07:00
Marc Blank
e3df9f95ea Sync description with exceptions
* We weren't sending up the event description with exceptions, so
  changes to description were being lost on upload
* Move the code uploading description so that it happens with
  exceptions as well as top-level events

Bug: 2590020
Change-Id: Ifab556bed68671f3ee8cab02b657adbd8ba9c50c
2010-04-12 14:22:11 -07:00
Marc Blank
2e22263777 Increase timeouts for Exchange sync; prevent early upload sync
* It's reported that 50% of third party users have issues syncing
  Calendar in Exchange
* In testing, it was determined that the server takes > 30 seconds
  to respond to a sync request initially, which is beyond our timeout
  limit
* Also, I found that the system SyncManager was trying to trigger an
  upload sync at the same time (i.e. before the sync session was
  established with the server)
* There are four changes here:
  1) Prevent upload syncs while the sync key is null or "0" ("0"
     is the initial state)
  2) Increase timeout for connection; at worst, this will
     cause a short extra delay in syncs with a bad connection, but this
     will be unnoticable to users
  3) Increase the read timeout for initial sync to twice that of
     regular syncs (the initial sync always seems to take longer)
  3) Reduce the lookback for calendar to two weeks (from one month);
     this is a better default anyway, and it probably reduces the server
     and client load a great deal
* Empirically, this solves the bug for a known completely repeatable
  case.

Bug: 2569162
Change-Id: I36b1c3e1e0b65f50d42e05f1830fed912191651f
2010-04-12 13:59:04 -07:00
Makoto Onuki
1fe0aa19bf Merge "Set CLEAR_WHEN_TASK_RESET flag when launching Calendar" into froyo 2010-04-12 13:27:15 -07:00
Makoto Onuki
f793cd93b9 Set CLEAR_WHEN_TASK_RESET flag when launching Calendar
and Contacts, so that when you relaunch Email from Home, you always see
the Email app, not Calendar/Contacts.

Note as stated in the corresponding bug, this CL itself won't fix the issue,
because CLEAR_WHEN_TASK_RESET will be lost when Contacts/Calendar apps handle
the intent.
There's a feature request against the framework (bug 2586404) which should fix
this losing flag problem.

Bug 2584792

Change-Id: I34ac3707b99926fc07529ea2229f2a6b3c4f93e4
2010-04-12 13:09:56 -07:00
Andrew Stadler
9cc6f46b05 Merge "Try TOP even on POP servers that fail to report CAPA" into froyo 2010-04-12 11:27:25 -07:00
Andrew Stadler
645fc28301 Try TOP even on POP servers that fail to report CAPA
* Ignore the results of CAPA and always try TOP
* If TOP returns -ERR simply fall back to (bad old slow) RETR
* Unit tests for positive & failure cases

Bug: 2588432
Change-Id: Ife4b551217de1025e14efc46074f16ef4ae99c6f
2010-04-12 10:56:55 -07:00
Marc Blank
c3aa318200 Send email to organizer if attendee deletes event/exception
* There are two cases, event and exception and both are fixed in this CL

Bug: 2587775
Change-Id: Id325c4877a77074ca6edd4d7fbeb54971d4cf984
2010-04-12 10:12:46 -07:00
Marc Blank
536a36555b Merge "Always add changed exceptions to the upload list" into froyo 2010-04-12 09:57:57 -07:00
Marc Blank
c5c5bf7da7 Always add changed exceptions to the upload list
* We were adding deleted exceptions to the "deleted" list; this is bad,
  because the exception then gets deleted from the database after the
  sync.  The symptom is that the deleted exception reappears on the
  calendar.

Bug: 2587837
Change-Id: If497f82ba0b2b817d1cef6165ded23d19876528f
2010-04-11 15:33:39 -07:00
Marc Blank
3b19278a24 Only allow the account mailbox to attempt provisioning
* We were allowing all sync services to attempt provisioning, but this
  could potentially lead to a race condition in which two different
  policy keys are created on the server (this is speculative)
* Change to allow only the account mailbox to attempt provisioning
* Log policy keys when verbose exchange logging is enabled
* We'll see if this solves the referenced bug

Bug: 2569162
Change-Id: I36c60098a4866882a8f9f4c288da54ea378d9aee
2010-04-11 09:45:49 -07:00
Marc Blank
6a4eae5f41 Fix upload of multi-day all day events
* We were assuming a single day for all-day events
* Use the actual end date
* Make sure we send date/time back to server in local TZ
* Also fixes #2500863

Bug: 2578776
Change-Id: I58767a574248935b9840ce93e634a24e54abe62f
2010-04-10 18:03:39 -07:00
Andrew Stadler
80bd83fd85 Upsync appropriate organizer name/email
* We need to send name & email for Exchange 2007
* For Exchange 2003, only name & email if the event is new

Bug: 2586661
Change-Id: Ia35c2c7a645a3d20b7031e9a43b8b5044a40f005
2010-04-10 17:35:34 -07:00
Andrew Stadler
06699c0d91 Send meeting status with all upsynced changes
* Meeting status differentiates between appointments and meetings,
  which is important in Outlook and OWA
* Fix older, completely incorrect code for upsyncing categories

Bug: 2586071
Change-Id: I277252ef2c31e5b8ec7ceda69c229f5fd100ecdb
2010-04-10 17:24:23 -07:00
Andy Stadler
7d32ec27ec Merge "Check for active device admin before each ping loop" into froyo 2010-04-10 17:18:35 -07:00
Andy Stadler
69757c6670 Merge "Synchronize getAccountById on sAccountList" into froyo 2010-04-10 17:17:56 -07:00
Marc Blank
2769c06b3d Check for active device admin before each ping loop
* Accounts that require security need to check that the Email app
  is still an active device admin from time to time
* Add a check for this before each run of the ping loop

Bug: 2583282
Change-Id: I1491821b7d0c1a341b1fe7ef1002c8b21aed12c2
2010-04-10 16:59:15 -07:00
Marc Blank
3ab4a99679 Synchronize getAccountById on sAccountList
* This fixes a ConcurrentModificationException seen in monkey
  testing

Bug: 2586524
Change-Id: I3634678218827d5cffeef20c154b3826f9e5f36f
2010-04-10 10:30:41 -07:00