From cfcb35a13dc9a063446d2a0428d07f5c545ba531 Mon Sep 17 00:00:00 2001 From: q30043944 Date: Tue, 10 Dec 2024 15:46:58 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BB=B6=E8=BF=9F=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: q30043944 --- .../src/main/ets/pages/ConfirmDialog.ets | 31 +++++++++---------- .../ability/standard/dm_dialog_manager.cpp | 17 ++++++++-- .../src/authentication/dm_auth_manager.cpp | 3 ++ 3 files changed, 31 insertions(+), 20 deletions(-) diff --git a/display/entry/src/main/ets/pages/ConfirmDialog.ets b/display/entry/src/main/ets/pages/ConfirmDialog.ets index fd9971ee9..91929ed7a 100644 --- a/display/entry/src/main/ets/pages/ConfirmDialog.ets +++ b/display/entry/src/main/ets/pages/ConfirmDialog.ets @@ -44,7 +44,7 @@ struct ConfirmCustomDialog { isPC: boolean = false; aboutToAppear() { - console.log(TAG + 'aboutToAppear execute PinCustomDialog') + console.log(TAG + 'aboutToAppear execute ConfirmCustomDialog') if (AppStorage.get('deviceName') != null) { this.peerDeviceName = AppStorage.get('deviceName') as string console.log('peerDeviceName is ' + this.peerDeviceName) @@ -87,7 +87,7 @@ struct ConfirmCustomDialog { } console.log('allow once' + ACTION_ALLOW_AUTH_ONCE) - this.setUserOperation(ACTION_ALLOW_AUTH_ONCE) + this.setUserOperation(ACTION_ALLOW_AUTH_ONCE); this.destruction() } @@ -99,7 +99,7 @@ struct ConfirmCustomDialog { } console.log('allow always' + ACTION_ALLOW_AUTH_ALWAYS) - this.setUserOperation(ACTION_ALLOW_AUTH_ALWAYS) + this.setUserOperation(ACTION_ALLOW_AUTH_ALWAYS); this.destruction() } @@ -109,9 +109,8 @@ struct ConfirmCustomDialog { console.log('createDeviceManager is null') return } - console.log('cancel' + ACTION_CANCEL_AUTH) - this.setUserOperation(ACTION_CANCEL_AUTH) + this.setUserOperation(ACTION_CANCEL_AUTH); this.destruction() } @@ -129,14 +128,7 @@ struct ConfirmCustomDialog { } destruction() { - if (dmClass != null) { - try { - dmClass.release(); - dmClass = null; - } catch (error) { - console.log('dmClass release failed') - } - } + console.log(TAG + 'ConfirmCustomDialog destruction') let session = AppStorage.get('ConfirmSession'); if (session) { session.terminateSelf(); @@ -342,6 +334,15 @@ struct dialogPlusPage { } destruction() { + console.log(TAG + 'dialogPlusPage destruction') + let session = AppStorage.get('ConfirmSession'); + if (session) { + session.terminateSelf(); + } + } + + aboutToDisappear() { + console.log(TAG + 'aboutToDisappear aboutToDisappear') if (dmClass != null) { try { dmClass.release(); @@ -350,10 +351,6 @@ struct dialogPlusPage { console.log('dmClass release failed') } } - let session = AppStorage.get('ConfirmSession'); - if (session) { - session.terminateSelf(); - } } build() { diff --git a/services/implementation/src/ability/standard/dm_dialog_manager.cpp b/services/implementation/src/ability/standard/dm_dialog_manager.cpp index 3157a0583..39139203c 100644 --- a/services/implementation/src/ability/standard/dm_dialog_manager.cpp +++ b/services/implementation/src/ability/standard/dm_dialog_manager.cpp @@ -29,7 +29,8 @@ namespace DistributedHardware { static constexpr int32_t INVALID_USERID = -1; static constexpr int32_t MESSAGE_PARCEL_KEY_SIZE = 3; static constexpr int32_t WAIT_DIALOG_CLOSE_TIME_S = 10; -const int32_t USLEEP_SHOW_PIN_TIME_US = 50000; // 50ms +const int32_t USLEEP_SHOW_PIN_TIME_US_200000 = 200000; // 200ms +const int32_t USLEEP_SHOW_PIN_TIME_US_100000 = 100000; // 100ms const std::string dmUiBundleName = "com.ohos.devicemanagerui"; const std::string comfirmAbilityName = "com.ohos.devicemanagerui.ConfirmUIExtAbility"; const std::string pinAbilityName = "com.ohos.devicemanagerui.PincodeUIExtAbility"; @@ -92,6 +93,14 @@ void DmDialogManager::ShowPinDialog(const std::string param) bundleName_ = dmUiBundleName; abilityName_ = pinAbilityName; pinCode_ = param; + usleep(USLEEP_SHOW_PIN_TIME_US_200000); // 200ms + LOGI("DmDialogManager::ShowPinDialog ConnectExtension start."); + auto abilityManager = AAFwk::AbilityManagerClient::GetInstance(); + if (abilityManager == nullptr) { + LOGE("AbilityManagerClient is nullptr"); + return; + } + abilityManager->DisconnectAbility(dialogConnectionCallback_); ConnectExtension(); } @@ -121,6 +130,7 @@ void DmDialogManager::ConnectExtension() bundleName = "com.ohos.systemui"; abilityName = "com.ohos.systemui.dialog"; want.SetElementName(bundleName, abilityName); + LOGI("ConnectAbility start, abilityName: %{public}s", abilityName.c_str()); ret = abilityManager->ConnectAbility(want, dialogConnectionCallback_, INVALID_USERID); if (ret != ERR_OK) { LOGE("ConnectExtensionAbility systemui failed."); @@ -131,7 +141,7 @@ void DmDialogManager::ConnectExtension() void DmDialogManager::DialogAbilityConnection::OnAbilityConnectDone( const AppExecFwk::ElementName& element, const sptr& remoteObject, int resultCode) { - LOGI("OnAbilityConnectDone"); + LOGI("OnAbilityConnectDone abilityName = %{public}s", DmDialogManager::GetAbilityName().c_str()); std::unique_lock lock(mutex_); if (remoteObject == nullptr) { LOGE("remoteObject is nullptr"); @@ -144,8 +154,9 @@ void DmDialogManager::DialogAbilityConnection::OnAbilityConnectDone( LOGE("wait dm dialog close failed."); return; } - usleep(USLEEP_SHOW_PIN_TIME_US); // 50ms + usleep(USLEEP_SHOW_PIN_TIME_US_100000); // 100ms } + MessageParcel data; MessageParcel reply; MessageOption option; diff --git a/services/implementation/src/authentication/dm_auth_manager.cpp b/services/implementation/src/authentication/dm_auth_manager.cpp index 7319f82af..e9a253bff 100644 --- a/services/implementation/src/authentication/dm_auth_manager.cpp +++ b/services/implementation/src/authentication/dm_auth_manager.cpp @@ -54,6 +54,7 @@ const int32_t DM_AUTH_TYPE_MAX = 5; const int32_t DM_AUTH_TYPE_MIN = 0; const int32_t AUTH_SESSION_SIDE_SERVER = 0; const int32_t USLEEP_TIME_MS = 500000; // 500ms +const int32_t USLEEP_SHOW_PIN_TIME_US_100000 = 100000; // 100ms const int32_t SYNC_DELETE_TIMEOUT = 60; const int32_t AUTH_DEVICE_TIMEOUT = 10; const int32_t SESSION_HEARTBEAT_TIMEOUT = 50; @@ -1320,6 +1321,8 @@ void DmAuthManager::ShowAuthInfoDialog() nlohmann::json jsonObj; jsonObj[PIN_CODE_KEY] = authResponseContext_->code; std::string authParam = jsonObj.dump(); + usleep(USLEEP_SHOW_PIN_TIME_US_100000); // 100ms + LOGI("dialogMgr.ShowPinDialog start, code: %{public}d", authResponseContext_->code); DmDialogManager dialogMgr; dialogMgr.ShowPinDialog(std::to_string(authResponseContext_->code)); } -- Gitee