Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Xts Acts
提交
349b485d
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看板
未验证
提交
349b485d
编写于
8月 25, 2022
作者:
O
openharmony_ci
提交者:
Gitee
8月 25, 2022
浏览文件
操作
浏览文件
下载
差异文件
!5034 monthly:添加pixelmapFormat和creator的相关测试用例
Merge pull request !5034 from 冯泽悟/monthly_20220816
上级
9faa9581
8eec7ccb
变更
29
展开全部
隐藏空白更改
内联
并排
Showing
29 changed file
with
1935 addition
and
0 deletion
+1935
-0
multimedia/BUILD.gn
multimedia/BUILD.gn
+2
-0
multimedia/image/image_js_standard/imageCreator/BUILD.gn
multimedia/image/image_js_standard/imageCreator/BUILD.gn
+31
-0
multimedia/image/image_js_standard/imageCreator/Test.json
multimedia/image/image_js_standard/imageCreator/Test.json
+41
-0
multimedia/image/image_js_standard/imageCreator/signature/openharmony_sx.p7b
...age_js_standard/imageCreator/signature/openharmony_sx.p7b
+0
-0
multimedia/image/image_js_standard/imageCreator/src/main/config.json
...image/image_js_standard/imageCreator/src/main/config.json
+104
-0
multimedia/image/image_js_standard/imageCreator/src/main/js/default/app.js
...image_js_standard/imageCreator/src/main/js/default/app.js
+23
-0
multimedia/image/image_js_standard/imageCreator/src/main/js/default/i18n/en-US.json
...standard/imageCreator/src/main/js/default/i18n/en-US.json
+6
-0
multimedia/image/image_js_standard/imageCreator/src/main/js/default/i18n/zh-CN.json
...standard/imageCreator/src/main/js/default/i18n/zh-CN.json
+6
-0
multimedia/image/image_js_standard/imageCreator/src/main/js/default/pages/index/index.css
...rd/imageCreator/src/main/js/default/pages/index/index.css
+46
-0
multimedia/image/image_js_standard/imageCreator/src/main/js/default/pages/index/index.hml
...rd/imageCreator/src/main/js/default/pages/index/index.hml
+5
-0
multimedia/image/image_js_standard/imageCreator/src/main/js/default/pages/index/index.js
...ard/imageCreator/src/main/js/default/pages/index/index.js
+41
-0
multimedia/image/image_js_standard/imageCreator/src/main/js/test/List.test.js
...ge_js_standard/imageCreator/src/main/js/test/List.test.js
+16
-0
multimedia/image/image_js_standard/imageCreator/src/main/js/test/creator.test.js
...js_standard/imageCreator/src/main/js/test/creator.test.js
+790
-0
multimedia/image/image_js_standard/imageCreator/src/main/resources/base/element/string.json
.../imageCreator/src/main/resources/base/element/string.json
+12
-0
multimedia/image/image_js_standard/imageCreator/src/main/resources/base/media/icon.png
...ndard/imageCreator/src/main/resources/base/media/icon.png
+0
-0
multimedia/image/image_js_standard/imageRGBA/BUILD.gn
multimedia/image/image_js_standard/imageRGBA/BUILD.gn
+31
-0
multimedia/image/image_js_standard/imageRGBA/Test.json
multimedia/image/image_js_standard/imageRGBA/Test.json
+41
-0
multimedia/image/image_js_standard/imageRGBA/signature/openharmony_sx.p7b
.../image_js_standard/imageRGBA/signature/openharmony_sx.p7b
+0
-0
multimedia/image/image_js_standard/imageRGBA/src/main/config.json
...ia/image/image_js_standard/imageRGBA/src/main/config.json
+104
-0
multimedia/image/image_js_standard/imageRGBA/src/main/js/default/app.js
...ge/image_js_standard/imageRGBA/src/main/js/default/app.js
+23
-0
multimedia/image/image_js_standard/imageRGBA/src/main/js/default/i18n/en-US.json
...js_standard/imageRGBA/src/main/js/default/i18n/en-US.json
+6
-0
multimedia/image/image_js_standard/imageRGBA/src/main/js/default/i18n/zh-CN.json
...js_standard/imageRGBA/src/main/js/default/i18n/zh-CN.json
+6
-0
multimedia/image/image_js_standard/imageRGBA/src/main/js/default/pages/index/index.css
...ndard/imageRGBA/src/main/js/default/pages/index/index.css
+46
-0
multimedia/image/image_js_standard/imageRGBA/src/main/js/default/pages/index/index.hml
...ndard/imageRGBA/src/main/js/default/pages/index/index.hml
+5
-0
multimedia/image/image_js_standard/imageRGBA/src/main/js/default/pages/index/index.js
...andard/imageRGBA/src/main/js/default/pages/index/index.js
+41
-0
multimedia/image/image_js_standard/imageRGBA/src/main/js/test/List.test.js
...image_js_standard/imageRGBA/src/main/js/test/List.test.js
+16
-0
multimedia/image/image_js_standard/imageRGBA/src/main/js/test/RGBA.test.js
...image_js_standard/imageRGBA/src/main/js/test/RGBA.test.js
+481
-0
multimedia/image/image_js_standard/imageRGBA/src/main/resources/base/element/string.json
...ard/imageRGBA/src/main/resources/base/element/string.json
+12
-0
multimedia/image/image_js_standard/imageRGBA/src/main/resources/base/media/icon.png
...standard/imageRGBA/src/main/resources/base/media/icon.png
+0
-0
未找到文件。
multimedia/BUILD.gn
浏览文件 @
349b485d
...
...
@@ -21,11 +21,13 @@ group("multimedia") {
"camera/camera_js_standard:camera_standard_ets_hap",
"image/image_js_standard/image:image_js_hap",
"image/image_js_standard/imageColorspace:image_colorspace_js_hap",
"image/image_js_standard/imageCreator:image_creator_js_hap",
"image/image_js_standard/imageDecodeOptions:image_DecodeOptions_js_hap",
"image/image_js_standard/imageExif:image_exif_js_hap",
"image/image_js_standard/imageModifyProperty:image_modifyProperty_js_hap",
"image/image_js_standard/imagePacking:image_packing_js_hap",
"image/image_js_standard/imagePixelMapFramework:image_pixelmapframework_js_hap",
"image/image_js_standard/imageRGBA:image_rgba_js_hap",
"image/image_js_standard/imageReceiver:image_receiver_js_hap",
"image/image_js_standard/imageWebp:image_webp_js_hap",
"image/image_js_standard/imageYUV:image_yuv_js_hap",
...
...
multimedia/image/image_js_standard/imageCreator/BUILD.gn
0 → 100644
浏览文件 @
349b485d
# 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("image_creator_js_hap") {
hap_profile = "./src/main/config.json"
deps = [
":image_creator_js_assets",
":image_creator_resources",
]
certificate_profile = "./signature/openharmony_sx.p7b"
hap_name = "ActsImageCreatorJsTest"
}
ohos_js_assets("image_creator_js_assets") {
source_dir = "./src/main/js/default"
}
ohos_resources("image_creator_resources") {
sources = [ "./src/main/resources" ]
hap_profile = "./src/main/config.json"
}
multimedia/image/image_js_standard/imageCreator/Test.json
0 → 100644
浏览文件 @
349b485d
{
"description"
:
"Configuration for Image Tests"
,
"driver"
:
{
"type"
:
"JSUnitTest"
,
"test-timeout"
:
"300000"
,
"package"
:
"ohos.acts.multimedia.image.Creator"
,
"shell-timeout"
:
"120000"
},
"kits"
:
[
{
"test-file-name"
:
[
"ActsImageCreatorJsTest.hap"
],
"type"
:
"AppInstallKit"
,
"cleanup-apps"
:
true
},
{
"type"
:
"ShellKit"
,
"run-command"
:
[
]
},
{
"type"
:
"PushKit"
,
"pre-push"
:
[
],
"push"
:
[
]
},
{
"type"
:
"ShellKit"
,
"run-command"
:
[
"hilog -Q pidoff"
,
"hilog -b D"
],
"teardown-command"
:[
]
}
]
}
\ No newline at end of file
multimedia/image/image_js_standard/imageCreator/signature/openharmony_sx.p7b
0 → 100644
浏览文件 @
349b485d
文件已添加
multimedia/image/image_js_standard/imageCreator/src/main/config.json
0 → 100644
浏览文件 @
349b485d
{
"app"
:
{
"apiVersion"
:
{
"compatible"
:
6
,
"releaseType"
:
"Beta1"
,
"target"
:
7
},
"vendor"
:
"acts"
,
"bundleName"
:
"ohos.acts.multimedia.image.Creator"
,
"version"
:
{
"code"
:
1000000
,
"name"
:
"1.0.0"
}
},
"deviceConfig"
:
{
"default"
:
{
"debug"
:
true
}
},
"module"
:
{
"abilities"
:
[
{
"iconId"
:
16777218
,
"skills"
:
[
{
"entities"
:
[
"entity.system.home"
],
"actions"
:
[
"action.system.home"
]
}
],
"descriptionId"
:
16777217
,
"visible"
:
true
,
"labelId"
:
16777216
,
"icon"
:
"$media:icon"
,
"name"
:
"ohos.acts.multimedia.image.Creator.MainAbility"
,
"description"
:
"$string:mainability_description"
,
"label"
:
"$string:entry_MainAbility"
,
"type"
:
"page"
,
"homeAbility"
:
true
,
"launchType"
:
"standard"
}
],
"deviceType"
:
[
"phone"
,
"tablet"
,
"tv"
,
"wearable"
],
"mainAbility"
:
"ohos.acts.multimedia.image.Creator.MainAbility"
,
"distro"
:
{
"moduleType"
:
"entry"
,
"installationFree"
:
false
,
"deliveryWithInstall"
:
true
,
"moduleName"
:
"entry"
},
"reqPermissions"
:
[
{
"name"
:
"ohos.permission.GET_BUNDLE_INFO"
,
"reason"
:
"use ohos.permission.GET_BUNDLE_INFO"
},
{
"name"
:
"ohos.permission.GET_BUNDLE_INFO_PRIVILEGED"
,
"reason"
:
"use ohos.permission.GET_BUNDLE_INFO_PRIVILEGED"
},
{
"name"
:
"ohos.permission.GRANT_SENSITIVE_PERMISSIONS"
,
"reason"
:
"use ohos.permission.GRANT_SENSITIVE_PERMISSIONS"
},
{
"name"
:
"ohos.permission.REVOKE_SENSITIVE_PERMISSIONS"
,
"reason"
:
"use ohos.permission.REVOKE_SENSITIVE_PERMISSIONS"
},
{
"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"
}
],
"package"
:
"ohos.acts.multimedia.image.Creator"
,
"name"
:
".MyApplication"
,
"js"
:
[
{
"pages"
:
[
"pages/index/index"
],
"name"
:
"default"
,
"window"
:
{
"designWidth"
:
720
,
"autoDesignWidth"
:
true
}
}
]
}
}
\ No newline at end of file
multimedia/image/image_js_standard/imageCreator/src/main/js/default/app.js
0 → 100644
浏览文件 @
349b485d
/*
* 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.
*/
export
default
{
onCreate
()
{
console
.
info
(
'
AceApplication onCreate
'
);
},
onDestroy
()
{
console
.
info
(
'
AceApplication onDestroy
'
);
}
};
\ No newline at end of file
multimedia/image/image_js_standard/imageCreator/src/main/js/default/i18n/en-US.json
0 → 100644
浏览文件 @
349b485d
{
"strings"
:
{
"hello"
:
"Hello"
,
"world"
:
"World"
}
}
\ No newline at end of file
multimedia/image/image_js_standard/imageCreator/src/main/js/default/i18n/zh-CN.json
0 → 100644
浏览文件 @
349b485d
{
"strings"
:
{
"hello"
:
"您好"
,
"world"
:
"世界"
}
}
\ No newline at end of file
multimedia/image/image_js_standard/imageCreator/src/main/js/default/pages/index/index.css
0 → 100644
浏览文件 @
349b485d
.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
;
}
}
\ No newline at end of file
multimedia/image/image_js_standard/imageCreator/src/main/js/default/pages/index/index.hml
0 → 100644
浏览文件 @
349b485d
<div class="container">
<text class="title">
{{ $t('strings.hello') }} {{ title }}
</text>
</div>
\ No newline at end of file
multimedia/image/image_js_standard/imageCreator/src/main/js/default/pages/index/index.js
0 → 100644
浏览文件 @
349b485d
/*
* 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
{
Core
,
ExpectExtend
}
from
'
deccjsunit/index
'
export
default
{
data
:
{
title
:
""
},
onInit
()
{
this
.
title
=
this
.
$t
(
'
strings.world
'
);
},
onShow
()
{
console
.
info
(
'
onShow finish
'
)
const
core
=
Core
.
getInstance
()
const
expectExtend
=
new
ExpectExtend
({
'
id
'
:
'
extend
'
})
core
.
addService
(
'
expect
'
,
expectExtend
)
core
.
init
()
const
configService
=
core
.
getDefaultService
(
'
config
'
)
this
.
timeout
=
60000
configService
.
setConfig
(
this
)
require
(
'
../../../test/List.test
'
)
core
.
execute
()
},
onReady
()
{
},
}
\ No newline at end of file
multimedia/image/image_js_standard/imageCreator/src/main/js/test/List.test.js
0 → 100644
浏览文件 @
349b485d
/*
* 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.
*/
require
(
'
./creator.test.js
'
)
\ No newline at end of file
multimedia/image/image_js_standard/imageCreator/src/main/js/test/creator.test.js
0 → 100644
浏览文件 @
349b485d
此差异已折叠。
点击以展开。
multimedia/image/image_js_standard/imageCreator/src/main/resources/base/element/string.json
0 → 100644
浏览文件 @
349b485d
{
"string"
:
[
{
"name"
:
"entry_MainAbility"
,
"value"
:
"ImageJSTestMain"
},
{
"name"
:
"mainability_description"
,
"value"
:
"ImageJSTestMain Ability"
}
]
}
\ No newline at end of file
multimedia/image/image_js_standard/imageCreator/src/main/resources/base/media/icon.png
0 → 100644
浏览文件 @
349b485d
6.6 KB
multimedia/image/image_js_standard/imageRGBA/BUILD.gn
0 → 100644
浏览文件 @
349b485d
# 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("image_rgba_js_hap") {
hap_profile = "./src/main/config.json"
deps = [
":image_rgba_js_assets",
":image_rgba_resources",
]
certificate_profile = "./signature/openharmony_sx.p7b"
hap_name = "ActsImageRGBAJsTest"
}
ohos_js_assets("image_rgba_js_assets") {
source_dir = "./src/main/js/default"
}
ohos_resources("image_rgba_resources") {
sources = [ "./src/main/resources" ]
hap_profile = "./src/main/config.json"
}
multimedia/image/image_js_standard/imageRGBA/Test.json
0 → 100644
浏览文件 @
349b485d
{
"description"
:
"Configuration for Image Tests"
,
"driver"
:
{
"type"
:
"JSUnitTest"
,
"test-timeout"
:
"300000"
,
"package"
:
"ohos.acts.multimedia.image.RGBA"
,
"shell-timeout"
:
"120000"
},
"kits"
:
[
{
"test-file-name"
:
[
"ActsImageRGBAJsTest.hap"
],
"type"
:
"AppInstallKit"
,
"cleanup-apps"
:
true
},
{
"type"
:
"ShellKit"
,
"run-command"
:
[
]
},
{
"type"
:
"PushKit"
,
"pre-push"
:
[
],
"push"
:
[
]
},
{
"type"
:
"ShellKit"
,
"run-command"
:
[
"hilog -Q pidoff"
,
"hilog -b D"
],
"teardown-command"
:[
]
}
]
}
\ No newline at end of file
multimedia/image/image_js_standard/imageRGBA/signature/openharmony_sx.p7b
0 → 100644
浏览文件 @
349b485d
文件已添加
multimedia/image/image_js_standard/imageRGBA/src/main/config.json
0 → 100644
浏览文件 @
349b485d
{
"app"
:
{
"apiVersion"
:
{
"compatible"
:
6
,
"releaseType"
:
"Beta1"
,
"target"
:
7
},
"vendor"
:
"acts"
,
"bundleName"
:
"ohos.acts.multimedia.image.RGBA"
,
"version"
:
{
"code"
:
1000000
,
"name"
:
"1.0.0"
}
},
"deviceConfig"
:
{
"default"
:
{
"debug"
:
true
}
},
"module"
:
{
"abilities"
:
[
{
"iconId"
:
16777218
,
"skills"
:
[
{
"entities"
:
[
"entity.system.home"
],
"actions"
:
[
"action.system.home"
]
}
],
"descriptionId"
:
16777217
,
"visible"
:
true
,
"labelId"
:
16777216
,
"icon"
:
"$media:icon"
,
"name"
:
"ohos.acts.multimedia.image.RGBA.MainAbility"
,
"description"
:
"$string:mainability_description"
,
"label"
:
"$string:entry_MainAbility"
,
"type"
:
"page"
,
"homeAbility"
:
true
,
"launchType"
:
"standard"
}
],
"deviceType"
:
[
"phone"
,
"tablet"
,
"tv"
,
"wearable"
],
"mainAbility"
:
"ohos.acts.multimedia.image.RGBA.MainAbility"
,
"distro"
:
{
"moduleType"
:
"entry"
,
"installationFree"
:
false
,
"deliveryWithInstall"
:
true
,
"moduleName"
:
"entry"
},
"reqPermissions"
:
[
{
"name"
:
"ohos.permission.GET_BUNDLE_INFO"
,
"reason"
:
"use ohos.permission.GET_BUNDLE_INFO"
},
{
"name"
:
"ohos.permission.GET_BUNDLE_INFO_PRIVILEGED"
,
"reason"
:
"use ohos.permission.GET_BUNDLE_INFO_PRIVILEGED"
},
{
"name"
:
"ohos.permission.GRANT_SENSITIVE_PERMISSIONS"
,
"reason"
:
"use ohos.permission.GRANT_SENSITIVE_PERMISSIONS"
},
{
"name"
:
"ohos.permission.REVOKE_SENSITIVE_PERMISSIONS"
,
"reason"
:
"use ohos.permission.REVOKE_SENSITIVE_PERMISSIONS"
},
{
"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"
}
],
"package"
:
"ohos.acts.multimedia.image.RGBA"
,
"name"
:
".MyApplication"
,
"js"
:
[
{
"pages"
:
[
"pages/index/index"
],
"name"
:
"default"
,
"window"
:
{
"designWidth"
:
720
,
"autoDesignWidth"
:
true
}
}
]
}
}
\ No newline at end of file
multimedia/image/image_js_standard/imageRGBA/src/main/js/default/app.js
0 → 100644
浏览文件 @
349b485d
/*
* 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.
*/
export
default
{
onCreate
()
{
console
.
info
(
'
AceApplication onCreate
'
);
},
onDestroy
()
{
console
.
info
(
'
AceApplication onDestroy
'
);
}
};
\ No newline at end of file
multimedia/image/image_js_standard/imageRGBA/src/main/js/default/i18n/en-US.json
0 → 100644
浏览文件 @
349b485d
{
"strings"
:
{
"hello"
:
"Hello"
,
"world"
:
"World"
}
}
\ No newline at end of file
multimedia/image/image_js_standard/imageRGBA/src/main/js/default/i18n/zh-CN.json
0 → 100644
浏览文件 @
349b485d
{
"strings"
:
{
"hello"
:
"您好"
,
"world"
:
"世界"
}
}
\ No newline at end of file
multimedia/image/image_js_standard/imageRGBA/src/main/js/default/pages/index/index.css
0 → 100644
浏览文件 @
349b485d
.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
;
}
}
\ No newline at end of file
multimedia/image/image_js_standard/imageRGBA/src/main/js/default/pages/index/index.hml
0 → 100644
浏览文件 @
349b485d
<div class="container">
<text class="title">
{{ $t('strings.hello') }} {{ title }}
</text>
</div>
\ No newline at end of file
multimedia/image/image_js_standard/imageRGBA/src/main/js/default/pages/index/index.js
0 → 100644
浏览文件 @
349b485d
/*
* 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
{
Core
,
ExpectExtend
}
from
'
deccjsunit/index
'
export
default
{
data
:
{
title
:
""
},
onInit
()
{
this
.
title
=
this
.
$t
(
'
strings.world
'
);
},
onShow
()
{
console
.
info
(
'
onShow finish
'
)
const
core
=
Core
.
getInstance
()
const
expectExtend
=
new
ExpectExtend
({
'
id
'
:
'
extend
'
})
core
.
addService
(
'
expect
'
,
expectExtend
)
core
.
init
()
const
configService
=
core
.
getDefaultService
(
'
config
'
)
this
.
timeout
=
60000
configService
.
setConfig
(
this
)
require
(
'
../../../test/List.test
'
)
core
.
execute
()
},
onReady
()
{
},
}
\ No newline at end of file
multimedia/image/image_js_standard/imageRGBA/src/main/js/test/List.test.js
0 → 100644
浏览文件 @
349b485d
/*
* 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.
*/
require
(
'
./RGBA.test.js
'
)
\ No newline at end of file
multimedia/image/image_js_standard/imageRGBA/src/main/js/test/RGBA.test.js
0 → 100644
浏览文件 @
349b485d
/*
* 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
image
from
'
@ohos.multimedia.image
'
import
{
describe
,
beforeAll
,
beforeEach
,
afterEach
,
afterAll
,
it
,
expect
}
from
'
deccjsunit/index
'
describe
(
'
Image
'
,
function
()
{
beforeAll
(
function
()
{
console
.
info
(
'
beforeAll case
'
);
})
beforeEach
(
function
()
{
console
.
info
(
'
beforeEach case
'
);
})
afterEach
(
function
()
{
console
.
info
(
'
afterEach case
'
);
})
afterAll
(
function
()
{
console
.
info
(
'
afterAll case
'
);
})
/**
* @tc.number : RGBA_001
* @tc.name : create pixelmap-promise (editable: true, pixelFormat: RGBA_F16,
* size: { height: 4, width: 6 }, bytes = buffer)
* @tc.desc : 1.create InitializationOptions object
* 2.set editable,pixeFormat,size
* 3.using color and opts create newPixelMap
* 4.return newpixelmap not empty
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 0
*/
it
(
'
RGBA_001
'
,
0
,
async
function
(
done
)
{
const
Color
=
new
ArrayBuffer
(
96
);
let
opts
=
{
editable
:
true
,
pixelFormat
:
7
,
size
:
{
height
:
4
,
width
:
6
}
}
image
.
createPixelMap
(
Color
,
opts
)
.
then
(
pixelmap
=>
{
expect
(
pixelmap
!=
undefined
).
assertTrue
();
expect
(
pixelmap
.
isEditable
==
opts
.
editable
).
assertTrue
();
done
();
})
.
catch
(
error
=>
{
console
.
log
(
'
RGBA_001 err
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
})
})
/**
* @tc.number : RGBA_002
* @tc.name : create pixelmap-callback (editable: true, pixelFormat: RGBA_F16,
* size: { height: 4, width: 6 },bytes = buffer)
* @tc.desc : 1.create InitializationOptions object
* 2.set editable,pixelFormat,size
* 3.using color and opts create newPixelMap
* 4.return newpixelmap not empty
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 0
*/
it
(
'
RGBA_002
'
,
0
,
async
function
(
done
)
{
const
Color
=
new
ArrayBuffer
(
96
);
let
opts
=
{
editable
:
true
,
pixelFormat
:
7
,
size
:
{
height
:
4
,
width
:
6
}
}
image
.
createPixelMap
(
Color
,
opts
,
(
err
,
pixelmap
)
=>
{
if
(
err
!=
undefined
)
{
console
.
info
(
'
RGBA_002 err:
'
+
err
);
expect
(
false
).
assertTrue
();
done
();
return
;
}
expect
(
pixelmap
!=
undefined
).
assertTrue
();
expect
(
pixelmap
.
isEditable
==
opts
.
editable
).
assertTrue
();
done
();
})
})
/**
* @tc.number : RGBA_003
* @tc.name : create pixelmap-promise (editable: false, pixelFormat: RGBA_F16,
* size: { height: 4, width: 6 }, bytes = buffer)
* @tc.desc : 1.create InitializationOptions object
* 2.set editable,pixeFormat,size
* 3.using color and opts create newPixelMap
* 4.return newpixelmap not empty
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 0
*/
it
(
'
RGBA_003
'
,
0
,
async
function
(
done
)
{
const
Color
=
new
ArrayBuffer
(
96
);
let
opts
=
{
editable
:
false
,
pixelFormat
:
7
,
size
:
{
height
:
4
,
width
:
6
}
}
image
.
createPixelMap
(
Color
,
opts
)
.
then
(
pixelmap
=>
{
expect
(
pixelmap
!=
undefined
).
assertTrue
();
expect
(
pixelmap
.
isEditable
==
opts
.
editable
).
assertTrue
();
done
();
})
.
catch
(
error
=>
{
console
.
log
(
'
RGBA_003 err
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
})
})
/**
* @tc.number : RGBA_004
* @tc.name : create pixelmap-callback (editable: false, pixelFormat: RGBA_F16,
* size: { height: 4, width: 6 },bytes = buffer)
* @tc.desc : 1.create InitializationOptions object
* 2.set editable,pixelFormat,size
* 3.using color and opts create newPixelMap
* 4.return newpixelmap not empty
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 0
*/
it
(
'
RGBA_004
'
,
0
,
async
function
(
done
)
{
const
Color
=
new
ArrayBuffer
(
96
);
let
opts
=
{
editable
:
false
,
pixelFormat
:
7
,
size
:
{
height
:
4
,
width
:
6
}
}
image
.
createPixelMap
(
Color
,
opts
,
(
err
,
pixelmap
)
=>
{
if
(
err
!=
undefined
)
{
console
.
info
(
'
RGBA_002 err:
'
+
err
);
expect
(
false
).
assertTrue
();
done
();
return
;
}
expect
(
pixelmap
!=
undefined
).
assertTrue
();
expect
(
pixelmap
.
isEditable
==
opts
.
editable
).
assertTrue
();
done
();
})
})
/**
* @tc.number : RGBA_005
* @tc.name : create pixelmap-promise (editable: true, pixelFormat: ALPHA_8,
* size: { height: 4, width: 6 }, bytes = buffer)
* @tc.desc : 1.create InitializationOptions object
* 2.set editable,pixeFormat,size
* 3.using color and opts create newPixelMap
* 4.return newpixelmap not empty
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 0
*/
it
(
'
RGBA_005
'
,
0
,
async
function
(
done
)
{
const
Color
=
new
ArrayBuffer
(
96
);
let
opts
=
{
editable
:
true
,
pixelFormat
:
6
,
size
:
{
height
:
4
,
width
:
6
}
}
image
.
createPixelMap
(
Color
,
opts
)
.
then
(
pixelmap
=>
{
expect
(
pixelmap
!=
undefined
).
assertTrue
();
expect
(
pixelmap
.
isEditable
==
opts
.
editable
).
assertTrue
();
done
();
})
.
catch
(
error
=>
{
console
.
log
(
'
RGBA_005 err
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
})
})
/**
* @tc.number : RGBA_006
* @tc.name : create pixelmap-promise (editable: true, pixelFormat: RGB_565,
* size: { height: 4, width: 6 }, bytes = buffer)
* @tc.desc : 1.create InitializationOptions object
* 2.set editable,pixeFormat,size
* 3.using color and opts create newPixelMap
* 4.return newpixelmap not empty
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 0
*/
it
(
'
RGBA_006
'
,
0
,
async
function
(
done
)
{
const
Color
=
new
ArrayBuffer
(
96
);
let
opts
=
{
editable
:
true
,
pixelFormat
:
2
,
size
:
{
height
:
4
,
width
:
6
}
}
image
.
createPixelMap
(
Color
,
opts
)
.
then
(
pixelmap
=>
{
expect
(
pixelmap
!=
undefined
).
assertTrue
();
expect
(
pixelmap
.
isEditable
==
opts
.
editable
).
assertTrue
();
done
();
})
.
catch
(
error
=>
{
console
.
log
(
'
RGBA_006 err
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
})
})
/**
* @tc.number : RGBA_007
* @tc.name : create pixelmap-promise (editable: true, pixelFormat: ARGB_8888,
* size: { height: 4, width: 6 }, bytes = buffer)
* @tc.desc : 1.create InitializationOptions object
* 2.set editable,pixeFormat,size
* 3.using color and opts create newPixelMap
* 4.return newpixelmap not empty
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 0
*/
it
(
'
RGBA_007
'
,
0
,
async
function
(
done
)
{
const
Color
=
new
ArrayBuffer
(
96
);
let
opts
=
{
editable
:
true
,
pixelFormat
:
1
,
size
:
{
height
:
4
,
width
:
6
}
}
image
.
createPixelMap
(
Color
,
opts
)
.
then
(
pixelmap
=>
{
expect
(
pixelmap
!=
undefined
).
assertTrue
();
expect
(
pixelmap
.
isEditable
==
opts
.
editable
).
assertTrue
();
done
();
})
.
catch
(
error
=>
{
console
.
log
(
'
RGBA_007 err
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
})
})
/**
* @tc.number : RGBA_008
* @tc.name : create pixelmap-callback (editable: true, pixelFormat: ALPHA_8,
* size: { height: 4, width: 6 },bytes = buffer)
* @tc.desc : 1.create InitializationOptions object
* 2.set editable,pixelFormat,size
* 3.using color and opts create newPixelMap
* 4.return newpixelmap not empty
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 0
*/
it
(
'
RGBA_008
'
,
0
,
async
function
(
done
)
{
const
Color
=
new
ArrayBuffer
(
96
);
let
opts
=
{
editable
:
true
,
pixelFormat
:
6
,
size
:
{
height
:
4
,
width
:
6
}
}
image
.
createPixelMap
(
Color
,
opts
,
(
err
,
pixelmap
)
=>
{
if
(
err
!=
undefined
)
{
console
.
info
(
'
RGBA_008 err:
'
+
err
);
expect
(
false
).
assertTrue
();
done
();
return
;
}
expect
(
pixelmap
!=
undefined
).
assertTrue
();
expect
(
pixelmap
.
isEditable
==
opts
.
editable
).
assertTrue
();
done
();
})
})
/**
* @tc.number : RGBA_009
* @tc.name : create pixelmap-callback (editable: true, pixelFormat: RGB_565,
* size: { height: 4, width: 6 },bytes = buffer)
* @tc.desc : 1.create InitializationOptions object
* 2.set editable,pixelFormat,size
* 3.using color and opts create newPixelMap
* 4.return newpixelmap not empty
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 0
*/
it
(
'
RGBA_009
'
,
0
,
async
function
(
done
)
{
const
Color
=
new
ArrayBuffer
(
96
);
let
opts
=
{
editable
:
true
,
pixelFormat
:
2
,
size
:
{
height
:
4
,
width
:
6
}
}
image
.
createPixelMap
(
Color
,
opts
,
(
err
,
pixelmap
)
=>
{
if
(
err
!=
undefined
)
{
console
.
info
(
'
RGBA_009 err:
'
+
err
);
expect
(
false
).
assertTrue
();
done
();
return
;
}
expect
(
pixelmap
!=
undefined
).
assertTrue
();
expect
(
pixelmap
.
isEditable
==
opts
.
editable
).
assertTrue
();
done
();
})
})
/**
* @tc.number : RGBA_010
* @tc.name : create pixelmap-callback (editable: true, pixelFormat: ARGB_8888,
* size: { height: 4, width: 6 },bytes = buffer)
* @tc.desc : 1.create InitializationOptions object
* 2.set editable,pixelFormat,size
* 3.using color and opts create newPixelMap
* 4.return newpixelmap not empty
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 0
*/
it
(
'
RGBA_010
'
,
0
,
async
function
(
done
)
{
const
Color
=
new
ArrayBuffer
(
96
);
let
opts
=
{
editable
:
true
,
pixelFormat
:
1
,
size
:
{
height
:
4
,
width
:
6
}
}
image
.
createPixelMap
(
Color
,
opts
,
(
err
,
pixelmap
)
=>
{
if
(
err
!=
undefined
)
{
console
.
info
(
'
RGBA_010 err:
'
+
err
);
expect
(
false
).
assertTrue
();
done
();
return
;
}
expect
(
pixelmap
!=
undefined
).
assertTrue
();
expect
(
pixelmap
.
isEditable
==
opts
.
editable
).
assertTrue
();
done
();
})
})
/**
* @tc.number : RGBA_011
* @tc.name : create pixelmap-callback(editable: true, pixelFormat: unkonwn, size: { height: -1, width: 8 })
* @tc.desc : 1.create InitializationOptions object
* 2.set editable,pixeFormat,size
* 3.using color and opts create newPixelMap
* 4.return newpixelmap empty
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 0
*/
it
(
'
RGBA_011
'
,
0
,
async
function
(
done
)
{
const
Color
=
new
ArrayBuffer
(
96
);
let
opts
=
{
editable
:
true
,
pixelFormat
:
0
,
size
:
{
height
:
-
1
,
width
:
8
}
}
image
.
createPixelMap
(
Color
,
opts
,
(
err
,
pixelmap
)
=>
{
if
(
err
)
{
console
.
info
(
'
RGBA_011 err:
'
+
err
);
expect
(
pixelmap
==
undefined
).
assertTrue
();
console
.
info
(
'
RGBA_011 pass
'
);
done
();
}
else
{
expect
(
false
).
assertTrue
();
done
();
}
})
})
/**
* @tc.number : RGBA_012
* @tc.name : create pixelmap-callback(editable: true, pixelFormat: ARGB_8888, size: { height: 6, width: -1 })
* @tc.desc : 1.create InitializationOptions object
* 2.set editable,pixeFormat,size
* 3.using color and opts create newPixelMap
* 4.return newpixelmap empty
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 0
*/
it
(
'
RGBA_012
'
,
0
,
async
function
(
done
)
{
const
Color
=
new
ArrayBuffer
(
96
);
let
opts
=
{
editable
:
true
,
pixelFormat
:
1
,
size
:
{
height
:
6
,
width
:
-
1
}
}
image
.
createPixelMap
(
Color
,
opts
,
(
err
,
pixelmap
)
=>
{
if
(
err
)
{
console
.
info
(
'
RGBA_012 err:
'
+
err
);
expect
(
pixelmap
==
undefined
).
assertTrue
();
console
.
info
(
'
RGBA_012 pass
'
);
done
();
}
else
{
expect
(
false
).
assertTrue
();
done
();
}
})
})
/**
* @tc.number : RGBA_013
* @tc.name : create pixelmap-promise(editable: true, pixelFormat: unkonwn, size: { height: -1, width: 8 })
* @tc.desc : 1.create InitializationOptions object
* 2.set editable,pixeFormat,size
* 3.using color and opts create newPixelMap
* 4.return newpixelmap empty
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 0
*/
it
(
'
RGBA_013
'
,
0
,
async
function
(
done
)
{
const
Color
=
new
ArrayBuffer
(
96
);
let
opts
=
{
editable
:
true
,
pixelFormat
:
0
,
size
:
{
height
:
-
1
,
width
:
8
}
}
image
.
createPixelMap
(
Color
,
opts
).
then
(
pixelmap
=>
{
expect
(
false
).
assertTrue
();
console
.
info
(
'
RGBA_013 failed
'
);
done
();
}).
catch
(
error
=>
{
console
.
log
(
'
RGBA_013 err:
'
+
error
);
expect
(
true
).
assertTrue
();
done
();
})
})
/**
* @tc.number : RGBA_014
* @tc.name : create pixelmap-promise(editable: true, pixelFormat: unkonwn, size: { height: 6, width: -1 })
* @tc.desc : 1.create InitializationOptions object
* 2.set editable,pixeFormat,size
* 3.using color and opts create newPixelMap
* 4.return newpixelmap empty
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 0
*/
it
(
'
RGBA_014
'
,
0
,
async
function
(
done
)
{
const
Color
=
new
ArrayBuffer
(
96
);
let
opts
=
{
editable
:
true
,
pixelFormat
:
0
,
size
:
{
height
:
6
,
width
:
-
1
}
}
image
.
createPixelMap
(
Color
,
opts
).
then
(
pixelmap
=>
{
expect
(
false
).
assertTrue
();
console
.
info
(
'
RGBA_014 failed
'
);
done
();
}).
catch
(
error
=>
{
console
.
log
(
'
RGBA_014 error:
'
+
error
);
expect
(
true
).
assertTrue
();
done
();
})
})
/**
* @tc.number : RGBA_015
* @tc.name : create pixelmap-promise (editable: true, pixelFormat: BGRA8888,
* size: { height: 4, width: 6 }, bytes = buffer)
* @tc.desc : 1.create InitializationOptions object
* 2.set editable,pixeFormat,size
* 3.using color and opts create newPixelMap
* 4.return newpixelmap not empty
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 0
*/
it
(
'
RGBA_015
'
,
0
,
async
function
(
done
)
{
const
Color
=
new
ArrayBuffer
(
96
);
let
opts
=
{
editable
:
true
,
pixelFormat
:
4
,
size
:
{
height
:
4
,
width
:
6
}
}
image
.
createPixelMap
(
Color
,
opts
)
.
then
(
pixelmap
=>
{
console
.
log
(
'
RGBA_015 pixelFormat: 4
'
);
expect
(
pixelmap
!=
undefined
).
assertTrue
();
expect
(
pixelmap
.
isEditable
==
opts
.
editable
).
assertTrue
();
done
();
})
.
catch
(
error
=>
{
console
.
log
(
'
RGBA_015 err:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
})
})
/**
* @tc.number : RGBA_016
* @tc.name : create pixelmap-callback (editable: true, pixelFormat: BGRA8888,
* size: { height: 4, width: 6 },bytes = buffer)
* @tc.desc : 1.create InitializationOptions object
* 2.set editable,pixelFormat,size
* 3.using color and opts create newPixelMap
* 4.return newpixelmap not empty
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 0
*/
it
(
'
RGBA_016
'
,
0
,
async
function
(
done
)
{
const
Color
=
new
ArrayBuffer
(
96
);
let
opts
=
{
editable
:
true
,
pixelFormat
:
4
,
size
:
{
height
:
4
,
width
:
6
}
}
image
.
createPixelMap
(
Color
,
opts
,
(
err
,
pixelmap
)
=>
{
if
(
err
!=
undefined
)
{
console
.
log
(
'
RGBA_016 err:
'
+
err
);
expect
(
false
).
assertTrue
();
done
();
return
;
}
console
.
log
(
'
RGBA_016 pixelFormat: image.PixelMapFormat.BGRA_8888
'
);
expect
(
pixelmap
!=
undefined
).
assertTrue
();
expect
(
pixelmap
.
isEditable
==
opts
.
editable
).
assertTrue
();
done
();
})
})
})
\ No newline at end of file
multimedia/image/image_js_standard/imageRGBA/src/main/resources/base/element/string.json
0 → 100644
浏览文件 @
349b485d
{
"string"
:
[
{
"name"
:
"entry_MainAbility"
,
"value"
:
"ImageJSTestMain"
},
{
"name"
:
"mainability_description"
,
"value"
:
"ImageJSTestMain Ability"
}
]
}
\ No newline at end of file
multimedia/image/image_js_standard/imageRGBA/src/main/resources/base/media/icon.png
0 → 100644
浏览文件 @
349b485d
6.6 KB
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录