mirror of
https://github.com/openharmony/arkui_ui_appearance.git
synced 2026-07-19 18:53:32 -04:00
@@ -30,11 +30,19 @@ const std::string PERMISSION_ERR_MSG =
|
||||
"An attempt was made to update configuration forbidden by permission: ohos.permission.UPDATE_CONFIGURATION.";
|
||||
const std::string INVALID_ARG_MSG = "The type of 'mode' must be DarkMode.";
|
||||
|
||||
static const std::unordered_map<int32_t, std::string> ERROR_CODE_TO_MSG {
|
||||
{ UiAppearanceAbilityInterface::ErrCode::PERMISSION_ERR, "Permission denied. " },
|
||||
{ UiAppearanceAbilityInterface::ErrCode::INVALID_ARG, "Parameter error. " },
|
||||
{ UiAppearanceAbilityInterface::ErrCode::SYS_ERR, "Internal error. " },
|
||||
};
|
||||
std::string ParseErrCode(const int32_t errCode)
|
||||
{
|
||||
switch (errCode) {
|
||||
case UiAppearanceAbilityInterface::ErrCode::PERMISSION_ERR:
|
||||
return "Permission denied. ";
|
||||
case UiAppearanceAbilityInterface::ErrCode::INVALID_ARG:
|
||||
return "Parameter error. ";
|
||||
case UiAppearanceAbilityInterface::ErrCode::SYS_ERR:
|
||||
return "Internal error. ";
|
||||
default:
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
void NapiThrow(napi_env env, const std::string& message, int32_t errCode)
|
||||
{
|
||||
@@ -43,8 +51,7 @@ void NapiThrow(napi_env env, const std::string& message, int32_t errCode)
|
||||
napi_create_string_utf8(env, strCode.c_str(), strCode.length(), &code);
|
||||
|
||||
napi_value msg = nullptr;
|
||||
auto iter = ERROR_CODE_TO_MSG.find(errCode);
|
||||
std::string strMsg = (iter != ERROR_CODE_TO_MSG.end() ? iter->second : "") + message;
|
||||
std::string strMsg = ParseErrCode(errCode) + message;
|
||||
LOGI("napi throw errCode %{public}d, strMsg %{public}s", errCode, strMsg.c_str());
|
||||
napi_create_string_utf8(env, strMsg.c_str(), strMsg.length(), &msg);
|
||||
|
||||
@@ -157,8 +164,7 @@ void JsUiAppearance::OnComplete(napi_env env, napi_status status, void* data)
|
||||
napi_create_string_utf8(env, strCode.c_str(), strCode.length(), &code);
|
||||
|
||||
napi_value msg = nullptr;
|
||||
auto iter = ERROR_CODE_TO_MSG.find(asyncContext->status);
|
||||
std::string strMsg = (iter != ERROR_CODE_TO_MSG.end() ? iter->second : "") + asyncContext->errMsg;
|
||||
std::string strMsg = ParseErrCode(asyncContext->status) + asyncContext->errMsg;
|
||||
LOGI("napi throw errCode %{public}d, strMsg %{public}s", asyncContext->status, strMsg.c_str());
|
||||
napi_create_string_utf8(env, strMsg.c_str(), strMsg.length(), &msg);
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@ public:
|
||||
|
||||
class __attribute__((visibility("default"))) UiAppearanceAbilityClient : public RefBase {
|
||||
public:
|
||||
UiAppearanceAbilityClient() = default;
|
||||
UiAppearanceAbilityClient();
|
||||
~UiAppearanceAbilityClient() = default;
|
||||
static sptr<UiAppearanceAbilityClient> GetInstance();
|
||||
|
||||
@@ -46,13 +46,11 @@ public:
|
||||
|
||||
private:
|
||||
sptr<UiAppearanceAbilityInterface> GetUiAppearanceServiceProxy();
|
||||
static sptr<UiAppearanceAbilityInterface> CreateUiAppearanceServiceProxy();
|
||||
sptr<UiAppearanceAbilityInterface> CreateUiAppearanceServiceProxy();
|
||||
|
||||
static inline std::mutex instanceLock_;
|
||||
static inline sptr<UiAppearanceAbilityClient> instance_;
|
||||
static inline sptr<UiAppearanceAbilityInterface> uiAppearanceServiceProxy_;
|
||||
static inline sptr<UiAppearanceDeathRecipient> deathRecipient_;
|
||||
std::mutex serviceProxyLock_;
|
||||
sptr<UiAppearanceAbilityInterface> uiAppearanceServiceProxy_;
|
||||
};
|
||||
} // namespace ArkUi::UiAppearance
|
||||
} // namespace OHOS
|
||||
#endif // UI_APPEARANCE_ABILITY_CLIENT_H
|
||||
#endif // UI_APPEARANCE_ABILITY_CLIENT_H
|
||||
|
||||
@@ -27,18 +27,18 @@ namespace OHOS {
|
||||
namespace ArkUi::UiAppearance {
|
||||
sptr<UiAppearanceAbilityClient> UiAppearanceAbilityClient::GetInstance()
|
||||
{
|
||||
if (!instance_) {
|
||||
std::lock_guard<std::mutex> autoLock(instanceLock_);
|
||||
if (!instance_) {
|
||||
uiAppearanceServiceProxy_ = CreateUiAppearanceServiceProxy();
|
||||
instance_ = new UiAppearanceAbilityClient;
|
||||
}
|
||||
}
|
||||
return instance_;
|
||||
static sptr<UiAppearanceAbilityClient> instance = new UiAppearanceAbilityClient;
|
||||
return instance;
|
||||
}
|
||||
|
||||
UiAppearanceAbilityClient::UiAppearanceAbilityClient()
|
||||
{
|
||||
GetUiAppearanceServiceProxy();
|
||||
}
|
||||
|
||||
sptr<UiAppearanceAbilityInterface> UiAppearanceAbilityClient::GetUiAppearanceServiceProxy()
|
||||
{
|
||||
std::lock_guard guard(serviceProxyLock_);
|
||||
if (uiAppearanceServiceProxy_ == nullptr) {
|
||||
LOGE("Redo CreateUiAppearanceServiceProxy");
|
||||
uiAppearanceServiceProxy_ = CreateUiAppearanceServiceProxy();
|
||||
@@ -52,7 +52,7 @@ int32_t UiAppearanceAbilityClient::SetDarkMode(UiAppearanceAbilityInterface::Dar
|
||||
LOGE("SetDarkMode quit because redoing CreateUiAppearanceServiceProxy failed.");
|
||||
return UiAppearanceAbilityInterface::ErrCode::SYS_ERR;
|
||||
}
|
||||
return uiAppearanceServiceProxy_->SetDarkMode(mode);
|
||||
return GetUiAppearanceServiceProxy()->SetDarkMode(mode);
|
||||
}
|
||||
|
||||
int32_t UiAppearanceAbilityClient::GetDarkMode()
|
||||
@@ -61,7 +61,7 @@ int32_t UiAppearanceAbilityClient::GetDarkMode()
|
||||
LOGE("GetDarkMode quit because redoing CreateUiAppearanceServiceProxy failed.");
|
||||
return UiAppearanceAbilityInterface::ErrCode::SYS_ERR;
|
||||
}
|
||||
return uiAppearanceServiceProxy_->GetDarkMode();
|
||||
return GetUiAppearanceServiceProxy()->GetDarkMode();
|
||||
}
|
||||
|
||||
int32_t UiAppearanceAbilityClient::SetFontScale(std::string &fontScale)
|
||||
@@ -70,7 +70,7 @@ int32_t UiAppearanceAbilityClient::SetFontScale(std::string &fontScale)
|
||||
LOGE("SetDarkMode quit because redoing CreateUiAppearanceServiceProxy failed.");
|
||||
return UiAppearanceAbilityInterface::ErrCode::SYS_ERR;
|
||||
}
|
||||
return uiAppearanceServiceProxy_->SetFontScale(fontScale);
|
||||
return GetUiAppearanceServiceProxy()->SetFontScale(fontScale);
|
||||
}
|
||||
|
||||
int32_t UiAppearanceAbilityClient::GetFontScale(std::string &fontScale)
|
||||
@@ -81,7 +81,7 @@ int32_t UiAppearanceAbilityClient::GetFontScale(std::string &fontScale)
|
||||
}
|
||||
int id = HiviewDFX::XCollie::GetInstance().SetTimer(
|
||||
"GetFontScale", 10, nullptr, nullptr, HiviewDFX::XCOLLIE_FLAG_LOG);
|
||||
auto res = uiAppearanceServiceProxy_->GetFontScale(fontScale);
|
||||
auto res = GetUiAppearanceServiceProxy()->GetFontScale(fontScale);
|
||||
HiviewDFX::XCollie::GetInstance().CancelTimer(id);
|
||||
return res;
|
||||
}
|
||||
@@ -92,7 +92,7 @@ int32_t UiAppearanceAbilityClient::SetFontWeightScale(std::string &fontWeightSca
|
||||
LOGE("SetDarkMode quit because redoing CreateUiAppearanceServiceProxy failed.");
|
||||
return UiAppearanceAbilityInterface::ErrCode::SYS_ERR;
|
||||
}
|
||||
return uiAppearanceServiceProxy_->SetFontWeightScale(fontWeightScale);
|
||||
return GetUiAppearanceServiceProxy()->SetFontWeightScale(fontWeightScale);
|
||||
}
|
||||
|
||||
int32_t UiAppearanceAbilityClient::GetFontWeightScale(std::string &fontWeightScale)
|
||||
@@ -101,7 +101,7 @@ int32_t UiAppearanceAbilityClient::GetFontWeightScale(std::string &fontWeightSca
|
||||
LOGE("GetDarkMode quit because redoing CreateUiAppearanceServiceProxy failed.");
|
||||
return UiAppearanceAbilityInterface::ErrCode::SYS_ERR;
|
||||
}
|
||||
return uiAppearanceServiceProxy_->GetFontWeightScale(fontWeightScale);
|
||||
return GetUiAppearanceServiceProxy()->GetFontWeightScale(fontWeightScale);
|
||||
}
|
||||
|
||||
sptr<UiAppearanceAbilityInterface> UiAppearanceAbilityClient::CreateUiAppearanceServiceProxy()
|
||||
@@ -119,7 +119,7 @@ sptr<UiAppearanceAbilityInterface> UiAppearanceAbilityClient::CreateUiAppearance
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
deathRecipient_ = new UiAppearanceDeathRecipient;
|
||||
sptr<UiAppearanceDeathRecipient> deathRecipient_ = new UiAppearanceDeathRecipient;
|
||||
systemAbility->AddDeathRecipient(deathRecipient_);
|
||||
sptr<UiAppearanceAbilityInterface> uiAppearanceServiceProxy =
|
||||
iface_cast<UiAppearanceAbilityInterface>(systemAbility);
|
||||
@@ -134,6 +134,7 @@ sptr<UiAppearanceAbilityInterface> UiAppearanceAbilityClient::CreateUiAppearance
|
||||
void UiAppearanceAbilityClient::OnRemoteSaDied(const wptr<IRemoteObject>& remote)
|
||||
{
|
||||
// Used for new connections after the service may be disconnected.
|
||||
std::lock_guard guard(serviceProxyLock_);
|
||||
uiAppearanceServiceProxy_ = CreateUiAppearanceServiceProxy();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user