diff --git a/frameworks/js/metadatahelper/avmetadataextractor_napi.cpp b/frameworks/js/metadatahelper/avmetadataextractor_napi.cpp index 34fe95f553bdd8126a687fde5bb21d053757146f..d25b53259e04fea52d056a023f1ce9cafa128e7a 100644 --- a/frameworks/js/metadatahelper/avmetadataextractor_napi.cpp +++ b/frameworks/js/metadatahelper/avmetadataextractor_napi.cpp @@ -521,53 +521,21 @@ napi_value AVMetadataExtractorNapi::JsSetUrlSource(napi_env env, napi_callback_i = AVMetadataExtractorNapi::GetJsInstanceWithParameter(env, info, argCount, args); CHECK_AND_RETURN_RET_LOG(extractor != nullptr, result, "failed to GetJsInstanceWithParameter"); - auto asyncCtx = std::make_unique(env); - CHECK_AND_RETURN_RET_LOG(asyncCtx, result, "failed to GetAsyncContext"); - asyncCtx->napi = extractor; - asyncCtx->innerHelper_ = extractor->helper_; - asyncCtx->deferred = CommonNapi::CreatePromise(env, nullptr, result); - CheckParamsAndSignError(env, args, argCount, asyncCtx); - napi_value resource = nullptr; - napi_create_string_utf8(env, "JsSetUrlSource", NAPI_AUTO_LENGTH, &resource); - NAPI_CALL(env, napi_create_async_work(env, nullptr, resource, [](napi_env env, void *data) { - auto asyncCtx = reinterpret_cast(data); - CHECK_AND_RETURN_LOG(asyncCtx && !asyncCtx->errFlag && asyncCtx->innerHelper_, "Invalid context."); - auto ret = asyncCtx->innerHelper_->SetUrlSource(asyncCtx->napi->url_, asyncCtx->napi->header_); - asyncCtx->napi->state_ = ret == MSERR_OK ? HelperState::HELPER_STATE_RUNNABLE : HelperState::HELPER_ERROR; - if (MSERR_USER_NO_PERMISSION == static_cast(ret)) { - auto errCode = MSErrorToExtErrorAPI9(static_cast(ret)); - asyncCtx->SignError(errCode, MSErrorToString(static_cast(ret))); - return; - } else if (ret != MSERR_OK) { - asyncCtx->SignError(MSERR_EXT_API9_OPERATE_NOT_PERMIT, "set source fail, invalid operation"); - return; - } - asyncCtx->innerHelper_->SetAVMetadataCaller(AVMetadataCaller::AV_METADATA_EXTRACTOR); - }, MediaAsyncContext::CompleteCallback, static_cast(asyncCtx.get()), &asyncCtx->work)); - napi_queue_async_work_with_qos(env, asyncCtx->work, napi_qos_user_initiated); - asyncCtx.release(); - MEDIA_LOGI("0x%{public}06" PRIXPTR " JsSetUrlSource Out", FAKE_POINTER(extractor)); - return result; -} + CHECK_AND_RETURN_RET_LOG( + extractor->state_ == HelperState::HELPER_STATE_IDLE, result, "Has set source once, unsupport set again"); -void AVMetadataExtractorNapi::CheckParamsAndSignError(napi_env env, napi_value args[], size_t argCount, - std::unique_ptr &asyncCtx) -{ napi_valuetype valueType = napi_undefined; - if (asyncCtx->napi->state_ != HelperState::HELPER_STATE_IDLE) { - asyncCtx->SignError(MSERR_EXT_API9_OPERATE_NOT_PERMIT, "Has set source once, unsupport set again"); - } else if (argCount < ARG_ONE || napi_typeof(env, args[ARG_ZERO], &valueType) != napi_ok - || valueType != napi_string) { - asyncCtx->SignError(MSERR_EXT_API20_PARAM_ERROR_OUT_OF_RANGE, "The input param is not string value"); - } else { - asyncCtx->napi->url_ = CommonNapi::GetStringArgument(env, args[ARG_ZERO]); - if (asyncCtx->napi->url_.empty() - || (asyncCtx->napi->url_.find("http://") != 0 && asyncCtx->napi->url_.find("https://") != 0)) { - asyncCtx->SignError(MSERR_EXT_API20_PARAM_ERROR_OUT_OF_RANGE, "The input param is not http/https address"); - } else { - (void)CommonNapi::GetPropertyMap(env, args[ARG_ONE], asyncCtx->napi->header_); - } + if (argCount < ARG_ONE || napi_typeof(env, args[ARG_ZERO], &valueType) != napi_ok || valueType != napi_string) { + return result; } + + extractor->url_ = CommonNapi::GetStringArgument(env, args[ARG_ZERO]); + (void)CommonNapi::GetPropertyMap(env, args[1], extractor->header_); + auto res = extractor->helper_->SetUrlSource(extractor->url_, extractor->header_); + extractor->state_ = res == MSERR_OK ? HelperState::HELPER_STATE_RUNNABLE : HelperState::HELPER_ERROR; + extractor->helper_->SetAVMetadataCaller(AVMetadataCaller::AV_METADATA_EXTRACTOR); + MEDIA_LOGI("0x%{public}06" PRIXPTR " JsSetUrlSource Out", FAKE_POINTER(extractor)); + return result; } napi_value AVMetadataExtractorNapi::JsSetAVFileDescriptor(napi_env env, napi_callback_info info) diff --git a/frameworks/js/metadatahelper/avmetadataextractor_napi.h b/frameworks/js/metadatahelper/avmetadataextractor_napi.h index c23eb518749bf042902c51e5a8a71578edd293d5..b33d5a9f63b8b3f05d2a06a06a941153ac95c016 100644 --- a/frameworks/js/metadatahelper/avmetadataextractor_napi.h +++ b/frameworks/js/metadatahelper/avmetadataextractor_napi.h @@ -61,8 +61,6 @@ private: static void CommonCallbackRoutine( napi_env env, AVMetadataExtractorAsyncContext *&asyncContext, const napi_value &valueParam); static void HandleMetaDataResult(napi_env env, AVMetadataExtractorAsyncContext* &promiseCtx, napi_value &result); - static void CheckParamsAndSignError(napi_env env, napi_value args[], size_t argCount, - std::unique_ptr &asyncCtx); static void ResolveMetadataComplete(napi_env env, napi_status status, void *data); static void GetTimeByFrameIndexComplete(napi_env env, napi_status status, void *data); static void GetFrameIndexByTimeComplete(napi_env env, napi_status status, void *data); diff --git a/frameworks/native/avmetadatahelper/test/unittest/src/avmetadata_unit_test.cpp b/frameworks/native/avmetadatahelper/test/unittest/src/avmetadata_unit_test.cpp index 3a8371d9d8ba32fb8d924904f22fef55db10a982..5327d18d671f24eefe93b506449d049e138e0d5f 100644 --- a/frameworks/native/avmetadatahelper/test/unittest/src/avmetadata_unit_test.cpp +++ b/frameworks/native/avmetadatahelper/test/unittest/src/avmetadata_unit_test.cpp @@ -1045,7 +1045,7 @@ HWTEST_F(AVMetadataUnitTest, SetUrlSource_API_0100, Level2) uri = AVMetadataTestBase::GetInstance().GetMountPath() + std::string("HDR.mp4"); ASSERT_NE(MSERR_OK, helper->SetUrlSource(uri, header)); uri = "http://XXX"; - ASSERT_NE(MSERR_OK, helper->SetUrlSource(uri, header)); + ASSERT_EQ(MSERR_OK, helper->SetUrlSource(uri, header)); helper->Release(); } @@ -1067,7 +1067,7 @@ HWTEST_F(AVMetadataUnitTest, SetUrlSource_API_0200, Level2) uri = AVMetadataTestBase::GetInstance().GetMountPath() + std::string("HDR.mp4"); ASSERT_NE(MSERR_OK, helper->SetUrlSource(uri, header)); uri = "https://XXX"; - ASSERT_NE(MSERR_OK, helper->SetUrlSource(uri, header)); + ASSERT_EQ(MSERR_OK, helper->SetUrlSource(uri, header)); helper->Release(); } diff --git a/services/services/avmetadatahelper/server/avmetadatahelper_server.cpp b/services/services/avmetadatahelper/server/avmetadatahelper_server.cpp index 11d531219c855561b15f891de9e3f963b590360a..5315e3a6565355e2b40bf266da94127fb227c7d4 100644 --- a/services/services/avmetadatahelper/server/avmetadatahelper_server.cpp +++ b/services/services/avmetadatahelper/server/avmetadatahelper_server.cpp @@ -15,14 +15,12 @@ #include "avmetadatahelper_server.h" #include "media_log.h" -#include "media_permission.h" #include "media_errors.h" #include "engine_factory_repo.h" #include "uri_helper.h" #include "media_dfx.h" #include "media_utils.h" #include "ipc_skeleton.h" -#include "accesstoken_kit.h" namespace { constexpr OHOS::HiviewDFX::HiLogLabel LABEL = {LOG_CORE, LOG_DOMAIN_METADATA, "AVMetadataHelperServer"}; @@ -125,11 +123,6 @@ int32_t AVMetadataHelperServer::SetUrlSource(const std::string &uri, const std:: std::unique_lock lock(mutex_); MEDIA_LOGD("Current uri is : %{private}s", uri.c_str()); CHECK_AND_RETURN_RET_LOG(!uri.empty(), MSERR_INVALID_VAL, "uri is empty"); - int32_t permissionResult = MediaPermission::CheckNetWorkPermission(appUid_, appPid_, appTokenId_); - if (permissionResult != Security::AccessToken::PERMISSION_GRANTED) { - MEDIA_LOGE("user do not have the right to access INTERNET, permission result: %{public}d", permissionResult); - return MSERR_USER_NO_PERMISSION; - } int32_t setSourceRes = MSERR_OK; std::atomic isInitEngineEnd = false;