mirror of
https://github.com/openharmony/ability_ability_runtime.git
synced 2026-08-24 22:21:36 -04:00
@@ -31,7 +31,8 @@ namespace OHOS {
|
||||
namespace AbilityRuntime {
|
||||
namespace {
|
||||
constexpr int32_t ERR_OK = 0;
|
||||
constexpr int32_t ERROR_CODE_URI_PERMISSION_NOT_FOUND = 16000058;
|
||||
constexpr int32_t ERROR_CODE_INVALID_URI_FLAG = 16000058;
|
||||
constexpr int32_t ERROR_CODE_INVALID_URI_TYPE = 16000059;
|
||||
constexpr int32_t argCountFour = 4;
|
||||
constexpr int32_t argCountThree = 3;
|
||||
constexpr int32_t argCountTwo = 2;
|
||||
@@ -103,6 +104,12 @@ private:
|
||||
task.ResolveWithNoError(engine, engine.CreateUndefined());
|
||||
} else if (errCode == AAFwk::CHECK_PERMISSION_FAILED) {
|
||||
task.Reject(engine, CreateNoPermissionError(engine, "ohos.permission.PROXY_AUTHORIZATION_URI"));
|
||||
} else if (errCode == ERROR_CODE_INVALID_URI_FLAG){
|
||||
task.Reject(engine, CreateJsError(engine, ERR_ABILITY_RUNTIME_EXTERNAL_INVALID_URI_FLAG,
|
||||
"Invalid URI flag."));
|
||||
} else if (errCode == ERROR_CODE_INVALID_URI_TYPE){
|
||||
task.Reject(engine, CreateJsError(engine, ERR_ABILITY_RUNTIME_EXTERNAL_INVALID_URI_TYPE,
|
||||
"Only support file URI."));
|
||||
} else {
|
||||
task.Reject(engine, CreateJsError(engine, ERR_ABILITY_RUNTIME_EXTERNAL_INTERNAL_ERROR,
|
||||
"Internal Error."));
|
||||
@@ -153,9 +160,9 @@ private:
|
||||
} else if (errCode == AAFwk::CHECK_PERMISSION_FAILED) {
|
||||
task.Reject(engine, CreateNoPermissionError(engine,
|
||||
"Do not have permission ohos.permission.PROXY_AUTHORIZATION_URI"));
|
||||
} else if (errCode == ERROR_CODE_URI_PERMISSION_NOT_FOUND){
|
||||
task.Reject(engine, CreateJsError(engine, ERR_ABILITY_RUNTIME_EXTERNAL_URI_PERMISSION_NOT_FOUND,
|
||||
"Uri permission to revoke not found."));
|
||||
} else if (errCode == ERROR_CODE_INVALID_URI_TYPE){
|
||||
task.Reject(engine, CreateJsError(engine, ERR_ABILITY_RUNTIME_EXTERNAL_INVALID_URI_TYPE,
|
||||
"Only support file URI."));
|
||||
} else {
|
||||
task.Reject(engine, CreateJsError(engine, ERR_ABILITY_RUNTIME_EXTERNAL_INTERNAL_ERROR,
|
||||
"Internal Error."));
|
||||
|
||||
@@ -49,7 +49,8 @@ constexpr const char* ERROR_MSG_FREE_INSTALL_TOO_BUSY =
|
||||
constexpr const char* ERROR_MSG_FREE_INSTALL_TIMEOUT = "Installation-free timed out.";
|
||||
constexpr const char* ERROR_MSG_FREE_INSTALL_OTHERS = "Installation-free is not allowed for other applications.";
|
||||
constexpr const char* ERROR_MSG_FREE_INSTALL_CROSS_DEVICE = "Cross-device installation-free is not supported.";
|
||||
constexpr const char* ERROR_MSG_URI_PERMISSION_NOT_FOUND = "Uri permission not found.";
|
||||
constexpr const char* ERROR_MSG_INVALID_URI_FLAG = "Invalid URI flag.";
|
||||
constexpr const char* ERROR_MSG_INVALID_URI_TYPE = "Invalid URI type, only support file Uri.";
|
||||
constexpr const char* ERROR_MSG_INVALID_CALLER = "The caller has been released.";
|
||||
constexpr const char* ERROR_MSG_NO_MISSION_ID = "The specified mission does not exist.";
|
||||
constexpr const char* ERROR_MSG_NO_MISSION_LISTENER = "Input error. The specified mission listener does not exist.";
|
||||
@@ -80,7 +81,8 @@ static std::unordered_map<AbilityErrorCode, const char*> ERR_CODE_MAP = {
|
||||
{ AbilityErrorCode::ERROR_CODE_FREE_INSTALL_TIMEOUT, ERROR_MSG_FREE_INSTALL_TIMEOUT },
|
||||
{ AbilityErrorCode::ERROR_CODE_FREE_INSTALL_OTHERS, ERROR_MSG_FREE_INSTALL_OTHERS },
|
||||
{ AbilityErrorCode::ERROR_CODE_FREE_INSTALL_CROSS_DEVICE, ERROR_MSG_FREE_INSTALL_CROSS_DEVICE },
|
||||
{ AbilityErrorCode::ERROR_CODE_URI_PERMISSION_NOT_FOUND, ERROR_MSG_URI_PERMISSION_NOT_FOUND },
|
||||
{ AbilityErrorCode::ERROR_CODE_INVALID_URI_FLAG, ERROR_MSG_INVALID_URI_FLAG },
|
||||
{ AbilityErrorCode::ERROR_CODE_INVALID_URI_TYPE, ERROR_MSG_INVALID_URI_TYPE },
|
||||
{ AbilityErrorCode::ERROR_CODE_INVALID_CALLER, ERROR_MSG_INVALID_CALLER },
|
||||
{ AbilityErrorCode::ERROR_CODE_NO_MISSION_ID, ERROR_MSG_NO_MISSION_ID },
|
||||
{ AbilityErrorCode::ERROR_CODE_NO_MISSION_LISTENER, ERROR_MSG_NO_MISSION_LISTENER },
|
||||
|
||||
@@ -46,7 +46,8 @@ enum {
|
||||
ERR_ABILITY_RUNTIME_EXTERNAL_FREE_INSTALL_TIMEOUT = 16000055,
|
||||
ERR_ABILITY_RUNTIME_EXTERNAL_CANNOT_FREE_INSTALL_OTHER_ABILITY = 16000056,
|
||||
ERR_ABILITY_RUNTIME_EXTERNAL_NOT_SUPPORT_CROSS_DEVICE_FREE_INSTALL = 16000057,
|
||||
ERR_ABILITY_RUNTIME_EXTERNAL_URI_PERMISSION_NOT_FOUND = 16000058,
|
||||
ERR_ABILITY_RUNTIME_EXTERNAL_INVALID_URI_FLAG = 16000058,
|
||||
ERR_ABILITY_RUNTIME_EXTERNAL_INVALID_URI_TYPE = 16000058,
|
||||
ERR_ABILITY_RUNTIME_EXTERNAL_EXECUTE_SHELL_COMMAND_FAILED = 16000101,
|
||||
ERR_ABILITY_RUNTIME_EXTERNAL_INVALID_WANTAGENT = 16000151,
|
||||
ERR_ABILITY_RUNTIME_EXTERNAL_WANTAGENT_NOT_FOUND = 16000152,
|
||||
|
||||
@@ -129,8 +129,10 @@ const std::map<int32_t, std::string> ERROR_MSG_MAP = {
|
||||
"The specified SystemCapability name was not found." },
|
||||
{ ERR_ABILITY_RUNTIME_EXTERNAL_START_ABILITY_WAITTING,
|
||||
"The previous ability is starting, wait start later." },
|
||||
{ ERR_ABILITY_RUNTIME_EXTERNAL_URI_PERMISSION_NOT_FOUND,
|
||||
"Uri permission to revoke not found." }
|
||||
{ ERR_ABILITY_RUNTIME_EXTERNAL_INVALID_URI_FLAG,
|
||||
"Invalid URI flag." },
|
||||
{ ERR_ABILITY_RUNTIME_EXTERNAL_INVALID_URI_TYPE,
|
||||
"Invalid URI type, only support file uri" }
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
+5
-2
@@ -96,8 +96,11 @@ enum class AbilityErrorCode {
|
||||
// Cross-device installation-free is not supported.
|
||||
ERROR_CODE_FREE_INSTALL_CROSS_DEVICE = 16000057,
|
||||
|
||||
// Uri permission not found.
|
||||
ERROR_CODE_URI_PERMISSION_NOT_FOUND = 16000058,
|
||||
// Uri flag invalid.
|
||||
ERROR_CODE_INVALID_URI_FLAG = 16000058,
|
||||
|
||||
// Uri type invalid, only support file uri currently.
|
||||
ERROR_CODE_INVALID_URI_TYPE = 16000059,
|
||||
|
||||
// invalid caller.
|
||||
ERROR_CODE_INVALID_CALLER = 16200001,
|
||||
|
||||
@@ -33,7 +33,8 @@ namespace OHOS {
|
||||
namespace AAFwk {
|
||||
const int32_t DEFAULT_USER_ID = 0;
|
||||
const int32_t ERR_OK = 0;
|
||||
const int32_t ERROR_CODE_URI_PERMISSION_NOT_FOUND = 16000058;
|
||||
constexpr int32_t ERROR_CODE_INVALID_URI_FLAG = 16000058;
|
||||
constexpr int32_t ERROR_CODE_INVALID_URI_TYPE = 16000059;
|
||||
using TokenId = Security::AccessToken::AccessTokenID;
|
||||
|
||||
int UriPermissionManagerStubImpl::GrantUriPermission(const Uri &uri, unsigned int flag,
|
||||
@@ -41,7 +42,7 @@ int UriPermissionManagerStubImpl::GrantUriPermission(const Uri &uri, unsigned in
|
||||
{
|
||||
if ((flag & (Want::FLAG_AUTH_READ_URI_PERMISSION | Want::FLAG_AUTH_WRITE_URI_PERMISSION)) == 0) {
|
||||
HILOG_WARN("UriPermissionManagerStubImpl::GrantUriPermission: The param flag is invalid.");
|
||||
return INNER_ERR;
|
||||
return ERROR_CODE_INVALID_URI_FLAG;
|
||||
}
|
||||
Uri uri_inner = uri;
|
||||
auto&& authority = uri_inner.GetAuthority();
|
||||
@@ -63,7 +64,7 @@ int UriPermissionManagerStubImpl::GrantUriPermission(const Uri &uri, unsigned in
|
||||
auto&& scheme = uri_inner.GetScheme();
|
||||
if (scheme != "file") {
|
||||
HILOG_WARN("only support file uri.");
|
||||
return INNER_ERR;
|
||||
return ERROR_CODE_INVALID_URI_TYPE;
|
||||
}
|
||||
// auto remove URI permission for clipboard
|
||||
Security::AccessToken::NativeTokenInfo nativeInfo;
|
||||
@@ -161,6 +162,11 @@ int UriPermissionManagerStubImpl::RevokeUriPermissionManually(const Uri &uri, co
|
||||
HILOG_DEBUG("Start to remove uri permission manually.");
|
||||
Uri uri_inner = uri;
|
||||
auto&& authority = uri_inner.GetAuthority();
|
||||
auto&& scheme = uri_inner.GetScheme();
|
||||
if (scheme != "file") {
|
||||
HILOG_WARN("only support file uri.");
|
||||
return ERROR_CODE_INVALID_URI_TYPE;
|
||||
}
|
||||
Security::AccessToken::AccessTokenID uriTokenId = GetTokenIdByBundleName(authority);
|
||||
Security::AccessToken::AccessTokenID tokenId = GetTokenIdByBundleName(bundleName);
|
||||
auto callerTokenId = IPCSkeleton::GetCallingTokenID();
|
||||
@@ -179,14 +185,12 @@ int UriPermissionManagerStubImpl::RevokeUriPermissionManually(const Uri &uri, co
|
||||
auto search = uriMap_.find(uriStr);
|
||||
if (search == uriMap_.end()) {
|
||||
HILOG_ERROR("URI does not exist on uri map.");
|
||||
return ERROR_CODE_URI_PERMISSION_NOT_FOUND;
|
||||
return ERR_OK;
|
||||
}
|
||||
auto& list = search->second;
|
||||
bool found = false;
|
||||
for (auto it = list.begin(); it != list.end(); it++) {
|
||||
if (it->targetTokenId == tokenId) {
|
||||
HILOG_INFO("Erase an info form list.");
|
||||
found = true;
|
||||
auto storageMgrProxy = ConnectStorageManager();
|
||||
if (storageMgrProxy == nullptr) {
|
||||
HILOG_ERROR("ConnectStorageManager failed");
|
||||
@@ -205,9 +209,6 @@ int UriPermissionManagerStubImpl::RevokeUriPermissionManually(const Uri &uri, co
|
||||
if (list.size() == 0) {
|
||||
uriMap_.erase(search);
|
||||
}
|
||||
if (!found) {
|
||||
return ERROR_CODE_URI_PERMISSION_NOT_FOUND;
|
||||
}
|
||||
}
|
||||
return ERR_OK;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user