merge from tizen 2.4 92/43692/2 accepted/tizen/mobile/20150714.002135 accepted/tizen/tv/20150714.002150 submit/tizen_mobile/20150713.120751 submit/tizen_tv/20150713.121023
authorjiseob.jang <jiseob.jang@samsung.com>
Mon, 13 Jul 2015 08:14:55 +0000 (17:14 +0900)
committerjiseob.jang <jiseob.jang@samsung.com>
Mon, 13 Jul 2015 10:36:16 +0000 (19:36 +0900)
- remove deprecated APIs in wearable and tv profile
- fix memory leak

Change-Id: I9143bbc3a783836f800575031284ba2efdae9755
Signed-off-by: jiseob.jang <jiseob.jang@samsung.com>
include/account.h
include/account_internal.h
include/account_product.h [deleted file]
include/mobile/account.h [new file with mode: 0644]
include/wearable/account.h [new file with mode: 0644]
packaging/.libaccount-service.spec.swp [deleted file]
packaging/libaccount-service.spec
src/CMakeLists.txt
src/account.c
src/account_offline.c
src/account_private_client.h

index edbedc5..b60c511 100644 (file)
@@ -44,7 +44,7 @@ extern "C"
 /**
  * @brief   Called once for each account from the database.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @param[in]  account    The account handle
  * @param[in]  user_data  The user data passed from the foreach function
  *
@@ -63,7 +63,7 @@ typedef bool (*account_cb)(account_h account, void *user_data);
 /**
  * @brief  Called once for each capability of an account in the database.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @param[in]   capability_type  The capability type
  * @param[in]   capability_state The capability state
  * @param[in]   user_data        The user data passed from the foreach function
@@ -80,7 +80,7 @@ typedef bool (*capability_cb)(const char* capability_type, account_capability_st
 /**
  * @brief  Called once for each custom data of an account in the database.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @param[in]  key        The user custom key
  * @param[in]  value      The user custom value of the specific key
  * @param[in]  user_data  The user data passed
@@ -98,7 +98,7 @@ typedef bool (*account_custom_cb)(char* key, char* value, void *user_data);
 /**
  * @brief  Called once for each account provider in the database.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @param[in]  account_type  The account provider handle
  * @param[in]  user_data     The user data passed
  *
@@ -116,7 +116,7 @@ typedef bool (*account_type_cb)(account_type_h account_type, void *user_data);
 /**
  * @brief  Called once for each account label.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @param[in]  app_id     The application ID
  * @param[in]  label      The name of the account depends on the specified locale
  * @param[in]  locale     The locale is specified as an ISO 3166 alpha-2 two letter country-code followed by ISO 639-1 for the two-letter language code.\n
@@ -137,7 +137,7 @@ typedef bool (*account_label_cb)(char* app_id, char* label, char* locale, void *
 /**
  * @brief  Called once for each capability of an account provider in the database.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @param[in]  app_id     The application ID
  * @param[in]  key        The user custom key
  * @param[in]  user_data  The user data passed
@@ -156,7 +156,7 @@ typedef bool (*provider_feature_cb)(char* app_id, char* key, void* user_data);
 /**
  * @brief Called once when an event occurs.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @param[in]  event_type  The account event type
  * @param[in]  account_id  The account ID to update
  * @param[in]  user_data   The user data passed
@@ -176,7 +176,7 @@ typedef bool (*account_event_cb)(const char* event_type, int account_id, void* u
  *             This API is not necessary to use since Tizen 2.4.
  * @brief      Connects to the account database by readwrite mode.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @privlevel  public
  * @privilege  %http://tizen.org/privilege/account.read \n
  *             %http://tizen.org/privilege/account.wirte
@@ -186,8 +186,6 @@ typedef bool (*account_event_cb)(const char* event_type, int account_id, void* u
  * @retval     #ACCOUNT_ERROR_NONE               Successful
  * @retval     #ACCOUNT_ERROR_DB_NOT_OPENED      DB is not connected
  * @retval     #ACCOUNT_ERROR_PERMISSION_DENIED  DB Access fail by permission
- *
- * @see        account_disconnect()
  */
 int account_connect(void);
 
@@ -197,14 +195,12 @@ int account_connect(void);
  *             This API is not necessary to use since Tizen 2.4.
  * @brief      Connects to the account database by readonly mode.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @return     @c 0 on success,
  *             otherwise a negative error value
  * @retval     #ACCOUNT_ERROR_NONE               Successful
  * @retval     #ACCOUNT_ERROR_DB_NOT_OPENED      DB is not connected
  * @retval     #ACCOUNT_ERROR_PERMISSION_DENIED  DB Access fail by permission
- *
- * @see        account_disconnect()
  */
 int account_connect_readonly(void);
 
@@ -214,23 +210,19 @@ int account_connect_readonly(void);
  *             This API is not necessary to use since Tizen 2.4.
  * @brief      Disconnects from the account database.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @return     @c 0 on success,
  *             otherwise a negative error value
  * @retval     #ACCOUNT_ERROR_NONE               Successful
  * @retval     #ACCOUNT_ERROR_PERMISSION_DENIED  DB Access fail by permission
  * @retval     #ACCOUNT_ERROR_DATABASE_BUSY      SQLite busy handler exprired
- *
- * @see        account_connect()
- * @see        account_connect_readonly()
  */
 int account_disconnect(void);
 
-
 /**
  * @brief  Creates a handle to the account.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @remarks    Release @a account using account_destroy().
  * @remarks    The created handle is not added to the account database until account_insert_to_db() is called.
  *
@@ -250,7 +242,7 @@ int account_create(account_h *account);
 /**
  * @brief  Destroys the account handle and releases all its resources.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @param[in]  account  The account handle
  *
  * @return     @c 0 on success,
@@ -266,7 +258,7 @@ int account_destroy(account_h account);
 /**
  * @brief  Inserts the account details to the account database.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @privlevel   public
  * @privilege   %http://tizen.org/privilege/account.read \n
  *              %http://tizen.org/privilege/account.write
@@ -287,9 +279,9 @@ int account_destroy(account_h account);
  * @retval  #ACCOUNT_ERROR_DATABASE_BUSY            SQLite handler is busy
  * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED            Account database did not opened
  *
- * @pre  This function requires an open connection to an account service by account_connect().
+ * @pre  This function requires an open connection to an account service by account_connect() on tizen 2.3.\n
+ *       But the account_connect() is not required to use this function since tizen 2.4.
  *
- * @see account_connect()
  * @see account_delete_from_db_by_id()
  * @see account_delete_from_db_by_user_name()
  * @see account_delete_from_db_by_package_name()
@@ -302,7 +294,7 @@ int account_insert_to_db(account_h account, int *account_db_id);
 /**
  * @brief  Deletes an account from the account database by account DB ID.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @privlevel  public
  * @privilege  %http://tizen.org/privilege/account.read \n
  *             %http://tizen.org/privilege/account.write
@@ -320,9 +312,9 @@ int account_insert_to_db(account_h account, int *account_db_id);
  * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
  * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
  *
- * @pre  This function requires an open connection to an account service by account_connect().
+ * @pre  This function requires an open connection to an account service by account_connect() on tizen 2.3.\n
+ *       But the account_connect() is not required to use this function since tizen 2.4.
  *
- * @see account_connect()
  * @see account_insert_to_db()
  * @see account_delete_from_db_by_user_name()
  * @see account_delete_from_db_by_package_name()
@@ -335,7 +327,7 @@ int account_delete_from_db_by_id(int account_db_id);
 /**
  * @brief  Deletes an account from the account database by user name.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @privlevel  public
  * @privilege  %http://tizen.org/privilege/account.read \n
  *             %http://tizen.org/privilege/account.write
@@ -354,9 +346,9 @@ int account_delete_from_db_by_id(int account_db_id);
  * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
  * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
  *
- * @pre  This function requires an open connection to an account service by account_connect().
+ * @pre  This function requires an open connection to an account service by account_connect() on tizen 2.3.\n
+ *       But the account_connect() is not required to use this function since tizen 2.4.
  *
- * @see account_connect()
  * @see account_insert_to_db()
  * @see account_delete_from_db_by_id()
  * @see account_delete_from_db_by_package_name()
@@ -369,7 +361,7 @@ int account_delete_from_db_by_user_name(char *user_name, char *package_name);
 /**
  * @brief  Deletes an account from the account database by package name.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @privlevel  public
  * @privilege  %http://tizen.org/privilege/account.read \n
  *             %http://tizen.org/privilege/account.write
@@ -386,9 +378,9 @@ int account_delete_from_db_by_user_name(char *user_name, char *package_name);
  * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
  * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
  *
- * @pre  This function requires an open connection to an account service by account_connect().
+ * @pre  This function requires an open connection to an account service by account_connect() on tizen 2.3.\n
+ *       But the account_connect() is not required to use this function since tizen 2.4.
  *
- * @see account_connect()
  * @see account_insert_to_db()
  * @see account_delete_from_db_by_id()
  * @see account_delete_from_db_by_user_name()
@@ -400,7 +392,7 @@ int account_delete_from_db_by_package_name(const char *package_name);
 /**
  * @brief  Updates the account details to the account database.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @privlevel  public
  * @privilege  %http://tizen.org/privilege/account.read \n
  *             %http://tizen.org/privilege/account.write
@@ -419,9 +411,9 @@ int account_delete_from_db_by_package_name(const char *package_name);
  * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
  * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
  *
- * @pre  This function requires an open connection to an account service by account_connect().
+ * @pre  This function requires an open connection to an account service by account_connect() on tizen 2.3.\n
+ *       But the account_connect() is not required to use this function since tizen 2.4.
  *
- * @see account_connect()
  * @see account_insert_to_db()
  * @see account_delete_from_db_by_id()
  * @see account_delete_from_db_by_user_name()
@@ -434,7 +426,7 @@ int account_update_to_db_by_id(account_h account, int account_id);
  * @brief      Updates the account details to the account database.
  *             The provider permission check has been added since tizen 2.4.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @privlevel  public
  * @privilege  %http://tizen.org/privilege/account.read \n
  *             %http://tizen.org/privilege/account.write
@@ -454,9 +446,9 @@ int account_update_to_db_by_id(account_h account, int account_id);
  * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
  * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
  *
- * @pre  This function requires an open connection to an account service by account_connect().
+ * @pre  This function requires an open connection to an account service by account_connect() on tizen 2.3.\n
+ *       But the account_connect() is not required to use this function since tizen 2.4.
  *
- * @see account_connect()
  * @see account_insert_to_db()
  * @see account_delete_from_db_by_id()
  * @see account_delete_from_db_by_user_name()
@@ -468,7 +460,7 @@ int account_update_to_db_by_id_ex(account_h account, int account_id);
 /**
  * @brief  Updates the account details to the account database.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @privlevel  public
  * @privilege  %http://tizen.org/privilege/account.read \n
  *             %http://tizen.org/privilege/account.write
@@ -488,9 +480,9 @@ int account_update_to_db_by_id_ex(account_h account, int account_id);
  * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
  * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
  *
- * @pre  This function requires an open connection to an account service by account_connect().
+ * @pre  This function requires an open connection to an account service by account_connect() on tizen 2.3.\n
+ *       But the account_connect() is not required to use this function since tizen 2.4.
  *
- * @see account_connect()
  * @see account_insert_to_db()
  * @see account_delete_from_db_by_id()
  * @see account_delete_from_db_by_user_name()
@@ -503,7 +495,7 @@ int account_update_to_db_by_user_name(account_h account, const char *user_name,
 /**
  * @brief  Gets the ID of an account.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @param[in]   account     The account handle
  * @param[out]  account_id  The account ID
  *
@@ -518,7 +510,7 @@ int account_get_account_id(account_h account, int *account_id);
 /**
  * @brief  Gets the user name of an account.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @remarks    You must release @a user_name using free().
  *
  * @param[in]   account    The account handle
@@ -538,7 +530,7 @@ int account_get_user_name(account_h account, char **user_name);
 /**
  * @brief  Sets the user name of an account.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @param[in]  account    The account handle
  * @param[in]  user_name  The string to set as user name
  *
@@ -555,7 +547,7 @@ int account_set_user_name(account_h account, const char *user_name);
 /**
  * @brief  Gets the display name of an account.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @remarks    You must release @a display_name using free().
  *
  * @param[in]   account       The account handle
@@ -575,7 +567,7 @@ int account_get_display_name(account_h account, char **display_name);
 /**
  * @brief  Sets the display name of an account.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @param[in]  account      The account handle
  * @param[in]  display_name The text string to set as the display name
  *
@@ -591,7 +583,7 @@ int account_set_display_name(account_h account, const char *display_name);
 /**
  * @brief  Gets the capability detail of an account.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @param[in]   account           The account handle
  * @param[in]   capability_type   The capability type to get the capability value
  * @param[out]  capability_value  The capability value (on/off) of the specified capability_type
@@ -609,7 +601,7 @@ int account_get_capability(account_h account, const char* capability_type, accou
 /**
  * @brief  Gets all the capabilities of an account.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @param[in]  account    The account handle
  * @param[in]  callback   The callback function
  * @param[in]  user_data  The user data to be passed to the callback function
@@ -626,7 +618,7 @@ int account_get_capability_all(account_h account, capability_cb callback, void *
 /**
  * @brief  Sets the capability.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @param[in]  account           The account handle
  * @param[in]  capability_type   The capability type
  * @param[in]  capability_state  The capability state
@@ -644,7 +636,7 @@ int account_set_capability(account_h account, const char* capability_type, accou
 /**
  * @brief  Gets the icon path.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @remarks    You must release @a icon_path using free().
  *
  * @param[in]   account    The account handle
@@ -664,7 +656,7 @@ int account_get_icon_path(account_h account, char **icon_path);
 /**
  * @brief  Sets the icon path.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @param[in]  account    The account handle
  * @param[in]  icon_path  The text string to set as the icon path
  *
@@ -681,7 +673,7 @@ int account_set_icon_path(account_h account, const char *icon_path);
 /**
  * @brief  Gets the domain name.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @remarks    You must release @a domain_name using free().
  *
  * @param[in]   account      The account handle
@@ -701,7 +693,7 @@ int account_get_domain_name(account_h account, char **domain_name);
 /**
  * @brief  Sets the domain name.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @param[in]  account      The account handle
  * @param[in]  domain_name  The text string to set as the domain name
  *
@@ -718,7 +710,7 @@ int account_set_domain_name(account_h account, const char *domain_name);
 /**
  * @brief  Gets the email address.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @remarks    You must release @a email_address using free().
  *
  * @param[in]   account        The account handle
@@ -738,7 +730,7 @@ int account_get_email_address(account_h account, char **email_address);
 /**
  * @brief  Sets the email address.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @param[in]  account        The account handle
  * @param[in]  email_address  The text string to set as the email address
  *
@@ -755,7 +747,7 @@ int account_set_email_address(account_h account, const char *email_address);
 /**
  * @brief  Gets the package name.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @remarks    You must release @a package_name using free().
  *
  * @param[in]   account       The account handle
@@ -775,7 +767,7 @@ int account_get_package_name(account_h account, char **package_name);
 /**
  * @brief  Sets the package name.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @param[in]  account       The account handle
  * @param[in]  package_name  The text string to set as the package name
  *
@@ -792,7 +784,7 @@ int account_set_package_name(account_h account, const char *package_name);
 /**
  * @brief  Gets the access token. Access token field is used to store account secrets (such as password or master token).
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @remarks    You must release @a access_token using free().
  *
  * @param[in]   account       The account handle
@@ -814,7 +806,7 @@ int account_get_access_token(account_h account, char **access_token);
 /**
  * @brief  Sets the access token. Access token field is used to store account secrets (such as password or master token).
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @param[in]  account       The account handle
  * @param[in]  access_token  The text string to set as the access token
  *
@@ -831,7 +823,7 @@ int account_set_access_token(account_h account, const char *access_token);
 /**
  * @brief  Gets the user text.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @remarks    You must release @a user_text using free().
  *
  * @param[in]   account          The account handle
@@ -852,7 +844,7 @@ int account_get_user_text(account_h account, int user_text_index, char **user_te
 /**
  * @brief  Sets the user text.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @param[in]  account          The account handle
  * @param[in]  user_text_index  The index of the user text (must be in range from @c 0 to @c 4)
  * @param[in]  user_text        The text string to set as the user text
@@ -870,7 +862,7 @@ int account_set_user_text(account_h account, int user_text_index, const char *us
 /**
  * @brief  Gets the user integer.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @param[in]   account         The account handle
  * @param[in]   user_int_index  The index of the user integer (must be in range from @c 0 to @c 4)
  * @param[out]  user_integer    The user integer
@@ -888,7 +880,7 @@ int account_get_user_int(account_h account, int user_int_index, int *user_intege
 /**
  * @brief  Sets the user integer.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @param[in]  account         The account handle
  * @param[in]  user_int_index  The index of the user integer (must be in range from @c 0 to @c 4)
  * @param[in]  user_integer    The integer to set as the user integer
@@ -906,7 +898,7 @@ int account_set_user_int(account_h account, int user_int_index, int user_integer
 /**
  * @brief  Gets the auth type.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @param[in]   account    The account handle
  * @param[out]  auth_type  The auth type
  *
@@ -923,7 +915,7 @@ int account_get_auth_type(account_h account, account_auth_type_e *auth_type);
 /**
  * @brief  Sets the auth type.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
   * @param[in]  account    The account handle
  * @param[in]  auth_type  The integer to be set as the auth type
  *
@@ -940,7 +932,7 @@ int account_set_auth_type(account_h account, const account_auth_type_e auth_type
 /**
  * @brief  Gets the secret.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @param[in]   account  The account handle
  * @param[out]  secret   The secret
  *
@@ -957,7 +949,7 @@ int account_get_secret(account_h account, account_secrecy_state_e *secret);
 /**
  * @brief  Sets the secret.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @param[in]  account  The account handle
  * @param[in]  secret   The secrecy to be set
  *
@@ -973,7 +965,7 @@ int account_set_secret(account_h account, const account_secrecy_state_e secret);
 /**
  * @brief  Gets the sync support.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @param[in]   account       The account handle
  * @param[out]  sync_support  The sync support
  *
@@ -990,7 +982,7 @@ int account_get_sync_support(account_h account, account_sync_state_e *sync_suppo
 /**
  * @brief  Sets the sync support.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @param[in]  account       The account handle
  * @param[in]  sync_support  The sync state to be set
  *
@@ -1007,7 +999,7 @@ int account_set_sync_support(account_h account, const account_sync_state_e sync_
 /**
  * @brief  Gets the source.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @remarks    You must release @a user_text using free().
  *
  * @param[in]   account  The account handle
@@ -1027,7 +1019,7 @@ int account_get_source(account_h account, char **source);
 /**
  * @brief  Sets the source.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @param[in]  account  The account handle
  * @param[in]  source   The text string to set as the source
  *
@@ -1043,7 +1035,7 @@ int account_set_source(account_h account, const char *source);
 /**
  * @brief  Sets the custom.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @param[in]  account  The account handle
  * @param[in]  key      The user custom key for the specific value
  * @param[in]  value    The user custom value about the given key
@@ -1060,7 +1052,7 @@ int account_set_custom(account_h account, const char* key, const char* value);
 /**
  * @brief  Gets the user specific custom text of an account key.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @param[in]   account   The account handle
  * @param[in]   key       The key to retrieve custom text
  * @param[out]  value     The text of the given key
@@ -1079,7 +1071,7 @@ int account_get_custom(account_h account, const char* key, char** value);
 /**
  * @brief  Gets all the user custom texts of an account.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @param[in]  account    The account handle
  * @param[in]  callback   The callback function to retrieve all custom text \n
  *                        The callback function gives the key and value.
@@ -1097,7 +1089,7 @@ int account_get_custom_all(account_h account, account_custom_cb callback, void*
 /**
  * @brief  Retrieves all accounts details by invoking the given callback function iteratively.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @privlevel   public
  * @privilege   %http://tizen.org/privilege/account.read
  * @param[in]   callback   The callback function to invoke
@@ -1113,10 +1105,10 @@ int account_get_custom_all(account_h account, account_custom_cb callback, void*
  * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
  * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
  *
- * @pre   This function requires an open connection to an account service by account_connect().
+ * @pre   This function requires an open connection to an account service by account_connect() on tizen 2.3.\n
+ *        But the account_connect() is not required to use this function since tizen 2.4.
  * @post  This function invokes account_cb().
  *
- * @see account_connect()
  * @see account_query_account_by_account_id()
  * @see account_query_account_by_user_name()
  * @see account_query_account_by_package_name()
@@ -1128,7 +1120,7 @@ int account_foreach_account_from_db(account_cb callback, void *user_data);
 /**
  * @brief  Retrieve an account with the account ID.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @privlevel   public
  * @privilege   %http://tizen.org/privilege/account.read
  * @param[in]   account_db_id  The account database ID to search
@@ -1145,9 +1137,9 @@ int account_foreach_account_from_db(account_cb callback, void *user_data);
  * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
  * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
  *
- * @pre  This function requires an open connection to an account service by account_connect().
+ * @pre  This function requires an open connection to an account service by account_connect() on tizen 2.3.\n
+ *       But the account_connect() is not required to use this function since tizen 2.4.
  *
- * @see account_connect()
  * @see account_query_account_by_user_name()
  * @see account_query_account_by_package_name()
  * @see account_query_account_by_capability()
@@ -1157,7 +1149,7 @@ int account_query_account_by_account_id(int account_db_id, account_h *account);
 /**
  * @brief  Retrieves all accounts with the user name.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @privlevel   public
  * @privilege   %http://tizen.org/privilege/account.read
  * @param[in]   callback   The callback function to invoke
@@ -1174,10 +1166,10 @@ int account_query_account_by_account_id(int account_db_id, account_h *account);
  * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
  * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
  *
- * @pre   This function requires an open connection to an account service by account_connect().
+ * @pre   This function requires an open connection to an account service by account_connect() on tizen 2.3.\n
+ *        But the account_connect() is not required to use this function since tizen 2.4.
  * @post  This function invokes account_cb().
  *
- * @see account_connect()
  * @see account_foreach_account_from_db()
  * @see account_query_account_by_account_id()
  * @see account_query_account_by_package_name()
@@ -1189,7 +1181,7 @@ int account_query_account_by_user_name(account_cb callback, const char* user_nam
 /**
  * @brief  Retrieves all accounts with the package name.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @privlevel  public
  * @privilege  %http://tizen.org/privilege/account.read
  * @param[in]  callback      The callback function to invoke
@@ -1206,10 +1198,10 @@ int account_query_account_by_user_name(account_cb callback, const char* user_nam
  * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
  * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
  *
- * @pre   This function requires an open connection to an account service by account_connect().
+ * @pre   This function requires an open connection to an account service by account_connect() on tizen 2.3.\n
+ *        But the account_connect() is not required to use this function since tizen 2.4.
  * @post  This function invokes account_cb().
  *
- * @see account_connect()
  * @see account_foreach_account_from_db()
  * @see account_query_account_by_account_id()
  * @see account_query_account_by_user_name()
@@ -1220,7 +1212,7 @@ int account_query_account_by_package_name(account_cb callback, const char *packa
 /**
  * @brief  Retrieves all accounts with the capability type and capability value.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @privlevel   public
  * @privilege   %http://tizen.org/privilege/account.read
  * @param[in]   callback          The callback function to invoke
@@ -1238,10 +1230,10 @@ int account_query_account_by_package_name(account_cb callback, const char *packa
  * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
  * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
  *
- * @pre   This function requires an open connection to an account service by account_connect().
+ * @pre   This function requires an open connection to an account service by account_connect() on tizen 2.3.\n
+ *        But the account_connect() is not required to use this function since tizen 2.4.
  * @post  This function invokes account_cb().
  *
- * @see account_connect()
  * @see account_foreach_account_from_db()
  * @see account_query_account_by_account_id()
  * @see account_query_account_by_user_name()
@@ -1252,7 +1244,7 @@ int account_query_account_by_capability(account_cb callback, const char* capabil
 /**
  * @brief  Retrieves all accounts with the capability type.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @privlevel   public
  * @privilege   %http://tizen.org/privilege/account.read
  * @param[in]   callback         The callback function to invoke
@@ -1269,10 +1261,10 @@ int account_query_account_by_capability(account_cb callback, const char* capabil
  * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
  * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
  *
- * @pre   This function requires an open connection to an account service by account_connect().
+ * @pre   This function requires an open connection to an account service by account_connect() on tizen 2.3.\n
+ *        But the account_connect() is not required to use this function since tizen 2.4.
  * @post  This function invokes account_cb().
  *
- * @see account_connect()
  * @see account_foreach_account_from_db()
  * @see account_query_account_by_account_id()
  * @see account_query_account_by_user_name()
@@ -1283,7 +1275,7 @@ int account_query_account_by_capability_type(account_cb callback, const char* ca
 /**
  * @brief  Retrieves all capabilities with the account database ID.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @privlevel   public
  * @privilege   %http://tizen.org/privilege/account.read
  * @param[in]   callback       The callback function to invoke
@@ -1300,10 +1292,10 @@ int account_query_account_by_capability_type(account_cb callback, const char* ca
  * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
  * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
  *
- * @pre   This function requires an open connection to an account service by account_connect().
+ * @pre   This function requires an open connection to an account service by account_connect() on tizen 2.3.\n
+ *        But the account_connect() is not required to use this function since tizen 2.4.
  * @post  This function invokes capability_cb().
  *
- * @see account_connect()
  * @see account_get_capability()
  * @see account_set_capability()
  */
