tree 68a80ce2c49692ab9b50204ba8ee8a6aa238df02
parent 0dcecb2cfd921916ed586183d64ec9fd250a6e4c
author kschulz <k.schulz@samsung.com> 1426589266 +0100
committer Andre Eisenbach <eisenbach@google.com> 1428720217 -0700

Update to Bluetooth MAP 1.2 (server)

- Change folder name lookup to a map
  Replaced the arrays used to convert mailbox ID/msg type to a folder name with a static map.
  This is to avoid null pointer exception for unknown  values, and to catch any changes in
  the ID/type values at compile time in stead of runtime.
  Bug-id:16874441
- Added Instance Information support and Extended Event support.
  Still missing integration wiht SDP MAP feature bit mask support
- Adding Abstract implementation to support conversations
- added  IM account handling, IM type definition, Application paramenters.
- addedgetConversactionList functionality
- added method to strip encoding in headers
- Fixed messagelist showing both email address and name in the name fields.
- Fixed Index out of bounds exception was hit when the subject contained invalid chars.
- Added functionality to support the getConversationListReq
  Works for SMS/MMS, Email and IM
  For Email/IM it depends on the convoContact table in the contract.
   For SMS/MMS it uses the contact number+ name if available in contact database.
- Added new parameters to msgListing also in contract class
- Added Test framework for "near system level" tests
  Currently only includes an entry point for single device tests.
- Added support for setOwnerStatus
- Added support for vcard type X-BT-UID
- Introduced type SignedLongLong to handle 128 bit values which needs to be handled as hex-strings.
- Added convocontact notification events for IM
- Added support for IM getMessage
- Added setEventFilter function.
- Added event filtering before enquing an event to be send.
- Added selective observers, depending on the active filter.
- Fixed timestamp to be from seconds to seconds (not from milisec)
- Fixed version number in bMessage if remote featurebit is set for v 1.1
- Added content encoding to QP for text that are not USACII
- Corrected the addresses in to/from for IM messages
- Added btuid and btuci to vcard
- Fixed (some) longlines
- Added extendedData support (empty when sending, just logging when receiving)
- Fixed Email folderName compairison changed to ignore case
- Fixed problem with names containing "null"
- BluetoothMapbMessageMms changed to BluetoothMapbMessageMime
- Fixrf addOriginator in getMessage request
- Add missing subjects in events for SMS
- Don't send ReadStatusChanged when pushing a message
- Temp way of adding names/uci to IM msg listing
- Added messageHandle filtering in msgListing
- Convolisting parameter mask support
- Added support for using handle when filtering in root folder during msgLising
- Added subject to event in sms
- Fixed so attribute_mime_type is only sent when parameter is requested
- Fixed feature bit check to messageListing version
- Fixed leaking cursors
- Added support for database identifier
- Added folder and conversation version counters

Change-Id: I4d2954b795aa7ed2a41dd034384da30f240b518f
