diff --git a/services/file_extension_hap/entry/src/main/ets/FileExtensionAbility/Common.ts b/services/file_extension_hap/entry/src/main/ets/FileExtensionAbility/Common.ts index 22dd2f613cf115046c5c86249f1234686403453f..e97825a13bc62d8f30d878fb63993d5f26a1072e 100644 --- a/services/file_extension_hap/entry/src/main/ets/FileExtensionAbility/Common.ts +++ b/services/file_extension_hap/entry/src/main/ets/FileExtensionAbility/Common.ts @@ -16,6 +16,7 @@ import hilog from '@ohos.hilog'; const BUNDLE_NAME = 'docs'; const DOMAIN_CODE = 0x0001; +const SLICE_PREFIX_URI = 12; const TAG = 'ExternalFileManager'; const FILE_PREFIX_NAME = 'file://'; @@ -57,6 +58,28 @@ function getPath(uri): string { return path; } +function encodePathOfUri(uri): string { + try { + let suffixUri = uri.slice(SLICE_PREFIX_URI, uri.length); + let prefixUri = uri.slice(0, SLICE_PREFIX_URI); + uri = prefixUri.concat(encodeURIComponent(suffixUri).replace(/%2F/g, '/')); + } catch (e) { + hilog.error(DOMAIN_CODE, TAG, 'The reason of encodeURIComponent: ' + e.message + ' code: ' + e.code); + uri = ''; + } + return uri; +} + +function decodeUri(uri): string { + try { + uri = decodeURIComponent(uri); + } catch (e) { + hilog.error(DOMAIN_CODE, TAG, 'The reason of decodeURIComponent: ' + e.message + ' code: ' + e.code); + uri = ''; + } + return uri; +} + interface Fileinfo { uri: string, relativePath: string, @@ -67,6 +90,11 @@ interface Fileinfo { mimeType: string } +<<<<<<< HEAD + + +export { getPath, checkUri, encodePathOfUri, decodeUri, BUNDLE_NAME, DOMAIN_CODE, FILE_PREFIX_NAME, TAG }; +======= function uriReturnObject(uri: string, code: number) { return { uri: uri, @@ -121,4 +149,5 @@ export { fileinfoReturnObject, rootsReturnObject, BUNDLE_NAME, DOMAIN_CODE, FILE_PREFIX_NAME, TAG }; +>>>>>>> a0a9472dad490b0d3538564861be5639d6db76fe export type { Fileinfo }; \ No newline at end of file diff --git a/services/file_extension_hap/entry/src/main/ets/FileExtensionAbility/FileExtensionAbility.ts b/services/file_extension_hap/entry/src/main/ets/FileExtensionAbility/FileExtensionAbility.ts index edac37eac5ff2d92ac7afecda80a536295dff877..41cfa6842459964d7adbd07ea3d1d261d3662372 100644 --- a/services/file_extension_hap/entry/src/main/ets/FileExtensionAbility/FileExtensionAbility.ts +++ b/services/file_extension_hap/entry/src/main/ets/FileExtensionAbility/FileExtensionAbility.ts @@ -20,11 +20,15 @@ import fileExtensionInfo from '@ohos.file.fileExtensionInfo'; import hilog from '@ohos.hilog'; import { getFileInfos } from './ListScanFileInfo'; import type { Fileinfo } from './Common'; +<<<<<<< HEAD +import { getPath, checkUri, encodePathOfUri, decodeUri, BUNDLE_NAME, DOMAIN_CODE, FILE_PREFIX_NAME, TAG } from './Common'; +======= import { getPath, checkUri, uriReturnObject, BUNDLE_NAME, DOMAIN_CODE, fileinfoReturnObject } from './Common'; import { FILE_PREFIX_NAME, TAG, fdReturnObject, boolReturnObject, rootsReturnObject } from './Common'; import { infosReturnObject, resultsResultObject } from './Common'; +>>>>>>> a0a9472dad490b0d3538564861be5639d6db76fe const deviceFlag = fileExtensionInfo.DeviceFlag; const documentFlag = fileExtensionInfo.DocumentFlag; const deviceType = fileExtensionInfo.DeviceType; @@ -86,26 +90,6 @@ export default class FileExtAbility extends Extension { hilog.info(DOMAIN_CODE, TAG, 'Extension init process'); } - encode(uri): string { - try { - uri = encodeURI(uri); - } catch (e) { - hilog.error(DOMAIN_CODE, TAG, 'The reason of encodeURI: ' + e.message + ' code: ' + e.code); - uri = ''; - } - return uri; - } - - decode(uri): string { - try { - uri = decodeURI(uri); - } catch (e) { - hilog.error(DOMAIN_CODE, TAG, 'The reason of decodeURI: ' + e.message + ' code: ' + e.code); - uri = ''; - } - return uri; - } - genNewFileUri(uri, displayName) { let newFileUri = uri; if (uri.charAt(uri.length - 1) === '/') { @@ -181,7 +165,17 @@ export default class FileExtAbility extends Extension { } openFile(sourceFileUri, flags): {number, number} { +<<<<<<< HEAD + sourceFileUri = decodeUri(sourceFileUri); + if (sourceFileUri === '') { + return { + fd: ERR_ERROR, + code: E_URIS, + }; + } +======= sourceFileUri = this.decode(sourceFileUri); +>>>>>>> a0a9472dad490b0d3538564861be5639d6db76fe if (!checkUri(sourceFileUri)) { return fdReturnObject(ERR_ERROR, E_URIS); } @@ -196,7 +190,17 @@ export default class FileExtAbility extends Extension { } createFile(parentUri, displayName): {string, number} { +<<<<<<< HEAD + parentUri = decodeUri(parentUri); + if (parentUri === '') { + return { + uri: '', + code: E_URIS + }; + } +======= parentUri = this.decode(parentUri); +>>>>>>> a0a9472dad490b0d3538564861be5639d6db76fe if (!checkUri(parentUri)) { return uriReturnObject('', E_URIS); } @@ -210,8 +214,16 @@ export default class FileExtAbility extends Extension { let path = getPath(newFileUri); let file = fs.openSync(path, fs.OpenMode.CREATE); fs.closeSync(file); +<<<<<<< HEAD + newFileUri = encodePathOfUri(newFileUri); + return { + uri: newFileUri, + code: ERR_OK, + }; +======= newFileUri = encodeURI(newFileUri); return uriReturnObject(newFileUri, ERR_OK); +>>>>>>> a0a9472dad490b0d3538564861be5639d6db76fe } catch (e) { hilog.error(DOMAIN_CODE, TAG, 'createFile error ' + e.message); return uriReturnObject('', e.code); @@ -219,7 +231,17 @@ export default class FileExtAbility extends Extension { } mkdir(parentUri, displayName): {string, number} { +<<<<<<< HEAD + parentUri = decodeUri(parentUri); + if (parentUri === '') { + return { + uri: '', + code: E_URIS + }; + } +======= parentUri = this.decode(parentUri); +>>>>>>> a0a9472dad490b0d3538564861be5639d6db76fe if (!checkUri(parentUri)) { return uriReturnObject('', E_URIS); } @@ -227,8 +249,16 @@ export default class FileExtAbility extends Extension { let newFileUri = this.genNewFileUri(parentUri, displayName); let path = getPath(newFileUri); fs.mkdirSync(path); +<<<<<<< HEAD + newFileUri = encodePathOfUri(newFileUri); + return { + uri: newFileUri, + code: ERR_OK, + }; +======= newFileUri = encodeURI(newFileUri); return uriReturnObject(newFileUri, ERR_OK); +>>>>>>> a0a9472dad490b0d3538564861be5639d6db76fe } catch (e) { hilog.error(DOMAIN_CODE, TAG, 'mkdir error ' + e.message); return uriReturnObject('', e.code); @@ -304,7 +334,14 @@ export default class FileExtAbility extends Extension { } delete(selectFileUri): number { +<<<<<<< HEAD + selectFileUri = decodeUri(selectFileUri); + if (selectFileUri === '') { + return E_URIS; + } +======= selectFileUri = this.decode(selectFileUri); +>>>>>>> a0a9472dad490b0d3538564861be5639d6db76fe if (!checkUri(selectFileUri)) { return E_URIS; } @@ -331,8 +368,19 @@ export default class FileExtAbility extends Extension { } move(sourceFileUri, targetParentUri): {string, number} { +<<<<<<< HEAD + sourceFileUri = decodeUri(sourceFileUri); + targetParentUri = decodeUri(targetParentUri); + if (sourceFileUri === '' || targetParentUri === '') { + return { + uri: '', + code: E_URIS, + }; + } +======= sourceFileUri = this.decode(sourceFileUri); targetParentUri = this.decode(targetParentUri); +>>>>>>> a0a9472dad490b0d3538564861be5639d6db76fe if (!checkUri(sourceFileUri) || !checkUri(targetParentUri)) { return uriReturnObject('', E_URIS); } @@ -340,7 +388,7 @@ export default class FileExtAbility extends Extension { let newFileUri = this.genNewFileUri(targetParentUri, displayName); let oldPath = getPath(sourceFileUri); let newPath = getPath(newFileUri); - newFileUri = this.encode(newFileUri); + newFileUri = encodePathOfUri(newFileUri); if (newFileUri === '') { return uriReturnObject('', E_URIS); } @@ -381,7 +429,18 @@ export default class FileExtAbility extends Extension { } rename(sourceFileUri, displayName): {string, number} { +<<<<<<< HEAD + sourceFileUri = decodeUri(sourceFileUri); + if (sourceFileUri === '') { + return { + uri: '', + code: E_URIS, + }; + } + +======= sourceFileUri = this.decode(sourceFileUri); +>>>>>>> a0a9472dad490b0d3538564861be5639d6db76fe if (!checkUri(sourceFileUri)) { return uriReturnObject('', E_URIS); } @@ -394,8 +453,16 @@ export default class FileExtAbility extends Extension { return uriReturnObject('', E_EXIST); } fs.renameSync(oldPath, newPath); +<<<<<<< HEAD + newFileUri = encodePathOfUri(newFileUri); + return { + uri: newFileUri, + code: ERR_OK, + }; +======= newFileUri = encodeURI(newFileUri); return uriReturnObject(newFileUri, ERR_OK); +>>>>>>> a0a9472dad490b0d3538564861be5639d6db76fe } catch (e) { hilog.error(DOMAIN_CODE, TAG, 'rename error ' + e.message); return uriReturnObject('', e.code); @@ -544,7 +611,7 @@ export default class FileExtAbility extends Extension { } access(sourceFileUri): {boolean, number} { - sourceFileUri = this.decode(sourceFileUri); + sourceFileUri = decodeUri(sourceFileUri); if (sourceFileUri === '') { return uriReturnObject('', E_URIS); } @@ -569,7 +636,17 @@ export default class FileExtAbility extends Extension { listFile(sourceFileUri: string, offset: number, count: number, filter: Filter) : {infos: Fileinfo[], code: number} { let infos : Fileinfo[] = []; +<<<<<<< HEAD + sourceFileUri = decodeUri(sourceFileUri); + if (sourceFileUri === '') { + return { + infos: [], + code: E_URIS, + }; + } +======= sourceFileUri = this.decode(sourceFileUri); +>>>>>>> a0a9472dad490b0d3538564861be5639d6db76fe if (!checkUri(sourceFileUri)) { return infosReturnObject([], E_URIS); } @@ -579,7 +656,17 @@ export default class FileExtAbility extends Extension { scanFile(sourceFileUri: string, offset: number, count: number, filter: Filter) : {infos: Fileinfo[], code: number} { let infos : Fileinfo[] = []; +<<<<<<< HEAD + sourceFileUri = decodeUri(sourceFileUri); + if (sourceFileUri === '') { + return { + infos: [], + code: E_URIS, + }; + } +======= sourceFileUri = this.decode(sourceFileUri); +>>>>>>> a0a9472dad490b0d3538564861be5639d6db76fe if (!checkUri(sourceFileUri)) { return infosReturnObject([], E_URIS); } @@ -588,7 +675,7 @@ export default class FileExtAbility extends Extension { } getFileInfoFromUri(selectFileUri) { - selectFileUri = this.decode(selectFileUri); + selectFileUri = decodeUri(selectFileUri); if (selectFileUri === '') { return uriReturnObject('', E_URIS); } @@ -607,7 +694,7 @@ export default class FileExtAbility extends Extension { } else { mode |= documentFlag.REPRESENTS_FILE; } - selectFileUri = encodeURI(selectFileUri); + selectFileUri = encodePathOfUri(selectFileUri); fileInfo = { uri: selectFileUri, relativePath: path, @@ -661,7 +748,7 @@ export default class FileExtAbility extends Extension { } else { mode |= documentFlag.REPRESENTS_FILE; } - let selectFileUri = encodeURI(this.relativePath2uri(selectFileRelativePath)); + let selectFileUri = encodePathOfUri(this.relativePath2uri(selectFileRelativePath)); fileInfo = { uri: selectFileUri, relativePath: selectFileRelativePath, @@ -753,7 +840,7 @@ export default class FileExtAbility extends Extension { } query(uri, columns): {[], number} { - uri = this.decode(uri); + uri = decodeUri(uri); if (uri === '') { return uriReturnObject('', E_URIS); } @@ -786,7 +873,16 @@ export default class FileExtAbility extends Extension { } startWatcher(uri, callback): number { +<<<<<<< HEAD + uri = decodeUri(uri); + if (uri === '') { + return { + code: E_URIS, + }; + } +======= uri = this.decode(uri); +>>>>>>> a0a9472dad490b0d3538564861be5639d6db76fe if (!checkUri(uri)) { return E_URIS; } @@ -803,7 +899,7 @@ export default class FileExtAbility extends Extension { } }); let targetUri = FILE_PREFIX_NAME + BUNDLE_NAME + data.fileName; - targetUri = this.encode(targetUri); + targetUri = encodePathOfUri(targetUri); if (eventCode >= 0) { callback(targetUri, eventCode); } else { @@ -828,7 +924,17 @@ export default class FileExtAbility extends Extension { } stopWatcher(uri, isUnregisterAll): number { +<<<<<<< HEAD + uri = decodeUri(uri); + if (uri === '') { + return { + code: E_URIS, + }; + } + +======= uri = this.decode(uri); +>>>>>>> a0a9472dad490b0d3538564861be5639d6db76fe if (!checkUri(uri)) { return E_URIS; } diff --git a/services/file_extension_hap/entry/src/main/ets/FileExtensionAbility/ListScanFileInfo.ts b/services/file_extension_hap/entry/src/main/ets/FileExtensionAbility/ListScanFileInfo.ts index 83bed1b98f4099bf78b0529c3b5044ade53cd137..0686d27c29decfbe1e0ae3635d0b2e7a71b4da7b 100644 --- a/services/file_extension_hap/entry/src/main/ets/FileExtensionAbility/ListScanFileInfo.ts +++ b/services/file_extension_hap/entry/src/main/ets/FileExtensionAbility/ListScanFileInfo.ts @@ -17,7 +17,11 @@ import fs from '@ohos.file.fs'; import type { Filter } from '@ohos.file.fs'; import fileExtensionInfo from '@ohos.file.fileExtensionInfo'; import type { Fileinfo } from './Common'; +<<<<<<< HEAD +import { getPath, encodePathOfUri, DOMAIN_CODE, TAG } from './Common'; +======= import { getPath, uriReturnObject, DOMAIN_CODE, TAG, infosReturnObject } from './Common'; +>>>>>>> a0a9472dad490b0d3538564861be5639d6db76fe const documentFlag = fileExtensionInfo.DocumentFlag; const ERR_OK = 0; @@ -162,7 +166,7 @@ function getFileInfos(sourceFileUri: string, offset: number, count: number, filt mode |= documentFlag.REPRESENTS_FILE; } let newFileUri = getNewPathOrUri(sourceFileUri, fileNameList[i]); - newFileUri = encodeURI(newFileUri); + newFileUri = encodePathOfUri(newFileUri); infos.push({ uri: newFileUri, relativePath: filePath,