From 36905a9d6b2afe5b42c860900b6a3d535096aa42 Mon Sep 17 00:00:00 2001 From: wangweiyuan Date: Fri, 9 May 2025 17:34:32 +0800 Subject: [PATCH] Add comments Signed-off-by: wangweiyuan --- .../entry/src/main/ets/pages/Index.ets | 4 ++ .../HTTP_case/entry/src/main/module.json5 | 9 ++- .../main/resources/en_US/element/string.json | 4 ++ .../main/resources/zh_CN/element/string.json | 4 ++ .../entry/src/main/ets/pages/Index.ets | 4 ++ .../main/ets/workers/LocalSocketWorker.ets | 7 +- .../src/main/ets/workers/MulticastWorker.ets | 2 + .../src/main/ets/workers/OneWayTlsWorker.ets | 3 + .../main/ets/workers/Tcp2OneWayTlsWorker.ets | 2 + .../main/ets/workers/Tcp2TwoWayTlsWorker.ets | 2 + .../src/main/ets/workers/TcpClientWorker.ets | 3 +- .../src/main/ets/workers/TcpServerWorker.ets | 2 + .../src/main/ets/workers/TlsServerWorker.ets | 4 +- .../src/main/ets/workers/TwoWayTlsWorker.ets | 3 + .../entry/src/main/ets/workers/UdpWorker.ets | 2 + .../Socket/entry/src/main/module.json5 | 18 ++++- .../main/resources/base/element/string.json | 8 +++ .../src/ohosTest/ets/test/Ability.test.ets | 2 +- .../entry/src/main/cpp/napi_init.cpp | 2 + .../WebSocket_C/entry/src/main/module.json5 | 1 + .../main/resources/base/element/string.json | 6 +- .../entry/src/main/ets/pages/Index.ets | 3 + .../entry/src/main/module.json5 | 9 ++- .../main/resources/en_US/element/string.json | 4 ++ .../main/resources/zh_CN/element/string.json | 4 ++ .../FlowManagement_case/README_zh.md | 2 + .../entry/src/main/ets/pages/Index.ets | 2 + .../entry/src/main/module.json5 | 18 ++++- .../main/resources/en_US/element/string.json | 8 +++ .../main/resources/zh_CN/element/string.json | 8 +++ .../entry/src/main/cpp/napi_init.cpp | 15 ++++- .../entry/src/main/ets/pages/Index.ets | 9 ++- .../entry/src/main/module.json5 | 18 ++++- .../main/resources/en_US/element/string.json | 8 +++ .../main/resources/zh_CN/element/string.json | 8 +++ .../NetConnection_Manage_case/README_zh.md | 2 + .../entry/src/main/ets/pages/Index.ets | 14 ++++ .../entry/src/main/module.json5 | 18 ++++- .../main/resources/en_US/element/string.json | 8 +++ .../main/resources/zh_CN/element/string.json | 8 +++ .../VPNControl_Case/README_zh.md | 21 +++--- .../entry/src/main/ets/pages/Index.ets | 6 +- .../entry/src/main/ets/pages/StartVpn.ets | 31 ++++----- .../entry/src/main/ets/pages/StopVpn.ets | 10 +-- .../ets/vpnability/VPNExtentionAbility.ets | 2 + .../entry/src/main/module.json5 | 17 +++-- .../main/resources/base/element/string.json | 32 ++++++++- .../main/resources/en_US/element/string.json | 36 ++++++++++ .../main/resources/zh_CN/element/string.json | 38 ++++++++++- .../src/ohosTest/ets/test/Ability.test.ets | 66 +++++++++++-------- 50 files changed, 423 insertions(+), 94 deletions(-) diff --git a/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/HTTP_case/entry/src/main/ets/pages/Index.ets b/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/HTTP_case/entry/src/main/ets/pages/Index.ets index e2418ab452..5960636a13 100644 --- a/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/HTTP_case/entry/src/main/ets/pages/Index.ets +++ b/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/HTTP_case/entry/src/main/ets/pages/Index.ets @@ -69,6 +69,7 @@ struct HttpRequestDemo { .justifyContent(FlexAlign.Center) } + // [Start request_interface_development] // 封装普通的 HTTP 请求逻辑 private sendHttpRequest(): void { this.normalReqResult = $r('app.string.testing'); @@ -151,7 +152,9 @@ struct HttpRequestDemo { } ); } + // [End request_interface_development] + // [Start request_in_stream_interface_development] // 封装流式 HTTP 请求逻辑 private sendStreamHttpRequest(): void { this.streamReqResult = $r('app.string.testing'); @@ -234,4 +237,5 @@ struct HttpRequestDemo { httpRequest.destroy(); }); } + // [End request_in_stream_interface_development] } \ No newline at end of file diff --git a/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/HTTP_case/entry/src/main/module.json5 b/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/HTTP_case/entry/src/main/module.json5 index aacdfd93b8..9f8ba45ee9 100644 --- a/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/HTTP_case/entry/src/main/module.json5 +++ b/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/HTTP_case/entry/src/main/module.json5 @@ -65,7 +65,14 @@ ], "requestPermissions": [ { - "name": "ohos.permission.INTERNET" + "name": "ohos.permission.INTERNET", + "reason": "$string:grant_internet", + "usedScene": { + "abilities": [ + "MainAbility" + ], + "when": "inuse" + } } ] } diff --git a/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/HTTP_case/entry/src/main/resources/en_US/element/string.json b/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/HTTP_case/entry/src/main/resources/en_US/element/string.json index 8ce2693370..61754923b6 100644 --- a/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/HTTP_case/entry/src/main/resources/en_US/element/string.json +++ b/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/HTTP_case/entry/src/main/resources/en_US/element/string.json @@ -39,6 +39,10 @@ { "name": "httpSendSuccess", "value": "httpSendSuccess" + }, + { + "name": "grant_internet", + "value": "grant_internet" } ] } \ No newline at end of file diff --git a/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/HTTP_case/entry/src/main/resources/zh_CN/element/string.json b/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/HTTP_case/entry/src/main/resources/zh_CN/element/string.json index 5cbe02a39b..e8ed9dd362 100644 --- a/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/HTTP_case/entry/src/main/resources/zh_CN/element/string.json +++ b/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/HTTP_case/entry/src/main/resources/zh_CN/element/string.json @@ -39,6 +39,10 @@ { "name": "httpSendSuccess", "value": "发送HTTP请求成功" + }, + { + "name": "grant_internet", + "value": "网络使用权限" } ] } \ No newline at end of file diff --git a/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/MDNS_case/entry/src/main/ets/pages/Index.ets b/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/MDNS_case/entry/src/main/ets/pages/Index.ets index fe3f68b6d3..5357956d01 100644 --- a/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/MDNS_case/entry/src/main/ets/pages/Index.ets +++ b/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/MDNS_case/entry/src/main/ets/pages/Index.ets @@ -209,6 +209,7 @@ struct MdnsServiceDemo { .justifyContent(FlexAlign.Center); } + // [Start manage_local_services] private addLocalService(): void { this.addServiceStatus = serviceOperateStatus.ADDING; mdns.addLocalService(context, this.localServiceInfo).then((data) => { @@ -241,7 +242,9 @@ struct MdnsServiceDemo { Logger.error(`Error removing local service: ${JSON.stringify(err)}`); }); } + // [End manage_local_services] + // [Start discover_local_services] private async startServiceDiscovery(): Promise { this.discoveryStatus = serviceOperateStatus.DISCOVERY_STARTING; if (!context) { @@ -289,4 +292,5 @@ struct MdnsServiceDemo { Logger.info(`Error stopping mDNS service discovery: ${JSON.stringify(err)}`); } } + // [End discover_local_services] } diff --git a/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/Socket/entry/src/main/ets/workers/LocalSocketWorker.ets b/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/Socket/entry/src/main/ets/workers/LocalSocketWorker.ets index bc362fef35..dcf53564b8 100644 --- a/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/Socket/entry/src/main/ets/workers/LocalSocketWorker.ets +++ b/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/Socket/entry/src/main/ets/workers/LocalSocketWorker.ets @@ -48,6 +48,7 @@ function stringToArrayBuffer(str: string): ArrayBuffer { return buf; } +// [Start application_transmits_data_via_local_socket] // 启动本地 Socket 客户端 function startLocalSocket(address: string, timeout: number, closeTime: number): void { let client: socket.LocalSocket = socket.constructLocalSocketInstance(); @@ -91,8 +92,9 @@ function startLocalSocket(address: string, timeout: number, closeTime: number): workerPort.postMessage({ type: 'clientStatus', status: 'Closed by timeout' }); }, closeTime); } +// [End application_transmits_data_via_local_socket] - +// [Start application_transmits_data_via_local_socket_server] // 启动本地 Socket 服务器 function startLocalSocketServer(address: string): void { let server: socket.LocalSocketServer = socket.constructLocalSocketServerInstance(); @@ -134,4 +136,5 @@ function startLocalSocketServer(address: string): void { server.off('error'); Logger.info('Server events unsubscribed.'); }, 30000); // 设置一个合理的超时关闭(例如30秒后关闭服务器) -} \ No newline at end of file +} +// [End application_transmits_data_via_local_socket_server] \ No newline at end of file diff --git a/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/Socket/entry/src/main/ets/workers/MulticastWorker.ets b/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/Socket/entry/src/main/ets/workers/MulticastWorker.ets index 276b4c3d88..844a8cfe5e 100644 --- a/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/Socket/entry/src/main/ets/workers/MulticastWorker.ets +++ b/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/Socket/entry/src/main/ets/workers/MulticastWorker.ets @@ -38,6 +38,7 @@ function postMessage(arg0: Message) { const workerPort: ThreadWorkerGlobalScope = worker.workerPort; +// [Start application_transmits_data_via_multicast_socket] function startMulticast(data: MulticastData) { let multicast: socket.MulticastSocket = socket.constructMulticastSocketInstance(); @@ -99,6 +100,7 @@ workerPort.onmessage = (e: MessageEvents) => { startMulticast(multicastData); } }; +// [End application_transmits_data_via_multicast_socket] /** * Defines the event handler to be called when the worker receives a message that cannot be deserialized. diff --git a/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/Socket/entry/src/main/ets/workers/OneWayTlsWorker.ets b/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/Socket/entry/src/main/ets/workers/OneWayTlsWorker.ets index 2c46af6a23..3f709f8a4d 100644 --- a/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/Socket/entry/src/main/ets/workers/OneWayTlsWorker.ets +++ b/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/Socket/entry/src/main/ets/workers/OneWayTlsWorker.ets @@ -77,6 +77,7 @@ function handleMessage(message: TlsOneWayMessage) { } } +// [Start one-way_authentication_via_tls_socket] // 读取 CA 证书 function loadCA(fileUri: string) { try { @@ -146,6 +147,7 @@ function sendMessageToServer(message: string) { workerPort.postMessage({ type: 'sendMessageFailure', message: e.message }); }); } +// [End one-way_authentication_via_tls_socket] // ArrayBuffer 转 utf8 字符串 function buf2String(buf: ArrayBuffer): string { @@ -153,3 +155,4 @@ function buf2String(buf: ArrayBuffer): string { let textDecoder = util.TextDecoder.create('utf-8'); return textDecoder.decodeToString(msgArray); } + diff --git a/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/Socket/entry/src/main/ets/workers/Tcp2OneWayTlsWorker.ets b/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/Socket/entry/src/main/ets/workers/Tcp2OneWayTlsWorker.ets index c28834d631..2946795306 100644 --- a/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/Socket/entry/src/main/ets/workers/Tcp2OneWayTlsWorker.ets +++ b/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/Socket/entry/src/main/ets/workers/Tcp2OneWayTlsWorker.ets @@ -74,6 +74,7 @@ function handleMessage(message: TlsOneWayMessage) { } } +// [Start one-way_authentication_by_upgrading_tcp_socket_to_tls_socket] function loadCA(fileUri: string) { try { let buf = new ArrayBuffer(4096); @@ -153,6 +154,7 @@ function sendMessageToServer(message: string) { workerPort.postMessage({ type: 'sendMessageFailure', message: `Failed to send message: ${e.message}` }); }); } +// [End one-way_authentication_by_upgrading_tcp_socket_to_tls_socket] function buf2String(buf: ArrayBuffer): string { let msgArray = new Uint8Array(buf); diff --git a/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/Socket/entry/src/main/ets/workers/Tcp2TwoWayTlsWorker.ets b/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/Socket/entry/src/main/ets/workers/Tcp2TwoWayTlsWorker.ets index c29c34ae72..1de35f20eb 100644 --- a/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/Socket/entry/src/main/ets/workers/Tcp2TwoWayTlsWorker.ets +++ b/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/Socket/entry/src/main/ets/workers/Tcp2TwoWayTlsWorker.ets @@ -75,6 +75,7 @@ function handleMessage(message: TlsTwoWayMessage) { } } +// [Start two-way_authentication_by_upgrading_tcp_socket_to_tls_socket] // Handle file loading (CA certificate, client certificate, private key) function loadFile(fileUri: string) { try { @@ -159,6 +160,7 @@ function sendMessageToServer(message: string) { workerPort.postMessage({ type: 'sendMessageFailure', message: `Send failed: ${e.message}` }); }); } +// [End two-way_authentication_by_upgrading_tcp_socket_to_tls_socket] function buf2String(buf: ArrayBuffer): string { let msgArray = new Uint8Array(buf); diff --git a/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/Socket/entry/src/main/ets/workers/TcpClientWorker.ets b/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/Socket/entry/src/main/ets/workers/TcpClientWorker.ets index 0d7c2b5aef..0081bcd428 100644 --- a/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/Socket/entry/src/main/ets/workers/TcpClientWorker.ets +++ b/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/Socket/entry/src/main/ets/workers/TcpClientWorker.ets @@ -48,6 +48,7 @@ function sendMessage(tcpMessage: TcpMessage) { return; } + // [Start client_applies_tcp_protocol_for_communication] // 绑定本地服务器地址 class SocketInfo { public message: ArrayBuffer = new ArrayBuffer(1); @@ -116,7 +117,7 @@ function disConnect() { workerPort.postMessage({ type: 'Close connection failed' }); }); } - + // [End client_applies_tcp_protocol_for_communication] /** * Defines the event handler to be called when the worker thread receives a message sent by the host thread. * The event handler is executed in the worker thread. diff --git a/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/Socket/entry/src/main/ets/workers/TcpServerWorker.ets b/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/Socket/entry/src/main/ets/workers/TcpServerWorker.ets index 9d060f87bd..524bd4ffc0 100644 --- a/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/Socket/entry/src/main/ets/workers/TcpServerWorker.ets +++ b/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/Socket/entry/src/main/ets/workers/TcpServerWorker.ets @@ -43,6 +43,7 @@ function handleMessage(message: TcpMessage) { } } +// [Start application_transmits_data_via_tcp_socket_server] function startServer(tcpMessage: TcpMessage) { let ipAddress: socket.NetAddress = {} as socket.NetAddress; ipAddress.address = tcpMessage.serverIp!; // 服务端IP @@ -131,6 +132,7 @@ function disConnect() { } } +// [End application_transmits_data_via_tcp_socket_server] /** * Defines the event handler to be called when the worker thread receives a message sent by the host thread. diff --git a/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/Socket/entry/src/main/ets/workers/TlsServerWorker.ets b/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/Socket/entry/src/main/ets/workers/TlsServerWorker.ets index de6e8f843c..7906b840c5 100644 --- a/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/Socket/entry/src/main/ets/workers/TlsServerWorker.ets +++ b/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/Socket/entry/src/main/ets/workers/TlsServerWorker.ets @@ -38,9 +38,8 @@ function handleMessage(message: TlsServerMessage) { } } +// [Start application_transmits_encrypted_data_via_tls_socket_server] function startTLSserver(message: TlsServerMessage) { - - try { const tlsSecureOptions: socket.TLSSecureOptions = { key: message.serverKey, @@ -90,6 +89,7 @@ function handleClientConnection(client: socket.TLSSocketConnection) { workerPort.postMessage({ type: 'error', message: `Failed to close connection: ${err.message}` }); }); } +// [End application_transmits_encrypted_data_via_tls_socket_server] function bufToString(buf: ArrayBuffer): string { let msgArray = new Uint8Array(buf); diff --git a/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/Socket/entry/src/main/ets/workers/TwoWayTlsWorker.ets b/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/Socket/entry/src/main/ets/workers/TwoWayTlsWorker.ets index 6d125ac8a2..c9484a1cda 100644 --- a/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/Socket/entry/src/main/ets/workers/TwoWayTlsWorker.ets +++ b/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/Socket/entry/src/main/ets/workers/TwoWayTlsWorker.ets @@ -79,6 +79,7 @@ function handleMessage(message: TlsTwoWayMessage) { } } +// [Start two-way_authentication_via_tls_socket] // 读取文件并返回内容 function loadFile(fileUri: string) { try { @@ -158,6 +159,7 @@ function sendMessageToServer(message: string) { workerPort.postMessage({ type: 'sendMessageFailure', message: e.message }); }); } +// [End two-way_authentication_via_tls_socket] // ArrayBuffer 转 utf8 字符串 function buf2String(buf: ArrayBuffer): string { @@ -166,3 +168,4 @@ function buf2String(buf: ArrayBuffer): string { return textDecoder.decodeToString(msgArray); } + diff --git a/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/Socket/entry/src/main/ets/workers/UdpWorker.ets b/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/Socket/entry/src/main/ets/workers/UdpWorker.ets index 3670b47f45..d8a45253b2 100644 --- a/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/Socket/entry/src/main/ets/workers/UdpWorker.ets +++ b/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/Socket/entry/src/main/ets/workers/UdpWorker.ets @@ -40,6 +40,7 @@ function handleMessage(message: TcpMessage) { } } +// [Start apply_udp_protocol_for_communication] function startServer(tcpMessage: TcpMessage) { let ipAddress: socket.NetAddress = {} as socket.NetAddress; ipAddress.address = tcpMessage.serverIp!; // 服务端IP @@ -91,6 +92,7 @@ function disConnect() { } }); } +// [End apply_udp_protocol_for_communication] workerPort.onmessage = (e: MessageEvents) => { const message: TcpMessage = e.data; diff --git a/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/Socket/entry/src/main/module.json5 b/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/Socket/entry/src/main/module.json5 index 106709d4e7..0cfdde1ecc 100644 --- a/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/Socket/entry/src/main/module.json5 +++ b/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/Socket/entry/src/main/module.json5 @@ -64,10 +64,24 @@ ], "requestPermissions": [ { - "name": "ohos.permission.INTERNET" + "name": "ohos.permission.INTERNET", + "reason": "$string:grant_internet", + "usedScene": { + "abilities": [ + "MainAbility" + ], + "when": "inuse" + } }, { - "name": "ohos.permission.GET_WIFI_INFO" + "name": "ohos.permission.GET_WIFI_INFO", + "reason": "$string:grant_get_wifi_info", + "usedScene": { + "abilities": [ + "MainAbility" + ], + "when": "inuse" + } } ] } diff --git a/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/Socket/entry/src/main/resources/base/element/string.json b/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/Socket/entry/src/main/resources/base/element/string.json index a0f83dbbf3..5ae3a13538 100644 --- a/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/Socket/entry/src/main/resources/base/element/string.json +++ b/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/Socket/entry/src/main/resources/base/element/string.json @@ -299,6 +299,14 @@ { "name": "Select_Server_Cert", "value": "选择服务器证书" + }, + { + "name": "grant_internet", + "value": "网络使用权限" + }, + { + "name": "grant_get_wifi_info", + "value": "获取wifi信息权限" } ] } \ No newline at end of file diff --git a/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/Socket/entry/src/ohosTest/ets/test/Ability.test.ets b/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/Socket/entry/src/ohosTest/ets/test/Ability.test.ets index c76d7089a8..e086fd8455 100644 --- a/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/Socket/entry/src/ohosTest/ets/test/Ability.test.ets +++ b/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/Socket/entry/src/ohosTest/ets/test/Ability.test.ets @@ -16,7 +16,7 @@ import { describe, it, expect } from '@ohos/hypium'; import { abilityDelegatorRegistry, Driver, MatchPattern, ON } from '@kit.TestKit'; import Logger from '../../../main/ets/common/Logger'; -import { UIAbility } from '@kit.AbilityKit'; +import { UIAbility, Want} from '@kit.AbilityKit'; const delegator = abilityDelegatorRegistry.getAbilityDelegator(); diff --git a/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/WebSocket_C/entry/src/main/cpp/napi_init.cpp b/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/WebSocket_C/entry/src/main/cpp/napi_init.cpp index 8f9fdea060..6842b77529 100644 --- a/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/WebSocket_C/entry/src/main/cpp/napi_init.cpp +++ b/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/WebSocket_C/entry/src/main/cpp/napi_init.cpp @@ -25,6 +25,7 @@ #define LOG_DOMAIN 0x3200 // 全局domain宏,标识业务领域 #define LOG_TAG "WSDEMO" // 全局tag宏,标识模块日志tag +// [Start websocket_build_project] // WebSocket客户端全局变量 static struct WebSocket *g_client = nullptr; @@ -95,6 +96,7 @@ static napi_value ConnectWebsocket(napi_env env, napi_callback_info info) napi_get_boolean(env, connectRet == 0, &result); return result; } +// [End websocket_build_project] static napi_value SendMessage(napi_env env, napi_callback_info info) { diff --git a/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/WebSocket_C/entry/src/main/module.json5 b/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/WebSocket_C/entry/src/main/module.json5 index 5d46d2c731..5c4e4c84e5 100644 --- a/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/WebSocket_C/entry/src/main/module.json5 +++ b/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/WebSocket_C/entry/src/main/module.json5 @@ -51,6 +51,7 @@ "requestPermissions":[ { "name" : "ohos.permission.INTERNET", + "reason": "$string:grant_internet", "usedScene": { "abilities": [ "FormAbility" diff --git a/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/WebSocket_C/entry/src/main/resources/base/element/string.json b/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/WebSocket_C/entry/src/main/resources/base/element/string.json index 76a2a00146..c0ff9aa5f3 100644 --- a/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/WebSocket_C/entry/src/main/resources/base/element/string.json +++ b/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/WebSocket_C/entry/src/main/resources/base/element/string.json @@ -51,8 +51,10 @@ { "name": "Close_connection_failed", "value": "关闭连接失败!" + }, + { + "name": "grant_internet", + "value": "网络使用权限" } - - ] } \ No newline at end of file diff --git a/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/WebSocket_case/entry/src/main/ets/pages/Index.ets b/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/WebSocket_case/entry/src/main/ets/pages/Index.ets index 79a4e653ee..82660a443c 100644 --- a/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/WebSocket_case/entry/src/main/ets/pages/Index.ets +++ b/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/WebSocket_case/entry/src/main/ets/pages/Index.ets @@ -103,6 +103,7 @@ struct WebSocketDemo { }.width('100%').height('100%').justifyContent(FlexAlign.Center) } +// [Start websocket_development_steps] // 连接WebSocket connectWebSocket() { this.connectionStatus = 'Connecting...'; @@ -214,4 +215,6 @@ struct WebSocketDemo { this.ws.off('error'); this.ws = null; } + // [End websocket_development_steps] } + diff --git a/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/WebSocket_case/entry/src/main/module.json5 b/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/WebSocket_case/entry/src/main/module.json5 index d9faa396d7..689f6cd041 100644 --- a/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/WebSocket_case/entry/src/main/module.json5 +++ b/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/WebSocket_case/entry/src/main/module.json5 @@ -64,7 +64,14 @@ ], "requestPermissions": [ { - "name": "ohos.permission.INTERNET" + "name": "ohos.permission.INTERNET", + "reason": "$string:grant_internet", + "usedScene": { + "abilities": [ + "MainAbility" + ], + "when": "inuse" + } } ] } diff --git a/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/WebSocket_case/entry/src/main/resources/en_US/element/string.json b/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/WebSocket_case/entry/src/main/resources/en_US/element/string.json index 62eebd7f17..c4122a478b 100644 --- a/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/WebSocket_case/entry/src/main/resources/en_US/element/string.json +++ b/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/WebSocket_case/entry/src/main/resources/en_US/element/string.json @@ -39,6 +39,10 @@ { "name": "CloseConnectionResult", "value": "CloseConnectionResult" + }, + { + "name": "grant_internet", + "value": "grant_internet" } ] } \ No newline at end of file diff --git a/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/WebSocket_case/entry/src/main/resources/zh_CN/element/string.json b/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/WebSocket_case/entry/src/main/resources/zh_CN/element/string.json index 7b1d6b5b8e..033dc89b42 100644 --- a/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/WebSocket_case/entry/src/main/resources/zh_CN/element/string.json +++ b/code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/WebSocket_case/entry/src/main/resources/zh_CN/element/string.json @@ -39,6 +39,10 @@ { "name": "CloseConnectionResult", "value": "关闭连接结果" + }, + { + "name": "grant_internet", + "value": "网络使用权限" } ] } \ No newline at end of file diff --git a/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/FlowManagement_case/README_zh.md b/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/FlowManagement_case/README_zh.md index a395ef6f53..01995342ee 100644 --- a/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/FlowManagement_case/README_zh.md +++ b/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/FlowManagement_case/README_zh.md @@ -76,6 +76,8 @@ entry/src/main/ets/ [ohos.permission.INTERNET](https://gitee.com/openharmony/docs/blob/OpenHarmony-5.0.1-Release/zh-cn/application-dev/security/AccessToken/permissions-for-all.md#ohospermissioninternet) +[ohos.permission.GET_NETWORK_INFO](https://gitee.com/openharmony/docs/blob/OpenHarmony-5.0.1-Release/zh-cn/application-dev/security/AccessToken/permissions-for-all.md#ohospermissionget_network_info) + ### 依赖 不涉及。 diff --git a/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/FlowManagement_case/entry/src/main/ets/pages/Index.ets b/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/FlowManagement_case/entry/src/main/ets/pages/Index.ets index 032f281a7c..0349587d57 100644 --- a/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/FlowManagement_case/entry/src/main/ets/pages/Index.ets +++ b/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/FlowManagement_case/entry/src/main/ets/pages/Index.ets @@ -171,6 +171,7 @@ struct NetworkStatisticsDemo { .justifyContent(FlexAlign.Center); } +// [Start obtain_realtime_traffic_statistics_of_network_interface_cards/uid] // 获取各种实体的流量数据方法 getIfaceRxBytes() { statistics.getIfaceRxBytes(IFACE).then((stats: number) => { @@ -262,4 +263,5 @@ struct NetworkStatisticsDemo { this.logMessage = `Failed to get socket file descriptor: ${JSON.stringify(err)}`; }); } +// [End obtain_realtime_traffic_statistics_of_network_interface_cards/uid] } diff --git a/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/FlowManagement_case/entry/src/main/module.json5 b/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/FlowManagement_case/entry/src/main/module.json5 index f2e5276bfb..0b95c44301 100644 --- a/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/FlowManagement_case/entry/src/main/module.json5 +++ b/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/FlowManagement_case/entry/src/main/module.json5 @@ -64,10 +64,24 @@ ], "requestPermissions": [ { - "name": "ohos.permission.INTERNET" + "name": "ohos.permission.INTERNET", + "reason": "$string:grant_internet", + "usedScene": { + "abilities": [ + "MainAbility" + ], + "when": "inuse" + } }, { - "name": "ohos.permission.GET_NETWORK_INFO" + "name": "ohos.permission.GET_NETWORK_INFO", + "reason": "$string:grant_get_network_info", + "usedScene": { + "abilities": [ + "MainAbility" + ], + "when": "inuse" + } } ] } diff --git a/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/FlowManagement_case/entry/src/main/resources/en_US/element/string.json b/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/FlowManagement_case/entry/src/main/resources/en_US/element/string.json index a2b2c1282a..5ffc94b91a 100644 --- a/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/FlowManagement_case/entry/src/main/resources/en_US/element/string.json +++ b/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/FlowManagement_case/entry/src/main/resources/en_US/element/string.json @@ -55,6 +55,14 @@ { "name": "TitleName", "value": "Flow_Manage_Name" + }, + { + "name": "grant_internet", + "value": "grant_internet" + }, + { + "name": "grant_get_network_info", + "value": "grant_get_network_info" } ] } \ No newline at end of file diff --git a/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/FlowManagement_case/entry/src/main/resources/zh_CN/element/string.json b/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/FlowManagement_case/entry/src/main/resources/zh_CN/element/string.json index 479324da86..0858a4c0ae 100644 --- a/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/FlowManagement_case/entry/src/main/resources/zh_CN/element/string.json +++ b/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/FlowManagement_case/entry/src/main/resources/zh_CN/element/string.json @@ -55,6 +55,14 @@ { "name": "TitleName", "value": "流量管理" + }, + { + "name": "grant_internet", + "value": "网络使用权限" + }, + { + "name": "grant_get_network_info", + "value": "获取网络信息权限" } ] } \ No newline at end of file diff --git a/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/NetConnection_Exploitation_case/entry/src/main/cpp/napi_init.cpp b/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/NetConnection_Exploitation_case/entry/src/main/cpp/napi_init.cpp index 41349abf26..92f3e851e7 100644 --- a/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/NetConnection_Exploitation_case/entry/src/main/cpp/napi_init.cpp +++ b/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/NetConnection_Exploitation_case/entry/src/main/cpp/napi_init.cpp @@ -13,9 +13,11 @@ * limitations under the License. */ +// [Start header_file] #include "napi/native_api.h" #include "network/netmanager/net_connection.h" #include "network/netmanager/net_connection_type.h" +// [End header_file] #include const size_t MIN_ARG_COUNT = 4; // 最小参数个数,用于函数参数检查 @@ -35,18 +37,21 @@ napi_value CreateErrorResult(napi_env env, int32_t errorCode) return result; } +// [Start build_project1] // 获取默认网络的函数 static napi_value GetDefaultNet(napi_env env, napi_callback_info info) { size_t argc = 1; // 期望接收一个函数 napi_value args[1] = {nullptr}; // 存储接收到的参数 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr); + // [StartExclude build_project1] if (argc < 1) { // 如果参数小于1 return CreateErrorResult(env, PARAMETER_ERROR_CODE); } int32_t param; napi_get_value_int32(env, args[0], ¶m); // 从 args[0] 获取整数值并存储到 param 中 + // [EndExclude build_project1] NetConn_NetHandle netHandle; if (param == 0) { // 如果参数是0 param = OH_NetConn_GetDefaultNet(NULL); @@ -70,7 +75,8 @@ static napi_value NetId(napi_env env, napi_callback_info info) napi_create_int32(env, defaultNetId, &result); return result; } - +// [End build_project1] + // 检查默认网络是否激活的函数 static napi_value HasDefaultNet(napi_env env, napi_callback_info info) { @@ -268,6 +274,7 @@ static napi_value UnregisterDnsResolver(napi_env env, napi_callback_info info) return result; } +// [Start build_project2] EXTERN_C_START static napi_value Init(napi_env env, napi_value exports) { @@ -289,7 +296,9 @@ static napi_value Init(napi_env env, napi_value exports) return exports; } EXTERN_C_END - +// [End build_project2] + +// [Start build_project3] static napi_module demoModule = { .nm_version = 1, .nm_flags = 0, @@ -301,4 +310,4 @@ static napi_module demoModule = { }; extern "C" __attribute__((constructor)) void RegisterEntryModule(void) { napi_module_register(&demoModule); } - \ No newline at end of file +// [End build_project3] \ No newline at end of file diff --git a/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/NetConnection_Exploitation_case/entry/src/main/ets/pages/Index.ets b/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/NetConnection_Exploitation_case/entry/src/main/ets/pages/Index.ets index ff1c5dd56c..33b484fb32 100644 --- a/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/NetConnection_Exploitation_case/entry/src/main/ets/pages/Index.ets +++ b/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/NetConnection_Exploitation_case/entry/src/main/ets/pages/Index.ets @@ -12,7 +12,9 @@ * limitations under the License. */ +// [Start build_project5] import testNetManager from 'libentry.so'; +// [StartExclude build_project5] import Logger from '../common/Logger'; enum ReturnCode { @@ -69,11 +71,12 @@ struct Index { .fontColor(Color.Black) .margin({ bottom: MARGIN.SMALL }) .id('test-message') // 为测试消息设置 ID,便于测试获取内容 - + // [EndExclude build_project5] Button($r('app.string.GetDefaultNet')) .onClick(() => { this.GetDefaultNet(); }) + // [StartExclude build_project5] .width('80%') .height(BUTTON_HEIGHT) .margin({ top: MARGIN.SMALL }) @@ -82,11 +85,13 @@ struct Index { .fontSize(FONT_SIZE.SMALL) .borderRadius(BORDER_RADIUS) .id('get-default-net-btn') // 为按钮设置 ID,便于测试点击 + // [EndExclude build_project5] Button($r('app.string.CodeNumber')) .onClick(() => { this.CodeNumber(); }) + // [StartExclude build_project5] .width('80%') .height(BUTTON_HEIGHT) .margin({ top: MARGIN.SMALL }) @@ -214,6 +219,7 @@ struct Index { .id('unregister-dns-resolver-btn') }.width('100%').height('100%').justifyContent(FlexAlign.Center); } + // [EndExclude build_project5] GetDefaultNet() { try { @@ -253,6 +259,7 @@ struct Index { Logger.error(this.logMessage); } } + // [End build_project5] GetHasDefaultNet() { let hasDefaultNet = testNetManager.HasDefaultNet(); // 调用 C++ 部分的接口 diff --git a/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/NetConnection_Exploitation_case/entry/src/main/module.json5 b/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/NetConnection_Exploitation_case/entry/src/main/module.json5 index f2e5276bfb..0b95c44301 100644 --- a/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/NetConnection_Exploitation_case/entry/src/main/module.json5 +++ b/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/NetConnection_Exploitation_case/entry/src/main/module.json5 @@ -64,10 +64,24 @@ ], "requestPermissions": [ { - "name": "ohos.permission.INTERNET" + "name": "ohos.permission.INTERNET", + "reason": "$string:grant_internet", + "usedScene": { + "abilities": [ + "MainAbility" + ], + "when": "inuse" + } }, { - "name": "ohos.permission.GET_NETWORK_INFO" + "name": "ohos.permission.GET_NETWORK_INFO", + "reason": "$string:grant_get_network_info", + "usedScene": { + "abilities": [ + "MainAbility" + ], + "when": "inuse" + } } ] } diff --git a/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/NetConnection_Exploitation_case/entry/src/main/resources/en_US/element/string.json b/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/NetConnection_Exploitation_case/entry/src/main/resources/en_US/element/string.json index 78631d0183..edf3d00bc5 100644 --- a/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/NetConnection_Exploitation_case/entry/src/main/resources/en_US/element/string.json +++ b/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/NetConnection_Exploitation_case/entry/src/main/resources/en_US/element/string.json @@ -55,6 +55,14 @@ { "name": "UnregisterDnsResolver", "value": "UnregisterDnsResolver" + }, + { + "name": "grant_internet", + "value": "grant_internet" + }, + { + "name": "grant_get_network_info", + "value": "grant_get_network_info" } ] } \ No newline at end of file diff --git a/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/NetConnection_Exploitation_case/entry/src/main/resources/zh_CN/element/string.json b/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/NetConnection_Exploitation_case/entry/src/main/resources/zh_CN/element/string.json index 4608792a92..46a0c1dfbc 100644 --- a/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/NetConnection_Exploitation_case/entry/src/main/resources/zh_CN/element/string.json +++ b/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/NetConnection_Exploitation_case/entry/src/main/resources/zh_CN/element/string.json @@ -55,6 +55,14 @@ { "name": "UnregisterDnsResolver", "value": "取消注册自定义 DNS 解析器" + }, + { + "name": "grant_internet", + "value": "网络使用权限" + }, + { + "name": "grant_get_network_info", + "value": "获取网络信息权限" } ] } \ No newline at end of file diff --git a/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/NetConnection_Manage_case/README_zh.md b/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/NetConnection_Manage_case/README_zh.md index 4d7d925f36..f0953edf92 100644 --- a/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/NetConnection_Manage_case/README_zh.md +++ b/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/NetConnection_Manage_case/README_zh.md @@ -63,6 +63,8 @@ entry/src/main/ets/ [ohos.permission.INTERNET](https://gitee.com/openharmony/docs/blob/OpenHarmony-5.0.1-Release/zh-cn/application-dev/security/AccessToken/permissions-for-all.md#ohospermissioninternet) +[ohos.permission.GET_NETWORK_INFO](https://gitee.com/openharmony/docs/blob/OpenHarmony-5.0.1-Release/zh-cn/application-dev/security/AccessToken/permissions-for-all.md#ohospermissionget_network_info) + ### 依赖 不涉及。 diff --git a/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/NetConnection_Manage_case/entry/src/main/ets/pages/Index.ets b/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/NetConnection_Manage_case/entry/src/main/ets/pages/Index.ets index af1f4d9039..650d981428 100644 --- a/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/NetConnection_Manage_case/entry/src/main/ets/pages/Index.ets +++ b/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/NetConnection_Manage_case/entry/src/main/ets/pages/Index.ets @@ -33,6 +33,8 @@ let netAddress: socket.NetAddress = { port: 8080 // 端口号,默认设置为8080 }; +// [Start original_network_connection_uses_socket] +// [Start monitor_default_network_change] // 监控默认网络变化 async function test() { const netConnection = connection.createNetConnection(); @@ -41,6 +43,7 @@ async function test() { Logger.info(JSON.stringify(data)); }); } +// [End monitor_default_network_change] // 原网络连接使用Socket模块建立连接 async function useSocket() { @@ -100,7 +103,9 @@ async function socketTest() { Logger.error(e.code.toString()); }; } +// [End original_network_connection_uses_socket] +// [Start construct_singleton_object] // 构造单例对象 export class GlobalContext { private static instance: GlobalContext; @@ -126,6 +131,7 @@ export class GlobalContext { this._objects.set(key, objectClass); } } +// [End construct_singleton_object] export function resourceToString(resource: Resource): string { return getContext().resourceManager.getStringSync(resource); @@ -259,6 +265,7 @@ struct NetworkConnectionPage { .justifyContent(FlexAlign.Center) } + // [Start notification_of_network_status_change] // 连接并接收指定网络的状态变化通知 connectNetwork() { if (this.conn) { @@ -320,7 +327,10 @@ struct NetworkConnectionPage { Logger.info('No active network connection.'); } } + // [End notification_of_network_status_change] + // [Start query_the_capability_information_and_connection_information] + // [Start get_all_registered_networks] // 获取所有注册的网络 getAllNetworks() { // 调用getAllNets,获取所有处于连接状态的网络列表(Array) @@ -346,6 +356,7 @@ struct NetworkConnectionPage { } }); } + // [End get_all_registered_networks] // 根据数据网络查询网络的能力信息及连接信息 getDefaultNetwork() { @@ -404,7 +415,9 @@ struct NetworkConnectionPage { } }); } + // [End query_the_capability_information_and_connection_information] + // [Start resolve_the_domain_name_and_get_all_ips] // 使用默认网络解析主机名以获取所有IP地址 getDefaultNetworkIP() { this.defaultNetworkIPStatus = 'Retrieving...'; @@ -426,4 +439,5 @@ struct NetworkConnectionPage { Logger.error('Failed to retrieve default network:', JSON.stringify(err)); }); } + // [End resolve_the_domain_name_and_get_all_ips] } diff --git a/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/NetConnection_Manage_case/entry/src/main/module.json5 b/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/NetConnection_Manage_case/entry/src/main/module.json5 index cc1a027a90..e0bfb9d6fe 100644 --- a/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/NetConnection_Manage_case/entry/src/main/module.json5 +++ b/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/NetConnection_Manage_case/entry/src/main/module.json5 @@ -64,10 +64,24 @@ ], "requestPermissions": [ { - "name": "ohos.permission.INTERNET" + "name": "ohos.permission.INTERNET", + "reason": "$string:grant_internet", + "usedScene": { + "abilities": [ + "MainAbility" + ], + "when": "inuse" + } }, { - "name": "ohos.permission.GET_NETWORK_INFO" + "name": "ohos.permission.GET_NETWORK_INFO", + "reason": "$string:grant_get_network_info", + "usedScene": { + "abilities": [ + "MainAbility" + ], + "when": "inuse" + } } ] } diff --git a/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/NetConnection_Manage_case/entry/src/main/resources/en_US/element/string.json b/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/NetConnection_Manage_case/entry/src/main/resources/en_US/element/string.json index 77c4731a13..7df89c36d2 100644 --- a/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/NetConnection_Manage_case/entry/src/main/resources/en_US/element/string.json +++ b/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/NetConnection_Manage_case/entry/src/main/resources/en_US/element/string.json @@ -55,6 +55,14 @@ { "name": "defaultNetworkIPStatus", "value": "defaultNetworkIPStatus" + }, + { + "name": "grant_internet", + "value": "grant_internet" + }, + { + "name": "grant_get_network_info", + "value": "grant_get_network_info" } ] } \ No newline at end of file diff --git a/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/NetConnection_Manage_case/entry/src/main/resources/zh_CN/element/string.json b/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/NetConnection_Manage_case/entry/src/main/resources/zh_CN/element/string.json index ae6036cb17..0e79dd0823 100644 --- a/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/NetConnection_Manage_case/entry/src/main/resources/zh_CN/element/string.json +++ b/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/NetConnection_Manage_case/entry/src/main/resources/zh_CN/element/string.json @@ -55,6 +55,14 @@ { "name": "defaultNetworkIPStatus", "value": "默认网络IP" + }, + { + "name": "grant_internet", + "value": "网络使用权限" + }, + { + "name": "grant_get_network_info", + "value": "获取网络信息权限" } ] } \ No newline at end of file diff --git a/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/VPNControl_Case/README_zh.md b/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/VPNControl_Case/README_zh.md index 7a049c98d9..cbdc1a9644 100644 --- a/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/VPNControl_Case/README_zh.md +++ b/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/VPNControl_Case/README_zh.md @@ -12,19 +12,23 @@ VPN 即虚拟专网(VPN-Virtual Private Network)在公用网络上建立专 使用说明 +备注:需在 `entry\src\main\module.json5` 文件的 `extensionAbilities` 节点下,为 `type` 字段手动新增 `vpn` 选项。 + 1. 在设备上启动应用。 -2. 在界面上输入 VPN 服务器 IP 地址、虚拟网卡 IP 地址和需要阻止的应用包名。 +2. 在界面上输入 VPN 服务器 IP 地址、虚拟网卡 IP 地址和需要阻止的应用包名。(也可以使用默认数据作为选项) + +3. 点击 `创建隧道` 按钮以建立 UDP 隧道。 -3. 点击 `CreateTunnel` 按钮以建立 UDP 隧道。 +4. 点击 `保护隧道` 按钮以将隧道与虚拟网卡绑定。 -4. 点击 `Protect` 按钮以将隧道与虚拟网卡绑定。 +5. 点击启动VPN拓展程序启动VPN拓展能力。 -5. 点击 `SetupVpn` 按钮配置 VPN 并启动 VPN 服务。 +6. 点击 `启动VPN` 按钮配置 VPN 并启动 VPN 服务。 -6. 点击 `Stop vpn` 按钮以停止 VPN 连接。 +7. 点击 `关闭VPN` 按钮以停止 VPN 连接。 -7. 点击 `Stop vpnExt` 按钮以停止 VPN 扩展能力。 +8. 点击 `关闭VPN拓展程序` 按钮以停止 VPN 扩展能力。 @@ -100,8 +104,6 @@ entry/src/main/cpp/ ### 相关权限 [ohos.permission.INTERNET](https://gitee.com/openharmony/docs/blob/OpenHarmony-5.0.1-Release/zh-cn/application-dev/security/AccessToken/permissions-for-all.md#ohospermissioninternet) -[ohos.permission.MANAGE_VPN](https://gitee.com/openharmony/docs/blob/OpenHarmony-5.0.1-Release/zh-cn/application-dev/security/AccessToken/permissions-for-system-apps.md#ohospermissionmanage_vpn) -[ohos.permission.NOTIFICATION_CONTROLLER](https://gitee.com/openharmony/docs/blob/OpenHarmony-5.0.1-Release/zh-cn/application-dev/security/AccessToken/permissions-for-system-apps.md#ohospermissionnotification_controller) ### 依赖 @@ -112,9 +114,6 @@ entry/src/main/cpp/ 1. 本示例仅支持标准系统上运行,支持设备:RK3568。 2. 本示例为Stage模型,支持API14版本SDK,版本号:5.0.2。 3. 本示例需要使用DevEco Studio Release(5.0.5.306)及以上版本才可编译运行。 -4. 本示例在启动前需搭建服务端环境,成功启动相应服务端后再运行客户端,服务端脚本(server/UDP_server.py)需要在Python 3.8.5版本下运行(需与客户端处于同一局域网,如连接同一热点)。 -5. 该示例运行测试完成后,再次运行需要重新启动服务端和客户端。 -6. 本示例使用了system_basic级别的权限(相关权限级别请查看[权限定义列表](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/AccessToken/permissions-for-all.md) ),需要手动配置高级别的权限签名(具体操作可查看[自动化签名方案](https://gitee.com/link?target=https%3A%2F%2Fdeveloper.harmonyos.com%2Fcn%2Fdocs%2Fdocumentation%2Fdoc-guides%2Fohos-auto-configuring-signature-information-0000001271659465) ) 。 ### 下载 diff --git a/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/VPNControl_Case/entry/src/main/ets/pages/Index.ets b/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/VPNControl_Case/entry/src/main/ets/pages/Index.ets index 391fc3f88e..aee7d5d54e 100644 --- a/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/VPNControl_Case/entry/src/main/ets/pages/Index.ets +++ b/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/VPNControl_Case/entry/src/main/ets/pages/Index.ets @@ -21,7 +21,7 @@ import { notificationUtil } from '../notification/NotificationUtil'; // 常量定义 const TITLE_FONT_SIZE = 35; // 标题字体大小 -const BUTTON_FONT_SIZE = 45; // 按钮字体大小 +const BUTTON_FONT_SIZE = 25; // 按钮字体大小 const BUTTON_MARGIN = 16; // 按钮边距 @Entry @@ -47,7 +47,7 @@ struct Index { }) // Start VPN 按钮 - Button('Start VPN') + Button($r('app.string.Start_VPN')) .onClick(() => { Logger.info('developTag', '%{public}s', 'Succeeded in clicking the button.'); router.pushUrl({ url: 'pages/StartVpn' }).then(() => { @@ -65,7 +65,7 @@ struct Index { .margin(BUTTON_MARGIN) // Stop VPN 按钮 - Button('Stop VPN') + Button($r('app.string.Stop_VPN')) .onClick(() => { Logger.info('developTag', '%{public}s', 'Succeeded in clicking the button.'); router.pushUrl({ url: 'pages/StopVpn' }).then(() => { diff --git a/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/VPNControl_Case/entry/src/main/ets/pages/StartVpn.ets b/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/VPNControl_Case/entry/src/main/ets/pages/StartVpn.ets index 47cf5a2ec7..75ac05e8d6 100644 --- a/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/VPNControl_Case/entry/src/main/ets/pages/StartVpn.ets +++ b/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/VPNControl_Case/entry/src/main/ets/pages/StartVpn.ets @@ -26,15 +26,15 @@ import NotificationOperations from '../notification/NotificationOperations'; // 提取常量 const TITLE_FONT_SIZE = 35; // 标题字体大小 -const LABEL_FONT_SIZE = 30; // 标签字体大小 -const BUTTON_FONT_SIZE = 50; // 按钮字体大小 +const LABEL_FONT_SIZE = 20; // 标签字体大小 +const BUTTON_FONT_SIZE = 25; // 按钮字体大小 const INPUT_MARGIN = 2; // 输入框边距 const BUTTON_SUCCESS_MESSAGE = 4000; // Toast 显示时间 const BUTTON_MARGIN = 16; let want: Want = { deviceId: '', - bundleName: 'com.example.myvpndemo', + bundleName: 'com.samples.vpncontrol_case', abilityName: 'MyVpnExtAbility', }; @@ -247,7 +247,7 @@ struct StartVpn { .margin(INPUT_MARGIN) }.width('90%') - Button('CreateTunnel') + Button($r('app.string.CreateTunnel')) .onClick(() => { this.CreateTunnel(); }) @@ -255,7 +255,7 @@ struct StartVpn { .id(ComponentId.CREATE_TUNNEL_BUTTON) .fontSize(BUTTON_FONT_SIZE) .margin(BUTTON_MARGIN); - Button('Protect') + Button($r('app.string.Protect')) .onClick(() => { this.Protect(); }) @@ -263,15 +263,8 @@ struct StartVpn { .id(ComponentId.PROTECT_BUTTON) .fontSize(BUTTON_FONT_SIZE) .margin(BUTTON_MARGIN); - Button('SetupVpn') - .onClick(() => { - this.SetupVpn(); - }) - .width('70%') - .id(ComponentId.SETUP_VPN_BUTTON) - .fontSize(BUTTON_FONT_SIZE) - .margin(BUTTON_MARGIN); - Button('start_vpnExt') + // [Start start_vpn_extension_ability] + Button($r('app.string.start_vpnExt')) .onClick(() => { try { vpnext.startVpnExtensionAbility(want).then(() => { @@ -289,7 +282,15 @@ struct StartVpn { .id(ComponentId.START_VPN_EXT_BUTTON) .fontSize(BUTTON_FONT_SIZE) .margin(BUTTON_MARGIN) - + // [End start_vpn_extension_ability] + Button($r('app.string.SetupVpn')) + .onClick(() => { + this.SetupVpn(); + }) + .width('70%') + .id(ComponentId.SETUP_VPN_BUTTON) + .fontSize(BUTTON_FONT_SIZE) + .margin(BUTTON_MARGIN); }.width('100%'); }.height('100%'); diff --git a/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/VPNControl_Case/entry/src/main/ets/pages/StopVpn.ets b/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/VPNControl_Case/entry/src/main/ets/pages/StopVpn.ets index 720a038f86..779f85e0ad 100644 --- a/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/VPNControl_Case/entry/src/main/ets/pages/StopVpn.ets +++ b/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/VPNControl_Case/entry/src/main/ets/pages/StopVpn.ets @@ -24,13 +24,13 @@ import Logger from '../common/Logger'; // 常量提取 const TITLE_FONT_SIZE = 35; // 标题字体大小 -const BUTTON_FONT_SIZE = 50; // 按钮字体大小 +const BUTTON_FONT_SIZE = 25; // 按钮字体大小 const TOAST_DURATION = 2000; // Toast 显示时间 const BUTTON_MARGIN = 16; let want: Want = { deviceId: '', - bundleName: 'com.example.myvpndemo', + bundleName: 'com.samples.vpncontrol_case', abilityName: 'MyVpnExtAbility', }; let g_tunnelFd = -1; @@ -68,7 +68,7 @@ struct StopVpn { .onClick(() => { Logger.info('developTag', '%{public}s', 'vpn Client'); }) - Button('stop vpn') + Button($r('app.string.stop_vpn')) .onClick(() => { this.Destroy(); }) @@ -76,7 +76,8 @@ struct StopVpn { .id(ComponentId.INNER_STOP_VPN_BUTTON) .fontSize(BUTTON_FONT_SIZE) .margin(BUTTON_MARGIN) - Button('stop vpnExt') + // [Start stop_vpn_extension_ability] + Button($r('app.string.stop_vpnExt')) .onClick(() => { try { vpnext.stopVpnExtensionAbility(want).then(() => { @@ -94,6 +95,7 @@ struct StopVpn { .id(ComponentId.STOP_VPN_EXT_BUTTON) .fontSize(BUTTON_FONT_SIZE) .margin(BUTTON_MARGIN) + // [End stop_vpn_extension_ability] }.width('100%'); }.height('100%'); } diff --git a/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/VPNControl_Case/entry/src/main/ets/vpnability/VPNExtentionAbility.ets b/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/VPNControl_Case/entry/src/main/ets/vpnability/VPNExtentionAbility.ets index 188ea4d37f..35ad1a27ca 100644 --- a/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/VPNControl_Case/entry/src/main/ets/vpnability/VPNExtentionAbility.ets +++ b/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/VPNControl_Case/entry/src/main/ets/vpnability/VPNExtentionAbility.ets @@ -69,6 +69,7 @@ export default class MyVpnExtAbility extends VpnExtensionAbility { this.Destroy(); } +// [Start call_the_ondestroy_method] Destroy() { Logger.info('developTag', '%{public}s', 'vpn Destroy'); // 关闭VPN @@ -78,6 +79,7 @@ export default class MyVpnExtAbility extends VpnExtensionAbility { Logger.error('developTag', 'vpn Destroy Failed: %{public}s', JSON.stringify(err) ?? ''); }); } +// [End call_the_ondestroy_method] // 创建隧道的方法 CreateTunnel() { diff --git a/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/VPNControl_Case/entry/src/main/module.json5 b/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/VPNControl_Case/entry/src/main/module.json5 index f9eda2b5e2..c435627e6c 100644 --- a/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/VPNControl_Case/entry/src/main/module.json5 +++ b/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/VPNControl_Case/entry/src/main/module.json5 @@ -61,21 +61,24 @@ } ] }, + // [Start create_vpn_extension_ability] { "name": "MyVpnExtAbility", "srcEntry": "./ets/vpnability/VPNExtentionAbility.ets", "type": "vpn" } + // [End create_vpn_extension_ability] ], "requestPermissions": [ { - "name": "ohos.permission.INTERNET" - }, - { - "name": "ohos.permission.MANAGE_VPN" - }, - { - "name": "ohos.permission.NOTIFICATION_CONTROLLER" + "name": "ohos.permission.INTERNET", + "reason": "$string:grant_internet", + "usedScene": { + "abilities": [ + "MainAbility" + ], + "when": "inuse" + } } ], } diff --git a/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/VPNControl_Case/entry/src/main/resources/base/element/string.json b/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/VPNControl_Case/entry/src/main/resources/base/element/string.json index 7703366439..554bb62636 100644 --- a/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/VPNControl_Case/entry/src/main/resources/base/element/string.json +++ b/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/VPNControl_Case/entry/src/main/resources/base/element/string.json @@ -45,8 +45,36 @@ "value": "vpn_clickable_notification" }, { - "name": "vpn_clickable_information", - "value": "vpn_clickable_information" + "name": "Start_VPN", + "value": "Startup interface" + }, + { + "name": "Stop_VPN", + "value": "Shutdown interface" + }, + { + "name": "CreateTunnel", + "value": "CreateTunnel" + }, + { + "name": "Protect", + "value": "Protect" + }, + { + "name": "start_vpnExt", + "value": "Start_vpnExt" + }, + { + "name": "SetupVpn", + "value": "SetupVpn" + }, + { + "name": "stop_vpn", + "value": "Shutdown vpn" + }, + { + "name": "stop_vpnExt", + "value": "Shutdown vpn_Ext" } ] } \ No newline at end of file diff --git a/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/VPNControl_Case/entry/src/main/resources/en_US/element/string.json b/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/VPNControl_Case/entry/src/main/resources/en_US/element/string.json index 51a6c2c64d..9a985dcb0b 100644 --- a/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/VPNControl_Case/entry/src/main/resources/en_US/element/string.json +++ b/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/VPNControl_Case/entry/src/main/resources/en_US/element/string.json @@ -47,6 +47,42 @@ { "name": "Allow", "value": "Allow" + }, + { + "name": "Start_VPN", + "value": "Startup interface" + }, + { + "name": "Stop_VPN", + "value": "Shutdown interface" + }, + { + "name": "CreateTunnel", + "value": "CreateTunnel" + }, + { + "name": "Protect", + "value": "Protect" + }, + { + "name": "start_vpnExt", + "value": "Start vpnExt" + }, + { + "name": "SetupVpn", + "value": "Setup Vpn" + }, + { + "name": "stop_vpn", + "value": "Shutdown Vpn" + }, + { + "name": "stop_vpnExt", + "value": "Shutdown Vpn_Ext" + }, + { + "name": "grant_internet", + "value": "grant_internet" } ] } \ No newline at end of file diff --git a/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/VPNControl_Case/entry/src/main/resources/zh_CN/element/string.json b/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/VPNControl_Case/entry/src/main/resources/zh_CN/element/string.json index 423ad97317..bc978b9eea 100644 --- a/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/VPNControl_Case/entry/src/main/resources/zh_CN/element/string.json +++ b/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/VPNControl_Case/entry/src/main/resources/zh_CN/element/string.json @@ -10,7 +10,7 @@ }, { "name": "EntryAbility_label", - "value": "VPN_Case" + "value": "VPN示例" }, { "name": "VPNExtensionAbility_desc", @@ -47,6 +47,42 @@ { "name": "Allow", "value": "允许" + }, + { + "name": "Start_VPN", + "value": "启动接口" + }, + { + "name": "Stop_VPN", + "value": "关闭接口" + }, + { + "name": "CreateTunnel", + "value": "创建隧道" + }, + { + "name": "Protect", + "value": "保护隧道" + }, + { + "name": "start_vpnExt", + "value": "启动VPN拓展程序" + }, + { + "name": "SetupVpn", + "value": "启动VPN" + }, + { + "name": "stop_vpn", + "value": "关闭VPN" + }, + { + "name": "stop_vpnExt", + "value": "关闭VPN拓展程序" + }, + { + "name": "grant_internet", + "value": "网络使用权限" } ] } \ No newline at end of file diff --git a/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/VPNControl_Case/entry/src/ohosTest/ets/test/Ability.test.ets b/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/VPNControl_Case/entry/src/ohosTest/ets/test/Ability.test.ets index cc1d42deb6..47b9c91355 100644 --- a/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/VPNControl_Case/entry/src/ohosTest/ets/test/Ability.test.ets +++ b/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/VPNControl_Case/entry/src/ohosTest/ets/test/Ability.test.ets @@ -22,7 +22,6 @@ import Logger from '../../../main/ets/common/Logger'; const BUNDLE = 'VPNCASE_'; const BUNDLE_NAME = 'com.samples.vpncontrol_case'; const ABILITY_NAME: string = 'EntryAbility'; -let driver: Driver = Driver.create(); const DELAY_TIME = 2000; const delegator = abilityDelegatorRegistry.getAbilityDelegator(); @@ -35,6 +34,7 @@ async function getResourceString(resource: Resource): Promise { } async function goBack() { + let driver: Driver = Driver.create(); await driver.assertComponentExist(ON.id('btnBack')); let backButton = await driver.findComponent(ON.id('btnBack')); await backButton.click(); @@ -55,6 +55,7 @@ export default function VPNTest() { bundleName: BUNDLE_NAME, abilityName: ABILITY_NAME, }; + let driver: Driver = Driver.create(); await delegator.startAbility(want); await driver.delayMs(DELAY_TIME); let str = await getResourceString($r('app.string.Allow')); @@ -75,6 +76,7 @@ export default function VPNTest() { * @tc.desc 测试 StartVPN 按钮点击事件 */ it(BUNDLE + 'StartVPNButton_001', 0, async (done: Function) => { + let driver: Driver = Driver.create(); Logger.info(`${BUNDLE_NAME} StartVPNButton_001 begin`); // 验证StartVPN按钮存在并点击 await driver.delayMs(DELAY_TIME); @@ -103,6 +105,7 @@ export default function VPNTest() { * @tc.desc 测试 CreateTunnel 按钮点击事件 */ it(BUNDLE + 'CreateTunnelButton_001', 0, async (done: Function) => { + let driver: Driver = Driver.create(); Logger.info(`${BUNDLE_NAME} CreateTunnelButton_001 begin`); await driver.delayMs(DELAY_TIME); await driver.assertComponentExist(ON.id(ComponentId.CREATE_TUNNEL_BUTTON)); @@ -130,6 +133,7 @@ export default function VPNTest() { * @tc.desc 测试 Protect 按钮点击事件 */ it(BUNDLE + 'ProtectButton_001', 0, async (done: Function) => { + let driver: Driver = Driver.create(); Logger.info(`${BUNDLE_NAME} ProtectButton_001 begin`); await driver.delayMs(DELAY_TIME); await driver.assertComponentExist(ON.id(ComponentId.PROTECT_BUTTON)); @@ -151,39 +155,13 @@ export default function VPNTest() { done(); }); - /** - * @tc.number SetupVpnButton_001 - * @tc.name SetupVpnButton_001 - * @tc.desc 测试 SetupVpn 按钮点击事件 - */ - it(BUNDLE + 'SetupVpnButton_001', 0, async (done: Function) => { - Logger.info(`${BUNDLE_NAME} SetupVpnButton_001 begin`); - await driver.delayMs(DELAY_TIME); - await driver.assertComponentExist(ON.id(ComponentId.SETUP_VPN_BUTTON)); - const setupVpnButton = await driver.findComponent(ON.id(ComponentId.SETUP_VPN_BUTTON)); - await setupVpnButton.click(); - await driver.delayMs(DELAY_TIME); - try { - let errorComponent = await driver.findComponent(ON.id('Error')); - if (errorComponent) { - let errorText = await errorComponent.getText(); - Logger.error(`${BUNDLE_NAME} SetupVpnButton_001 failed with error: ${errorText}`); - expect(false).assertTrue(); // 如果有 Error 组件,测试失败 - } - } catch (e) { - Logger.info(`${BUNDLE_NAME} SetupVpnButton_001 passed: No error component found.`); - expect(true).assertTrue(); // 如果没有 Error 组件,测试通过 - } - Logger.info(`${BUNDLE_NAME} SetupVpnButton_001 end`); - done(); - }); - /** * @tc.number StartVpnExtButton_001 * @tc.name StartVpnExtButton_001 * @tc.desc 测试 StartVpnExt 按钮点击事件 */ it(BUNDLE + 'StartVpnExtButton_001', 0, async (done: Function) => { + let driver: Driver = Driver.create(); Logger.info(`${BUNDLE_NAME} StartVpnExtButton_001 begin`); await driver.delayMs(DELAY_TIME); await driver.assertComponentExist(ON.id(ComponentId.START_VPN_EXT_BUTTON)); @@ -195,7 +173,6 @@ export default function VPNTest() { let confirmButton: Component = await driver.findComponent(ON.text(str)); await confirmButton.click(); await driver.delayMs(DELAY_TIME); - await goBack(); try { let errorComponent = await driver.findComponent(ON.id('Error')); if (errorComponent) { @@ -211,6 +188,34 @@ export default function VPNTest() { done(); }); + /** + * @tc.number SetupVpnButton_001 + * @tc.name SetupVpnButton_001 + * @tc.desc 测试 SetupVpn 按钮点击事件 + */ + it(BUNDLE + 'SetupVpnButton_001', 0, async (done: Function) => { + let driver: Driver = Driver.create(); + Logger.info(`${BUNDLE_NAME} SetupVpnButton_001 begin`); + await driver.delayMs(DELAY_TIME); + await driver.assertComponentExist(ON.id(ComponentId.SETUP_VPN_BUTTON)); + const setupVpnButton = await driver.findComponent(ON.id(ComponentId.SETUP_VPN_BUTTON)); + await setupVpnButton.click(); + await driver.delayMs(DELAY_TIME); + await goBack(); + try { + let errorComponent = await driver.findComponent(ON.id('Error')); + if (errorComponent) { + let errorText = await errorComponent.getText(); + Logger.error(`${BUNDLE_NAME} SetupVpnButton_001 failed with error: ${errorText}`); + expect(false).assertTrue(); // 如果有 Error 组件,测试失败 + } + } catch (e) { + Logger.info(`${BUNDLE_NAME} SetupVpnButton_001 passed: No error component found.`); + expect(true).assertTrue(); // 如果没有 Error 组件,测试通过 + } + Logger.info(`${BUNDLE_NAME} SetupVpnButton_001 end`); + done(); + }); /** * @tc.number StopButton_001 @@ -218,6 +223,7 @@ export default function VPNTest() { * @tc.desc 测试 StopVPN 按钮点击事件 */ it(BUNDLE + 'StopButton_001', 0, async (done: Function) => { + let driver: Driver = Driver.create(); Logger.info(`${BUNDLE_NAME} StopButton_001 begin`); // 验证StopVPN按钮存在并点击 await driver.delayMs(DELAY_TIME); @@ -246,6 +252,7 @@ export default function VPNTest() { * @tc.desc 测试 StopVPN 按钮点击事件 */ it(BUNDLE + 'StopVpnButton_001', 0, async (done: Function) => { + let driver: Driver = Driver.create(); Logger.info(`${BUNDLE_NAME} StopVpnButton_001 begin`); // 验证 stopVpn 按钮是否存在并点击 await driver.delayMs(DELAY_TIME); @@ -275,6 +282,7 @@ export default function VPNTest() { * @tc.desc 测试 StopVpnExt 按钮点击事件 */ it(BUNDLE + 'StopVpnExtButton_001', 0, async (done: Function) => { + let driver: Driver = Driver.create(); Logger.info(`${BUNDLE_NAME} StopVpnExtButton_001 begin`); // 验证 stopVpnExt 按钮是否存在并点击 await driver.delayMs(DELAY_TIME); -- Gitee