@@ -1313,7 +1305,7 @@ int account_query_capability_by_account_id(capability_cb callback, int account_d
 /**
  * @brief  Gets the count of accounts in the account database.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @privlevel   public
  * @privilege   %http://tizen.org/privilege/account.read
  * @param[out]  count  The out parameter for count of all accounts
@@ -1326,16 +1318,15 @@ int account_query_capability_by_account_id(capability_cb callback, int account_d
  * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
  * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
  *
- * @pre  This function requires an open connection to an account service by account_connect().
- *
- * @see account_connect()
+ * @pre  This function requires an open connection to an account service by account_connect() on tizen 2.3.\n
+ *       But the account_connect() is not required to use this function since tizen 2.4.
  */
 int account_get_total_count_from_db(int *count);
 
 /**
  * @brief  Updates the sync status of an account with the given account ID.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @privlevel   public
  * @privilege   %http://tizen.org/privilege/account.read \n
  *              %http://tizen.org/privilege/account.write
@@ -1354,9 +1345,8 @@ int account_get_total_count_from_db(int *count);
  * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
  * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
  *
- * @pre This function requires an open connection to an account service by account_connect().
- *
- * @see account_connect()
+ * @pre  This function requires an open connection to an account service by account_connect() on tizen 2.3.\n
+ *       But the account_connect() is not required to use this function since tizen 2.4.
  */
 int account_update_sync_status_by_id(int account_db_id, const account_sync_state_e sync_status);
 
@@ -1367,7 +1357,7 @@ int account_update_sync_status_by_id(int account_db_id, const account_sync_state
 /**
  * @brief  Creates a handle to the account provider.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @remarks     You must release @a account_type handle using account_type_destroy().\n
  *
  * @param[in]  account_type  The account provider handle
@@ -1385,7 +1375,7 @@ int account_type_create(account_type_h *account_type);
 /**
  * @brief  Destroys the account provider handle and releases all its resources.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  *
  * @remarks    When you get @a account_type_h using account_type_create(), you must release the handle using account_destroy() to avoid the memory leak.
  *
@@ -1403,7 +1393,7 @@ int account_type_destroy(account_type_h account_type);
 /**
  * @brief  Retrieves capability information with your application ID.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @privlevel   public
  * @privilege   %http://tizen.org/privilege/account.read
  * @param[in]   callback   The callback function carries the capability name of an app ID
@@ -1420,17 +1410,15 @@ int account_type_destroy(account_type_h account_type);
  * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
  * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
  *
- * @pre  This function requires an open connection to an account service by account_connect().
- *
- * @see account_connect()
- * @see account_disconnect()
+ * @pre  This function requires an open connection to an account service by account_connect() on tizen 2.3.\n
+ *       But the account_connect() is not required to use this function since tizen 2.4.
  */
 int account_type_query_provider_feature_by_app_id(provider_feature_cb callback, const char* app_id, void *user_data );
 
 /**
  * @brief   Checks whether the given application ID supports the capability.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @privlevel   public
  * @privilege   %http://tizen.org/privilege/account.read
  * @remarks     The specific error code can be obtained using the get_last_result() method. Error codes are described in Exception section.
@@ -1450,17 +1438,15 @@ int account_type_query_provider_feature_by_app_id(provider_feature_cb callback,
  * @excaption #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
  * @excaption #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
  *
- * @pre This function requires an open connection to an account service by account_connect().
- *
- * @see account_connect()
- * @see account_disconnect()
+ * @pre  This function requires an open connection to an account service by account_connect() on tizen 2.3.\n
+ *       But the account_connect() is not required to use this function since tizen 2.4.
  */
 bool account_type_query_supported_feature(const char* app_id, const char* capability);
 
 /**
  * @brief  Gets the application ID of an account provider.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @remarks     You must release @a app_id using free().
  *
  * @param[in]   account_type  The account provider handle \n
@@ -1481,7 +1467,7 @@ int account_type_get_app_id(account_type_h account_type, char **app_id);
 /**
  * @brief  Gets the service provider ID of an account provider.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @remarks     You must release @a service_provider_id using free().
  *
  * @param[in]   account_type         The account provider handle \n
@@ -1502,7 +1488,7 @@ int account_type_get_service_provider_id(account_type_h account_type, char **ser
 /**
  * @brief  Gets the icon path of an account provider.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @remarks     You must release @a icon_path using free().
  *
  * @param[in]   account_type  The account provider handle \n
@@ -1523,7 +1509,7 @@ int account_type_get_icon_path(account_type_h account_type, char **icon_path);
 /**
  * @brief  Gets the small icon path of an account provider.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @remarks    You must release @a small_icon_path using free().
  *
  * @param[in]   account_type     The account provider handle\n
@@ -1544,7 +1530,7 @@ int account_type_get_small_icon_path(account_type_h account_type, char **small_i
 /**
  * @brief  Checks whether the given account provider supports multiple accounts.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @param[in]   account_type              The account provider handle \n
  *                                        It should be given by account_type_query_* functions or account_type_foreach_account_type_from_db.
  * @param[out]  multiple_account_support  The flag indicating support for multiple accounts accounts\n
@@ -1564,7 +1550,7 @@ int account_type_get_multiple_account_support(account_type_h account_type, int *
 /**
  * @brief  Gets capability information with the given account provider handle.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @param[in]   account_type  The account provider handle\n
  *                            It should be given by account_type_query_* functions or account_type_foreach_account_type_from_db().
  * @param[in]   callback      The callback function that carries the capability name of the app ID
@@ -1577,17 +1563,15 @@ int account_type_get_multiple_account_support(account_type_h account_type, int *
  * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
  * @retval  #ACCOUNT_ERROR_DB_FAILED          Database operation failed
  *
- * @pre  This function requires an open connection to an account service by account_connect().
- *
- * @see account_connect()
- * @see account_disconnect()
+ * @pre  This function requires an open connection to an account service by account_connect() on tizen 2.3.\n
+ *       But the account_connect() is not required to use this function since tizen 2.4.
  */
 int account_type_get_provider_feature_all(account_type_h account_type, provider_feature_cb callback, void* user_data);
 
 /**
  * @brief  Gets the specific label information detail of an account provider.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @param[in]   account_type The account provider handle\n
  *                           It should be given by account_type_query_* functions or account_type_foreach_account_type_from_db().
  * @param[in]   locale       The locale is specified as an ISO 3166 alpha-2 two letter country-code followed by ISO 639-1 for the two-letter language code.\n
@@ -1609,7 +1593,7 @@ int account_type_get_label_by_locale(account_type_h account_type, const char* lo
 /**
  * @brief  Gets the label information detail of an account provider.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @param[in]   account_type  The account provider handle\n
  *                            It should be given by account_type_query_* functions or account_type_foreach_account_type_from_db().
  * @param[in]   callback      The callback function carrying the label information
@@ -1628,7 +1612,7 @@ int account_type_get_label(account_type_h account_type, account_label_cb callbac
 /**
  * @brief  Retrieves the label information with your application ID.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @privlevel   public
  * @privilege   %http://tizen.org/privilege/account.read
  * @param[in]   callback    The callback function that carries label_h for label information \n
@@ -1646,19 +1630,18 @@ int account_type_get_label(account_type_h account_type, account_label_cb callbac
  * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
  * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
  *
- * @pre  This function requires an open connection to an account service by account_connect().
+ * @pre  This function requires an open connection to an account service by account_connect() on tizen 2.3.\n
+ *       But the account_connect() is not required to use this function since tizen 2.4.
  *
- * @see account_connect()
  * @see account_type_query_by_app_id()
  * @see account_type_foreach_account_type_from_db()
- * @see account_disconnect()
  */
 int account_type_query_label_by_app_id(account_label_cb callback, const char* app_id, void *user_data );
 
 /**
  * @brief  Retrieves the account provider information with your application ID.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @privlevel   public
  * @privilege   %http://tizen.org/privilege/account.read
  * @param[in]   app_id        The application ID to search
@@ -1674,9 +1657,9 @@ int account_type_query_label_by_app_id(account_label_cb callback, const char* ap
  * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
  * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
  *
- * @pre  This function requires an open connection to an account service by account_connect().
+ * @pre  This function requires an open connection to an account service by account_connect() on tizen 2.3.\n
+ *       But the account_connect() is not required to use this function since tizen 2.4.
  *
- * @see account_connect()
  * @see account_type_create()
  * @see account_type_get_app_id()
  * @see account_type_get_service_provider_id()
@@ -1691,7 +1674,7 @@ int account_type_query_by_app_id(const char* app_id, account_type_h *account_typ
 /**
  * @brief  Retrieves all account priovider information.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @privlevel   public
  * @privilege   %http://tizen.org/privilege/account.read
  * @param[in]   callback   The account provider information \n
@@ -1708,9 +1691,9 @@ int account_type_query_by_app_id(const char* app_id, account_type_h *account_typ
  * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
  * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
  *
- * @pre  This function requires an open connection to an account service by account_connect().
+ * @pre  This function requires an open connection to an account service by account_connect() on tizen 2.3.\n
+ *       But the account_connect() is not required to use this function since tizen 2.4.
  *
- * @see account_connect()
  * @see account_type_create()
  * @see account_type_get_app_id()
  * @see account_type_get_service_provider_id()
@@ -1725,7 +1708,7 @@ int account_type_foreach_account_type_from_db(account_type_cb callback, void *us
 /**
  * @brief  Retrieves the label information with the given application ID and locale.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @privlevel   public
  * @privilege   %http://tizen.org/privilege/account.read
  * @param[in]   app_id  The application ID
@@ -1743,16 +1726,15 @@ int account_type_foreach_account_type_from_db(account_type_cb callback, void *us
  * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
  * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
  *
- * @pre  This function requires an open connection to an account service by account_connect().
- *
- * @see account_connect()
+ * @pre  This function requires an open connection to an account service by account_connect() on tizen 2.3.\n
+ *       But the account_connect() is not required to use this function since tizen 2.4.
  */
 int account_type_query_label_by_locale(const char* app_id, const char* locale, char** label);
 
 /**
  * @brief  Retrieves account provider information with the capability name.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @privlevel   public
  * @privilege   %http://tizen.org/privilege/account.read
  * @param[in]   callback        The callback function to retrieve account provider information
@@ -1770,16 +1752,15 @@ int account_type_query_label_by_locale(const char* app_id, const char* locale, c
  * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
  * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
  *
- * @pre  This function requires an open connection to an account service by account_connect().
- *
- * @see account_connect()
+ * @pre  This function requires an open connection to an account service by account_connect() on tizen 2.3.\n
+ *       But the account_connect() is not required to use this function since tizen 2.4.
  */
 int account_type_query_by_provider_feature(account_type_cb callback, const char* key, void* user_data);
 
 /**
  * @brief  Checks whether the given app_id exists in the account provider DB.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @privlevel   public
  * @privilege   %http://tizen.org/privilege/account.read
  * @param[in]   app_id  The application ID to check
@@ -1794,7 +1775,8 @@ int account_type_query_by_provider_feature(account_type_cb callback, const char*
  * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
  * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
  *
- * @pre  This function requires an open connection to an account service by account_connect().
+ * @pre  This function requires an open connection to an account service by account_connect() on tizen 2.3.\n
+ *       But the account_connect() is not required to use this function since tizen 2.4.
  *
  * @see account_type_query_by_app_id()
  */
@@ -1807,7 +1789,7 @@ int account_type_query_app_id_exist(const char* app_id);
 /**
  * @brief  Creates a handle for the account event subscription.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @remarks     You must release @a account_subscribe handle using account_unsubscribe_notification().
  *
  * @param[in]   account_subscribe  The account subscription handle
@@ -1826,7 +1808,7 @@ int account_subscribe_create(account_subscribe_h* account_subscribe);
 /**
  * @brief  Starts to subscribe account event through the given callback function.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @privlevel   public
  * @privilege   %http://tizen.org/privilege/account.read \n
  * @param[in]   account_subscribe  The account subscription handle
@@ -1850,7 +1832,7 @@ int account_subscribe_notification(account_subscribe_h account_subscribe, accoun
 /**
  * @brief  Destroys the account subscribe handle and releases all its resources.
  *
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @since_tizen 2.3
  * @privlevel   public
  * @privilege   %http://tizen.org/privilege/account.read \n
  * @remarks     You must call @a account_unsubscribe_notification when you do not need to subscribe account event.
index 644f8c1..6e4d32c 100644 (file)
@@ -22,6 +22,9 @@
 #ifndef __ACCOUNT_INTERNAL_H__
 #define __ACCOUNT_INTERNAL_H__
 
+#include <account-types.h>
+#include <account.h>
+
 #ifdef __cplusplus
 extern "C"
 {
@@ -351,7 +354,7 @@ int account_type_delete_by_app_id(const char* app_id);
  * @see account_unsubscribe_notification()
  * @see account_subscribe_notification()
  */
-ACCOUNT_API int account_subscribe_notification_ex(account_subscribe_h account_subscribe, account_event_cb cb_func, void* user_data);
+int account_subscribe_notification_ex(account_subscribe_h account_subscribe, account_event_cb cb_func, void* user_data);
 
 /**
  * @internal
@@ -369,8 +372,27 @@ ACCOUNT_API int account_subscribe_notification_ex(account_subscribe_h account_su
  * @see account_unsubscribe_notification()
  * @see account_subscribe_notification()
  */
-ACCOUNT_API int account_unsubscribe_notification_ex(account_subscribe_h account_subscribe);
+int account_unsubscribe_notification_ex(account_subscribe_h account_subscribe);
 
+/**
+ * @internal
+ * @brief  Gets the count of accounts whose secrect state is visible in the account database.
+ * @since_tizen 2.3
+ *
+ * @privlevel   public
+ * @privilege   %http://tizen.org/privilege/account.read
+ * @param[out]  count  The out parameter for count of all accounts
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE       Successful
+ * @retval  #ACCOUNT_ERROR_DB_FAILED  Database operation failed
+ * @retval  #ACCOUNT_ERROR_ACCESS_DENIED DB Access fail by permission
+ *
+ * @pre  This function requires an open connection to an account service by account_connect().
+ *
+ */
+int account_get_total_count_from_db_ex(int *count);
 
 /*offline apis*/
 int account_type_insert_to_db_offline(account_type_h account_type, int* account_type_id);
diff --git a/include/account_product.h b/include/account_product.h
deleted file mode 100644 (file)
index 4c9e964..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- *  account
- *
- * Copyright (c) 2012 - 2013 Samsung Electronics Co., Ltd. All rights reserved.
- *
- * Contact: Wonyoung Lee <wy1115.lee@samsung.com>, Sungchan Kim <sungchan81.kim@samsung.com>
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#ifndef __ACCOUNT_PRODUCT_H__
-#define __ACCOUNT_PRODUCT_H__
-
-#include <account.h>
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-/**
- * @internal
- * @addtogroup CAPI_ACCOUNT_MANAGER_MODULE
- * @{
- */
-
-/**
- * @brief  Gets the count of accounts whose secrect state is visible in the account database.
- * @since_tizen 2.3
- *
- * @privlevel   public
- * @privilege   %http://tizen.org/privilege/account.read
- * @param[out]  count  The out parameter for count of all accounts
- *
- * @return  @c 0 on success,
- *          otherwise a negative error value
- * @retval  #ACCOUNT_ERROR_NONE       Successful
- * @retval  #ACCOUNT_ERROR_DB_FAILED  Database operation failed
- * @retval  #ACCOUNT_ERROR_ACCESS_DENIED DB Access fail by permission
- *
- * @pre  This function requires an open connection to an account service by account_connect().
- *
- * @see account_connect()
- */
-ACCOUNT_API int account_get_total_count_from_db_ex(int *count);
-
-/**
-* @}
-*/
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __ACCOUNT_PRODUCT_H__ */
diff --git a/include/mobile/account.h b/include/mobile/account.h
new file mode 100644 (file)
index 0000000..b60c511
--- /dev/null
@@ -0,0 +1,1857 @@
+/*
+ *
+ * Copyright (c) 2012 - 2013 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef __ACCOUNT_H__
+#define __ACCOUNT_H__
+
+#include <account-types.h>
+#include <account-error.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#ifndef ACCOUNT_API
+#define ACCOUNT_API __attribute__ ((visibility("default")))
+#endif
+
+/**
+ * @file        account.h
+ * @brief       This file contains the Account API for account management.
+ */
+
+/**
+ * @addtogroup CAPI_ACCOUNT_MANAGER_MODULE
+ * @{
+ */
+
+/**
+ * @brief   Called once for each account from the database.
+ *
+ * @since_tizen 2.3
+ * @param[in]  account    The account handle
+ * @param[in]  user_data  The user data passed from the foreach function
+ *
+ * @return     @c true to continue with the next iteration of the loop, \n
+ *             otherwise @c false to break out of the loop
+ *
+ * @pre account_foreach_account_from_db(), account_query_account_by_account_id(), account_query_account_by_user_name() or account_query_account_by_package_name() must be called.
+ *
+ * @see account_foreach_account_from_db()
+ * @see account_query_account_by_account_id()
+ * @see account_query_account_by_user_name()
+ * @see account_query_account_by_package_name()
+ */
+typedef bool (*account_cb)(account_h account, void *user_data);
+
+/**
+ * @brief  Called once for each capability of an account in the database.
+ *
+ * @since_tizen 2.3
+ * @param[in]   capability_type  The capability type
+ * @param[in]   capability_state The capability state
+ * @param[in]   user_data        The user data passed from the foreach function
+ *
+ * @return      @c true to continue with the next iteration of the loop, \n
+ *              otherwise @c false to break out of the loop
+ *
+ * @pre account_query_capability_by_account_id() must be called.
+ *
+ * @see account_query_capability_by_account_id()
+ */
+typedef bool (*capability_cb)(const char* capability_type, account_capability_state_e capability_state, void *user_data);
+
+/**
+ * @brief  Called once for each custom data of an account in the database.
+ *
+ * @since_tizen 2.3
+ * @param[in]  key        The user custom key
+ * @param[in]  value      The user custom value of the specific key
+ * @param[in]  user_data  The user data passed
+ *
+ * @return     @c true to continue with the next iteration of the loop, \n
+ *             otherwise @c false to break out of the loop
+ *
+ * @pre account_query_capability_by_account_id() must be called.
+ *
+ * @see account_query_capability_by_account_id()
+ */
+typedef bool (*account_custom_cb)(char* key, char* value, void *user_data);
+
+
+/**
+ * @brief  Called once for each account provider in the database.
+ *
+ * @since_tizen 2.3
+ * @param[in]  account_type  The account provider handle
+ * @param[in]  user_data     The user data passed
+ *
+ * @return     @c true to continue with the next iteration of the loop, \n
+ *             otherwise @c false to break out of the loop
+ *
+ * @pre account_type_foreach_account_type_from_db(), account_type_query_by_provider_feature() must be called.
+ *
+ * @see account_type_foreach_account_type_from_db()
+ * @see account_type_query_by_provider_feature()
+ */
+typedef bool (*account_type_cb)(account_type_h account_type, void *user_data);
+
+
+/**
+ * @brief  Called once for each account label.
+ *
+ * @since_tizen 2.3
+ * @param[in]  app_id     The application ID
+ * @param[in]  label      The name of the account depends on the specified locale
+ * @param[in]  locale     The locale is specified as an ISO 3166 alpha-2 two letter country-code followed by ISO 639-1 for the two-letter language code.\n
+ *                        For example, "ko_KR" for Korean, "en_US" for American English.
+ * @param[in]  user_data  The user data passed
+ *
+ * @return     @c true to continue with the next iteration of the loop, \n
+ *             otherwise @c false to break out of the loop
+ *
+ * @pre account_type_get_label(), account_type_query_label_by_app_id() must be called.
+ *
+ * @see account_type_get_label()
+ * @see account_type_query_label_by_app_id()
+ */
+typedef bool (*account_label_cb)(char* app_id, char* label, char* locale, void *user_data);
+
+
+/**
+ * @brief  Called once for each capability of an account provider in the database.
+ *
+ * @since_tizen 2.3
+ * @param[in]  app_id     The application ID
+ * @param[in]  key        The user custom key
+ * @param[in]  user_data  The user data passed
+ *
+ * @return     @c true to continue with the next iteration of the loop, \n
+ *             otherwise @c false to break out of the loop
+ *
+ * @pre account_type_query_provider_feature_by_app_id(), account_type_get_provider_feature_all() must be called.
+ *
+ * @see account_type_query_provider_feature_by_app_id()
+ * @see account_type_get_provider_feature_all()
+ */
+typedef bool (*provider_feature_cb)(char* app_id, char* key, void* user_data);
+
+
+/**
+ * @brief Called once when an event occurs.
+ *
+ * @since_tizen 2.3
+ * @param[in]  event_type  The account event type
+ * @param[in]  account_id  The account ID to update
+ * @param[in]  user_data   The user data passed
+ *
+ * @return     @c true to continue with the next iteration of the loop, \n
+ *             otherwise @c false to break out of the loop
+ *
+ * @pre account_subscribe_notification() must be called.
+ *
+ * @see account_subscribe_notification()
+ */
+typedef bool (*account_event_cb)(const char* event_type, int account_id, void* user_data);
+
+
+/**
+ * @deprecated Deprecated since Tizen 2.4.\n
+ *             This API is not necessary to use since Tizen 2.4.
+ * @brief      Connects to the account database by readwrite mode.
+ *
+ * @since_tizen 2.3
+ * @privlevel  public
+ * @privilege  %http://tizen.org/privilege/account.read \n
+ *             %http://tizen.org/privilege/account.wirte
+ * @remarks    This API need both privileges
+ * @return     @c 0 on success,
+ *             otherwise a negative error value
+ * @retval     #ACCOUNT_ERROR_NONE               Successful
+ * @retval     #ACCOUNT_ERROR_DB_NOT_OPENED      DB is not connected
+ * @retval     #ACCOUNT_ERROR_PERMISSION_DENIED  DB Access fail by permission
+ */
+int account_connect(void);
+
+
+/**
+ * @deprecated Deprecated since Tizen 2.4.\n
+ *             This API is not necessary to use since Tizen 2.4.
+ * @brief      Connects to the account database by readonly mode.
+ *
+ * @since_tizen 2.3
+ * @return     @c 0 on success,
+ *             otherwise a negative error value
+ * @retval     #ACCOUNT_ERROR_NONE               Successful
+ * @retval     #ACCOUNT_ERROR_DB_NOT_OPENED      DB is not connected
+ * @retval     #ACCOUNT_ERROR_PERMISSION_DENIED  DB Access fail by permission
+ */
+int account_connect_readonly(void);
+
+
+/**
+ * @deprecated Deprecated since Tizen 2.4.\n
+ *             This API is not necessary to use since Tizen 2.4.
+ * @brief      Disconnects from the account database.
+ *
+ * @since_tizen 2.3
+ * @return     @c 0 on success,
+ *             otherwise a negative error value
+ * @retval     #ACCOUNT_ERROR_NONE               Successful
+ * @retval     #ACCOUNT_ERROR_PERMISSION_DENIED  DB Access fail by permission
+ * @retval     #ACCOUNT_ERROR_DATABASE_BUSY      SQLite busy handler exprired
+ */
+int account_disconnect(void);
+
+/**
+ * @brief  Creates a handle to the account.
+ *
+ * @since_tizen 2.3
+ * @remarks    Release @a account using account_destroy().
+ * @remarks    The created handle is not added to the account database until account_insert_to_db() is called.
+ *
+ * @param[in]  account  The account handle
+ *
+ * @return     @c 0 on success,
+ *             otherwise a negative error value
+ * @retval     #ACCOUNT_ERROR_NONE               Successful
+ * @retval     #ACCOUNT_ERROR_OUT_OF_MEMORY      Out of Memory
+ * @retval     #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @see account_destroy()
+ */
+int account_create(account_h *account);
+
+
+/**
+ * @brief  Destroys the account handle and releases all its resources.
+ *
+ * @since_tizen 2.3
+ * @param[in]  account  The account handle
+ *
+ * @return     @c 0 on success,
+ *             otherwise a negative error value
+ * @retval     #ACCOUNT_ERROR_NONE               Successful
+ * @retval     #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @see account_create()
+ */
+int account_destroy(account_h account);
+
+
+/**
+ * @brief  Inserts the account details to the account database.
+ *
+ * @since_tizen 2.3
+ * @privlevel   public
+ * @privilege   %http://tizen.org/privilege/account.read \n
+ *              %http://tizen.org/privilege/account.write
+ * @remarks     This API need both privileges
+ * @param[in]   account        The account handle
+ * @param[out]  account_db_id  The account ID to be assigned to an account
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER        Invalid parameter
+ * @retval  #ACCOUNT_ERROR_OUT_OF_MEMORY            Out of Memory
+ * @retval  #ACCOUNT_ERROR_DB_FAILED                Database operation failed
+ * @retval  #ACCOUNT_ERROR_DUPLICATED               Same user name exists in your application
+ * @retval  #ACCOUNT_ERROR_NOT_ALLOW_MULTIPLE       Tried to add an account in spite of multiple false accounts
+ * @retval  #ACCOUNT_ERROR_NOT_REGISTERED_PROVIDER  Tried to add an account though you did not register the account type in manifest
+ * @retval  #ACCOUNT_ERROR_PERMISSION_DENIED        DB Access fail by permission
+ * @retval  #ACCOUNT_ERROR_DATABASE_BUSY            SQLite handler is busy
+ * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED            Account database did not opened
+ *
+ * @pre  This function requires an open connection to an account service by account_connect() on tizen 2.3.\n
+ *       But the account_connect() is not required to use this function since tizen 2.4.
+ *
+ * @see account_delete_from_db_by_id()
+ * @see account_delete_from_db_by_user_name()
+ * @see account_delete_from_db_by_package_name()
+ * @see account_update_to_db_by_id()
+ * @see account_update_to_db_by_user_name()
+ */
+int account_insert_to_db(account_h account, int *account_db_id);
+
+
+/**
+ * @brief  Deletes an account from the account database by account DB ID.
+ *
+ * @since_tizen 2.3
+ * @privlevel  public
+ * @privilege  %http://tizen.org/privilege/account.read \n
+ *             %http://tizen.org/privilege/account.write
+ * @remarks    This API need both privileges \n
+ *             Only can delete an account which was added by same package applications
+ * @param[in]  account_db_id  The account ID to delete
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_OUT_OF_MEMORY      Out of Memory
+ * @retval  #ACCOUNT_ERROR_DB_FAILED          Database operation failed
+ * @retval  #ACCOUNT_ERROR_PERMISSION_DENIED  The account owner is different from the caller or DB Access fail by permission
+ * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
+ * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
+ *
+ * @pre  This function requires an open connection to an account service by account_connect() on tizen 2.3.\n
+ *       But the account_connect() is not required to use this function since tizen 2.4.
+ *
+ * @see account_insert_to_db()
+ * @see account_delete_from_db_by_user_name()
+ * @see account_delete_from_db_by_package_name()
+ * @see account_update_to_db_by_id()
+ * @see account_update_to_db_by_user_name()
+ */
+int account_delete_from_db_by_id(int account_db_id);
+
+
+/**
+ * @brief  Deletes an account from the account database by user name.
+ *
+ * @since_tizen 2.3
+ * @privlevel  public
+ * @privilege  %http://tizen.org/privilege/account.read \n
+ *             %http://tizen.org/privilege/account.write
+ * @remarks    This API need both privileges \n
+ *             Only can delete accounts which were added by same package applications
+ * @param[in]  user_name     The user name of the account to delete
+ * @param[in]  package_name  The package name of the account to delete
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_OUT_OF_MEMORY      Out of Memory
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_DB_FAILED          Database operation failed
+ * @retval  #ACCOUNT_ERROR_PERMISSION_DENIED  DB Access fail by permission
+ * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
+ * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
+ *
+ * @pre  This function requires an open connection to an account service by account_connect() on tizen 2.3.\n
+ *       But the account_connect() is not required to use this function since tizen 2.4.
+ *
+ * @see account_insert_to_db()
+ * @see account_delete_from_db_by_id()
+ * @see account_delete_from_db_by_package_name()
+ * @see account_update_to_db_by_id()
+ * @see account_update_to_db_by_user_name()
+ */
+int account_delete_from_db_by_user_name(char *user_name, char *package_name);
+
+
+/**
+ * @brief  Deletes an account from the account database by package name.
+ *
+ * @since_tizen 2.3
+ * @privlevel  public
+ * @privilege  %http://tizen.org/privilege/account.read \n
+ *             %http://tizen.org/privilege/account.write
+ * @remarks    This API need both privileges \n
+ *             Only can delete accounts which was added by same package applications
+ * @param[in]  package_name  The package name of account(s) to delete
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_DB_FAILED          Database operation failed
+ * @retval  #ACCOUNT_ERROR_PERMISSION_DENIED  DB Access fail by permission
+ * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
+ * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
+ *
+ * @pre  This function requires an open connection to an account service by account_connect() on tizen 2.3.\n
+ *       But the account_connect() is not required to use this function since tizen 2.4.
+ *
+ * @see account_insert_to_db()
+ * @see account_delete_from_db_by_id()
+ * @see account_delete_from_db_by_user_name()
+ * @see account_update_to_db_by_id()
+ * @see account_update_to_db_by_user_name()
+ */
+int account_delete_from_db_by_package_name(const char *package_name);
+
+/**
+ * @brief  Updates the account details to the account database.
+ *
+ * @since_tizen 2.3
+ * @privlevel  public
+ * @privilege  %http://tizen.org/privilege/account.read \n
+ *             %http://tizen.org/privilege/account.write
+ * @remarks    This API need both privileges \n
+ *             Only can update an account which was added by same package applications
+ * @param[in]  account     The account handle
+ * @param[in]  account_id  The account ID to update
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_DB_FAILED          Database operation failed
+ * @retval  #ACCOUNT_ERROR_RECORD_NOT_FOUND   The account to update does not exist
+ * @retval  #ACCOUNT_ERROR_PERMISSION_DENIED  DB Access fail by permission
+ * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
+ * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
+ *
+ * @pre  This function requires an open connection to an account service by account_connect() on tizen 2.3.\n
+ *       But the account_connect() is not required to use this function since tizen 2.4.
+ *
+ * @see account_insert_to_db()
+ * @see account_delete_from_db_by_id()
+ * @see account_delete_from_db_by_user_name()
+ * @see account_delete_from_db_by_package_name()
+ * @see account_update_to_db_by_user_name()
+ */
+int account_update_to_db_by_id(account_h account, int account_id);
+
+/**
+ * @brief      Updates the account details to the account database.
+ *             The provider permission check has been added since tizen 2.4.
+ *
+ * @since_tizen 2.3
+ * @privlevel  public
+ * @privilege  %http://tizen.org/privilege/account.read \n
+ *             %http://tizen.org/privilege/account.write
+ * @remarks    This API need both privileges \n
+ *             Only can update an account which was added by same package applications
+ * @param[in]  account     The account handle
+ * @param[in]  account_id  The account ID to update
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_OUT_OF_MEMORY      Out of Memory
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_DB_FAILED          Database operation failed
+ * @retval  #ACCOUNT_ERROR_RECORD_NOT_FOUND   The account to update does not exist
+ * @retval  #ACCOUNT_ERROR_PERMISSION_DENIED  DB Access fail by permission
+ * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
+ * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
+ *
+ * @pre  This function requires an open connection to an account service by account_connect() on tizen 2.3.\n
+ *       But the account_connect() is not required to use this function since tizen 2.4.
+ *
+ * @see account_insert_to_db()
+ * @see account_delete_from_db_by_id()
+ * @see account_delete_from_db_by_user_name()
+ * @see account_delete_from_db_by_package_name()
+ * @see account_update_to_db_by_user_name()
+ */
+int account_update_to_db_by_id_ex(account_h account, int account_id);
+
+/**
+ * @brief  Updates the account details to the account database.
+ *
+ * @since_tizen 2.3
+ * @privlevel  public
+ * @privilege  %http://tizen.org/privilege/account.read \n
+ *             %http://tizen.org/privilege/account.write
+ * @remarks    This API need both privileges \n
+ *             Only can update accounts which were added by same package applications
+ * @param[in]  account       The account handle
+ * @param[in]  user_name     The user name of the account to update
+ * @param[in]  package_name  The package name for the user name
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_DB_FAILED          Database operation failed
+ * @retval  #ACCOUNT_ERROR_RECORD_NOT_FOUND   The account to update does not exist
+ * @retval  #ACCOUNT_ERROR_PERMISSION_DENIED  DB Access fail by permission
+ * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
+ * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
+ *
+ * @pre  This function requires an open connection to an account service by account_connect() on tizen 2.3.\n
+ *       But the account_connect() is not required to use this function since tizen 2.4.
+ *
+ * @see account_insert_to_db()
+ * @see account_delete_from_db_by_id()
+ * @see account_delete_from_db_by_user_name()
+ * @see account_delete_from_db_by_package_name()
+ * @see account_update_to_db_by_id()
+ *
+ */
+int account_update_to_db_by_user_name(account_h account, const char *user_name, const char *package_name);
+
+/**
+ * @brief  Gets the ID of an account.
+ *
+ * @since_tizen 2.3
+ * @param[in]   account     The account handle
+ * @param[out]  account_id  The account ID
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ */
+int account_get_account_id(account_h account, int *account_id);
+
+/**
+ * @brief  Gets the user name of an account.
+ *
+ * @since_tizen 2.3
+ * @remarks    You must release @a user_name using free().
+ *
+ * @param[in]   account    The account handle
+ * @param[out]  user_name  The user name of the account
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_OUT_OF_MEMORY      Out of memory
+ *
+ * @see account_set_user_name()
+ */
+int account_get_user_name(account_h account, char **user_name);
+
+
+/**
+ * @brief  Sets the user name of an account.
+ *
+ * @since_tizen 2.3
+ * @param[in]  account    The account handle
+ * @param[in]  user_name  The string to set as user name
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @see account_get_user_name()
+ */
+int account_set_user_name(account_h account, const char *user_name);
+
+
+/**
+ * @brief  Gets the display name of an account.
+ *
+ * @since_tizen 2.3
+ * @remarks    You must release @a display_name using free().
+ *
+ * @param[in]   account       The account handle
+ * @param[out]  display_name  The display name of the account
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_OUT_OF_MEMORY      Out of memory
+ *
+ * @see account_get_display_name()
+ */
+int account_get_display_name(account_h account, char **display_name);
+
+
+/**
+ * @brief  Sets the display name of an account.
+ *
+ * @since_tizen 2.3
+ * @param[in]  account      The account handle
+ * @param[in]  display_name The text string to set as the display name
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @see account_get_display_name()
+ */
+int account_set_display_name(account_h account, const char *display_name);
+
+/**
+ * @brief  Gets the capability detail of an account.
+ *
+ * @since_tizen 2.3
+ * @param[in]   account           The account handle
+ * @param[in]   capability_type   The capability type to get the capability value
+ * @param[out]  capability_value  The capability value (on/off) of the specified capability_type
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_RECORD_NOT_FOUND   There is no given capability_type in the account
+ *
+ * @see account_set_capability()
+ */
+int account_get_capability(account_h account, const char* capability_type, account_capability_state_e* capability_value);
+
+/**
+ * @brief  Gets all the capabilities of an account.
+ *
+ * @since_tizen 2.3
+ * @param[in]  account    The account handle
+ * @param[in]  callback   The callback function
+ * @param[in]  user_data  The user data to be passed to the callback function
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @see account_set_capability()
+ */
+int account_get_capability_all(account_h account, capability_cb callback, void *user_data);
+
+/**
+ * @brief  Sets the capability.
+ *
+ * @since_tizen 2.3
+ * @param[in]  account           The account handle
+ * @param[in]  capability_type   The capability type
+ * @param[in]  capability_state  The capability state
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @see account_get_capability()
+ */
+int account_set_capability(account_h account, const char* capability_type, account_capability_state_e capability_state);
+
+
+/**
+ * @brief  Gets the icon path.
+ *
+ * @since_tizen 2.3
+ * @remarks    You must release @a icon_path using free().
+ *
+ * @param[in]   account    The account handle
+ * @param[out]  icon_path  The icon path
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_OUT_OF_MEMORY      Out of memory
+ *
+ * @see account_set_icon_path()
+ */
+int account_get_icon_path(account_h account, char **icon_path);
+
+
+/**
+ * @brief  Sets the icon path.
+ *
+ * @since_tizen 2.3
+ * @param[in]  account    The account handle
+ * @param[in]  icon_path  The text string to set as the icon path
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @see account_get_icon_path()
+ */
+int account_set_icon_path(account_h account, const char *icon_path);
+
+
+/**
+ * @brief  Gets the domain name.
+ *
+ * @since_tizen 2.3
+ * @remarks    You must release @a domain_name using free().
+ *
+ * @param[in]   account      The account handle
+ * @param[out]  domain_name  The domain name
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_OUT_OF_MEMORY      Out of memory
+ *
+ * @see account_set_domain_name()
+ */
+int account_get_domain_name(account_h account, char **domain_name);
+
+
+/**
+ * @brief  Sets the domain name.
+ *
+ * @since_tizen 2.3
+ * @param[in]  account      The account handle
+ * @param[in]  domain_name  The text string to set as the domain name
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @see account_get_domain_name()
+ */
+int account_set_domain_name(account_h account, const char *domain_name);
+
+
+/**
+ * @brief  Gets the email address.
+ *
+ * @since_tizen 2.3
+ * @remarks    You must release @a email_address using free().
+ *
+ * @param[in]   account        The account handle
+ * @param[out]  email_address  The email address
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_OUT_OF_MEMORY      Out of memory
+ *
+ * @see account_set_email_address()
+ */
+int account_get_email_address(account_h account, char **email_address);
+
+
+/**
+ * @brief  Sets the email address.
+ *
+ * @since_tizen 2.3
+ * @param[in]  account        The account handle
+ * @param[in]  email_address  The text string to set as the email address
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @see account_get_email_address()
+ */
+int account_set_email_address(account_h account, const char *email_address);
+
+
+/**
+ * @brief  Gets the package name.
+ *
+ * @since_tizen 2.3
+ * @remarks    You must release @a package_name using free().
+ *
+ * @param[in]   account       The account handle
+ * @param[out]  package_name  The package name
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_OUT_OF_MEMORY      Out of memory
+ *
+ * @see account_set_package_name()
+ */
+int account_get_package_name(account_h account, char **package_name);
+
+
+/**
+ * @brief  Sets the package name.
+ *
+ * @since_tizen 2.3
+ * @param[in]  account       The account handle
+ * @param[in]  package_name  The text string to set as the package name
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @see account_get_email_address()
+ */
+int account_set_package_name(account_h account, const char *package_name);
+
+
+/**
+ * @brief  Gets the access token. Access token field is used to store account secrets (such as password or master token).
+ *
+ * @since_tizen 2.3
+ * @remarks    You must release @a access_token using free().
+ *
+ * @param[in]   account       The account handle
+ * @param[out]  access_token  The access token
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_OUT_OF_MEMORY      Out of memory
+ *
+ * @remarks Access token field is used for storing account secret (password / master token etc)
+ * Only account owner application can retrieve account password / access_token. For others this field will be null.
+ * @see account_set_access_token()
+ */
+int account_get_access_token(account_h account, char **access_token);
+
+
+/**
+ * @brief  Sets the access token. Access token field is used to store account secrets (such as password or master token).
+ *
+ * @since_tizen 2.3
+ * @param[in]  account       The account handle
+ * @param[in]  access_token  The text string to set as the access token
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @remarks Only account owner application can retrieve account password / access_token. For others this field will be null.
+ * @see account_get_access_token()
+ */
+int account_set_access_token(account_h account, const char *access_token);
+
+
+/**
+ * @brief  Gets the user text.
+ *
+ * @since_tizen 2.3
+ * @remarks    You must release @a user_text using free().
+ *
+ * @param[in]   account          The account handle
+ * @param[in]   user_text_index  The index of the user text (range: 0 ~ 4)
+ * @param[out]  user_text        The user text
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_OUT_OF_MEMORY      Out of memory
+ *
+ * @see account_set_user_text()
+ */
+int account_get_user_text(account_h account, int user_text_index, char **user_text);
+
+
+/**
+ * @brief  Sets the user text.
+ *
+ * @since_tizen 2.3
+ * @param[in]  account          The account handle
+ * @param[in]  user_text_index  The index of the user text (must be in range from @c 0 to @c 4)
+ * @param[in]  user_text        The text string to set as the user text
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @see account_get_user_text()
+ */
+int account_set_user_text(account_h account, int user_text_index, const char *user_text);
+
+
+/**
+ * @brief  Gets the user integer.
+ *
+ * @since_tizen 2.3
+ * @param[in]   account         The account handle
+ * @param[in]   user_int_index  The index of the user integer (must be in range from @c 0 to @c 4)
+ * @param[out]  user_integer    The user integer
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @see account_set_user_int()
+ */
+int account_get_user_int(account_h account, int user_int_index, int *user_integer);
+
+
+/**
+ * @brief  Sets the user integer.
+ *
+ * @since_tizen 2.3
+ * @param[in]  account         The account handle
+ * @param[in]  user_int_index  The index of the user integer (must be in range from @c 0 to @c 4)
+ * @param[in]  user_integer    The integer to set as the user integer
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @see account_get_user_int()
+ */
+int account_set_user_int(account_h account, int user_int_index, int user_integer);
+
+
+/**
+ * @brief  Gets the auth type.
+ *
+ * @since_tizen 2.3
+ * @param[in]   account    The account handle
+ * @param[out]  auth_type  The auth type
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @see account_set_auth_type()
+ */
+int account_get_auth_type(account_h account, account_auth_type_e *auth_type);
+
+
+/**
+ * @brief  Sets the auth type.
+ *
+ * @since_tizen 2.3
+  * @param[in]  account    The account handle
+ * @param[in]  auth_type  The integer to be set as the auth type
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @see account_get_auth_type()
+ */
+int account_set_auth_type(account_h account, const account_auth_type_e auth_type);
+
+
+/**
+ * @brief  Gets the secret.
+ *
+ * @since_tizen 2.3
+ * @param[in]   account  The account handle
+ * @param[out]  secret   The secret
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @see account_set_secret()
+ */
+int account_get_secret(account_h account, account_secrecy_state_e *secret);
+
+
+/**
+ * @brief  Sets the secret.
+ *
+ * @since_tizen 2.3
+ * @param[in]  account  The account handle
+ * @param[in]  secret   The secrecy to be set
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @see account_get_secret()
+ */
+int account_set_secret(account_h account, const account_secrecy_state_e secret);
+
+/**
+ * @brief  Gets the sync support.
+ *
+ * @since_tizen 2.3
+ * @param[in]   account       The account handle
+ * @param[out]  sync_support  The sync support
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @see account_set_sync_support()
+ */
+int account_get_sync_support(account_h account, account_sync_state_e *sync_support);
+
+
+/**
+ * @brief  Sets the sync support.
+ *
+ * @since_tizen 2.3
+ * @param[in]  account       The account handle
+ * @param[in]  sync_support  The sync state to be set
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @see account_get_sync_support()
+ */
+int account_set_sync_support(account_h account, const account_sync_state_e sync_support);
+
+
+/**
+ * @brief  Gets the source.
+ *
+ * @since_tizen 2.3
+ * @remarks    You must release @a user_text using free().
+ *
+ * @param[in]   account  The account handle
+ * @param[out]  source   The source
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_OUT_OF_MEMORY      Out of memory
+ *
+ * @see account_set_source()
+ */
+int account_get_source(account_h account, char **source);
+
+
+/**
+ * @brief  Sets the source.
+ *
+ * @since_tizen 2.3
+ * @param[in]  account  The account handle
+ * @param[in]  source   The text string to set as the source
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @see account_get_source()
+ */
+int account_set_source(account_h account, const char *source);
+
+/**
+ * @brief  Sets the custom.
+ *
+ * @since_tizen 2.3
+ * @param[in]  account  The account handle
+ * @param[in]  key      The user custom key for the specific value
+ * @param[in]  value    The user custom value about the given key
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @see account_get_custom()
+ */
+int account_set_custom(account_h account, const char* key, const char* value);
+
+/**
+ * @brief  Gets the user specific custom text of an account key.
+ *
+ * @since_tizen 2.3
+ * @param[in]   account   The account handle
+ * @param[in]   key       The key to retrieve custom text
+ * @param[out]  value     The text of the given key
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_RECORD_NOT_FOUND   There is no given capability type in the account
+ *
+ * @see account_set_custom()
+ */
+int account_get_custom(account_h account, const char* key, char** value);
+
+
+/**
+ * @brief  Gets all the user custom texts of an account.
+ *
+ * @since_tizen 2.3
+ * @param[in]  account    The account handle
+ * @param[in]  callback   The callback function to retrieve all custom text \n
+ *                        The callback function gives the key and value.
+ * @param[in]  user_data  The user data to be passed to the callback function
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @see account_set_custom()
+ */
+int account_get_custom_all(account_h account, account_custom_cb callback, void* user_data);
+
+/**
+ * @brief  Retrieves all accounts details by invoking the given callback function iteratively.
+ *
+ * @since_tizen 2.3
+ * @privlevel   public
+ * @privilege   %http://tizen.org/privilege/account.read
+ * @param[in]   callback   The callback function to invoke
+ * @param[in]   user_data  The user data to be passed to the callback function
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_DB_FAILED          Database operation failed
+ * @retval  #ACCOUNT_ERROR_PERMISSION_DENIED  DB Access fail by permission
+ * @retval  #ACCOUNT_ERROR_RECORD_NOT_FOUND   Related record does not exist
+ * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
+ * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
+ *
+ * @pre   This function requires an open connection to an account service by account_connect() on tizen 2.3.\n
+ *        But the account_connect() is not required to use this function since tizen 2.4.
+ * @post  This function invokes account_cb().
+ *
+ * @see account_query_account_by_account_id()
+ * @see account_query_account_by_user_name()
+ * @see account_query_account_by_package_name()
+ * @see account_query_account_by_capability()
+ */
+int account_foreach_account_from_db(account_cb callback, void *user_data);
+
+
+/**
+ * @brief  Retrieve an account with the account ID.
+ *
+ * @since_tizen 2.3
+ * @privlevel   public
+ * @privilege   %http://tizen.org/privilege/account.read
+ * @param[in]   account_db_id  The account database ID to search
+ * @param[out]  account        The account handle \n
+ *                             Must be allocated by account_create() and freed after using by account_destroy().
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_OUT_OF_MEMORY      Out of Memory
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_DB_FAILED          Database operation failed
+ * @retval  #ACCOUNT_ERROR_PERMISSION_DENIED  DB Access fail by permission
+ * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
+ * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
+ *
+ * @pre  This function requires an open connection to an account service by account_connect() on tizen 2.3.\n
+ *       But the account_connect() is not required to use this function since tizen 2.4.
+ *
+ * @see account_query_account_by_user_name()
+ * @see account_query_account_by_package_name()
+ * @see account_query_account_by_capability()
+ */
+int account_query_account_by_account_id(int account_db_id, account_h *account);
+
+/**
+ * @brief  Retrieves all accounts with the user name.
+ *
+ * @since_tizen 2.3
+ * @privlevel   public
+ * @privilege   %http://tizen.org/privilege/account.read
+ * @param[in]   callback   The callback function to invoke
+ * @param[in]   user_name  The user name to search
+ * @param[in]   user_data  The user data to be passed to the callback function
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_OUT_OF_MEMORY      Out of Memory
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_DB_FAILED          Database operation failed
+ * @retval  #ACCOUNT_ERROR_PERMISSION_DENIED  DB Access fail by permission
+ * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
+ * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
+ *
+ * @pre   This function requires an open connection to an account service by account_connect() on tizen 2.3.\n
+ *        But the account_connect() is not required to use this function since tizen 2.4.
+ * @post  This function invokes account_cb().
+ *
+ * @see account_foreach_account_from_db()
+ * @see account_query_account_by_account_id()
+ * @see account_query_account_by_package_name()
+ * @see account_query_account_by_capability()
+ *
+ */
+int account_query_account_by_user_name(account_cb callback, const char* user_name, void* user_data);
+
+/**
+ * @brief  Retrieves all accounts with the package name.
+ *
+ * @since_tizen 2.3
+ * @privlevel  public
+ * @privilege  %http://tizen.org/privilege/account.read
+ * @param[in]  callback      The callback function to invoke
+ * @param[in]  package_name  The package name to search
+ * @param[in]  user_data     The user data to be passed to the callback function
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_OUT_OF_MEMORY      Out of Memory
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_DB_FAILED          Database operation failed
+ * @retval  #ACCOUNT_ERROR_PERMISSION_DENIED  DB Access fail by permission
+ * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
+ * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
+ *
+ * @pre   This function requires an open connection to an account service by account_connect() on tizen 2.3.\n
+ *        But the account_connect() is not required to use this function since tizen 2.4.
+ * @post  This function invokes account_cb().
+ *
+ * @see account_foreach_account_from_db()
+ * @see account_query_account_by_account_id()
+ * @see account_query_account_by_user_name()
+ * @see account_query_account_by_capability()
+ */
+int account_query_account_by_package_name(account_cb callback, const char *package_name, void *user_data);
+
+/**
+ * @brief  Retrieves all accounts with the capability type and capability value.
+ *
+ * @since_tizen 2.3
+ * @privlevel   public
+ * @privilege   %http://tizen.org/privilege/account.read
+ * @param[in]   callback          The callback function to invoke
+ * @param[in]   capability_type   The capability type to search
+ * @param[in]   capability_value  The capability value to search
+ * @param[in]   user_data         The user data to be passed to the callback function
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_OUT_OF_MEMORY      Out of Memory
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_DB_FAILED          Database operation failed
+ * @retval  #ACCOUNT_ERROR_PERMISSION_DENIED  DB Access fail by permission
+ * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
+ * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
+ *
+ * @pre   This function requires an open connection to an account service by account_connect() on tizen 2.3.\n
+ *        But the account_connect() is not required to use this function since tizen 2.4.
+ * @post  This function invokes account_cb().
+ *
+ * @see account_foreach_account_from_db()
+ * @see account_query_account_by_account_id()
+ * @see account_query_account_by_user_name()
+ * @see account_query_account_by_package_name()
+ */
+int account_query_account_by_capability(account_cb callback, const char* capability_type, account_capability_state_e capability_value, void *user_data);
+
+/**
+ * @brief  Retrieves all accounts with the capability type.
+ *
+ * @since_tizen 2.3
+ * @privlevel   public
+ * @privilege   %http://tizen.org/privilege/account.read
+ * @param[in]   callback         The callback function to invoke
+ * @param[in]   capability_type  The capability type to search
+ * @param[in]   user_data        The user data to be passed to the callback function
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_OUT_OF_MEMORY      Out of Memory
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_DB_FAILED          Database operation failed
+ * @retval  #ACCOUNT_ERROR_PERMISSION_DENIED  DB Access fail by permission
+ * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
+ * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
+ *
+ * @pre   This function requires an open connection to an account service by account_connect() on tizen 2.3.\n
+ *        But the account_connect() is not required to use this function since tizen 2.4.
+ * @post  This function invokes account_cb().
+ *
+ * @see account_foreach_account_from_db()
+ * @see account_query_account_by_account_id()
+ * @see account_query_account_by_user_name()
+ * @see account_query_account_by_package_name()
+ */
+int account_query_account_by_capability_type(account_cb callback, const char* capability_type, void* user_data);
+
+/**
+ * @brief  Retrieves all capabilities with the account database ID.
+ *
+ * @since_tizen 2.3
+ * @privlevel   public
+ * @privilege   %http://tizen.org/privilege/account.read
+ * @param[in]   callback       The callback function to invoke
+ * @param[in]   account_db_id  The account database ID to search
+ * @param[in]   user_data      The user data to be passed to the callback function
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_OUT_OF_MEMORY      Out of Memory
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_DB_FAILED          Database operation failed
+ * @retval  #ACCOUNT_ERROR_PERMISSION_DENIED  DB Access fail by permission
+ * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
+ * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
+ *
+ * @pre   This function requires an open connection to an account service by account_connect() on tizen 2.3.\n
+ *        But the account_connect() is not required to use this function since tizen 2.4.
+ * @post  This function invokes capability_cb().
+ *
+ * @see account_get_capability()
+ * @see account_set_capability()
+ */
+int account_query_capability_by_account_id(capability_cb callback, int account_db_id, void *user_data);
+
+
+/**
+ * @brief  Gets the count of accounts in the account database.
+ *
+ * @since_tizen 2.3
+ * @privlevel   public
+ * @privilege   %http://tizen.org/privilege/account.read
+ * @param[out]  count  The out parameter for count of all accounts
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_DB_FAILED          Database operation failed
+ * @retval  #ACCOUNT_ERROR_PERMISSION_DENIED  DB Access fail by permission
+ * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
+ * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
+ *
+ * @pre  This function requires an open connection to an account service by account_connect() on tizen 2.3.\n
+ *       But the account_connect() is not required to use this function since tizen 2.4.
+ */
+int account_get_total_count_from_db(int *count);
+
+/**
+ * @brief  Updates the sync status of an account with the given account ID.
+ *
+ * @since_tizen 2.3
+ * @privlevel   public
+ * @privilege   %http://tizen.org/privilege/account.read \n
+ *              %http://tizen.org/privilege/account.write
+ * @remarks     This API need both privileges \n
+ *              Only can update an account which was added by same package applications
+ * @param[in]   account_db_id  The account ID for which sync status needs to be changed
+ * @param[in]   sync_status    The new sync status
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_OUT_OF_MEMORY      Out of Memory
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_DB_FAILED          Database operation failed
+ * @retval  #ACCOUNT_ERROR_PERMISSION_DENIED  DB Access fail by permission
+ * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
+ * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
+ *
+ * @pre  This function requires an open connection to an account service by account_connect() on tizen 2.3.\n
+ *       But the account_connect() is not required to use this function since tizen 2.4.
+ */
+int account_update_sync_status_by_id(int account_db_id, const account_sync_state_e sync_status);
+
+
+/* Account type API */
+
+
+/**
+ * @brief  Creates a handle to the account provider.
+ *
+ * @since_tizen 2.3
+ * @remarks     You must release @a account_type handle using account_type_destroy().\n
+ *
+ * @param[in]  account_type  The account provider handle
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_OUT_OF_MEMORY      Out of Memory
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @see account_type_destroy()
+ */
+int account_type_create(account_type_h *account_type);
+
+/**
+ * @brief  Destroys the account provider handle and releases all its resources.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks    When you get @a account_type_h using account_type_create(), you must release the handle using account_destroy() to avoid the memory leak.
+ *
+ * @param[in]  account_type  The account provider handle
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @see account_type_create()
+ */
+int account_type_destroy(account_type_h account_type);
+
+/**
+ * @brief  Retrieves capability information with your application ID.
+ *
+ * @since_tizen 2.3
+ * @privlevel   public
+ * @privilege   %http://tizen.org/privilege/account.read
+ * @param[in]   callback   The callback function carries the capability name of an app ID
+ * @param[in]   app_id     The application ID to search
+ * @param[in]   user_data  The user data \n
+ *                         If you have your private data to carry into callback function, then you can use it.
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_DB_FAILED          Database operation failed
+ * @retval  #ACCOUNT_ERROR_PERMISSION_DENIED  DB Access fail by permission
+ * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
+ * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
+ *
+ * @pre  This function requires an open connection to an account service by account_connect() on tizen 2.3.\n
+ *       But the account_connect() is not required to use this function since tizen 2.4.
+ */
+int account_type_query_provider_feature_by_app_id(provider_feature_cb callback, const char* app_id, void *user_data );
+
+/**
+ * @brief   Checks whether the given application ID supports the capability.
+ *
+ * @since_tizen 2.3
+ * @privlevel   public
+ * @privilege   %http://tizen.org/privilege/account.read
+ * @remarks     The specific error code can be obtained using the get_last_result() method. Error codes are described in Exception section.
+ * @param[in]   app_id      The application ID
+ * @param[in]   capability  The capability \n
+ *                          For example, ACCOUNT_SUPPORTS_CAPABILITY_CONTACT or "http://tizen.org/account/capability/contact"
+ *
+ * @return  @c TRUE if the application supports the given capability, \n
+ *          otherwise @c FALSE if the application does not support the given capability
+ * @retval  @c TRUE means the application supports the given capability
+ * @retval  @c FALSE means the application does not support the given capability
+ * @exception #ACCOUNT_ERROR_NONE               Successful
+ * @exception #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @exception #ACCOUNT_ERROR_RECORD_NOT_FOUND   Related record does not exist
+ * @excaption #ACCOUNT_ERROR_DB_FAILED          Database operation failed
+ * @exception #ACCOUNT_ERROR_PERMISSION_DENIED  DB access fail by permission
+ * @excaption #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
+ * @excaption #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
+ *
+ * @pre  This function requires an open connection to an account service by account_connect() on tizen 2.3.\n
+ *       But the account_connect() is not required to use this function since tizen 2.4.
+ */
+bool account_type_query_supported_feature(const char* app_id, const char* capability);
+
+/**
+ * @brief  Gets the application ID of an account provider.
+ *
+ * @since_tizen 2.3
+ * @remarks     You must release @a app_id using free().
+ *
+ * @param[in]   account_type  The account provider handle \n
+ *                            It should be given by account_type_query_* functions or account_type_foreach_account_type_from_db().
+ * @param[out]  app_id        The application ID of an account provider item
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_OUT_OF_MEMORY      Out of memory
+ *
+ * @see account_type_foreach_account_type_from_db()
+ * @see account_type_query_by_app_id()
+ */
+int account_type_get_app_id(account_type_h account_type, char **app_id);
+
+/**
+ * @brief  Gets the service provider ID of an account provider.
+ *
+ * @since_tizen 2.3
+ * @remarks     You must release @a service_provider_id using free().
+ *
+ * @param[in]   account_type         The account provider handle \n
+ *                                   It should be given by account_type_query_* functions or account_type_foreach_account_type_from_db().
+ * @param[out]  service_provider_id  The service provider text ID of an account provider item
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_OUT_OF_MEMORY      Out of memory
+ *
+ * @see account_type_foreach_account_type_from_db()
+ * @see account_type_query_by_app_id()
+ */
+int account_type_get_service_provider_id(account_type_h account_type, char **service_provider_id);
+
+/**
+ * @brief  Gets the icon path of an account provider.
+ *
+ * @since_tizen 2.3
+ * @remarks     You must release @a icon_path using free().
+ *
+ * @param[in]   account_type  The account provider handle \n
+ *                            It should be given by account_type_query_* functions or account_type_foreach_account_type_from_db().
+ * @param[out]  icon_path     The icon path of the account provider item
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_OUT_OF_MEMORY      Out of memory
+ *
+ * @see account_type_foreach_account_type_from_db()
+ * @see account_type_query_by_app_id()
+ */
+int account_type_get_icon_path(account_type_h account_type, char **icon_path);
+
+/**
+ * @brief  Gets the small icon path of an account provider.
+ *
+ * @since_tizen 2.3
+ * @remarks    You must release @a small_icon_path using free().
+ *
+ * @param[in]   account_type     The account provider handle\n
+ *                               It should be given by account_type_query_* functions or account_type_foreach_account_type_from_db().
+ * @param[out]  small_icon_path  The small icon path of the account provider item
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_OUT_OF_MEMORY      Out of memory
+ *
+ * @see account_type_foreach_account_type_from_db()
+ * @see account_type_query_by_app_id()
+ */
+int account_type_get_small_icon_path(account_type_h account_type, char **small_icon_path);
+
+/**
+ * @brief  Checks whether the given account provider supports multiple accounts.
+ *
+ * @since_tizen 2.3
+ * @param[in]   account_type              The account provider handle \n
+ *                                        It should be given by account_type_query_* functions or account_type_foreach_account_type_from_db.
+ * @param[out]  multiple_account_support  The flag indicating support for multiple accounts accounts\n
+ *                                        TRUE or FALSE.
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_OUT_OF_MEMORY      Out of memory
+ *
+ * @see account_type_foreach_account_type_from_db()
+ * @see account_type_query_by_app_id()
+ */
+int account_type_get_multiple_account_support(account_type_h account_type, int *multiple_account_support);
+
+/**
+ * @brief  Gets capability information with the given account provider handle.
+ *
+ * @since_tizen 2.3
+ * @param[in]   account_type  The account provider handle\n
+ *                            It should be given by account_type_query_* functions or account_type_foreach_account_type_from_db().
+ * @param[in]   callback      The callback function that carries the capability name of the app ID
+ * @param[in]   user_data     The user data \n
+ *                            If you have your private data to carry into callback function, then you can use it.
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_DB_FAILED          Database operation failed
+ *
+ * @pre  This function requires an open connection to an account service by account_connect() on tizen 2.3.\n
+ *       But the account_connect() is not required to use this function since tizen 2.4.
+ */
+int account_type_get_provider_feature_all(account_type_h account_type, provider_feature_cb callback, void* user_data);
+
+/**
+ * @brief  Gets the specific label information detail of an account provider.
+ *
+ * @since_tizen 2.3
+ * @param[in]   account_type The account provider handle\n
+ *                           It should be given by account_type_query_* functions or account_type_foreach_account_type_from_db().
+ * @param[in]   locale       The locale is specified as an ISO 3166 alpha-2 two letter country-code followed by ISO 639-1 for the two-letter language code.\n
+ *                           For example, "ko_KR" or "ko-kr" for Korean, "en_US" or "en-us" for American English.
+ * @param[out]  label        The label text given for the locale
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_RECORD_NOT_FOUND   No label for the given locale
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @see account_type_foreach_account_type_from_db()
+ * @see account_type_query_by_app_id()
+ */
+
+int account_type_get_label_by_locale(account_type_h account_type, const char* locale, char** label);
+
+/**
+ * @brief  Gets the label information detail of an account provider.
+ *
+ * @since_tizen 2.3
+ * @param[in]   account_type  The account provider handle\n
+ *                            It should be given by account_type_query_* functions or account_type_foreach_account_type_from_db().
+ * @param[in]   callback      The callback function carrying the label information
+ * @param[in]   user_data     The user data to be passed to the callback function
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @see account_type_foreach_account_type_from_db()
+ * @see account_type_query_by_app_id()
+ */
+int account_type_get_label(account_type_h account_type, account_label_cb callback, void *user_data);
+
+/**
+ * @brief  Retrieves the label information with your application ID.
+ *
+ * @since_tizen 2.3
+ * @privlevel   public
+ * @privilege   %http://tizen.org/privilege/account.read
+ * @param[in]   callback    The callback function that carries label_h for label information \n
+ *                         label_h contains label info as parameter.
+ * @param[in]   app_id     The application ID to search
+ * @param[in]   user_data  The user data \n
+ *                         If you have your private data to carry into callback function, then you can use it.
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_DB_FAILED          Database operation failed
+ * @retval  #ACCOUNT_ERROR_PERMISSION_DENIED  DB Access fail by permission
+ * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
+ * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
+ *
+ * @pre  This function requires an open connection to an account service by account_connect() on tizen 2.3.\n
+ *       But the account_connect() is not required to use this function since tizen 2.4.
+ *
+ * @see account_type_query_by_app_id()
+ * @see account_type_foreach_account_type_from_db()
+ */
+int account_type_query_label_by_app_id(account_label_cb callback, const char* app_id, void *user_data );
+
+/**
+ * @brief  Retrieves the account provider information with your application ID.
+ *
+ * @since_tizen 2.3
+ * @privlevel   public
+ * @privilege   %http://tizen.org/privilege/account.read
+ * @param[in]   app_id        The application ID to search
+ * @param[out]  account_type  The account handle which is created by account_type_create()
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_DB_FAILED          Database operation failed
+ * @retval  #ACCOUNT_ERROR_RECORD_NOT_FOUND   Queried data does not exist
+ * @retval  #ACCOUNT_ERROR_PERMISSION_DENIED  DB Access fail by permission
+ * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
+ * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
+ *
+ * @pre  This function requires an open connection to an account service by account_connect() on tizen 2.3.\n
+ *       But the account_connect() is not required to use this function since tizen 2.4.
+ *
+ * @see account_type_create()
+ * @see account_type_get_app_id()
+ * @see account_type_get_service_provider_id()
+ * @see account_type_get_icon_path()
+ * @see account_type_get_small_icon_path()
+ * @see account_type_get_multiple_account_support()
+ * @see account_type_get_label()
+ * @see account_type_destroy()
+ */
+int account_type_query_by_app_id(const char* app_id, account_type_h *account_type);
+
+/**
+ * @brief  Retrieves all account priovider information.
+ *
+ * @since_tizen 2.3
+ * @privlevel   public
+ * @privilege   %http://tizen.org/privilege/account.read
+ * @param[in]   callback   The account provider information \n
+ *                         You can get the account information through account_type_get_* with the carried account_type_handle.
+ * @param[in]   user_data  The user data \n
+ *                         It will be carried through your callback function.
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_DB_FAILED          Database operation failed
+ * @retval  #ACCOUNT_ERROR_PERMISSION_DENIED  DB Access fail by permission
+ * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
+ * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
+ *
+ * @pre  This function requires an open connection to an account service by account_connect() on tizen 2.3.\n
+ *       But the account_connect() is not required to use this function since tizen 2.4.
+ *
+ * @see account_type_create()
+ * @see account_type_get_app_id()
+ * @see account_type_get_service_provider_id()
+ * @see account_type_get_icon_path()
+ * @see account_type_get_small_icon_path()
+ * @see account_type_get_multiple_account_support()
+ * @see account_type_get_label()
+ * @see account_type_destroy()
+ */
+int account_type_foreach_account_type_from_db(account_type_cb callback, void *user_data);
+
+/**
+ * @brief  Retrieves the label information with the given application ID and locale.
+ *
+ * @since_tizen 2.3
+ * @privlevel   public
+ * @privilege   %http://tizen.org/privilege/account.read
+ * @param[in]   app_id  The application ID
+ * @param[in]   locale  The locale is specified as an ISO 3166 alpha-2 two letter country-code followed by ISO 639-1 for the two-letter language code.\n
+ *                      For example, "ko_KR" or "ko-kr" for Korean, "en_US" or "en-us" for American English.
+ * @param[out]  label   The label text corresponding app_id and locale \n
+ *                      It must be free text.
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_DB_FAILED          Database operation failed
+ * @retval  #ACCOUNT_ERROR_PERMISSION_DENIED  DB Access fail by permission
+ * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
+ * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
+ *
+ * @pre  This function requires an open connection to an account service by account_connect() on tizen 2.3.\n
+ *       But the account_connect() is not required to use this function since tizen 2.4.
+ */
+int account_type_query_label_by_locale(const char* app_id, const char* locale, char** label);
+
+/**
+ * @brief  Retrieves account provider information with the capability name.
+ *
+ * @since_tizen 2.3
+ * @privlevel   public
+ * @privilege   %http://tizen.org/privilege/account.read
+ * @param[in]   callback        The callback function to retrieve account provider information
+ * @param[in]   key             The capability value to search account provider \n
+ *                              For example, ACCOUNT_SUPPORTS_CAPABILITY_CONTACT or "http://tizen.org/account/capability/contact"
+ * @param[in]  user_data        If you have your private data to carry into callback function, then you can use it
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_RECORD_NOT_FOUND   Record not found
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_DB_FAILED          Database operation failed
+ * @retval  #ACCOUNT_ERROR_PERMISSION_DENIED DB Access fail by permission
+ * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
+ * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
+ *
+ * @pre  This function requires an open connection to an account service by account_connect() on tizen 2.3.\n
+ *       But the account_connect() is not required to use this function since tizen 2.4.
+ */
+int account_type_query_by_provider_feature(account_type_cb callback, const char* key, void* user_data);
+
+/**
+ * @brief  Checks whether the given app_id exists in the account provider DB.
+ *
+ * @since_tizen 2.3
+ * @privlevel   public
+ * @privilege   %http://tizen.org/privilege/account.read
+ * @param[in]   app_id  The application ID to check
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_RECORD_NOT_FOUND   Record not found
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid app ID
+ * @retval  #ACCOUNT_ERROR_DB_FAILED          Database operation failed
+ * @retval  #ACCOUNT_ERROR_PERMISSION_DENIED  DB Access fail by permission
+ * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
+ * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
+ *
+ * @pre  This function requires an open connection to an account service by account_connect() on tizen 2.3.\n
+ *       But the account_connect() is not required to use this function since tizen 2.4.
+ *
+ * @see account_type_query_by_app_id()
+ */
+int account_type_query_app_id_exist(const char* app_id);
+
+
+
+/* End of account provider API  */
+
+/**
+ * @brief  Creates a handle for the account event subscription.
+ *
+ * @since_tizen 2.3
+ * @remarks     You must release @a account_subscribe handle using account_unsubscribe_notification().
+ *
+ * @param[in]   account_subscribe  The account subscription handle
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_OUT_OF_MEMORY      Out of Memory
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @see account_unsubscribe_notification()
+ * @see account_subscribe_notification()
+ */
+int account_subscribe_create(account_subscribe_h* account_subscribe);
+
+/**
+ * @brief  Starts to subscribe account event through the given callback function.
+ *
+ * @since_tizen 2.3
+ * @privlevel   public
+ * @privilege   %http://tizen.org/privilege/account.read \n
+ * @param[in]   account_subscribe  The account subscription handle
+ * @param[in]   callback           The callback function that is called when an account is removed and a data of account is updated from the account database \n
+ *                                 It will be called with event message and account ID.
+ * @param[in]   user_data          The user_data that is delivered to callback
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE                     Successful
+ * @retval  #ACCOUNT_ERROR_EVENT_SUBSCRIPTION_FAIL  Subscription fail
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER        Invalid parameter
+ *
+ * @pre account_subscribe_create()
+ *
+ * @see account_unsubscribe_notification()
+ * @see account_subscribe_notification()
+ */
+int account_subscribe_notification(account_subscribe_h account_subscribe, account_event_cb callback, void* user_data);
+
+/**
+ * @brief  Destroys the account subscribe handle and releases all its resources.
+ *
+ * @since_tizen 2.3
+ * @privlevel   public
+ * @privilege   %http://tizen.org/privilege/account.read \n
+ * @remarks     You must call @a account_unsubscribe_notification when you do not need to subscribe account event.
+ *
+ * @param[in]   account_subscribe  The account subscription handle
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE                     Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER        Invalid parameter
+ * @retval  #ACCOUNT_ERROR_EVENT_SUBSCRIPTION_FAIL  Unsubscription failed
+ *
+ * @see account_create()
+ */
+int account_unsubscribe_notification(account_subscribe_h account_subscribe);
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif //__ACCOUNT_H_
diff --git a/include/wearable/account.h b/include/wearable/account.h
new file mode 100644 (file)
index 0000000..cb92acc
--- /dev/null
@@ -0,0 +1,1746 @@
+/*
+ *
+ * Copyright (c) 2012 - 2013 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef __ACCOUNT_H__
+#define __ACCOUNT_H__
+
+#include <account-types.h>
+#include <account-error.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#ifndef ACCOUNT_API
+#define ACCOUNT_API __attribute__ ((visibility("default")))
+#endif
+
+/**
+ * @file        account.h
+ * @brief       This file contains the Account API for account management.
+ */
+
+/**
+ * @addtogroup CAPI_ACCOUNT_MANAGER_MODULE
+ * @{
+ */
+
+/**
+ * @brief   Called once for each account from the database.
+ *
+ * @since_tizen 2.4
+ * @param[in]  account    The account handle
+ * @param[in]  user_data  The user data passed from the foreach function
+ *
+ * @return     @c true to continue with the next iteration of the loop, \n
+ *             otherwise @c false to break out of the loop
+ *
+ * @pre account_foreach_account_from_db(), account_query_account_by_account_id(), account_query_account_by_user_name() or account_query_account_by_package_name() must be called.
+ *
+ * @see account_foreach_account_from_db()
+ * @see account_query_account_by_account_id()
+ * @see account_query_account_by_user_name()
+ * @see account_query_account_by_package_name()
+ */
+typedef bool (*account_cb)(account_h account, void *user_data);
+
+/**
+ * @brief  Called once for each capability of an account in the database.
+ *
+ * @since_tizen 2.4
+ * @param[in]   capability_type  The capability type
+ * @param[in]   capability_state The capability state
+ * @param[in]   user_data        The user data passed from the foreach function
+ *
+ * @return      @c true to continue with the next iteration of the loop, \n
+ *              otherwise @c false to break out of the loop
+ *
+ * @pre account_query_capability_by_account_id() must be called.
+ *
+ * @see account_query_capability_by_account_id()
+ */
+typedef bool (*capability_cb)(const char* capability_type, account_capability_state_e capability_state, void *user_data);
+
+/**
+ * @brief  Called once for each custom data of an account in the database.
+ *
+ * @since_tizen 2.4
+ * @param[in]  key        The user custom key
+ * @param[in]  value      The user custom value of the specific key
+ * @param[in]  user_data  The user data passed
+ *
+ * @return     @c true to continue with the next iteration of the loop, \n
+ *             otherwise @c false to break out of the loop
+ *
+ * @pre account_query_capability_by_account_id() must be called.
+ *
+ * @see account_query_capability_by_account_id()
+ */
+typedef bool (*account_custom_cb)(char* key, char* value, void *user_data);
+
+
+/**
+ * @brief  Called once for each account provider in the database.
+ *
+ * @since_tizen 2.4
+ * @param[in]  account_type  The account provider handle
+ * @param[in]  user_data     The user data passed
+ *
+ * @return     @c true to continue with the next iteration of the loop, \n
+ *             otherwise @c false to break out of the loop
+ *
+ * @pre account_type_foreach_account_type_from_db(), account_type_query_by_provider_feature() must be called.
+ *
+ * @see account_type_foreach_account_type_from_db()
+ * @see account_type_query_by_provider_feature()
+ */
+typedef bool (*account_type_cb)(account_type_h account_type, void *user_data);
+
+
+/**
+ * @brief  Called once for each account label.
+ *
+ * @since_tizen 2.4
+ * @param[in]  app_id     The application ID
+ * @param[in]  label      The name of the account depends on the specified locale
+ * @param[in]  locale     The locale is specified as an ISO 3166 alpha-2 two letter country-code followed by ISO 639-1 for the two-letter language code.\n
+ *                        For example, "ko_KR" for Korean, "en_US" for American English.
+ * @param[in]  user_data  The user data passed
+ *
+ * @return     @c true to continue with the next iteration of the loop, \n
+ *             otherwise @c false to break out of the loop
+ *
+ * @pre account_type_get_label(), account_type_query_label_by_app_id() must be called.
+ *
+ * @see account_type_get_label()
+ * @see account_type_query_label_by_app_id()
+ */
+typedef bool (*account_label_cb)(char* app_id, char* label, char* locale, void *user_data);
+
+
+/**
+ * @brief  Called once for each capability of an account provider in the database.
+ *
+ * @since_tizen 2.4
+ * @param[in]  app_id     The application ID
+ * @param[in]  key        The user custom key
+ * @param[in]  user_data  The user data passed
+ *
+ * @return     @c true to continue with the next iteration of the loop, \n
+ *             otherwise @c false to break out of the loop
+ *
+ * @pre account_type_query_provider_feature_by_app_id(), account_type_get_provider_feature_all() must be called.
+ *
+ * @see account_type_query_provider_feature_by_app_id()
+ * @see account_type_get_provider_feature_all()
+ */
+typedef bool (*provider_feature_cb)(char* app_id, char* key, void* user_data);
+
+
+/**
+ * @brief Called once when an event occurs.
+ *
+ * @since_tizen 2.4
+ * @param[in]  event_type  The account event type
+ * @param[in]  account_id  The account ID to update
+ * @param[in]  user_data   The user data passed
+ *
+ * @return     @c true to continue with the next iteration of the loop, \n
+ *             otherwise @c false to break out of the loop
+ *
+ * @pre account_subscribe_notification() must be called.
+ *
+ * @see account_subscribe_notification()
+ */
+typedef bool (*account_event_cb)(const char* event_type, int account_id, void* user_data);
+
+/**
+ * @brief  Creates a handle to the account.
+ *
+ * @since_tizen 2.4
+ * @remarks    Release @a account using account_destroy().
+ * @remarks    The created handle is not added to the account database until account_insert_to_db() is called.
+ *
+ * @param[in]  account  The account handle
+ *
+ * @return     @c 0 on success,
+ *             otherwise a negative error value
+ * @retval     #ACCOUNT_ERROR_NONE               Successful
+ * @retval     #ACCOUNT_ERROR_OUT_OF_MEMORY      Out of Memory
+ * @retval     #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @see account_destroy()
+ */
+int account_create(account_h *account);
+
+
+/**
+ * @brief  Destroys the account handle and releases all its resources.
+ *
+ * @since_tizen 2.4
+ * @param[in]  account  The account handle
+ *
+ * @return     @c 0 on success,
+ *             otherwise a negative error value
+ * @retval     #ACCOUNT_ERROR_NONE               Successful
+ * @retval     #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @see account_create()
+ */
+int account_destroy(account_h account);
+
+
+/**
+ * @brief  Inserts the account details to the account database.
+ *
+ * @since_tizen 2.4
+ * @privlevel   public
+ * @privilege   %http://tizen.org/privilege/account.read \n
+ *              %http://tizen.org/privilege/account.write
+ * @remarks     This API need both privileges
+ * @param[in]   account        The account handle
+ * @param[out]  account_db_id  The account ID to be assigned to an account
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER        Invalid parameter
+ * @retval  #ACCOUNT_ERROR_OUT_OF_MEMORY            Out of Memory
+ * @retval  #ACCOUNT_ERROR_DB_FAILED                Database operation failed
+ * @retval  #ACCOUNT_ERROR_DUPLICATED               Same user name exists in your application
+ * @retval  #ACCOUNT_ERROR_NOT_ALLOW_MULTIPLE       Tried to add an account in spite of multiple false accounts
+ * @retval  #ACCOUNT_ERROR_NOT_REGISTERED_PROVIDER  Tried to add an account though you did not register the account type in manifest
+ * @retval  #ACCOUNT_ERROR_PERMISSION_DENIED        DB Access fail by permission
+ * @retval  #ACCOUNT_ERROR_DATABASE_BUSY            SQLite handler is busy
+ * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED            Account database did not opened
+ *
+ * @see account_delete_from_db_by_id()
+ * @see account_delete_from_db_by_user_name()
+ * @see account_delete_from_db_by_package_name()
+ * @see account_update_to_db_by_id()
+ * @see account_update_to_db_by_user_name()
+ */
+int account_insert_to_db(account_h account, int *account_db_id);
+
+
+/**
+ * @brief  Deletes an account from the account database by account DB ID.
+ *
+ * @since_tizen 2.4
+ * @privlevel  public
+ * @privilege  %http://tizen.org/privilege/account.read \n
+ *             %http://tizen.org/privilege/account.write
+ * @remarks    This API need both privileges \n
+ *             Only can delete an account which was added by same package applications
+ * @param[in]  account_db_id  The account ID to delete
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_OUT_OF_MEMORY      Out of Memory
+ * @retval  #ACCOUNT_ERROR_DB_FAILED          Database operation failed
+ * @retval  #ACCOUNT_ERROR_PERMISSION_DENIED  The account owner is different from the caller or DB Access fail by permission
+ * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
+ * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
+ *
+ * @see account_insert_to_db()
+ * @see account_delete_from_db_by_user_name()
+ * @see account_delete_from_db_by_package_name()
+ * @see account_update_to_db_by_id()
+ * @see account_update_to_db_by_user_name()
+ */
+int account_delete_from_db_by_id(int account_db_id);
+
+
+/**
+ * @brief  Deletes an account from the account database by user name.
+ *
+ * @since_tizen 2.4
+ * @privlevel  public
+ * @privilege  %http://tizen.org/privilege/account.read \n
+ *             %http://tizen.org/privilege/account.write
+ * @remarks    This API need both privileges \n
+ *             Only can delete accounts which were added by same package applications
+ * @param[in]  user_name     The user name of the account to delete
+ * @param[in]  package_name  The package name of the account to delete
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_OUT_OF_MEMORY      Out of Memory
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_DB_FAILED          Database operation failed
+ * @retval  #ACCOUNT_ERROR_PERMISSION_DENIED  DB Access fail by permission
+ * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
+ * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
+ *
+ * @see account_insert_to_db()
+ * @see account_delete_from_db_by_id()
+ * @see account_delete_from_db_by_package_name()
+ * @see account_update_to_db_by_id()
+ * @see account_update_to_db_by_user_name()
+ */
+int account_delete_from_db_by_user_name(char *user_name, char *package_name);
+
+
+/**
+ * @brief  Deletes an account from the account database by package name.
+ *
+ * @since_tizen 2.4
+ * @privlevel  public
+ * @privilege  %http://tizen.org/privilege/account.read \n
+ *             %http://tizen.org/privilege/account.write
+ * @remarks    This API need both privileges \n
+ *             Only can delete accounts which was added by same package applications
+ * @param[in]  package_name  The package name of account(s) to delete
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_DB_FAILED          Database operation failed
+ * @retval  #ACCOUNT_ERROR_PERMISSION_DENIED  DB Access fail by permission
+ * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
+ * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
+ *
+ * @see account_insert_to_db()
+ * @see account_delete_from_db_by_id()
+ * @see account_delete_from_db_by_user_name()
+ * @see account_update_to_db_by_id()
+ * @see account_update_to_db_by_user_name()
+ */
+int account_delete_from_db_by_package_name(const char *package_name);
+
+/**
+ * @brief  Updates the account details to the account database.
+ *
+ * @since_tizen 2.4
+ * @privlevel  public
+ * @privilege  %http://tizen.org/privilege/account.read \n
+ *             %http://tizen.org/privilege/account.write
+ * @remarks    This API need both privileges \n
+ *             Only can update an account which was added by same package applications
+ * @param[in]  account     The account handle
+ * @param[in]  account_id  The account ID to update
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_DB_FAILED          Database operation failed
+ * @retval  #ACCOUNT_ERROR_RECORD_NOT_FOUND   The account to update does not exist
+ * @retval  #ACCOUNT_ERROR_PERMISSION_DENIED  DB Access fail by permission
+ * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
+ * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
+ *
+ * @see account_insert_to_db()
+ * @see account_delete_from_db_by_id()
+ * @see account_delete_from_db_by_user_name()
+ * @see account_delete_from_db_by_package_name()
+ * @see account_update_to_db_by_user_name()
+ */
+int account_update_to_db_by_id(account_h account, int account_id);
+
+/**
+ * @brief      Updates the account details to the account database.
+ *             The provider permission check has been added since tizen 2.4.
+ *
+ * @since_tizen 2.4
+ * @privlevel  public
+ * @privilege  %http://tizen.org/privilege/account.read \n
+ *             %http://tizen.org/privilege/account.write
+ * @remarks    This API need both privileges \n
+ *             Only can update an account which was added by same package applications
+ * @param[in]  account     The account handle
+ * @param[in]  account_id  The account ID to update
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_OUT_OF_MEMORY      Out of Memory
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_DB_FAILED          Database operation failed
+ * @retval  #ACCOUNT_ERROR_RECORD_NOT_FOUND   The account to update does not exist
+ * @retval  #ACCOUNT_ERROR_PERMISSION_DENIED  DB Access fail by permission
+ * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
+ * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
+ *
+ * @see account_insert_to_db()
+ * @see account_delete_from_db_by_id()
+ * @see account_delete_from_db_by_user_name()
+ * @see account_delete_from_db_by_package_name()
+ * @see account_update_to_db_by_user_name()
+ */
+int account_update_to_db_by_id_ex(account_h account, int account_id);
+
+/**
+ * @brief  Updates the account details to the account database.
+ *
+ * @since_tizen 2.4
+ * @privlevel  public
+ * @privilege  %http://tizen.org/privilege/account.read \n
+ *             %http://tizen.org/privilege/account.write
+ * @remarks    This API need both privileges \n
+ *             Only can update accounts which were added by same package applications
+ * @param[in]  account       The account handle
+ * @param[in]  user_name     The user name of the account to update
+ * @param[in]  package_name  The package name for the user name
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_DB_FAILED          Database operation failed
+ * @retval  #ACCOUNT_ERROR_RECORD_NOT_FOUND   The account to update does not exist
+ * @retval  #ACCOUNT_ERROR_PERMISSION_DENIED  DB Access fail by permission
+ * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
+ * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
+ *
+ * @see account_insert_to_db()
+ * @see account_delete_from_db_by_id()
+ * @see account_delete_from_db_by_user_name()
+ * @see account_delete_from_db_by_package_name()
+ * @see account_update_to_db_by_id()
+ *
+ */
+int account_update_to_db_by_user_name(account_h account, const char *user_name, const char *package_name);
+
+/**
+ * @brief  Gets the ID of an account.
+ *
+ * @since_tizen 2.4
+ * @param[in]   account     The account handle
+ * @param[out]  account_id  The account ID
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ */
+int account_get_account_id(account_h account, int *account_id);
+
+/**
+ * @brief  Gets the user name of an account.
+ *
+ * @since_tizen 2.4
+ * @remarks    You must release @a user_name using free().
+ *
+ * @param[in]   account    The account handle
+ * @param[out]  user_name  The user name of the account
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_OUT_OF_MEMORY      Out of memory
+ *
+ * @see account_set_user_name()
+ */
+int account_get_user_name(account_h account, char **user_name);
+
+
+/**
+ * @brief  Sets the user name of an account.
+ *
+ * @since_tizen 2.4
+ * @param[in]  account    The account handle
+ * @param[in]  user_name  The string to set as user name
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @see account_get_user_name()
+ */
+int account_set_user_name(account_h account, const char *user_name);
+
+
+/**
+ * @brief  Gets the display name of an account.
+ *
+ * @since_tizen 2.4
+ * @remarks    You must release @a display_name using free().
+ *
+ * @param[in]   account       The account handle
+ * @param[out]  display_name  The display name of the account
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_OUT_OF_MEMORY      Out of memory
+ *
+ * @see account_get_display_name()
+ */
+int account_get_display_name(account_h account, char **display_name);
+
+
+/**
+ * @brief  Sets the display name of an account.
+ *
+ * @since_tizen 2.4
+ * @param[in]  account      The account handle
+ * @param[in]  display_name The text string to set as the display name
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @see account_get_display_name()
+ */
+int account_set_display_name(account_h account, const char *display_name);
+
+/**
+ * @brief  Gets the capability detail of an account.
+ *
+ * @since_tizen 2.4
+ * @param[in]   account           The account handle
+ * @param[in]   capability_type   The capability type to get the capability value
+ * @param[out]  capability_value  The capability value (on/off) of the specified capability_type
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_RECORD_NOT_FOUND   There is no given capability_type in the account
+ *
+ * @see account_set_capability()
+ */
+int account_get_capability(account_h account, const char* capability_type, account_capability_state_e* capability_value);
+
+/**
+ * @brief  Gets all the capabilities of an account.
+ *
+ * @since_tizen 2.4
+ * @param[in]  account    The account handle
+ * @param[in]  callback   The callback function
+ * @param[in]  user_data  The user data to be passed to the callback function
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @see account_set_capability()
+ */
+int account_get_capability_all(account_h account, capability_cb callback, void *user_data);
+
+/**
+ * @brief  Sets the capability.
+ *
+ * @since_tizen 2.4
+ * @param[in]  account           The account handle
+ * @param[in]  capability_type   The capability type
+ * @param[in]  capability_state  The capability state
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @see account_get_capability()
+ */
+int account_set_capability(account_h account, const char* capability_type, account_capability_state_e capability_state);
+
+
+/**
+ * @brief  Gets the icon path.
+ *
+ * @since_tizen 2.4
+ * @remarks    You must release @a icon_path using free().
+ *
+ * @param[in]   account    The account handle
+ * @param[out]  icon_path  The icon path
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_OUT_OF_MEMORY      Out of memory
+ *
+ * @see account_set_icon_path()
+ */
+int account_get_icon_path(account_h account, char **icon_path);
+
+
+/**
+ * @brief  Sets the icon path.
+ *
+ * @since_tizen 2.4
+ * @param[in]  account    The account handle
+ * @param[in]  icon_path  The text string to set as the icon path
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @see account_get_icon_path()
+ */
+int account_set_icon_path(account_h account, const char *icon_path);
+
+
+/**
+ * @brief  Gets the domain name.
+ *
+ * @since_tizen 2.4
+ * @remarks    You must release @a domain_name using free().
+ *
+ * @param[in]   account      The account handle
+ * @param[out]  domain_name  The domain name
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_OUT_OF_MEMORY      Out of memory
+ *
+ * @see account_set_domain_name()
+ */
+int account_get_domain_name(account_h account, char **domain_name);
+
+
+/**
+ * @brief  Sets the domain name.
+ *
+ * @since_tizen 2.4
+ * @param[in]  account      The account handle
+ * @param[in]  domain_name  The text string to set as the domain name
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @see account_get_domain_name()
+ */
+int account_set_domain_name(account_h account, const char *domain_name);
+
+
+/**
+ * @brief  Gets the email address.
+ *
+ * @since_tizen 2.4
+ * @remarks    You must release @a email_address using free().
+ *
+ * @param[in]   account        The account handle
+ * @param[out]  email_address  The email address
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_OUT_OF_MEMORY      Out of memory
+ *
+ * @see account_set_email_address()
+ */
+int account_get_email_address(account_h account, char **email_address);
+
+
+/**
+ * @brief  Sets the email address.
+ *
+ * @since_tizen 2.4
+ * @param[in]  account        The account handle
+ * @param[in]  email_address  The text string to set as the email address
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @see account_get_email_address()
+ */
+int account_set_email_address(account_h account, const char *email_address);
+
+
+/**
+ * @brief  Gets the package name.
+ *
+ * @since_tizen 2.4
+ * @remarks    You must release @a package_name using free().
+ *
+ * @param[in]   account       The account handle
+ * @param[out]  package_name  The package name
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_OUT_OF_MEMORY      Out of memory
+ *
+ * @see account_set_package_name()
+ */
+int account_get_package_name(account_h account, char **package_name);
+
+
+/**
+ * @brief  Sets the package name.
+ *
+ * @since_tizen 2.4
+ * @param[in]  account       The account handle
+ * @param[in]  package_name  The text string to set as the package name
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @see account_get_email_address()
+ */
+int account_set_package_name(account_h account, const char *package_name);
+
+
+/**
+ * @brief  Gets the access token. Access token field is used to store account secrets (such as password or master token).
+ *
+ * @since_tizen 2.4
+ * @remarks    You must release @a access_token using free().
+ *
+ * @param[in]   account       The account handle
+ * @param[out]  access_token  The access token
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_OUT_OF_MEMORY      Out of memory
+ *
+ * @remarks Access token field is used for storing account secret (password / master token etc)
+ * Only account owner application can retrieve account password / access_token. For others this field will be null.
+ * @see account_set_access_token()
+ */
+int account_get_access_token(account_h account, char **access_token);
+
+
+/**
+ * @brief  Sets the access token. Access token field is used to store account secrets (such as password or master token).
+ *
+ * @since_tizen 2.4
+ * @param[in]  account       The account handle
+ * @param[in]  access_token  The text string to set as the access token
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @remarks Only account owner application can retrieve account password / access_token. For others this field will be null.
+ * @see account_get_access_token()
+ */
+int account_set_access_token(account_h account, const char *access_token);
+
+
+/**
+ * @brief  Gets the user text.
+ *
+ * @since_tizen 2.4
+ * @remarks    You must release @a user_text using free().
+ *
+ * @param[in]   account          The account handle
+ * @param[in]   user_text_index  The index of the user text (range: 0 ~ 4)
+ * @param[out]  user_text        The user text
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_OUT_OF_MEMORY      Out of memory
+ *
+ * @see account_set_user_text()
+ */
+int account_get_user_text(account_h account, int user_text_index, char **user_text);
+
+
+/**
+ * @brief  Sets the user text.
+ *
+ * @since_tizen 2.4
+ * @param[in]  account          The account handle
+ * @param[in]  user_text_index  The index of the user text (must be in range from @c 0 to @c 4)
+ * @param[in]  user_text        The text string to set as the user text
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @see account_get_user_text()
+ */
+int account_set_user_text(account_h account, int user_text_index, const char *user_text);
+
+
+/**
+ * @brief  Gets the user integer.
+ *
+ * @since_tizen 2.4
+ * @param[in]   account         The account handle
+ * @param[in]   user_int_index  The index of the user integer (must be in range from @c 0 to @c 4)
+ * @param[out]  user_integer    The user integer
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @see account_set_user_int()
+ */
+int account_get_user_int(account_h account, int user_int_index, int *user_integer);
+
+
+/**
+ * @brief  Sets the user integer.
+ *
+ * @since_tizen 2.4
+ * @param[in]  account         The account handle
+ * @param[in]  user_int_index  The index of the user integer (must be in range from @c 0 to @c 4)
+ * @param[in]  user_integer    The integer to set as the user integer
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @see account_get_user_int()
+ */
+int account_set_user_int(account_h account, int user_int_index, int user_integer);
+
+
+/**
+ * @brief  Gets the auth type.
+ *
+ * @since_tizen 2.4
+ * @param[in]   account    The account handle
+ * @param[out]  auth_type  The auth type
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @see account_set_auth_type()
+ */
+int account_get_auth_type(account_h account, account_auth_type_e *auth_type);
+
+
+/**
+ * @brief  Sets the auth type.
+ *
+ * @since_tizen 2.4
+ * @param[in]  account    The account handle
+ * @param[in]  auth_type  The integer to be set as the auth type
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @see account_get_auth_type()
+ */
+int account_set_auth_type(account_h account, const account_auth_type_e auth_type);
+
+
+/**
+ * @brief  Gets the secret.
+ *
+ * @since_tizen 2.4
+ * @param[in]   account  The account handle
+ * @param[out]  secret   The secret
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @see account_set_secret()
+ */
+int account_get_secret(account_h account, account_secrecy_state_e *secret);
+
+
+/**
+ * @brief  Sets the secret.
+ *
+ * @since_tizen 2.4
+ * @param[in]  account  The account handle
+ * @param[in]  secret   The secrecy to be set
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @see account_get_secret()
+ */
+int account_set_secret(account_h account, const account_secrecy_state_e secret);
+
+/**
+ * @brief  Gets the sync support.
+ *
+ * @since_tizen 2.4
+ * @param[in]   account       The account handle
+ * @param[out]  sync_support  The sync support
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @see account_set_sync_support()
+ */
+int account_get_sync_support(account_h account, account_sync_state_e *sync_support);
+
+
+/**
+ * @brief  Sets the sync support.
+ *
+ * @since_tizen 2.4
+ * @param[in]  account       The account handle
+ * @param[in]  sync_support  The sync state to be set
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @see account_get_sync_support()
+ */
+int account_set_sync_support(account_h account, const account_sync_state_e sync_support);
+
+
+/**
+ * @brief  Gets the source.
+ *
+ * @since_tizen 2.4
+ * @remarks    You must release @a user_text using free().
+ *
+ * @param[in]   account  The account handle
+ * @param[out]  source   The source
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_OUT_OF_MEMORY      Out of memory
+ *
+ * @see account_set_source()
+ */
+int account_get_source(account_h account, char **source);
+
+
+/**
+ * @brief  Sets the source.
+ *
+ * @since_tizen 2.4
+ * @param[in]  account  The account handle
+ * @param[in]  source   The text string to set as the source
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @see account_get_source()
+ */
+int account_set_source(account_h account, const char *source);
+
+/**
+ * @brief  Sets the custom.
+ *
+ * @since_tizen 2.4
+ * @param[in]  account  The account handle
+ * @param[in]  key      The user custom key for the specific value
+ * @param[in]  value    The user custom value about the given key
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @see account_get_custom()
+ */
+int account_set_custom(account_h account, const char* key, const char* value);
+
+/**
+ * @brief  Gets the user specific custom text of an account key.
+ *
+ * @since_tizen 2.4
+ * @param[in]   account   The account handle
+ * @param[in]   key       The key to retrieve custom text
+ * @param[out]  value     The text of the given key
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_RECORD_NOT_FOUND   There is no given capability type in the account
+ *
+ * @see account_set_custom()
+ */
+int account_get_custom(account_h account, const char* key, char** value);
+
+
+/**
+ * @brief  Gets all the user custom texts of an account.
+ *
+ * @since_tizen 2.4
+ * @param[in]  account    The account handle
+ * @param[in]  callback   The callback function to retrieve all custom text \n
+ *                        The callback function gives the key and value.
+ * @param[in]  user_data  The user data to be passed to the callback function
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @see account_set_custom()
+ */
+int account_get_custom_all(account_h account, account_custom_cb callback, void* user_data);
+
+/**
+ * @brief  Retrieves all accounts details by invoking the given callback function iteratively.
+ *
+ * @since_tizen 2.4
+ * @privlevel   public
+ * @privilege   %http://tizen.org/privilege/account.read
+ * @param[in]   callback   The callback function to invoke
+ * @param[in]   user_data  The user data to be passed to the callback function
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_DB_FAILED          Database operation failed
+ * @retval  #ACCOUNT_ERROR_PERMISSION_DENIED  DB Access fail by permission
+ * @retval  #ACCOUNT_ERROR_RECORD_NOT_FOUND   Related record does not exist
+ * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
+ * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
+ *
+ * @post  This function invokes account_cb().
+ *
+ * @see account_query_account_by_account_id()
+ * @see account_query_account_by_user_name()
+ * @see account_query_account_by_package_name()
+ * @see account_query_account_by_capability()
+ */
+int account_foreach_account_from_db(account_cb callback, void *user_data);
+
+
+/**
+ * @brief  Retrieve an account with the account ID.
+ *
+ * @since_tizen 2.4
+ * @privlevel   public
+ * @privilege   %http://tizen.org/privilege/account.read
+ * @param[in]   account_db_id  The account database ID to search
+ * @param[out]  account        The account handle \n
+ *                             Must be allocated by account_create() and freed after using by account_destroy().
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_OUT_OF_MEMORY      Out of Memory
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_DB_FAILED          Database operation failed
+ * @retval  #ACCOUNT_ERROR_PERMISSION_DENIED  DB Access fail by permission
+ * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
+ * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
+ *
+ * @see account_query_account_by_user_name()
+ * @see account_query_account_by_package_name()
+ * @see account_query_account_by_capability()
+ */
+int account_query_account_by_account_id(int account_db_id, account_h *account);
+
+/**
+ * @brief  Retrieves all accounts with the user name.
+ *
+ * @since_tizen 2.4
+ * @privlevel   public
+ * @privilege   %http://tizen.org/privilege/account.read
+ * @param[in]   callback   The callback function to invoke
+ * @param[in]   user_name  The user name to search
+ * @param[in]   user_data  The user data to be passed to the callback function
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_OUT_OF_MEMORY      Out of Memory
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_DB_FAILED          Database operation failed
+ * @retval  #ACCOUNT_ERROR_PERMISSION_DENIED  DB Access fail by permission
+ * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
+ * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
+ *
+ * @post  This function invokes account_cb().
+ *
+ * @see account_foreach_account_from_db()
+ * @see account_query_account_by_account_id()
+ * @see account_query_account_by_package_name()
+ * @see account_query_account_by_capability()
+ *
+ */
+int account_query_account_by_user_name(account_cb callback, const char* user_name, void* user_data);
+
+/**
+ * @brief  Retrieves all accounts with the package name.
+ *
+ * @since_tizen 2.4
+ * @privlevel  public
+ * @privilege  %http://tizen.org/privilege/account.read
+ * @param[in]  callback      The callback function to invoke
+ * @param[in]  package_name  The package name to search
+ * @param[in]  user_data     The user data to be passed to the callback function
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_OUT_OF_MEMORY      Out of Memory
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_DB_FAILED          Database operation failed
+ * @retval  #ACCOUNT_ERROR_PERMISSION_DENIED  DB Access fail by permission
+ * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
+ * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
+ *
+ * @post  This function invokes account_cb().
+ *
+ * @see account_foreach_account_from_db()
+ * @see account_query_account_by_account_id()
+ * @see account_query_account_by_user_name()
+ * @see account_query_account_by_capability()
+ */
+int account_query_account_by_package_name(account_cb callback, const char *package_name, void *user_data);
+
+/**
+ * @brief  Retrieves all accounts with the capability type and capability value.
+ *
+ * @since_tizen 2.4
+ * @privlevel   public
+ * @privilege   %http://tizen.org/privilege/account.read
+ * @param[in]   callback          The callback function to invoke
+ * @param[in]   capability_type   The capability type to search
+ * @param[in]   capability_value  The capability value to search
+ * @param[in]   user_data         The user data to be passed to the callback function
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_OUT_OF_MEMORY      Out of Memory
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_DB_FAILED          Database operation failed
+ * @retval  #ACCOUNT_ERROR_PERMISSION_DENIED  DB Access fail by permission
+ * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
+ * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
+ *
+ * @post  This function invokes account_cb().
+ *
+ * @see account_foreach_account_from_db()
+ * @see account_query_account_by_account_id()
+ * @see account_query_account_by_user_name()
+ * @see account_query_account_by_package_name()
+ */
+int account_query_account_by_capability(account_cb callback, const char* capability_type, account_capability_state_e capability_value, void *user_data);
+
+/**
+ * @brief  Retrieves all accounts with the capability type.
+ *
+ * @since_tizen 2.4
+ * @privlevel   public
+ * @privilege   %http://tizen.org/privilege/account.read
+ * @param[in]   callback         The callback function to invoke
+ * @param[in]   capability_type  The capability type to search
+ * @param[in]   user_data        The user data to be passed to the callback function
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_OUT_OF_MEMORY      Out of Memory
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_DB_FAILED          Database operation failed
+ * @retval  #ACCOUNT_ERROR_PERMISSION_DENIED  DB Access fail by permission
+ * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
+ * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
+ *
+ * @post  This function invokes account_cb().
+ *
+ * @see account_foreach_account_from_db()
+ * @see account_query_account_by_account_id()
+ * @see account_query_account_by_user_name()
+ * @see account_query_account_by_package_name()
+ */
+int account_query_account_by_capability_type(account_cb callback, const char* capability_type, void* user_data);
+
+/**
+ * @brief  Retrieves all capabilities with the account database ID.
+ *
+ * @since_tizen 2.4
+ * @privlevel   public
+ * @privilege   %http://tizen.org/privilege/account.read
+ * @param[in]   callback       The callback function to invoke
+ * @param[in]   account_db_id  The account database ID to search
+ * @param[in]   user_data      The user data to be passed to the callback function
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_OUT_OF_MEMORY      Out of Memory
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_DB_FAILED          Database operation failed
+ * @retval  #ACCOUNT_ERROR_PERMISSION_DENIED  DB Access fail by permission
+ * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
+ * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
+ *
+ * @post  This function invokes capability_cb().
+ *
+ * @see account_get_capability()
+ * @see account_set_capability()
+ */
+int account_query_capability_by_account_id(capability_cb callback, int account_db_id, void *user_data);
+
+
+/**
+ * @brief  Gets the count of accounts in the account database.
+ *
+ * @since_tizen 2.4
+ * @privlevel   public
+ * @privilege   %http://tizen.org/privilege/account.read
+ * @param[out]  count  The out parameter for count of all accounts
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_DB_FAILED          Database operation failed
+ * @retval  #ACCOUNT_ERROR_PERMISSION_DENIED  DB Access fail by permission
+ * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
+ * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
+ *
+ */
+int account_get_total_count_from_db(int *count);
+
+/**
+ * @brief  Updates the sync status of an account with the given account ID.
+ *
+ * @since_tizen 2.4
+ * @privlevel   public
+ * @privilege   %http://tizen.org/privilege/account.read \n
+ *              %http://tizen.org/privilege/account.write
+ * @remarks     This API need both privileges \n
+ *              Only can update an account which was added by same package applications
+ * @param[in]   account_db_id  The account ID for which sync status needs to be changed
+ * @param[in]   sync_status    The new sync status
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_OUT_OF_MEMORY      Out of Memory
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_DB_FAILED          Database operation failed
+ * @retval  #ACCOUNT_ERROR_PERMISSION_DENIED  DB Access fail by permission
+ * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
+ * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
+ *
+ */
+int account_update_sync_status_by_id(int account_db_id, const account_sync_state_e sync_status);
+
+
+/* Account type API */
+
+
+/**
+ * @brief  Creates a handle to the account provider.
+ *
+ * @since_tizen 2.4
+ * @remarks     You must release @a account_type handle using account_type_destroy().\n
+ *
+ * @param[in]  account_type  The account provider handle
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_OUT_OF_MEMORY      Out of Memory
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @see account_type_destroy()
+ */
+int account_type_create(account_type_h *account_type);
+
+/**
+ * @brief  Destroys the account provider handle and releases all its resources.
+ *
+ * @since_tizen 2.4
+ *
+ * @remarks    When you get @a account_type_h using account_type_create(), you must release the handle using account_destroy() to avoid the memory leak.
+ *
+ * @param[in]  account_type  The account provider handle
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @see account_type_create()
+ */
+int account_type_destroy(account_type_h account_type);
+
+/**
+ * @brief  Retrieves capability information with your application ID.
+ *
+ * @since_tizen 2.4
+ * @privlevel   public
+ * @privilege   %http://tizen.org/privilege/account.read
+ * @param[in]   callback   The callback function carries the capability name of an app ID
+ * @param[in]   app_id     The application ID to search
+ * @param[in]   user_data  The user data \n
+ *                         If you have your private data to carry into callback function, then you can use it.
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_DB_FAILED          Database operation failed
+ * @retval  #ACCOUNT_ERROR_PERMISSION_DENIED  DB Access fail by permission
+ * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
+ * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
+ *
+ */
+int account_type_query_provider_feature_by_app_id(provider_feature_cb callback, const char* app_id, void *user_data );
+
+/**
+ * @brief   Checks whether the given application ID supports the capability.
+ *
+ * @since_tizen 2.4
+ * @privlevel   public
+ * @privilege   %http://tizen.org/privilege/account.read
+ * @remarks     The specific error code can be obtained using the get_last_result() method. Error codes are described in Exception section.
+ * @param[in]   app_id      The application ID
+ * @param[in]   capability  The capability \n
+ *                          For example, ACCOUNT_SUPPORTS_CAPABILITY_CONTACT or "http://tizen.org/account/capability/contact"
+ *
+ * @return  @c TRUE if the application supports the given capability, \n
+ *          otherwise @c FALSE if the application does not support the given capability
+ * @retval  @c TRUE means the application supports the given capability
+ * @retval  @c FALSE means the application does not support the given capability
+ * @exception #ACCOUNT_ERROR_NONE               Successful
+ * @exception #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @exception #ACCOUNT_ERROR_RECORD_NOT_FOUND   Related record does not exist
+ * @excaption #ACCOUNT_ERROR_DB_FAILED          Database operation failed
+ * @exception #ACCOUNT_ERROR_PERMISSION_DENIED  DB access fail by permission
+ * @excaption #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
+ * @excaption #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
+ *
+ */
+bool account_type_query_supported_feature(const char* app_id, const char* capability);
+
+/**
+ * @brief  Gets the application ID of an account provider.
+ *
+ * @since_tizen 2.4
+ * @remarks     You must release @a app_id using free().
+ *
+ * @param[in]   account_type  The account provider handle \n
+ *                            It should be given by account_type_query_* functions or account_type_foreach_account_type_from_db().
+ * @param[out]  app_id        The application ID of an account provider item
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_OUT_OF_MEMORY      Out of memory
+ *
+ * @see account_type_foreach_account_type_from_db()
+ * @see account_type_query_by_app_id()
+ */
+int account_type_get_app_id(account_type_h account_type, char **app_id);
+
+/**
+ * @brief  Gets the service provider ID of an account provider.
+ *
+ * @since_tizen 2.4
+ * @remarks     You must release @a service_provider_id using free().
+ *
+ * @param[in]   account_type         The account provider handle \n
+ *                                   It should be given by account_type_query_* functions or account_type_foreach_account_type_from_db().
+ * @param[out]  service_provider_id  The service provider text ID of an account provider item
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_OUT_OF_MEMORY      Out of memory
+ *
+ * @see account_type_foreach_account_type_from_db()
+ * @see account_type_query_by_app_id()
+ */
+int account_type_get_service_provider_id(account_type_h account_type, char **service_provider_id);
+
+/**
+ * @brief  Gets the icon path of an account provider.
+ *
+ * @since_tizen 2.4
+ * @remarks     You must release @a icon_path using free().
+ *
+ * @param[in]   account_type  The account provider handle \n
+ *                            It should be given by account_type_query_* functions or account_type_foreach_account_type_from_db().
+ * @param[out]  icon_path     The icon path of the account provider item
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_OUT_OF_MEMORY      Out of memory
+ *
+ * @see account_type_foreach_account_type_from_db()
+ * @see account_type_query_by_app_id()
+ */
+int account_type_get_icon_path(account_type_h account_type, char **icon_path);
+
+/**
+ * @brief  Gets the small icon path of an account provider.
+ *
+ * @since_tizen 2.4
+ * @remarks    You must release @a small_icon_path using free().
+ *
+ * @param[in]   account_type     The account provider handle\n
+ *                               It should be given by account_type_query_* functions or account_type_foreach_account_type_from_db().
+ * @param[out]  small_icon_path  The small icon path of the account provider item
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_OUT_OF_MEMORY      Out of memory
+ *
+ * @see account_type_foreach_account_type_from_db()
+ * @see account_type_query_by_app_id()
+ */
+int account_type_get_small_icon_path(account_type_h account_type, char **small_icon_path);
+
+/**
+ * @brief  Checks whether the given account provider supports multiple accounts.
+ *
+ * @since_tizen 2.4
+ * @param[in]   account_type              The account provider handle \n
+ *                                        It should be given by account_type_query_* functions or account_type_foreach_account_type_from_db.
+ * @param[out]  multiple_account_support  The flag indicating support for multiple accounts accounts\n
+ *                                        TRUE or FALSE.
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_OUT_OF_MEMORY      Out of memory
+ *
+ * @see account_type_foreach_account_type_from_db()
+ * @see account_type_query_by_app_id()
+ */
+int account_type_get_multiple_account_support(account_type_h account_type, int *multiple_account_support);
+
+/**
+ * @brief  Gets capability information with the given account provider handle.
+ *
+ * @since_tizen 2.4
+ * @param[in]   account_type  The account provider handle\n
+ *                            It should be given by account_type_query_* functions or account_type_foreach_account_type_from_db().
+ * @param[in]   callback      The callback function that carries the capability name of the app ID
+ * @param[in]   user_data     The user data \n
+ *                            If you have your private data to carry into callback function, then you can use it.
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_DB_FAILED          Database operation failed
+ *
+ */
+int account_type_get_provider_feature_all(account_type_h account_type, provider_feature_cb callback, void* user_data);
+
+/**
+ * @brief  Gets the specific label information detail of an account provider.
+ *
+ * @since_tizen 2.4
+ * @param[in]   account_type The account provider handle\n
+ *                           It should be given by account_type_query_* functions or account_type_foreach_account_type_from_db().
+ * @param[in]   locale       The locale is specified as an ISO 3166 alpha-2 two letter country-code followed by ISO 639-1 for the two-letter language code.\n
+ *                           For example, "ko_KR" or "ko-kr" for Korean, "en_US" or "en-us" for American English.
+ * @param[out]  label        The label text given for the locale
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_RECORD_NOT_FOUND   No label for the given locale
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @see account_type_foreach_account_type_from_db()
+ * @see account_type_query_by_app_id()
+ */
+
+int account_type_get_label_by_locale(account_type_h account_type, const char* locale, char** label);
+
+/**
+ * @brief  Gets the label information detail of an account provider.
+ *
+ * @since_tizen 2.4
+ * @param[in]   account_type  The account provider handle\n
+ *                            It should be given by account_type_query_* functions or account_type_foreach_account_type_from_db().
+ * @param[in]   callback      The callback function carrying the label information
+ * @param[in]   user_data     The user data to be passed to the callback function
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @see account_type_foreach_account_type_from_db()
+ * @see account_type_query_by_app_id()
+ */
+int account_type_get_label(account_type_h account_type, account_label_cb callback, void *user_data);
+
+/**
+ * @brief  Retrieves the label information with your application ID.
+ *
+ * @since_tizen 2.4
+ * @privlevel   public
+ * @privilege   %http://tizen.org/privilege/account.read
+ * @param[in]   callback    The callback function that carries label_h for label information \n
+ *                         label_h contains label info as parameter.
+ * @param[in]   app_id     The application ID to search
+ * @param[in]   user_data  The user data \n
+ *                         If you have your private data to carry into callback function, then you can use it.
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_DB_FAILED          Database operation failed
+ * @retval  #ACCOUNT_ERROR_PERMISSION_DENIED  DB Access fail by permission
+ * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
+ * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
+ *
+ * @see account_type_query_by_app_id()
+ * @see account_type_foreach_account_type_from_db()
+ */
+int account_type_query_label_by_app_id(account_label_cb callback, const char* app_id, void *user_data );
+
+/**
+ * @brief  Retrieves the account provider information with your application ID.
+ *
+ * @since_tizen 2.4
+ * @privlevel   public
+ * @privilege   %http://tizen.org/privilege/account.read
+ * @param[in]   app_id        The application ID to search
+ * @param[out]  account_type  The account handle which is created by account_type_create()
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_DB_FAILED          Database operation failed
+ * @retval  #ACCOUNT_ERROR_RECORD_NOT_FOUND   Queried data does not exist
+ * @retval  #ACCOUNT_ERROR_PERMISSION_DENIED  DB Access fail by permission
+ * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
+ * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
+ *
+ * @see account_type_create()
+ * @see account_type_get_app_id()
+ * @see account_type_get_service_provider_id()
+ * @see account_type_get_icon_path()
+ * @see account_type_get_small_icon_path()
+ * @see account_type_get_multiple_account_support()
+ * @see account_type_get_label()
+ * @see account_type_destroy()
+ */
+int account_type_query_by_app_id(const char* app_id, account_type_h *account_type);
+
+/**
+ * @brief  Retrieves all account priovider information.
+ *
+ * @since_tizen 2.4
+ * @privlevel   public
+ * @privilege   %http://tizen.org/privilege/account.read
+ * @param[in]   callback   The account provider information \n
+ *                         You can get the account information through account_type_get_* with the carried account_type_handle.
+ * @param[in]   user_data  The user data \n
+ *                         It will be carried through your callback function.
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_DB_FAILED          Database operation failed
+ * @retval  #ACCOUNT_ERROR_PERMISSION_DENIED  DB Access fail by permission
+ * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
+ * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
+ *
+ * @see account_type_create()
+ * @see account_type_get_app_id()
+ * @see account_type_get_service_provider_id()
+ * @see account_type_get_icon_path()
+ * @see account_type_get_small_icon_path()
+ * @see account_type_get_multiple_account_support()
+ * @see account_type_get_label()
+ * @see account_type_destroy()
+ */
+int account_type_foreach_account_type_from_db(account_type_cb callback, void *user_data);
+
+/**
+ * @brief  Retrieves the label information with the given application ID and locale.
+ *
+ * @since_tizen 2.4
+ * @privlevel   public
+ * @privilege   %http://tizen.org/privilege/account.read
+ * @param[in]   app_id  The application ID
+ * @param[in]   locale  The locale is specified as an ISO 3166 alpha-2 two letter country-code followed by ISO 639-1 for the two-letter language code.\n
+ *                      For example, "ko_KR" or "ko-kr" for Korean, "en_US" or "en-us" for American English.
+ * @param[out]  label   The label text corresponding app_id and locale \n
+ *                      It must be free text.
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_DB_FAILED          Database operation failed
+ * @retval  #ACCOUNT_ERROR_PERMISSION_DENIED  DB Access fail by permission
+ * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
+ * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
+ *
+ */
+int account_type_query_label_by_locale(const char* app_id, const char* locale, char** label);
+
+/**
+ * @brief  Retrieves account provider information with the capability name.
+ *
+ * @since_tizen 2.4
+ * @privlevel   public
+ * @privilege   %http://tizen.org/privilege/account.read
+ * @param[in]   callback        The callback function to retrieve account provider information
+ * @param[in]   key             The capability value to search account provider \n
+ *                              For example, ACCOUNT_SUPPORTS_CAPABILITY_CONTACT or "http://tizen.org/account/capability/contact"
+ * @param[in]  user_data        If you have your private data to carry into callback function, then you can use it
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_RECORD_NOT_FOUND   Record not found
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #ACCOUNT_ERROR_DB_FAILED          Database operation failed
+ * @retval  #ACCOUNT_ERROR_PERMISSION_DENIED DB Access fail by permission
+ * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
+ * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
+ *
+ */
+int account_type_query_by_provider_feature(account_type_cb callback, const char* key, void* user_data);
+
+/**
+ * @brief  Checks whether the given app_id exists in the account provider DB.
+ *
+ * @since_tizen 2.4
+ * @privlevel   public
+ * @privilege   %http://tizen.org/privilege/account.read
+ * @param[in]   app_id  The application ID to check
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_RECORD_NOT_FOUND   Record not found
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid app ID
+ * @retval  #ACCOUNT_ERROR_DB_FAILED          Database operation failed
+ * @retval  #ACCOUNT_ERROR_PERMISSION_DENIED  DB Access fail by permission
+ * @retval  #ACCOUNT_ERROR_DATABASE_BUSY      SQLite handler is busy
+ * @retval  #ACCOUNT_ERROR_DB_NOT_OPENED      Account database did not opened
+ *
+ * @see account_type_query_by_app_id()
+ */
+int account_type_query_app_id_exist(const char* app_id);
+
+
+
+/* End of account provider API  */
+
+/**
+ * @brief  Creates a handle for the account event subscription.
+ *
+ * @since_tizen 2.4
+ * @remarks     You must release @a account_subscribe handle using account_unsubscribe_notification().
+ *
+ * @param[in]   account_subscribe  The account subscription handle
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE               Successful
+ * @retval  #ACCOUNT_ERROR_OUT_OF_MEMORY      Out of Memory
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @see account_unsubscribe_notification()
+ * @see account_subscribe_notification()
+ */
+int account_subscribe_create(account_subscribe_h* account_subscribe);
+
+/**
+ * @brief  Starts to subscribe account event through the given callback function.
+ *
+ * @since_tizen 2.4
+ * @privlevel   public
+ * @privilege   %http://tizen.org/privilege/account.read \n
+ * @param[in]   account_subscribe  The account subscription handle
+ * @param[in]   callback           The callback function that is called when an account is removed and a data of account is updated from the account database \n
+ *                                 It will be called with event message and account ID.
+ * @param[in]   user_data          The user_data that is delivered to callback
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE                     Successful
+ * @retval  #ACCOUNT_ERROR_EVENT_SUBSCRIPTION_FAIL  Subscription fail
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER        Invalid parameter
+ *
+ * @pre account_subscribe_create()
+ *
+ * @see account_unsubscribe_notification()
+ * @see account_subscribe_notification()
+ */
+int account_subscribe_notification(account_subscribe_h account_subscribe, account_event_cb callback, void* user_data);
+
+/**
+ * @brief  Destroys the account subscribe handle and releases all its resources.
+ *
+ * @since_tizen 2.4
+ * @privlevel   public
+ * @privilege   %http://tizen.org/privilege/account.read \n
+ * @remarks     You must call @a account_unsubscribe_notification when you do not need to subscribe account event.
+ *
+ * @param[in]   account_subscribe  The account subscription handle
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ * @retval  #ACCOUNT_ERROR_NONE                     Successful
+ * @retval  #ACCOUNT_ERROR_INVALID_PARAMETER        Invalid parameter
+ * @retval  #ACCOUNT_ERROR_EVENT_SUBSCRIPTION_FAIL  Unsubscription failed
+ *
+ * @see account_create()
+ */
+int account_unsubscribe_notification(account_subscribe_h account_subscribe);
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif //__ACCOUNT_H_
diff --git a/packaging/.libaccount-service.spec.swp b/packaging/.libaccount-service.spec.swp
deleted file mode 100644 (file)
index 9c69e61..0000000
Binary files a/packaging/.libaccount-service.spec.swp and /dev/null differ
index 2f3cc86..6de2e9a 100644 (file)
@@ -49,7 +49,12 @@ export CFLAGS="${CFLAGS} -fPIC -fvisibility=hidden"
 cmake . -DCMAKE_INSTALL_PREFIX=%{_prefix} \
        -DLIBDIR=%{_libdir} \
        -DBINDIR=%{_bindir} \
-       -DINCLUDEDIR=%{_includedir}
+       -DINCLUDEDIR=%{_includedir} \
+#%if "%{?tizen_profile_name}" == "mobile"
+#      -DFEATURE_PROFILE_MOBILE:BOOL=ON
+#%else
+#      -DFEATURE_PROFILE_MOBILE:BOOL=OFF
+#%endif
 
 make %{?jobs:-j%jobs}
 
index 9ed4c13..1baf714 100644 (file)
@@ -38,6 +38,12 @@ ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"")
 ADD_DEFINITIONS("-DFACTORYFS=\"$ENV{FACTORYFS}\"")
 ADD_DEFINITIONS("-DSLP_DEBUG")
 
+IF(FEATURE_PROFILE_MOBILE)
+       ADD_DEFINITIONS("-DTIZEN_PROFILE_MOBILE")
+ELSE(FEATURE_PROFILE_MOBILE)
+       ADD_DEFINITIONS("-DTIZEN_PROFILE_MOBILE")
+ENDIF(FEATURE_PROFILE_MOBILE)
+
 ADD_LIBRARY(${PROJECT_NAME} SHARED ${SRCS})
 SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES SOVERSION ${VERSION_MAJOR})
 SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES VERSION ${VERSION})
