#include "watchface-common/watchface-util.h"
#include "watchface-complication-provider/complication-provider.h"
#include "watchface-complication-provider/complication-provider-implementation.h"
+#include "watchface-complication-provider/include/watchface-complication-provider.h"
#ifdef LOG_TAG
#undef LOG_TAG
Bundle* context_data;
Bundle* shared_data;
bool ret;
+ bool is_valid;
+ char num_str[32] = {0, };
+ char* shared_data_type;
auto sender_info = sender_info_.find(sender_name);
auto si = sender_info->second;
return;
}
+ snprintf(num_str, sizeof(num_str), "%d", type);
+ bundle_add_str(shared_data->GetRaw(), DATA_TYPE_KEY, num_str);
+
/* Call update request callback and fill shared data */
parent_->OnDataUpdateRequest(sender_app_id, (ComplicationType)type,
context_data, shared_data);
delete context_data;
+
+ shared_data_type = NULL;
+ bundle_get_str(shared_data->GetRaw(), DATA_TYPE_KEY, &shared_data_type);
+ if (shared_data_type == NULL || strcmp(shared_data_type, num_str) != 0) {
+ bundle_del(shared_data->GetRaw(), DATA_TYPE_KEY);
+ bundle_add_str(shared_data->GetRaw(), DATA_TYPE_KEY, num_str);
+ LOGI("DATA_TYPE_KEY repaired : %s %s", shared_data_type, num_str);
+ }
+
+ is_valid = false;
+ watchface_complication_provider_data_is_valid(shared_data->GetRaw(), &is_valid);
+ if (is_valid == false) {
+ LOGE("EmitSignal failed %s %s %d %d", sender_app_id, (provider_id_).c_str(),
+ complication_id, type);
+ delete shared_data;
+ return;
+ }
+
ret = gdbus_.get()->EmitSignal(
IGDBus::Complication,
std::string(sender_app_id),
ComplicationType type, const Bundle* context,
Bundle* shared_data) {
const bundle* context_data = context->GetConstRaw();
- char num_str[32] = {0, };
- snprintf(num_str, sizeof(num_str), "%d", type);
- _add_bundle_data(shared_data->GetRaw(), DATA_TYPE_KEY, num_str);
cb_(provider_id.c_str(), sender_appid.c_str(),
static_cast<watchface_complication_type_e>(type), context_data,
shared_data->GetRaw(), user_data_);
WATCHFACE_COMPLICATION_TYPE_RANGED_VALUE |
WATCHFACE_COMPLICATION_TYPE_TIME |
WATCHFACE_COMPLICATION_TYPE_ICON |
- WATCHFACE_COMPLICATION_TYPE_IMAGE))
+ WATCHFACE_COMPLICATION_TYPE_IMAGE)) {
+ LOGE("Invalid param : supported_types(%d)", supported_types);
return WATCHFACE_COMPLICATION_ERROR_INVALID_PARAMETER;
+ }
if (supported_event_types < WATCHFACE_COMPLICATION_EVENT_NONE ||
supported_event_types > (WATCHFACE_COMPLICATION_EVENT_NONE |
WATCHFACE_COMPLICATION_EVENT_TAP |
- WATCHFACE_COMPLICATION_EVENT_DOUBLE_TAP))
+ WATCHFACE_COMPLICATION_EVENT_DOUBLE_TAP)) {
+ LOGE("Invalid param : supported_event_types(%d)", supported_event_types);
+ return WATCHFACE_COMPLICATION_ERROR_INVALID_PARAMETER;
+ }
+
+ if (!util::CheckComplicationType(default_type)) {
+ LOGE("Invalid param : default_type(%d)", default_type);
+ return WATCHFACE_COMPLICATION_ERROR_INVALID_PARAMETER;
+ }
+
+ if (default_type != WATCHFACE_COMPLICATION_TYPE_NO_DATA
+ && default_provider_id == NULL) {
+ LOGE("Invalid param");
+ return WATCHFACE_COMPLICATION_ERROR_INVALID_PARAMETER;
+ }
+
+ if (created_handle == NULL)
return WATCHFACE_COMPLICATION_ERROR_INVALID_PARAMETER;
try {
int comp_type = strtol(type_str, NULL, 10);
if (!util::CheckComplicationType(comp_type)) {
- LOGE("Invalid param");
+ LOGE("Invalid param : type_str(%s)", type_str);
return WATCHFACE_COMPLICATION_ERROR_INVALID_PARAMETER;
}
*type = static_cast<watchface_complication_type_e>(comp_type);
if (!watchface_complication::util::CheckWatchFeatureEnabled())
return WATCHFACE_COMPLICATION_ERROR_NOT_SUPPORTED;
- if (handle == NULL
- || event_type < WATCHFACE_COMPLICATION_EVENT_NONE
- || event_type > WATCHFACE_COMPLICATION_EVENT_DOUBLE_TAP)
+ if (handle == NULL ||
+ !(event_type == WATCHFACE_COMPLICATION_EVENT_TAP
+ || event_type == WATCHFACE_COMPLICATION_EVENT_DOUBLE_TAP))
return WATCHFACE_COMPLICATION_ERROR_INVALID_PARAMETER;
auto sh = static_cast<SharedHandle<WatchComplicationStub>*>(handle);