• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (c) 2023-2025 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16import AppStorageConstant from '../common/AppStorageConstant';
17import Constants from '../common/constant';
18import { HiLog } from '../common/HiLog';
19import hiTraceMeter from '@ohos.hiTraceMeter';
20import { OpenDlpFileProcessor } from '../OpenDlpFile/ViewProcessor/ViewProcessor';
21import OpeningDialogManager from '../OpenDlpFile/manager/OpeningDialogManager';
22import rpc from '@ohos.rpc';
23import ServiceExtensionAbility from '@ohos.app.ability.ServiceExtensionAbility';
24import { systemDateTime } from '@kit.BasicServicesKit';
25import ViewAbilityStub from '../rpc/ViewAbility/stub/ViewAbilityStub';
26import Want from '@ohos.app.ability.Want';
27import TerminateView from '../OpenDlpFile/TerminateView/TerminateView';
28import ViewAbilityService from '../rpc/ViewAbility/service/ViewAbilityService';
29import { StartFileManager } from '../OpenDlpFile/manager/StartFileManager';
30
31const TAG = 'View';
32
33export default class ViewAbility extends ServiceExtensionAbility {
34  private serviceImpl: ViewAbilityStub = new ViewAbilityStub(TAG);
35
36  onCreate(want: Want): void {
37    HiLog.info(TAG, 'ViewAbility onCreate');
38  }
39
40  onConnect(want: Want): rpc.RemoteObject {
41    HiLog.info(TAG, 'ViewAbility onConnect');
42    return this.serviceImpl;
43  }
44
45  onDisconnect(want: Want): void {
46    HiLog.info(TAG, 'ViewAbility onDisconnect');
47  }
48
49  async onRequest(want: Want, startId: number): Promise<void> {
50    HiLog.info(TAG, `enter onRequest startId: ${startId}`);
51    AppStorage.setOrCreate('viewContext', this.context);
52    const callerBundleName: string = want.parameters?.[Constants.PARAMS_CALLER_BUNDLE_NAME] as string;
53    if (callerBundleName === Constants.SHARE_BUNDLE) {
54      const startRet = await StartFileManager.startFileManager(want.uri);
55      if (startRet.errcode === Constants.ERR_CODE_SUCCESS) {
56        HiLog.error(TAG, 'ViewAbility start fileManager success');
57        return;
58      }
59    }
60    hiTraceMeter.startTrace('DlpOpenFileJs', startId);
61    if (OpeningDialogManager.getInstance().getIsChargeDecrypting() ||
62    OpeningDialogManager.getInstance().getIsTerminalSelf()) {
63      HiLog.error(TAG, 'ViewAbility isChargeDecrypting or isTerminalSelf');
64      hiTraceMeter.finishTrace('DlpOpenFileJs', startId);
65      return;
66    }
67    OpeningDialogManager.getInstance().setIsChargeDecrypting(true);
68    OpeningDialogManager.getInstance().setIsTerminalSelf(false);
69    AppStorage.setOrCreate(AppStorageConstant.DECRYPTION_START_TIME, systemDateTime.getTime(false));
70    const processor = new OpenDlpFileProcessor();
71    let processRet = await processor.process(want, startId, this.context);
72    if (processRet.errcode !== Constants.ERR_CODE_SUCCESS) {
73      HiLog.error(TAG, 'process error');
74    }
75    hiTraceMeter.finishTrace('DlpOpenFileJs', startId);
76    await OpeningDialogManager.getInstance().unLoadOpeningDialogNormal();
77    if (!OpeningDialogManager.getInstance().getIsWaitingShowToast()) {
78      await ViewAbilityService.getInstance().sendDisconnectMsgWithTimeout();
79      await TerminateView.terminate();
80    }
81  }
82
83  async onDestroy(): Promise<void> {
84    HiLog.info(TAG, 'ViewAbility onDestroy');
85    OpeningDialogManager.getInstance().unRegisterEmitEvent();
86    await OpeningDialogManager.getInstance().unLoadOpeningDialogAbnormal();
87  }
88}
89