@@ -54,6 +60,12 @@ INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${LIBDIR}/accounts-svc)
 INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${LIBDIR})
 INSTALL(FILES ${CMAKE_BINARY_DIR}/src/${PROJECT_NAME}.pc DESTINATION ${LIBDIR}/pkgconfig)
 
+#IF(FEATURE_PROFILE_MOBILE)
+#INSTALL(FILES ${CMAKE_SOURCE_DIR}/include/mobile/account.h DESTINATION include)
+#ELSE(FEATURE_PROFILE_MOBILE)
+#INSTALL(FILES ${CMAKE_SOURCE_DIR}/include/wearable/account.h DESTINATION include)
+#ENDIF(FEATURE_PROFILE_MOBILE)
+
 INSTALL(FILES ${CMAKE_SOURCE_DIR}/include/account.h DESTINATION include)
 INSTALL(FILES ${CMAKE_SOURCE_DIR}/include/account-error.h DESTINATION include)
 INSTALL(FILES ${CMAKE_SOURCE_DIR}/include/account-types.h DESTINATION include)
index 6c11e58..e638294 100644 (file)
 #include <account_ipc_marshal.h>
 #include <account-mgr-stub.h>
 
-#include "account.h"
+#ifdef TIZEN_PROFILE_MOBILE
+#include "mobile/account.h"
+#else
+#include "wearable/account.h"
+#endif
+
 #include "account-error.h"
 #include "account-types.h"
 #include "account_internal.h"
