Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Xts Acts
提交
6b169249
X
Xts Acts
项目概览
OpenHarmony
/
Xts Acts
大约 1 年 前同步成功
通知
9
Star
22
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
X
Xts Acts
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
6b169249
编写于
2月 22, 2023
作者:
L
lwx1121892
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
<avRecorder代码上库>
Signed-off-by:
N
lwx1121892
<
liuxueqi3@huawei.com
>
上级
e97ac3eb
变更
23
隐藏空白更改
内联
并排
Showing
23 changed file
with
1109 addition
and
0 deletion
+1109
-0
multimedia/BUILD.gn
multimedia/BUILD.gn
+1
-0
multimedia/media/media_js_standard/MediaTestBase.js
multimedia/media/media_js_standard/MediaTestBase.js
+36
-0
multimedia/media/media_js_standard/avRecorder/BUILD.gn
multimedia/media/media_js_standard/avRecorder/BUILD.gn
+35
-0
multimedia/media/media_js_standard/avRecorder/Test.json
multimedia/media/media_js_standard/avRecorder/Test.json
+34
-0
multimedia/media/media_js_standard/avRecorder/signature/openharmony_sx.p7b
...media_js_standard/avRecorder/signature/openharmony_sx.p7b
+0
-0
multimedia/media/media_js_standard/avRecorder/src/main/config.json
...a/media/media_js_standard/avRecorder/src/main/config.json
+126
-0
multimedia/media/media_js_standard/avRecorder/src/main/js/MainAbility/app.js
...dia_js_standard/avRecorder/src/main/js/MainAbility/app.js
+23
-0
multimedia/media/media_js_standard/avRecorder/src/main/js/MainAbility/i18n/en-US.json
...andard/avRecorder/src/main/js/MainAbility/i18n/en-US.json
+6
-0
multimedia/media/media_js_standard/avRecorder/src/main/js/MainAbility/i18n/zh-CN.json
...andard/avRecorder/src/main/js/MainAbility/i18n/zh-CN.json
+6
-0
multimedia/media/media_js_standard/avRecorder/src/main/js/MainAbility/pages/index/index.css
.../avRecorder/src/main/js/MainAbility/pages/index/index.css
+61
-0
multimedia/media/media_js_standard/avRecorder/src/main/js/MainAbility/pages/index/index.hml
.../avRecorder/src/main/js/MainAbility/pages/index/index.hml
+20
-0
multimedia/media/media_js_standard/avRecorder/src/main/js/MainAbility/pages/index/index.js
...d/avRecorder/src/main/js/MainAbility/pages/index/index.js
+29
-0
multimedia/media/media_js_standard/avRecorder/src/main/js/TestAbility/app.js
...dia_js_standard/avRecorder/src/main/js/TestAbility/app.js
+31
-0
multimedia/media/media_js_standard/avRecorder/src/main/js/TestAbility/i18n/en-US.json
...andard/avRecorder/src/main/js/TestAbility/i18n/en-US.json
+8
-0
multimedia/media/media_js_standard/avRecorder/src/main/js/TestAbility/i18n/zh-CN.json
...andard/avRecorder/src/main/js/TestAbility/i18n/zh-CN.json
+8
-0
multimedia/media/media_js_standard/avRecorder/src/main/js/TestAbility/pages/index/index.css
.../avRecorder/src/main/js/TestAbility/pages/index/index.css
+30
-0
multimedia/media/media_js_standard/avRecorder/src/main/js/TestAbility/pages/index/index.hml
.../avRecorder/src/main/js/TestAbility/pages/index/index.hml
+5
-0
multimedia/media/media_js_standard/avRecorder/src/main/js/TestAbility/pages/index/index.js
...d/avRecorder/src/main/js/TestAbility/pages/index/index.js
+26
-0
multimedia/media/media_js_standard/avRecorder/src/main/js/TestRunner/OpenHarmonyTestRunner.js
...vRecorder/src/main/js/TestRunner/OpenHarmonyTestRunner.js
+59
-0
multimedia/media/media_js_standard/avRecorder/src/main/js/test/AVRecorderFuncTest.test.js
...rd/avRecorder/src/main/js/test/AVRecorderFuncTest.test.js
+517
-0
multimedia/media/media_js_standard/avRecorder/src/main/js/test/List.test.js
...edia_js_standard/avRecorder/src/main/js/test/List.test.js
+20
-0
multimedia/media/media_js_standard/avRecorder/src/main/resources/base/element/string.json
...rd/avRecorder/src/main/resources/base/element/string.json
+28
-0
multimedia/media/media_js_standard/avRecorder/src/main/resources/base/media/icon.png
...tandard/avRecorder/src/main/resources/base/media/icon.png
+0
-0
未找到文件。
multimedia/BUILD.gn
浏览文件 @
6b169249
...
...
@@ -48,6 +48,7 @@ group("multimedia") {
"media/media_js_standard/audioPlayer:audio_player_js_hap",
"media/media_js_standard/audioRecorder:audio_recorder_js_hap",
"media/media_js_standard/avPlayer:avplayer_js_hap",
"media/media_js_standard/avRecorder:av_recorder_js_hap",
"media/media_js_standard/recorderFormat:recorder_format_js_hap",
"media/media_js_standard/videoPlayer:video_player_js_hap",
"medialibrary/mediaLibrary_album:mediaLibrary_album_hap",
...
...
multimedia/media/media_js_standard/MediaTestBase.js
浏览文件 @
6b169249
...
...
@@ -45,6 +45,42 @@ export async function driveFn(num) {
await
msleepAsync
(
2000
)
}
export
async
function
getAvRecorderFd
(
pathName
,
fileType
)
{
console
.
info
(
'
case come in getAvRecorderFd
'
)
let
fdObject
=
{
fileAsset
:
null
,
fdNumber
:
null
}
let
displayName
=
pathName
;
console
.
info
(
'
[mediaLibrary] displayName is
'
+
displayName
);
console
.
info
(
'
[mediaLibrary] fileType is
'
+
fileType
);
const
mediaTest
=
mediaLibrary
.
getMediaLibrary
();
let
fileKeyObj
=
mediaLibrary
.
FileKey
;
let
mediaType
;
let
publicPath
;
if
(
fileType
==
'
audio
'
)
{
mediaType
=
mediaLibrary
.
MediaType
.
AUDIO
;
publicPath
=
await
mediaTest
.
getPublicDirectory
(
mediaLibrary
.
DirectoryType
.
DIR_AUDIO
);
}
else
{
mediaType
=
mediaLibrary
.
MediaType
.
VIDEO
;
publicPath
=
await
mediaTest
.
getPublicDirectory
(
mediaLibrary
.
DirectoryType
.
DIR_VIDEO
);
}
console
.
info
(
'
[mediaLibrary] publicPath is
'
+
publicPath
);
let
dataUri
=
await
mediaTest
.
createAsset
(
mediaType
,
displayName
,
publicPath
);
if
(
dataUri
!=
undefined
)
{
let
args
=
dataUri
.
id
.
toString
();
let
fetchOp
=
{
selections
:
fileKeyObj
.
ID
+
"
=?
"
,
selectionArgs
:
[
args
],
}
let
fetchFileResult
=
await
mediaTest
.
getFileAssets
(
fetchOp
);
fdObject
.
fileAsset
=
await
fetchFileResult
.
getAllObject
();
fdObject
.
fdNumber
=
await
fdObject
.
fileAsset
[
0
].
open
(
'
rw
'
);
console
.
info
(
'
case getFd number is:
'
+
fdObject
.
fdNumber
);
}
return
fdObject
;
}
// File operation
export
async
function
getFileDescriptor
(
fileName
)
{
let
fileDescriptor
=
undefined
;
...
...
multimedia/media/media_js_standard/avRecorder/BUILD.gn
0 → 100644
浏览文件 @
6b169249
# Copyright (C) 2021 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.
import("//test/xts/tools/build/suite.gni")
ohos_js_hap_suite("av_recorder_js_hap") {
hap_profile = "./src/main/config.json"
deps = [
":av_recorder_js_assets",
":av_recorder_resources",
]
certificate_profile = "./signature/openharmony_sx.p7b"
hap_name = "ActsAvRecorderJsTest"
subsystem_name = "multimedia"
part_name = "multimedia_player_framework"
}
ohos_js_assets("av_recorder_js_assets") {
js2abc = true
hap_profile = "./src/main/config.json"
source_dir = "./src/main/js"
}
ohos_resources("av_recorder_resources") {
sources = [ "./src/main/resources" ]
hap_profile = "./src/main/config.json"
}
multimedia/media/media_js_standard/avRecorder/Test.json
0 → 100644
浏览文件 @
6b169249
{
"description"
:
"Configuration for avRecorder Tests"
,
"driver"
:
{
"type"
:
"OHJSUnitTest"
,
"test-timeout"
:
"1000000"
,
"shell-timeout"
:
"1000000"
,
"testcase-timeout"
:
60000
,
"bundle-name"
:
"ohos.acts.multimedia.audio.avrecorder"
,
"package-name"
:
"ohos.acts.multimedia.audio.avrecorder"
},
"kits"
:
[
{
"type"
:
"ShellKit"
,
"run-command"
:
[
"rm -rf /storage/media/100/local/files/Audios/audio_*"
,
"rm -rf /storage/media/100/local/files/Videos/audio_*"
,
"param set persist.ace.testmode.enabled 1"
,
"power-shell wakeup"
,
"uinput -T -d 300 600 -m 300 600 300 100 -u 300 100"
,
"power-shell setmode 602"
],
"teardown-command"
:[
"power-shell setmode 600"
]
},
{
"test-file-name"
:
[
"ActsAvRecorderJsTest.hap"
],
"type"
:
"AppInstallKit"
,
"cleanup-apps"
:
true
}
]
}
\ No newline at end of file
multimedia/media/media_js_standard/avRecorder/signature/openharmony_sx.p7b
0 → 100644
浏览文件 @
6b169249
文件已添加
multimedia/media/media_js_standard/avRecorder/src/main/config.json
0 → 100644
浏览文件 @
6b169249
{
"app"
:
{
"apiVersion"
:
{
"compatible"
:
6
,
"releaseType"
:
"Beta1"
,
"target"
:
7
},
"vendor"
:
"acts"
,
"bundleName"
:
"ohos.acts.multimedia.audio.avrecorder"
,
"version"
:
{
"code"
:
1000000
,
"name"
:
"1.0.0"
}
},
"deviceConfig"
:
{
"default"
:
{
"debug"
:
true
}
},
"module"
:
{
"abilities"
:
[
{
"skills"
:
[
{
"entities"
:
[
"entity.system.home"
],
"actions"
:
[
"action.system.home"
]
}
],
"orientation"
:
"unspecified"
,
"formsEnabled"
:
false
,
"name"
:
".MainAbility"
,
"srcLanguage"
:
"js"
,
"srcPath"
:
"MainAbility"
,
"icon"
:
"$media:icon"
,
"description"
:
"$string:MainAbility_desc"
,
"label"
:
"$string:MainAbility_label"
,
"type"
:
"page"
,
"visible"
:
true
,
"launchType"
:
"standard"
},
{
"orientation"
:
"unspecified"
,
"formsEnabled"
:
false
,
"name"
:
".TestAbility"
,
"srcLanguage"
:
"js"
,
"srcPath"
:
"TestAbility"
,
"icon"
:
"$media:icon"
,
"description"
:
"$string:TestAbility_desc"
,
"label"
:
"$string:TestAbility_label"
,
"type"
:
"page"
,
"visible"
:
true
,
"launchType"
:
"standard"
}
],
"deviceType"
:
[
"tablet"
,
"default"
,
"default"
,
"tablet"
,
"tv"
,
"wearable"
],
"reqPermissions"
:
[
{
"name"
:
"ohos.permission.GRANT_SENSITIVE_PERMISSIONS"
,
"reason"
:
"use ohos.permission.GRANT_SENSITIVE_PERMISSIONS"
},
{
"name"
:
"ohos.permission.MICROPHONE"
,
"reason"
:
"use ohos.permission.MICROPHONE"
},
{
"name"
:
"ohos.permission.MEDIA_LOCATION"
,
"reason"
:
"use ohos.permission.MEDIA_LOCATION"
},
{
"name"
:
"ohos.permission.READ_MEDIA"
,
"reason"
:
"use ohos.permission.READ_MEDIA"
},
{
"name"
:
"ohos.permission.WRITE_MEDIA"
,
"reason"
:
"use ohos.permission.WRITE_MEDIA"
}
],
"mainAbility"
:
".MainAbility"
,
"distro"
:
{
"moduleType"
:
"entry"
,
"installationFree"
:
false
,
"deliveryWithInstall"
:
true
,
"moduleName"
:
"entry"
},
"package"
:
"ohos.acts.multimedia.audio.avrecorder"
,
"name"
:
".entry"
,
"js"
:
[
{
"pages"
:
[
"pages/index/index"
],
"name"
:
"default"
,
"window"
:
{
"designWidth"
:
720
,
"autoDesignWidth"
:
true
}
},
{
"pages"
:
[
"pages/index/index"
],
"name"
:
".TestAbility"
,
"window"
:
{
"designWidth"
:
720
,
"autoDesignWidth"
:
false
}
}
],
"testRunner"
:
{
"name"
:
"OpenHarmonyTestRunner"
,
"srcPath"
:
"TestRunner"
},
"srcPath"
:
""
}
}
\ No newline at end of file
multimedia/media/media_js_standard/avRecorder/src/main/js/MainAbility/app.js
0 → 100644
浏览文件 @
6b169249
/*
* Copyright (C) 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.
*/
export
default
{
onCreate
()
{
console
.
info
(
'
AceApplication onCreate
'
);
},
onDestroy
()
{
console
.
info
(
'
AceApplication onDestroy
'
);
}
};
multimedia/media/media_js_standard/avRecorder/src/main/js/MainAbility/i18n/en-US.json
0 → 100644
浏览文件 @
6b169249
{
"strings"
:
{
"hello"
:
"Hello"
,
"world"
:
"World"
}
}
\ No newline at end of file
multimedia/media/media_js_standard/avRecorder/src/main/js/MainAbility/i18n/zh-CN.json
0 → 100644
浏览文件 @
6b169249
{
"strings"
:
{
"hello"
:
"您好"
,
"world"
:
"世界"
}
}
\ No newline at end of file
multimedia/media/media_js_standard/avRecorder/src/main/js/MainAbility/pages/index/index.css
0 → 100644
浏览文件 @
6b169249
/*
* Copyright (C) 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.
*/
.container
{
flex-direction
:
column
;
justify-content
:
center
;
align-items
:
center
;
width
:
100%
;
height
:
100%
;
}
.title
{
font-size
:
40px
;
color
:
#000000
;
opacity
:
0.9
;
}
@media
screen
and
(
device-type
:
tablet
)
and
(
orientation
:
landscape
)
{
.title
{
font-size
:
100px
;
}
}
@media
screen
and
(
device-type
:
wearable
)
{
.title
{
font-size
:
28px
;
color
:
#FFFFFF
;
}
}
@media
screen
and
(
device-type
:
tv
)
{
.container
{
background-image
:
url("/common/images/Wallpaper.png")
;
background-size
:
cover
;
background-repeat
:
no-repeat
;
background-position
:
center
;
}
.title
{
font-size
:
100px
;
color
:
#FFFFFF
;
}
}
@media
screen
and
(
device-type
:
phone
)
and
(
orientation
:
landscape
)
{
.title
{
font-size
:
60px
;
}
}
multimedia/media/media_js_standard/avRecorder/src/main/js/MainAbility/pages/index/index.hml
0 → 100644
浏览文件 @
6b169249
<!--
Copyright (c) 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.
-->
<div class="container">
<text class="title">
{{ $t('strings.hello') }} {{ title }}
</text>
</div>
multimedia/media/media_js_standard/avRecorder/src/main/js/MainAbility/pages/index/index.js
0 → 100644
浏览文件 @
6b169249
/*
* Copyright (C) 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.
*/
export
default
{
data
:
{
title
:
""
},
onInit
()
{
this
.
title
=
this
.
$t
(
'
strings.world
'
);
},
onShow
()
{
console
.
info
(
'
onShow finish
'
)
},
onReady
()
{
},
}
\ No newline at end of file
multimedia/media/media_js_standard/avRecorder/src/main/js/TestAbility/app.js
0 → 100644
浏览文件 @
6b169249
/*
* Copyright (c) 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.
*/
import
AbilityDelegatorRegistry
from
'
@ohos.application.abilityDelegatorRegistry
'
import
{
Hypium
}
from
'
@ohos/hypium
'
import
testsuite
from
'
../test/List.test
'
export
default
{
onCreate
()
{
console
.
info
(
'
TestApplication onCreate
'
)
var
abilityDelegator
=
AbilityDelegatorRegistry
.
getAbilityDelegator
()
var
abilityDelegatorArguments
=
AbilityDelegatorRegistry
.
getArguments
()
console
.
info
(
'
start run testcase!!!
'
)
Hypium
.
hypiumTest
(
abilityDelegator
,
abilityDelegatorArguments
,
testsuite
)
},
onDestroy
()
{
console
.
info
(
"
TestApplication onDestroy
"
);
}
};
multimedia/media/media_js_standard/avRecorder/src/main/js/TestAbility/i18n/en-US.json
0 → 100644
浏览文件 @
6b169249
{
"strings"
:
{
"hello"
:
"Hello"
,
"world"
:
"World"
},
"Files"
:
{
}
}
\ No newline at end of file
multimedia/media/media_js_standard/avRecorder/src/main/js/TestAbility/i18n/zh-CN.json
0 → 100644
浏览文件 @
6b169249
{
"strings"
:
{
"hello"
:
"您好"
,
"world"
:
"世界"
},
"Files"
:
{
}
}
\ No newline at end of file
multimedia/media/media_js_standard/avRecorder/src/main/js/TestAbility/pages/index/index.css
0 → 100644
浏览文件 @
6b169249
.container
{
display
:
flex
;
flex-direction
:
column
;
justify-content
:
center
;
align-items
:
center
;
left
:
0px
;
top
:
0px
;
width
:
100%
;
height
:
100%
;
}
.title
{
font-size
:
60px
;
text-align
:
center
;
width
:
100%
;
height
:
40%
;
margin
:
10px
;
}
@media
screen
and
(
device-type
:
phone
)
and
(
orientation
:
landscape
)
{
.title
{
font-size
:
60px
;
}
}
@media
screen
and
(
device-type
:
tablet
)
and
(
orientation
:
landscape
)
{
.title
{
font-size
:
100px
;
}
}
\ No newline at end of file
multimedia/media/media_js_standard/avRecorder/src/main/js/TestAbility/pages/index/index.hml
0 → 100644
浏览文件 @
6b169249
<div class="container">
<text class="title">
{{ $t('strings.hello') }} {{ title }}
</text>
</div>
multimedia/media/media_js_standard/avRecorder/src/main/js/TestAbility/pages/index/index.js
0 → 100644
浏览文件 @
6b169249
/*
* Copyright (c) 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.
*/
export
default
{
data
:
{
title
:
""
},
onInit
()
{
this
.
title
=
this
.
$t
(
'
strings.world
'
);
}
}
multimedia/media/media_js_standard/avRecorder/src/main/js/TestRunner/OpenHarmonyTestRunner.js
0 → 100644
浏览文件 @
6b169249
/*
* Copyright (c) 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.
*/
import
AbilityDelegatorRegistry
from
'
@ohos.application.abilityDelegatorRegistry
'
function
translateParamsToString
(
parameters
)
{
const
keySet
=
new
Set
([
'
-s class
'
,
'
-s notClass
'
,
'
-s suite
'
,
'
-s itName
'
,
'
-s level
'
,
'
-s testType
'
,
'
-s size
'
,
'
-s timeout
'
,
'
-s package
'
,
'
-s dryRun
'
])
let
targetParams
=
''
;
for
(
const
key
in
parameters
)
{
if
(
keySet
.
has
(
key
))
{
targetParams
+=
'
'
+
key
+
'
'
+
parameters
[
key
]
}
}
return
targetParams
.
trim
()
}
export
default
{
onPrepare
()
{
console
.
info
(
'
OpenHarmonyTestRunner OnPrepare
'
)
},
onRun
()
{
console
.
log
(
'
OpenHarmonyTestRunner onRun run
'
)
var
abilityDelegatorArguments
=
AbilityDelegatorRegistry
.
getArguments
()
var
abilityDelegator
=
AbilityDelegatorRegistry
.
getAbilityDelegator
()
var
testAbilityName
=
abilityDelegatorArguments
.
parameters
[
'
-p
'
]
+
'
.TestAbility
'
var
cmd
=
'
aa start -d 0 -a
'
+
testAbilityName
+
'
-b
'
+
abilityDelegatorArguments
.
bundleName
cmd
+=
'
'
+
translateParamsToString
(
abilityDelegatorArguments
.
parameters
)
var
debug
=
abilityDelegatorArguments
.
parameters
[
"
-D
"
]
console
.
info
(
'
debug value :
'
+
debug
)
if
(
debug
==
'
true
'
)
{
cmd
+=
'
-D
'
}
console
.
info
(
'
cmd :
'
+
cmd
)
abilityDelegator
.
executeShellCommand
(
cmd
,
(
err
,
data
)
=>
{
console
.
info
(
'
executeShellCommand : err :
'
+
JSON
.
stringify
(
err
));
console
.
info
(
'
executeShellCommand : data :
'
+
data
.
stdResult
);
console
.
info
(
'
executeShellCommand : data :
'
+
data
.
exitCode
);
})
}
};
multimedia/media/media_js_standard/avRecorder/src/main/js/test/AVRecorderFuncTest.test.js
0 → 100644
浏览文件 @
6b169249
/*
* Copyright (C) 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.
*/
import
*
as
mediaTestBase
from
'
../../../../../MediaTestBase.js
'
;
import
media
from
'
@ohos.multimedia.media
'
;
import
{
describe
,
beforeAll
,
beforeEach
,
afterEach
,
afterAll
,
it
,
expect
}
from
'
deccjsunit/index
'
;
export
default
function
AVRecorderFuncTest
(
recorderContxt
)
{
describe
(
'
AVRecorderFuncTest
'
,
function
()
{
const
RECORDER_TIME
=
3000
;
const
PAUSE_TIME
=
1000
;
const
END
=
0
;
const
CREATE_PROMISE
=
1
;
const
CREATE_CALLBACK
=
2
;
const
PREPARE_PROMISE
=
3
;
const
PREPARE_CALLBACK
=
4
;
const
GETSURFACE_PROMISE
=
5
;
const
GETSURFACE_CALLBACK
=
6
;
const
STARTCAMERA
=
7
;
const
START_PROMISE
=
8
;
const
START_CALLBACK
=
9
;
const
PAUSE_PROMISE
=
10
;
const
PAUSE_CALLBACK
=
11
;
const
RESUME_PROMISE
=
12
;
const
RESUME_CALLBACK
=
13
;
const
STOP_PROMISE
=
14
;
const
STOP_CALLBACK
=
15
;
const
RESET_PROMISE
=
16
;
const
RESET_CALLBACK
=
17
;
const
RELEASE_PROMISE
=
18
;
const
RELEASE_CALLBACK
=
19
;
const
SETCALLBACKOFF
=
20
;
const
STOPVIDEOOUTPUT
=
21
;
let
mySteps
=
new
Array
();
let
caseCount
=
0
;
let
fdPath
;
let
fdObject
;
let
playerSurfaceId
=
''
;
let
avRecorder
=
null
;
let
surfaceID
=
''
;
let
needDone
=
false
;
let
avProfile
=
{
audioBitrate
:
48000
,
audioChannels
:
2
,
audioCodec
:
media
.
CodecMimeType
.
AUDIO_AAC
,
audioSampleRate
:
48000
,
fileFormat
:
media
.
ContainerFormatType
.
CFT_MPEG_4
,
videoBitrate
:
48000
,
videoCodec
:
media
.
CodecMimeType
.
VIDEO_MPEG4
,
videoFrameWidth
:
640
,
videoFrameHeight
:
480
,
videoFrameRate
:
30
}
let
avConfig
=
{
audioSourceType
:
media
.
AudioSourceType
.
AUDIO_SOURCE_TYPE_MIC
,
videoSourceType
:
media
.
VideoSourceType
.
VIDEO_SOURCE_TYPE_SURFACE_YUV
,
profile
:
avProfile
,
url
:
'
fd://
'
,
rotation
:
0
,
location
:
{
latitude
:
30
,
longitude
:
130
}
}
let
audioProfile
=
{
audioBitrate
:
48000
,
audioChannels
:
2
,
audioCodec
:
media
.
CodecMimeType
.
AUDIO_AAC
,
audioSampleRate
:
48000
,
fileFormat
:
media
.
ContainerFormatType
.
CFT_MPEG_4
,
}
let
audioConfig
=
{
audioSourceType
:
media
.
AudioSourceType
.
AUDIO_SOURCE_TYPE_MIC
,
profile
:
audioProfile
,
url
:
'
fd://
'
,
rotation
:
0
,
location
:
{
latitude
:
30
,
longitude
:
130
}
}
beforeAll
(
async
function
()
{
console
.
info
(
'
beforeAll case In
'
);
let
permissionName1
=
'
ohos.permission.MICROPHONE
'
;
let
permissionName2
=
'
ohos.permission.MEDIA_LOCATION
'
;
let
permissionName3
=
'
ohos.permission.READ_MEDIA
'
;
let
permissionName4
=
'
ohos.permission.WRITE_MEDIA
'
;
let
permissionName5
=
'
ohos.permission.CAMERA
'
;
let
permissionNames
=
[
permissionName1
,
permissionName2
,
permissionName3
,
permissionName4
,
permissionName5
];
await
mediaTestBase
.
getPermission
(
permissionNames
);
await
mediaTestBase
.
msleepAsync
(
2000
);
await
mediaTestBase
.
driveFn
(
3
);
console
.
info
(
'
beforeAll case Out
'
);
})
beforeEach
(
async
function
()
{
console
.
info
(
'
beforeEach case In
'
);
playerSurfaceId
=
globalThis
.
value
;
avRecorder
=
undefined
;
surfaceID
=
''
;
caseCount
+=
1
;
needDone
=
false
;
console
.
info
(
'
beforeEach case Out
'
);
})
afterEach
(
async
function
()
{
console
.
info
(
'
afterEach case In
'
);
mySteps
=
new
Array
();
await
releaseByPromise
();
await
mediaTestBase
.
closeFd
(
fdObject
.
fileAsset
,
fdObject
.
fdNumber
);
console
.
info
(
'
afterEach case Out
'
);
})
afterAll
(
function
()
{
console
.
info
(
'
afterAll case
'
);
})
async
function
getRecorderFileFd
(
fileName
,
fileType
)
{
console
.
info
(
"
case current fileName is:
"
+
fileName
);
fdObject
=
await
mediaTestBase
.
getAvRecorderFd
(
fileName
,
fileType
);
fdPath
=
"
fd://
"
+
fdObject
.
fdNumber
.
toString
();
console
.
info
(
"
case fdPath is:
"
+
fdPath
);
avConfig
.
url
=
fdPath
;
console
.
info
(
"
case to out getRecorderFileFd
"
);
}
async
function
createAVRecorderByPromise
(
done
)
{
console
.
info
(
`case to create avRecorder by promise`
);
await
media
.
createAVRecorder
().
then
((
recorder
)
=>
{
console
.
info
(
'
case createAVRecorder promise called
'
);
if
(
typeof
(
recorder
)
!=
'
undefined
'
)
{
avRecorder
=
recorder
;
expect
(
avRecorder
.
state
).
assertEqual
(
'
idle
'
);
setCallbackOn
(
done
);
nextStep
(
done
);
}
else
{
console
.
info
(
'
case create avRecorder failed!!!
'
);
expect
().
assertFail
();
done
();
}
},
mediaTestBase
.
failureCallback
).
catch
(
mediaTestBase
.
catchCallback
);
}
function
createAVRecorderByCallback
(
done
)
{
console
.
info
(
`case to create avRecorder by callback`
);
media
.
createAVRecorder
((
err
,
recorder
)
=>
{
if
(
typeof
(
err
)
==
'
undefined
'
)
{
console
.
info
(
'
case createAVRecorder callback success
'
);
avRecorder
=
recorder
;
expect
(
avRecorder
.
state
).
assertEqual
(
'
idle
'
);
setCallbackOn
(
done
);
nextStep
(
done
);
}
else
{
mediaTestBase
.
failureCallback
(
err
);
}
});
}
async
function
prepareByPromise
()
{
console
.
info
(
`case to prepare by promise`
);
await
avRecorder
.
prepare
(
avConfig
).
then
(()
=>
{
console
.
info
(
'
case recorder prepare by promise called
'
);
},
mediaTestBase
.
failureCallback
).
catch
(
mediaTestBase
.
catchCallback
);
}
function
prepareByCallback
()
{
console
.
info
(
`case to prepare by callback`
);
avRecorder
.
prepare
(
avConfig
,
(
err
)
=>
{
if
(
typeof
(
err
)
==
'
undefined
'
)
{
console
.
info
(
'
case recorder prepare by callback called
'
);
}
else
{
mediaTestBase
.
failureCallback
(
err
);
}
});
}
async
function
getInputSurfaceByPromise
(
done
)
{
console
.
info
(
`case to getsurface by promise`
);
await
avRecorder
.
getInputSurface
().
then
((
outputSurface
)
=>
{
console
.
info
(
'
case getInputSurface by promise called
'
);
surfaceID
=
outputSurface
;
console
.
info
(
'
case outputSurface surfaceID is:
'
+
surfaceID
);
nextStep
(
done
);
},
mediaTestBase
.
failureCallback
).
catch
(
mediaTestBase
.
catchCallback
);
}
function
getInputSurfaceByCallback
(
done
)
{
console
.
info
(
`case to getsurface by callback`
);
avRecorder
.
getInputSurface
((
err
,
outputSurface
)
=>
{
if
(
typeof
(
err
)
==
'
undefined
'
)
{
console
.
info
(
'
case getInputSurface by callback called
'
);
surfaceID
=
outputSurface
;
console
.
info
(
'
case outputSurface surfaceID is:
'
+
surfaceID
);
nextStep
(
done
);
}
else
{
mediaTestBase
.
failureCallback
(
err
);
}
});
}
async
function
startByPromise
()
{
console
.
info
(
`case to start by promise`
);
await
avRecorder
.
start
().
then
(()
=>
{
console
.
info
(
'
case recorder start by promise called
'
);
},
mediaTestBase
.
failureCallback
).
catch
(
mediaTestBase
.
catchCallback
);
}
function
startByCallback
()
{
console
.
info
(
`case to start by callback`
);
avRecorder
.
start
((
err
)
=>
{
if
(
typeof
(
err
)
==
'
undefined
'
)
{
console
.
info
(
'
case recorder start by callback called
'
);
}
else
{
mediaTestBase
.
failureCallback
(
err
);
}
});
}
async
function
pauseByPromise
()
{
console
.
info
(
`case to pause by promise`
);
await
avRecorder
.
pause
().
then
(()
=>
{
console
.
info
(
'
case recorder pause by promise called
'
);
},
mediaTestBase
.
failureCallback
).
catch
(
mediaTestBase
.
catchCallback
);
}
function
pauseByCallback
()
{
console
.
info
(
`case to pause by callback`
);
avRecorder
.
pause
((
err
)
=>
{
if
(
typeof
(
err
)
==
'
undefined
'
)
{
console
.
info
(
'
case recorder pause by callback called
'
);
}
else
{
mediaTestBase
.
failureCallback
(
err
);
}
});
}
async
function
resumeByPromise
()
{
console
.
info
(
`case to resume by promise`
);
await
avRecorder
.
resume
().
then
(()
=>
{
console
.
info
(
'
case recorder resume by promise called
'
);
},
mediaTestBase
.
failureCallback
).
catch
(
mediaTestBase
.
catchCallback
);
}
function
resumeByCallback
()
{
console
.
info
(
`case to resume by callback`
);
avRecorder
.
resume
((
err
)
=>
{
if
(
typeof
(
err
)
==
'
undefined
'
)
{
console
.
info
(
'
case recorder resume by callback called
'
);
}
else
{
mediaTestBase
.
failureCallback
(
err
);
}
});
}
async
function
stopByPromise
()
{
console
.
info
(
`case to stop by promise`
);
await
avRecorder
.
stop
().
then
(()
=>
{
console
.
info
(
'
case recorder stop by promise called
'
);
},
mediaTestBase
.
failureCallback
).
catch
(
mediaTestBase
.
catchCallback
);
}
function
stopByCallback
()
{
console
.
info
(
`case to stop by callback`
);
avRecorder
.
stop
((
err
)
=>
{
if
(
typeof
(
err
)
==
'
undefined
'
)
{
console
.
info
(
'
case recorder stop by callback called
'
);
}
else
{
mediaTestBase
.
failureCallback
(
err
);
}
});
}
async
function
resetByPromise
()
{
console
.
info
(
`case to reset by promise`
);
await
avRecorder
.
reset
().
then
(()
=>
{
console
.
info
(
'
case recorder reset by promise called
'
);
},
mediaTestBase
.
failureCallback
).
catch
(
mediaTestBase
.
catchCallback
);
}
function
resetByCallback
()
{
console
.
info
(
`case to reset by callback`
);
avRecorder
.
reset
((
err
)
=>
{
if
(
typeof
(
err
)
==
'
undefined
'
)
{
console
.
info
(
'
case recorder reset by callback called
'
);
}
else
{
mediaTestBase
.
failureCallback
(
err
);
}
});
}
async
function
releaseByPromise
(
done
)
{
console
.
info
(
`case to release by promise`
);
if
(
avRecorder
)
{
await
avRecorder
.
release
().
then
(()
=>
{
console
.
info
(
'
case recorder release by promise called
'
);
},
mediaTestBase
.
failureCallback
).
catch
(
mediaTestBase
.
catchCallback
);
}
if
(
needDone
)
{
avRecorder
=
undefined
;
done
();
}
}
async
function
releaseByCallback
(
done
)
{
console
.
info
(
`case to release by callback`
);
if
(
avRecorder
)
{
avRecorder
.
release
(
async
(
err
)
=>
{
if
(
typeof
(
err
)
==
'
undefined
'
)
{
console
.
info
(
'
case recorder release by callback called
'
);
avRecorder
=
undefined
;
}
else
{
mediaTestBase
.
failureCallback
(
err
);
}
});
}
if
(
needDone
)
{
avRecorder
=
undefined
;
done
();
}
}
async
function
nextStep
(
done
)
{
console
.
info
(
"
case myStep[0]:
"
+
mySteps
[
0
]);
if
(
mySteps
[
0
]
==
END
)
{
console
.
info
(
"
case to END
"
);
done
();
}
switch
(
mySteps
[
0
])
{
case
CREATE_PROMISE
:
mySteps
.
shift
();
await
createAVRecorderByPromise
(
done
);
break
;
case
CREATE_CALLBACK
:
mySteps
.
shift
();
createAVRecorderByCallback
(
done
);
break
;
case
PREPARE_PROMISE
:
mySteps
.
shift
();
await
prepareByPromise
();
break
;
case
PREPARE_CALLBACK
:
mySteps
.
shift
();
prepareByCallback
();
break
;
case
GETSURFACE_PROMISE
:
mySteps
.
shift
();
await
getInputSurfaceByPromise
(
done
);
break
;
case
GETSURFACE_CALLBACK
:
mySteps
.
shift
();
getInputSurfaceByCallback
(
done
);
break
;
case
STARTCAMERA
:
mySteps
.
shift
();
await
startVideoOutput
();
nextStep
(
done
);
break
;
case
START_PROMISE
:
mySteps
.
shift
();
await
startByPromise
();
break
;
case
START_CALLBACK
:
mySteps
.
shift
();
startByCallback
();
break
;
case
PAUSE_PROMISE
:
mySteps
.
shift
();
await
pauseByPromise
();
break
;
case
PAUSE_CALLBACK
:
mySteps
.
shift
();
pauseByCallback
();
break
;
case
RESUME_PROMISE
:
mySteps
.
shift
();
await
resumeByPromise
();
break
;
case
RESUME_CALLBACK
:
mySteps
.
shift
();
resumeByCallback
();
break
;
case
STOP_PROMISE
:
mySteps
.
shift
();
await
stopByPromise
();
break
;
case
STOP_CALLBACK
:
mySteps
.
shift
();
stopByCallback
();
break
;
case
RESET_PROMISE
:
mySteps
.
shift
();
await
resetByPromise
();
break
;
case
RESET_CALLBACK
:
mySteps
.
shift
();
resetByCallback
();
break
;
case
RELEASE_PROMISE
:
mySteps
.
shift
();
await
releaseByPromise
(
done
);
break
;
case
RELEASE_CALLBACK
:
mySteps
.
shift
();
await
releaseByCallback
(
done
);
break
;
case
SETCALLBACKOFF
:
mySteps
.
shift
();
setCallbackOff
(
done
);
break
;
case
STOPVIDEOOUTPUT
:
mySteps
.
shift
();
await
stopVideoOutput
();
nextStep
(
done
);
break
;
default
:
console
.
info
(
'
do nothing
'
);
}
}
function
setCallbackOn
(
done
)
{
console
.
info
(
'
case callback on
'
);
avRecorder
.
on
(
'
stateChange
'
,
async
(
state
,
reason
)
=>
{
console
.
info
(
'
case state has changed, new state is :
'
+
state
);
switch
(
state
)
{
case
'
idle
'
:
nextStep
(
done
);
break
;
case
'
prepared
'
:
nextStep
(
done
);
break
;
case
'
started
'
:
await
mediaTestBase
.
msleepAsync
(
RECORDER_TIME
);
nextStep
(
done
);
break
;
case
'
paused
'
:
await
mediaTestBase
.
msleepAsync
(
PAUSE_TIME
);
nextStep
(
done
);
break
;
case
'
stopped
'
:
nextStep
(
done
);
break
;
case
'
released
'
:
avRecorder
=
undefined
;
nextStep
(
done
);
break
;
case
'
error
'
:
console
.
info
(
"
case error state!!!
"
);
break
;
default
:
console
.
info
(
'
case start is unknown
'
);
nextStep
(
done
);
}
});
avRecorder
.
on
(
'
error
'
,
(
err
)
=>
{
console
.
info
(
'
case avRecorder.on(error) called, errMessage is
'
+
err
.
message
);
nextStep
(
done
);
});
}
function
setCallbackOff
(
done
)
{
console
.
info
(
'
case callback off called
'
);
if
(
avRecorder
!=
undefined
)
{
console
.
info
(
'
case to call avRecorder.off("stateChange")
'
);
avRecorder
.
off
(
'
stateChange
'
);
console
.
info
(
'
case to call avRecorder.off("error")
'
);
avRecorder
.
off
(
'
error
'
);
console
.
info
(
'
case call avRecorder.off done
'
);
}
needDone
=
true
;
nextStep
(
done
);
console
.
info
(
'
case callback off done
'
);
}
/* *
* @tc.number : SUB_MULTIMEDIA_MEDIA_AVRECORDER_FUNC_0100
* @tc.name : 01. test only avRecorder basic function by promise interfaces
* @tc.desc : test only avRecorder operation: start-pause-resume-stop
* @tc.size : MediumTest
* @tc.type : Function
* @tc.level : Level0
*/
it
(
'
SUB_MULTIMEDIA_MEDIA_AVRECORDER_FUNC_0100
'
,
0
,
async
function
(
done
)
{
avConfig
=
audioConfig
;
caseCount
=
1
;
let
fileName
=
'
avRecorder_func_0
'
+
caseCount
+
'
.m4a
'
;
await
getRecorderFileFd
(
fileName
,
'
audio
'
);
mySteps
=
new
Array
(
CREATE_PROMISE
,
PREPARE_PROMISE
,
START_PROMISE
,
PAUSE_PROMISE
,
RESUME_PROMISE
,
STOP_PROMISE
,
RESET_PROMISE
,
SETCALLBACKOFF
,
RELEASE_PROMISE
);
nextStep
(
done
);
})
/* *
* @tc.number : SUB_MULTIMEDIA_MEDIA_AVRECORDER_FUNC_0200
* @tc.name : 01. test only avRecorder basic function by callback interfaces
* @tc.desc : test only avRecorder operation: start-pause-resume-stop
* @tc.size : MediumTest
* @tc.type : Function
* @tc.level : Level0
*/
it
(
'
SUB_MULTIMEDIA_MEDIA_AVRECORDER_FUNC_0200
'
,
0
,
async
function
(
done
)
{
let
fileName
=
'
avRecorder_func_0
'
+
caseCount
+
'
.m4a
'
;
await
getRecorderFileFd
(
fileName
,
'
audio
'
);
mySteps
=
new
Array
(
CREATE_CALLBACK
,
PREPARE_CALLBACK
,
START_CALLBACK
,
PAUSE_CALLBACK
,
RESUME_CALLBACK
,
STOP_CALLBACK
,
RESET_CALLBACK
,
SETCALLBACKOFF
,
RELEASE_CALLBACK
);
nextStep
(
done
);
})
})
}
\ No newline at end of file
multimedia/media/media_js_standard/avRecorder/src/main/js/test/List.test.js
0 → 100644
浏览文件 @
6b169249
/*
* Copyright (c) 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.
*/
import
AVRecorderFuncTest
from
'
./AVRecorderFuncTest.test.js
'
export
default
function
testsuite
(
recorderContxt
)
{
AVRecorderFuncTest
(
recorderContxt
)
}
\ No newline at end of file
multimedia/media/media_js_standard/avRecorder/src/main/resources/base/element/string.json
0 → 100644
浏览文件 @
6b169249
{
"string"
:
[
{
"name"
:
"entry_MainAbility"
,
"value"
:
"entry_MainAbility"
},
{
"name"
:
"mainability_description"
,
"value"
:
"JS_Empty Ability"
},
{
"name"
:
"MainAbility_desc"
,
"value"
:
"description"
},
{
"name"
:
"MainAbility_label"
,
"value"
:
"label"
},
{
"name"
:
"TestAbility_desc"
,
"value"
:
"description"
},
{
"name"
:
"TestAbility_label"
,
"value"
:
"label"
}
]
}
\ No newline at end of file
multimedia/media/media_js_standard/avRecorder/src/main/resources/base/media/icon.png
0 → 100644
浏览文件 @
6b169249
6.6 KB
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录