diff --git a/frameworks/js/napi/netpolicy/src/net_conn_service.cpp b/frameworks/js/napi/netpolicy/src/net_conn_service.cpp index 888e12d3dfb7520e7810eb716d05e32d5f060f03..57317ca7fdf77729806e301210112c63bbb87b26 100644 --- a/frameworks/js/napi/netpolicy/src/net_conn_service.cpp +++ b/frameworks/js/napi/netpolicy/src/net_conn_service.cpp @@ -2810,7 +2810,11 @@ void NetConnService::CheckProxyStatus() if (GetProxyMode(mode) != NETMANAGER_SUCCESS) { return; } - SetProxyMode(mode); + if (SetProxyMode(mode) == NETMANAGER_SUCCESS) { + NETMGR_LOG_I("NetConnService CheckProxyStatus %{public}d sucess", mode); + } else { + NETMGR_LOG_E("NetConnService CheckProxyStatus %{public}d fail", mode); + } } #ifdef NETMANAGER_ENABLE_PAC_PROXY @@ -2961,9 +2965,27 @@ int32_t NetConnService::SetPacFileUrl(const std::string &pacUrl) } #ifdef NETMANAGER_ENABLE_PAC_PROXY if (pacUrl.empty()) { - return SetProxyOff(); + SetProxyOff(); + Uri hostUri(GLOBAL_PROXY_HOST_URI); + auto dataShareHelperUtils = std::make_unique(); + int ret = dataShareHelperUtils->Update(hostUri, KEY_PROXY_MODE, std::to_string(PROXY_MODE_OFF)); + if (ret != NETMANAGER_SUCCESS) { + NETMGR_LOG_E("Update proxy mode fail %d", PROXY_MODE_AUTO); + return NETMANAGER_ERR_OPERATION_FAILED; + } + return NETMANAGER_SUCCESS; } else { - return SetProxyAuto(); + auto ret = SetProxyAuto(); + if (ret == NETMANAGER_SUCCESS) { + Uri hostUri(GLOBAL_PROXY_HOST_URI); + auto dataShareHelperUtils = std::make_unique(); + int ret = dataShareHelperUtils->Update(hostUri, KEY_PROXY_MODE, std::to_string(PROXY_MODE_AUTO)); + if (ret != NETMANAGER_SUCCESS) { + NETMGR_LOG_E("Update proxy mode fail %d", PROXY_MODE_AUTO); + return NETMANAGER_ERR_OPERATION_FAILED; + } + } + return ret; } #endif return NETMANAGER_SUCCESS; diff --git a/interfaces/innerkits/netconnclient/libnetconn_kits.map b/interfaces/innerkits/netconnclient/libnetconn_kits.map index 10396d6063747901244a77f12bd255845e50426c..92dca7b9c1bd40aa95ea7c2c5ed090505e7c8d32 100644 --- a/interfaces/innerkits/netconnclient/libnetconn_kits.map +++ b/interfaces/innerkits/netconnclient/libnetconn_kits.map @@ -227,14 +227,6 @@ "OHOS::NetManagerStandard::NetConnClient::SetNetExtAttribute(OHOS::NetManagerStandard::NetHandle const&, std::__h::basic_string, std::__h::allocator> const&)"; "OHOS::NetManagerStandard::NetConnClient::GetNetExtAttribute(OHOS::NetManagerStandard::NetHandle const&, std::__h::basic_string, std::__h::allocator>&)"; - VTT?for?OHOS::NetManagerStandard::NetPacFileUrlCallbackStub; - vtable?for?OHOS::NetManagerStandard::NetPacFileUrlCallbackStub; - "OHOS::NetManagerStandard::NetPacFileUrlCallbackStub::NetPacFileUrlCallbackStub()"; - "OHOS::NetManagerStandard::NetPacFileUrlCallbackStub::~NetPacFileUrlCallbackStub()"; - "OHOS::NetManagerStandard::NetPacFileUrlCallbackStub::OnRemoteRequest(unsigned int, OHOS::MessageParcel&, OHOS::MessageParcel&, OHOS::MessageOption&)"; - "non-virtual thunk to OHOS::NetManagerStandard::NetPacFileUrlCallbackStub::~NetPacFileUrlCallbackStub()"; - "virtual thunk to OHOS::NetManagerStandard::NetPacFileUrlCallbackStub::~NetPacFileUrlCallbackStub()"; - "OHOS::NetManagerStandard::NetConnClient::SetNetExtAttribute(OHOS::NetManagerStandard::NetHandle const&, std::__h::basic_string, std::__h::allocator> const&)"; "OHOS::NetManagerStandard::NetConnClient::GetNetExtAttribute(OHOS::NetManagerStandard::NetHandle const&, std::__h::basic_string, std::__h::allocator>&)"; "OHOS::NetManagerStandard::NetConnClient::SetPacFileUrl(std::__h::basic_string, std::__h::allocator> const&)"; diff --git a/test/netconnmanager/unittest/pac_http_test/pac_server.cpp b/test/netconnmanager/unittest/pac_http_test/pac_server.cpp index 013ba46d8b547a02a7904757666b57f3c8091b29..b9719f5b46da9438d5aa0de62feac9161ffd97d1 100644 --- a/test/netconnmanager/unittest/pac_http_test/pac_server.cpp +++ b/test/netconnmanager/unittest/pac_http_test/pac_server.cpp @@ -21,7 +21,9 @@ #include #include #include +#include "functional" +static std::function g_handler; static std::string g_defaultFileContent = "// PAC (Proxy Auto-Configuration) 脚本示例\n" "// 包含所有主要PAC函数的使用示例,只演示基础函数使用。\n" @@ -158,6 +160,11 @@ bool IsTestRequest(const std::string &request) return false; } +void SetTestHttpHandler(std::function function) +{ + g_handler = function; +} + std::string GetHeaderValue(const std::string &request, const std::string &headerName) { std::string headerPrefix = headerName + ": "; @@ -281,6 +288,9 @@ void HandleClientConnection(int32_t serverFd, std::string pacScript) std::string request(buffer); if (IsTestRequest(request)) { + if (g_handler) { + g_handler(); + } HandleTestRequest(clientSocket, request, address); } else { HandlePacRequest(clientSocket, pacScript); diff --git a/test/netconnmanager/unittest/pac_http_test/pac_server.h b/test/netconnmanager/unittest/pac_http_test/pac_server.h index 0b895c2e176b7eae2965eb5e292cf4194bf7988d..9db0f3bf38d7624da09894d4cd94e58635222868 100644 --- a/test/netconnmanager/unittest/pac_http_test/pac_server.h +++ b/test/netconnmanager/unittest/pac_http_test/pac_server.h @@ -14,7 +14,11 @@ */ #ifndef PACHTTPTEST_PAC_SERVER_H #define PACHTTPTEST_PAC_SERVER_H +#include "functional" +#include void StartHttpServer(int32_t port, std::string ip, std::string pacScript); +void SetTestHttpHandler(std::function function); + #endif // PACHTTPTEST_PAC_SERVER_H diff --git a/test/netconnmanager/unittest/pac_http_test/proxy_switch_server_tool.cpp b/test/netconnmanager/unittest/pac_http_test/proxy_switch_server_tool.cpp index d674a35613a9ffbfea88d45374889afd89d5edfa..fa8069e97304a82de8694c8d465859870e5a749b 100644 --- a/test/netconnmanager/unittest/pac_http_test/proxy_switch_server_tool.cpp +++ b/test/netconnmanager/unittest/pac_http_test/proxy_switch_server_tool.cpp @@ -24,11 +24,13 @@ using namespace OHOS::NetManagerStandard; std::map> services; -#define PAC_PROXY_SERVER 9000 -#define GLOBAL_PROXY_SERVER 9001 +#define PROXY_PORT_9000 9000 +#define PROXY_PORT_9001 9001 #define PROT_8080 8080 #define PROT_8889 8889 -#define TIME 10 +#define TIME 20 + +static int32_t g_counter = 0; static void StartProxyServer(int32_t port) { @@ -39,11 +41,27 @@ static void StartProxyServer(int32_t port) TEST(PROXY_SWITCH_TEST, PacFileUrlClient) { - StartProxyServer(GLOBAL_PROXY_SERVER); - StartProxyServer(PAC_PROXY_SERVER); + StartProxyServer(PROXY_PORT_9001); + StartProxyServer(PROXY_PORT_9000); + services[PROXY_PORT_9000]->Stop(); + services[PROXY_PORT_9001]->Stop(); SetUpPermission(); StartHttpServer(PROT_8080, "", ""); - std::string script = ProxyServer::pacScripts[LOCAL_PROXY_9000]; + SetTestHttpHandler([]() { + int32_t n = g_counter % 3; + switch (n) { + case 0: + services[PROXY_PORT_9001]->Start(); + break; + case 1: + services[PROXY_PORT_9000]->Start(); + break; + default: + break; + } + g_counter++; + }); + std::string script = ProxyServer::pacScripts[ALL_DIRECT]; printf(" pac script %s \n", script.c_str()); StartHttpServer(PROT_8889, "", script); EXPECT_EQ(services.empty(), false);