@@ -50,6 +55,10 @@ static int _account_glist_free(GList* list);
 
 static int _account_free_capability_items(account_capability_s *data)
 {
+       if(!data) {
+               return ACCOUNT_ERROR_INVALID_PARAMETER;
+       }
+
        _ACCOUNT_FREE(data->type);
        _ACCOUNT_FREE(data->package_name);
        _ACCOUNT_FREE(data->user_name);
@@ -57,8 +66,12 @@ static int _account_free_capability_items(account_capability_s *data)
        return ACCOUNT_ERROR_NONE;
 }
 
-static int _account_custom_item_free(account_custom_s *data)
+static int _account_free_custom_items(account_custom_s *data)
 {
+       if(!data) {
+               return ACCOUNT_ERROR_INVALID_PARAMETER;
+       }
+
        _ACCOUNT_FREE(data->app_id);
        _ACCOUNT_FREE(data->key);
        _ACCOUNT_FREE(data->value);
@@ -66,6 +79,26 @@ static int _account_custom_item_free(account_custom_s *data)
        return ACCOUNT_ERROR_NONE;
 }
 
+static int _account_capability_gslist_free(GSList* list)
+{
+       if(!list){
+               return ACCOUNT_ERROR_INVALID_PARAMETER;
+       }
+
+       GSList* iter;
+
+       for (iter = list; iter != NULL; iter = g_slist_next(iter)) {
+               account_capability_s *capability_data = (account_capability_s*)iter->data;
+               _account_free_capability_items(capability_data);
+               _ACCOUNT_FREE(capability_data);
+       }
+
+       g_slist_free(list);
+       list = NULL;
+
+       return ACCOUNT_ERROR_NONE;
+}
+
 static int _account_custom_gslist_free(GSList* list)
 {
        if(!list){
@@ -76,7 +109,7 @@ static int _account_custom_gslist_free(GSList* list)
 
        for (iter = list; iter != NULL; iter = g_slist_next(iter)) {
                account_custom_s *custom_data = (account_custom_s*)iter->data;
-               _account_custom_item_free(custom_data);
+               _account_free_custom_items(custom_data);
                _ACCOUNT_FREE(custom_data);
        }
 
@@ -101,6 +134,10 @@ static int _account_list_free(GList* list)
 
 static int _account_free_account_items(account_s *data)
 {
+       if(!data) {
+               return ACCOUNT_ERROR_INVALID_PARAMETER;
+       }
+
        _ACCOUNT_FREE(data->user_name);
        _ACCOUNT_FREE(data->email_address);
        _ACCOUNT_FREE(data->display_name);
@@ -114,11 +151,9 @@ static int _account_free_account_items(account_s *data)
        for(i=0;i<USER_TXT_CNT;i++)
                _ACCOUNT_FREE(data->user_data_txt[i]);
 
-       _account_gslist_free(data->capablity_list);
+       _account_capability_gslist_free(data->capablity_list);
        _account_glist_free(data->account_list);
        _account_custom_gslist_free(data->custom_list);
-//     _account_list_free(data->domain_list);
-//     _account_list_free(data->mechanism_list);
 
        return ACCOUNT_ERROR_NONE;
 }
@@ -132,9 +167,9 @@ static int _account_gslist_free(GSList* list)
        GSList* iter;
 
        for (iter = list; iter != NULL; iter = g_slist_next(iter)) {
-               account_capability_s *cap_data = (account_capability_s*)iter->data;
-               _account_free_capability_items(cap_data);
-               _ACCOUNT_FREE(cap_data);
+               account_s *account_record = (account_s*)iter->data;
+               _account_free_account_items(account_record);
+               _ACCOUNT_FREE(account_record);
        }
 
        g_slist_free(list);
@@ -263,6 +298,7 @@ static int _account_get_error_code(bool is_success, GError *error)
        return ACCOUNT_ERROR_NONE;
 }
 
+#ifdef TIZEN_PROFILE_MOBILE
 ACCOUNT_API int account_connect(void)
 {
        return ACCOUNT_ERROR_NONE;
@@ -277,6 +313,7 @@ ACCOUNT_API int account_disconnect(void)
 {
        return ACCOUNT_ERROR_NONE;
 }
+#endif
 
 
 ACCOUNT_API int account_insert_to_db(account_h account, int *account_db_id)
@@ -403,9 +440,11 @@ ACCOUNT_API int account_delete_from_db_by_user_name(char *user_name, char *packa
        {
                error_code = _account_get_error_code(is_success, error);
                _ERR("account_manager_call_account_delete_from_db_by_user_name_sync failed [%d]", error_code);
+               _account_gslist_free(account_list);
                return error_code;
        }
 
+       _account_gslist_free(account_list);
        return ACCOUNT_ERROR_NONE;
 }
 
@@ -1269,20 +1308,16 @@ ACCOUNT_API int account_get_capability(account_h account, const char* capability
        GSList *iter;
        account_s *data = (account_s*)account;
 
-       _ERR("before for()");
        for (iter = data->capablity_list; iter != NULL; iter = g_slist_next(iter)) {
                account_capability_s *cap_data = NULL;
 
                cap_data = (account_capability_s*)iter->data;
 
-       _ERR("capability_type = %s, data->type = %s", capability_type, cap_data->type);
-       _ERR("capability_value = %d, data->value= %d", capability_value, cap_data->value);
                if(!strcmp(capability_type, cap_data->type)) {
                        *capability_value = cap_data->value;
                        return ACCOUNT_ERROR_NONE;
                }
        }
-       _ERR("after for()");
 
        return ACCOUNT_ERROR_RECORD_NOT_FOUND;
 }
@@ -1317,22 +1352,17 @@ ACCOUNT_API int account_get_custom(account_h account, const char* key, char** va
        GSList *iter;
        account_s *data = (account_s*)account;
 
-       _ERR("before for()");
        for (iter = data->custom_list; iter != NULL; iter = g_slist_next(iter)) {
                account_custom_s *custom_data = NULL;
 
                custom_data = (account_custom_s*)iter->data;
 
-               _ERR("key = %s, custom_data->key = %s", key, custom_data->key);
-               _ERR("value = %s, custom_data->value = %s", value, custom_data->value);
-
                if(!strcmp(key, custom_data->key)) {
                        (*value) = NULL;
                        *value = _account_get_text(custom_data->value);
                        return ACCOUNT_ERROR_NONE;
                }
        }
-       _ERR("after for()");
 
        return ACCOUNT_ERROR_RECORD_NOT_FOUND;
 }
@@ -1407,6 +1437,7 @@ ACCOUNT_API int account_foreach_account_from_db(account_cb callback, void *user_
        }
        _INFO("account_foreach_account_from_db end");
 
+       _account_gslist_free(account_list);
        return ACCOUNT_ERROR_NONE;
 }
 
@@ -1447,7 +1478,12 @@ ACCOUNT_API int account_query_account_by_account_id(int account_db_id, account_h
                return ACCOUNT_ERROR_DB_FAILED;
        }
 
-       *account = (account_h) account_data;
+       account_s **input = (account_s **)account;
+
+       _account_free_account_items(*input);
+       _ACCOUNT_FREE(*input);
+
+       *input = account_data;
 
        _INFO("account_query_account_by_account_id end");
 
@@ -1503,6 +1539,7 @@ ACCOUNT_API int account_query_account_by_user_name(account_cb callback, const ch
        }
        _INFO("account_query_account_by_user_name end");
 
+       _account_gslist_free(account_list);
        return ACCOUNT_ERROR_NONE;
 }
 
