diff --git a/frameworks/js/napi/session/src/napi_avsession.cpp b/frameworks/js/napi/session/src/napi_avsession.cpp index 531aa4a97bf3e455a18185fea97feeef23a311e5..16927145fd0cbb63182a7f9e2391f0264e90ae3a 100755 --- a/frameworks/js/napi/session/src/napi_avsession.cpp +++ b/frameworks/js/napi/session/src/napi_avsession.cpp @@ -498,9 +498,7 @@ napi_value NapiAVSession::SetAVPlaybackState(napi_env env, napi_callback_info in napi_value NapiAVSession::SetAVQueueItems(napi_env env, napi_callback_info info) { AVSESSION_TRACE_SYNC_START("NapiAVSession::SetAVQueueItems"); - struct ConcreteContext : public ContextBase { - std::vector items_; - }; + struct ConcreteContext : public ContextBase { std::vector items_; }; auto context = std::make_shared(); if (context == nullptr) { NapiUtils::ThrowError(env, "SetAVQueueItems failed : no memory", @@ -536,6 +534,8 @@ napi_value NapiAVSession::SetAVQueueItems(napi_env env, napi_callback_info info) context->errMessage = "SetAVQueueItems failed : native invalid parameters"; } else if (ret == ERR_NO_PERMISSION) { context->errMessage = "SetAVQueueItems failed : native no permission"; + } else if (ret == ERR_MARSHALLING) { + context->errMessage = "SetAVQueueItems failed : item number is out of range"; } else { context->errMessage = "SetAVQueueItems failed : native server exception"; } @@ -543,9 +543,7 @@ napi_value NapiAVSession::SetAVQueueItems(napi_env env, napi_callback_info info) context->errCode = NapiAVSessionManager::errcode_[ret]; } }; - auto complete = [env](napi_value& output) { - output = NapiUtils::GetUndefinedValue(env); - }; + auto complete = [env](napi_value& output) { output = NapiUtils::GetUndefinedValue(env); }; return NapiAsyncWork::Enqueue(env, context, "SetAVQueueItems", executor, complete); } diff --git a/services/session/ipc/proxy/avsession_proxy.cpp b/services/session/ipc/proxy/avsession_proxy.cpp index 9b93da2e0446bdb7644831e2670039be9c00ff09..7e6a2358997620fe95abbf94e0b8a33853568a34 100644 --- a/services/session/ipc/proxy/avsession_proxy.cpp +++ b/services/session/ipc/proxy/avsession_proxy.cpp @@ -286,11 +286,12 @@ int32_t AVSessionProxy::SetAVQueueItems(const std::vector& items) AVSESSION_TRACE_SYNC_START("AVSessionProxy::SetAVQueueItems"); CHECK_AND_RETURN_RET_LOG(!isDestroyed_, ERR_SESSION_NOT_EXIST, "session is destroyed"); MessageParcel data; + data.SetMaxCapacity(DEFAULT_IPC_CAPACITY); CHECK_AND_RETURN_RET_LOG(data.WriteInterfaceToken(GetDescriptor()), ERR_MARSHALLING, "write interface token failed"); - CHECK_AND_RETURN_RET_LOG(data.WriteInt32(items.size()), ERR_UNMARSHALLING, "write items num int32 failed"); + CHECK_AND_RETURN_RET_LOG(data.WriteInt32(items.size()), ERR_MARSHALLING, "write items num int32 failed"); for (auto &parcelable : items) { - CHECK_AND_RETURN_RET_LOG(data.WriteParcelable(&parcelable), ERR_UNMARSHALLING, "Write items failed"); + CHECK_AND_RETURN_RET_LOG(data.WriteParcelable(&parcelable), ERR_MARSHALLING, "Write items failed"); } MessageParcel reply; MessageOption option; diff --git a/services/session/ipc/proxy/avsession_proxy.h b/services/session/ipc/proxy/avsession_proxy.h index 4657f65f2a62a6ee403f324e63afe0e5f54b9b96..d705184faef448deb951b0f773f0ef7ca9729ebd 100644 --- a/services/session/ipc/proxy/avsession_proxy.h +++ b/services/session/ipc/proxy/avsession_proxy.h @@ -105,6 +105,7 @@ private: static inline BrokerDelegator delegator_; bool isDestroyed_ = {}; std::shared_ptr controller_; + const size_t DEFAULT_IPC_CAPACITY = 1048576; // Increase the IPC default capacity(200K) to 1M #ifdef CASTPLUS_CAST_ENGINE_ENABLE std::shared_ptr castController_;