mirror of
https://github.com/openharmony/ability_ability_runtime.git
synced 2026-08-24 22:21:36 -04:00
6d2edfe428
Reuse AMS EventHandler timeout framework to protect SkillExecuteManager from stale EXECUTING records. When the target app never calls completeArkTSScriptInApp, the record is automatically cleaned up after timeout and the caller receives ERR_TIMED_OUT via callback. Timeout = GetAppStartTimeoutTime() * SKILL_EXECUTE_TIMEOUT_MULTIPLE (10s in production, 150s under ASAN), aligned with InsightIntent. Also fix VerifyContext property name: ServiceExtension context uses "extensionAbilityInfo" not "extensionInfo", which caused completeArkTSScriptInApp to silently fail for ServiceExtension targets. Co-Authored-By: Agent Change-Id: I4e02afc0a75c069b1c5cb677fa81b469ef566f34 Signed-off-by: RuiChen_01 <chenrui193@huawei.com>
57 lines
1.9 KiB
C++
57 lines
1.9 KiB
C++
/*
|
|
* Copyright (c) 2021-2022 Huawei Device Co., Ltd.
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
#ifndef OHOS_ABILITY_RUNTIME_ABILITY_EVENT_HANDLER_H
|
|
#define OHOS_ABILITY_RUNTIME_ABILITY_EVENT_HANDLER_H
|
|
|
|
#include <memory>
|
|
|
|
#include "event_handler_wrap.h"
|
|
|
|
namespace OHOS {
|
|
namespace AAFwk {
|
|
class AbilityManagerService;
|
|
/**
|
|
* @class AbilityEventHandler
|
|
* AbilityEventHandler handling the ability event.
|
|
*/
|
|
class AbilityEventHandler : public EventHandlerWrap {
|
|
public:
|
|
AbilityEventHandler(
|
|
const std::shared_ptr<TaskHandlerWrap> &taskHandler, const std::weak_ptr<AbilityManagerService> &server);
|
|
virtual ~AbilityEventHandler() = default;
|
|
|
|
/**
|
|
* ProcessEvent with request.
|
|
*
|
|
* @param event, inner event loop.
|
|
*/
|
|
void ProcessEvent(const EventWrap &event) override;
|
|
|
|
private:
|
|
void ProcessLoadTimeOut(const EventWrap &event, bool isHalf = false);
|
|
void ProcessActiveTimeOut(int64_t abilityRecordId);
|
|
void ProcessInactiveTimeOut(int64_t abilityRecordId);
|
|
void ProcessForegroundTimeOut(const EventWrap &event, bool isHalf = false);
|
|
void ProcessShareDataTimeOut(int64_t uniqueId);
|
|
void ProcessConnectTimeOut(const EventWrap &event, bool isHalf = false);
|
|
void ProcessSkillExecuteTimeOut(int64_t requestCodeSeq);
|
|
private:
|
|
std::weak_ptr<AbilityManagerService> server_;
|
|
};
|
|
} // namespace AAFwk
|
|
} // namespace OHOS
|
|
#endif // OHOS_ABILITY_RUNTIME_ABILITY_EVENT_HANDLER_H
|