@@ -1554,6 +1591,7 @@ ACCOUNT_API int account_query_account_by_package_name(account_cb callback, const
                        break;
                }
        }
+       _account_gslist_free(account_list);
        _INFO("account_query_account_by_package_name end");
        return ACCOUNT_ERROR_NONE;
 }
@@ -1612,6 +1650,7 @@ ACCOUNT_API int account_query_account_by_capability(account_cb callback, const c
                        break;
                }
        }
+       _account_gslist_free(account_list);
        _INFO("account_query_account_by_capability end");
        return ACCOUNT_ERROR_NONE;
 }
@@ -1664,6 +1703,7 @@ ACCOUNT_API int account_query_account_by_capability_type(account_cb callback, co
                        break;
                }
        }
+       _account_gslist_free(account_list);
        _INFO("account_query_account_by_capability end");
        return ACCOUNT_ERROR_NONE;
 }
@@ -1716,6 +1756,8 @@ ACCOUNT_API int account_query_capability_by_account_id(capability_cb callback, i
                }
                _INFO("");
        }
+
+       _account_capability_gslist_free(capability_list);
        _INFO("account_query_capability_by_account_id end");
        return ACCOUNT_ERROR_NONE;
 }
@@ -1766,7 +1808,7 @@ ACCOUNT_API int account_get_total_count_from_db(int *count)
        return _account_get_total_count(count, true);
 }
 
-ACCOUNT_API int account_get_total_count_from_db_ex(int *count)
+ACCOUNT_INTERNAL_API int account_get_total_count_from_db_ex(int *count)
 {
        _INFO("account_get_total_count_from_db_ex starting");
 
@@ -1800,6 +1842,10 @@ ACCOUNT_API int account_update_sync_status_by_id(int account_db_id, const accoun
 
 static int _account_type_free_label_items(label_s *data)
 {
+       if(!data) {
+               return ACCOUNT_ERROR_INVALID_PARAMETER;
+       }
+
        _ACCOUNT_FREE(data->app_id);
        _ACCOUNT_FREE(data->label);
        _ACCOUNT_FREE(data->locale);
@@ -1807,7 +1853,7 @@ static int _account_type_free_label_items(label_s *data)
        return ACCOUNT_ERROR_NONE;
 }
 
-static int _account_type_gslist_free(GSList* list)
+static int _account_type_label_gslist_free(GSList* list)
 {
        ACCOUNT_RETURN_VAL((list != NULL), {}, ACCOUNT_ERROR_INVALID_PARAMETER, ("GSlist is NULL"));
 
@@ -1825,15 +1871,72 @@ static int _account_type_gslist_free(GSList* list)
        return ACCOUNT_ERROR_NONE;
 }
 
-static int _account_type_item_free(account_type_s *data)
+static int _account_type_free_provider_feature_items(provider_feature_s *data)
 {
+       if(!data) {
+               return ACCOUNT_ERROR_INVALID_PARAMETER;
+       }
+
+       _ACCOUNT_FREE(data->key);
+       _ACCOUNT_FREE(data->app_id);
+
+       return ACCOUNT_ERROR_NONE;
+}
+
+static int _account_type_provider_feature_gslist_free(GSList* list)
+{
+       ACCOUNT_RETURN_VAL((list != NULL), {}, ACCOUNT_ERROR_INVALID_PARAMETER, ("GSlist is NULL"));
+
+       GSList* iter;
+
+       for (iter = list; iter != NULL; iter = g_slist_next(iter)) {
+               provider_feature_s *feature_data = (provider_feature_s*)iter->data;
+               _account_type_free_provider_feature_items(feature_data);
+               _ACCOUNT_FREE(feature_data);
+       }
+
+       g_slist_free(list);
+       list = NULL;
+
+       return ACCOUNT_ERROR_NONE;
+}
+
+static int _account_type_free_account_type_items(account_type_s *data)
+{
+       if(!data) {
+               return ACCOUNT_ERROR_INVALID_PARAMETER;
+       }
+
        _ACCOUNT_FREE(data->app_id);
        _ACCOUNT_FREE(data->service_provider_id);
        _ACCOUNT_FREE(data->icon_path);
        _ACCOUNT_FREE(data->small_icon_path);
 
+       _account_type_label_gslist_free(data->label_list);
+       _account_type_provider_feature_gslist_free(data->provider_feature_list);
+//     _account_type_glist_free(data->account_type_list);
+
        return ACCOUNT_ERROR_NONE;
 }
+
+static int _account_type_gslist_free(GSList* list)
+{
+       ACCOUNT_RETURN_VAL((list != NULL), {}, ACCOUNT_ERROR_INVALID_PARAMETER, ("Glist is NULL"));
+
+       GSList* iter;
+
+       for (iter = list; iter != NULL; iter = g_slist_next(iter)) {
+               account_type_s *account_type_record = (account_type_s*)iter->data;
+               _account_type_free_account_type_items(account_type_record);
+               _ACCOUNT_FREE(account_type_record);
+       }
+
+       g_slist_free(list);
+       list = NULL;
+
+       return ACCOUNT_ERROR_NONE;
+}
+
 /*
 static int _account_type_glist_free(GList* list)
 {
@@ -1843,7 +1946,7 @@ static int _account_type_glist_free(GList* list)
 
        for (iter = list; iter != NULL; iter = g_list_next(iter)) {
                account_type_s *account_type_record = (account_type_s*)iter->data;
-               _account_type_item_free(account_type_record);
+               _account_type_free_account_type_items(account_type_record);
                _ACCOUNT_FREE(account_type_record);
        }
 
@@ -1853,16 +1956,6 @@ static int _account_type_glist_free(GList* list)
        return ACCOUNT_ERROR_NONE;
 }
 */
-static int _account_type_free_account_type_items(account_type_s *data)
-{
-       _account_type_item_free(data);
-
-       _account_type_gslist_free(data->label_list);
-//     _account_type_gslist_free(data->provider_feature_list);
-//     _account_type_glist_free(data->account_type_list);
-
-       return ACCOUNT_ERROR_NONE;
-}
 
 ACCOUNT_API int account_type_create(account_type_h *account_type)
 {
@@ -2111,6 +2204,7 @@ ACCOUNT_API int account_type_query_provider_feature_by_app_id(provider_feature_c
                }
        }
 
+       _account_type_provider_feature_gslist_free(provider_feature_list);
        _INFO("account_type_query_provider_feature_by_app_id end");
        return error_code;
 }
@@ -2467,6 +2561,8 @@ ACCOUNT_API int account_type_query_label_by_app_id(account_label_cb callback, co
                }
                _INFO("");
        }
+
+       _account_type_label_gslist_free(label_list);
        _INFO("account_type_query_label_by_app_id end");
        return ACCOUNT_ERROR_NONE;
 }
@@ -2504,15 +2600,14 @@ ACCOUNT_API int account_type_query_by_app_id(const char* app_id, account_type_h
        ACCOUNT_RETURN_VAL((received_account_type != NULL), {}, ACCOUNT_ERROR_DB_FAILED, ("INVALID DATA RECEIVED FROM SVC"));
 
        in_data->id = received_account_type->id;
-       in_data->app_id = _account_get_text(received_account_type->app_id);
-       in_data->service_provider_id = _account_get_text(received_account_type->service_provider_id);
-       in_data->icon_path = _account_get_text(received_account_type->icon_path);
-       in_data->small_icon_path = _account_get_text(received_account_type->small_icon_path);
+       in_data->app_id = received_account_type->app_id;
+       in_data->service_provider_id = received_account_type->service_provider_id;
+       in_data->icon_path = received_account_type->icon_path;
+       in_data->small_icon_path = received_account_type->small_icon_path;
        in_data->multiple_account_support = received_account_type->multiple_account_support;
        in_data->label_list = received_account_type->label_list;
        in_data->provider_feature_list = received_account_type->provider_feature_list;
 
-       _account_type_item_free(received_account_type);
        _ACCOUNT_FREE(received_account_type);
        _INFO("account_type_query_by_app_id end");
        return ACCOUNT_ERROR_NONE;
@@ -2567,6 +2662,8 @@ ACCOUNT_API int account_type_foreach_account_type_from_db(account_type_cb callba
                        break;
                }
        }
+
+       _account_type_gslist_free(account_type_list);
        _INFO("account_type_foreach_account_type_from_db end");
        return ACCOUNT_ERROR_NONE;
 }
@@ -2660,6 +2757,8 @@ ACCOUNT_API int account_type_query_by_provider_feature(account_type_cb callback,
                }
                _INFO("");
        }
+
+       _account_type_gslist_free(account_type_list);
        _INFO("account_type_query_by_provider_feature end");
        return ACCOUNT_ERROR_NONE;
 }
index b638581..f0b9a17 100644 (file)
 #include <vconf.h>
 #include <unistd.h>
 
-#include "account.h"
 #include "account-private.h"
 #include "account_internal.h"
 #include "dbg.h"
 
+#ifdef TIZEN_PROFILE_MOBILE
+#include "mobile/account.h"
+#else
+#include "wearable/account.h"
+#endif
+
 #define ACCOUNT_DB_OPEN_READONLY 0
 #define ACCOUNT_DB_OPEN_READWRITE 1
 
index 20fc652..ad48a28 100644 (file)
@@ -28,9 +28,14 @@ extern "C"
 {
 #endif
 
-#include "account.h"
 #include "account-types.h"
 
+#ifdef TIZEN_PROFILE_MOBILE
+#include "mobile/account.h"
+#else
+#include "wearable/account.h"
+#endif
+
 typedef struct _account_subscribe_s
 {
            account_event_cb account_subscription_callback;