/* * Copyright (c) 2025 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. */ #include #include #include #define private public #include "nweb.h" #include "nweb_helper.h" #include "nweb_config_helper.h" #include "nweb_adapter_helper.h" #include "base/web/webview/interfaces/native/arkweb_interface.h" using namespace testing; using namespace testing::ext; namespace OHOS { namespace NWeb { class MockNWebEngine : public OHOS::NWeb::NWebEngine { public: std::shared_ptr CreateNWeb(std::shared_ptr create_info) { return nullptr; } std::shared_ptr GetNWeb(int32_t nweb_id) { return nullptr; } std::shared_ptr GetDataBase() { return nullptr; } std::shared_ptr GetWebStorage() { return nullptr; } std::shared_ptr GetCookieManager() { return nullptr; } std::shared_ptr GetDownloadManager() { return nullptr; } void SetWebTag(int32_t nweb_id, const char* web_tag) {} void InitializeWebEngine(std::shared_ptr init_args) {} void PrepareForPageLoad(const std::string& url, bool preconnectable, int32_t num_sockets) {} void SetWebDebuggingAccess(bool isEnableDebug) {} void AddIntelligentTrackingPreventionBypassingList(const std::vector& hosts) {} void RemoveIntelligentTrackingPreventionBypassingList(const std::vector& hosts) {} void ClearIntelligentTrackingPreventionBypassingList() {} std::string GetDefaultUserAgent() { return ""; } void PauseAllTimers() {} void ResumeAllTimers() {} void PrefetchResource(const std::shared_ptr& pre_args, const std::map& additional_http_headers, const std::string& cache_key, const uint32_t& cache_valid_time) {} void SetRenderProcessMode(RenderProcessMode mode) {} RenderProcessMode GetRenderProcessMode() { return RenderProcessMode::SINGLE_MODE; } void ClearPrefetchedResource(const std::vector& cache_key_list) {} void WarmupServiceWorker(const std::string& url) {} void SetHostIP(const std::string& hostName, const std::string& address, int32_t aliveTime) {} void ClearHostIP(const std::string& hostName) {} void SetAppCustomUserAgent(const std::string& userAgent) {} void SetUserAgentForHosts(const std::string& userAgent, const std::vector& hosts) {} void SetWholeWebDrawing() {} std::shared_ptr GetAdsBlockManager() { return nullptr; } void EnableBackForwardCache(bool nativeEmbed, bool mediaTakeOver) {} void RemoveAllCache(bool include_disk_files) {} }; class OHArkWebInterfaceTest : public testing::Test { public: static void SetUpTestCase(void); static void TearDownTestCase(void); void SetUp(); void TearDown(); }; void OHArkWebInterfaceTest::SetUpTestCase(void) {} void OHArkWebInterfaceTest::TearDownTestCase(void) {} void OHArkWebInterfaceTest::SetUp(void) {} void OHArkWebInterfaceTest::TearDown(void) {} /** * @tc.name : OHArkWebInterfaceTest_OH_ArkWeb_GetNativeAPI_001 * @tc.desc : Test OH_ArkWeb_GetNativeAPI->LoadComponentAPI */ HWTEST_F(OHArkWebInterfaceTest, OHArkWebInterfaceTest_OH_ArkWeb_GetNativeAPI_001, TestSize.Level1) { ArkWeb_NativeAPIVariantKind type = ARKWEB_NATIVE_COMPONENT; auto nwebEngineMock = std::make_shared(); NWebHelper::Instance().nwebEngine_ = nwebEngineMock; ArkWeb_AnyNativeAPI* result = OH_ArkWeb_GetNativeAPI(type); EXPECT_NE(result, nullptr); ArkWeb_AnyNativeAPI* result1 = OH_ArkWeb_GetNativeAPI(type); EXPECT_NE(result1, nullptr); OH_ArkWeb_DestroyGlobalPointersForTest(); NWebHelper::Instance().nwebEngine_ = nullptr; NWebHelper::Instance().bundlePath_ = ""; ArkWeb_AnyNativeAPI* result2 = OH_ArkWeb_GetNativeAPI(type); EXPECT_EQ(result2, nullptr); } /** * @tc.name : OHArkWebInterfaceTest_OH_ArkWeb_GetNativeAPI_002 * @tc.desc : Test OH_ArkWeb_GetNativeAPI->LoadControllerAPI */ HWTEST_F(OHArkWebInterfaceTest, OHArkWebInterfaceTest_OH_ArkWeb_GetNativeAPI_002, TestSize.Level1) { ArkWeb_NativeAPIVariantKind type = ARKWEB_NATIVE_CONTROLLER; auto nwebEngineMock = std::make_shared(); NWebHelper::Instance().nwebEngine_ = nwebEngineMock; ArkWeb_AnyNativeAPI* result = OH_ArkWeb_GetNativeAPI(type); EXPECT_NE(result, nullptr); ArkWeb_AnyNativeAPI* result1 = OH_ArkWeb_GetNativeAPI(type); EXPECT_NE(result1, nullptr); OH_ArkWeb_DestroyGlobalPointersForTest(); NWebHelper::Instance().nwebEngine_ = nullptr; NWebHelper::Instance().bundlePath_ = ""; ArkWeb_AnyNativeAPI* result2 = OH_ArkWeb_GetNativeAPI(type); EXPECT_EQ(result2, nullptr); } /** * @tc.name : OHArkWebInterfaceTest_OH_ArkWeb_GetNativeAPI_003 * @tc.desc : Test OH_ArkWeb_GetNativeAPI->LoadWebMessagePortAPI */ HWTEST_F(OHArkWebInterfaceTest, OHArkWebInterfaceTest_OH_ArkWeb_GetNativeAPI_003, TestSize.Level1) { ArkWeb_NativeAPIVariantKind type = ARKWEB_NATIVE_WEB_MESSAGE_PORT; auto nwebEngineMock = std::make_shared(); NWebHelper::Instance().nwebEngine_ = nwebEngineMock; ArkWeb_AnyNativeAPI* result = OH_ArkWeb_GetNativeAPI(type); EXPECT_NE(result, nullptr); ArkWeb_AnyNativeAPI* result1 = OH_ArkWeb_GetNativeAPI(type); EXPECT_NE(result1, nullptr); OH_ArkWeb_DestroyGlobalPointersForTest(); NWebHelper::Instance().nwebEngine_ = nullptr; NWebHelper::Instance().bundlePath_ = ""; ArkWeb_AnyNativeAPI* result2 = OH_ArkWeb_GetNativeAPI(type); EXPECT_EQ(result2, nullptr); } /** * @tc.name : OHArkWebInterfaceTest_OH_ArkWeb_GetNativeAPI_004 * @tc.desc : Test OH_ArkWeb_GetNativeAPI->LoadWebMessageAPI */ HWTEST_F(OHArkWebInterfaceTest, OHArkWebInterfaceTest_OH_ArkWeb_GetNativeAPI_004, TestSize.Level1) { ArkWeb_NativeAPIVariantKind type = ARKWEB_NATIVE_WEB_MESSAGE; auto nwebEngineMock = std::make_shared(); NWebHelper::Instance().nwebEngine_ = nwebEngineMock; ArkWeb_AnyNativeAPI* result = OH_ArkWeb_GetNativeAPI(type); EXPECT_NE(result, nullptr); ArkWeb_AnyNativeAPI* result1 = OH_ArkWeb_GetNativeAPI(type); EXPECT_NE(result1, nullptr); OH_ArkWeb_DestroyGlobalPointersForTest(); NWebHelper::Instance().nwebEngine_ = nullptr; NWebHelper::Instance().bundlePath_ = ""; ArkWeb_AnyNativeAPI* result2 = OH_ArkWeb_GetNativeAPI(type); EXPECT_EQ(result2, nullptr); } /** * @tc.name : OHArkWebInterfaceTest_OH_ArkWeb_GetNativeAPI_005 * @tc.desc : Test OH_ArkWeb_GetNativeAPI->LoadCookieManagerAPI */ HWTEST_F(OHArkWebInterfaceTest, OHArkWebInterfaceTest_OH_ArkWeb_GetNativeAPI_005, TestSize.Level1) { ArkWeb_NativeAPIVariantKind type = ARKWEB_NATIVE_COOKIE_MANAGER; auto nwebEngineMock = std::make_shared(); NWebHelper::Instance().nwebEngine_ = nwebEngineMock; NWebHelper::Instance().initFlag_ = true; ArkWeb_AnyNativeAPI* result = OH_ArkWeb_GetNativeAPI(type); EXPECT_NE(result, nullptr); ArkWeb_AnyNativeAPI* result1 = OH_ArkWeb_GetNativeAPI(type); EXPECT_NE(result1, nullptr); OH_ArkWeb_DestroyGlobalPointersForTest(); NWebHelper::Instance().nwebEngine_ = nullptr; NWebHelper::Instance().bundlePath_ = ""; ArkWeb_AnyNativeAPI* result2 = OH_ArkWeb_GetNativeAPI(type); EXPECT_EQ(result2, nullptr); } /** * @tc.name : OHArkWebInterfaceTest_OH_ArkWeb_GetNativeAPI_006 * @tc.desc : Test OH_ArkWeb_GetNativeAPI->LoadJavaScriptValueAPI */ HWTEST_F(OHArkWebInterfaceTest, OHArkWebInterfaceTest_OH_ArkWeb_GetNativeAPI_006, TestSize.Level1) { ArkWeb_NativeAPIVariantKind type = ARKWEB_NATIVE_JAVASCRIPT_VALUE; auto nwebEngineMock = std::make_shared(); NWebHelper::Instance().nwebEngine_ = nwebEngineMock; ArkWeb_AnyNativeAPI* result = OH_ArkWeb_GetNativeAPI(type); EXPECT_NE(result, nullptr); ArkWeb_AnyNativeAPI* result1 = OH_ArkWeb_GetNativeAPI(type); EXPECT_NE(result1, nullptr); OH_ArkWeb_DestroyGlobalPointersForTest(); NWebHelper::Instance().nwebEngine_ = nullptr; NWebHelper::Instance().bundlePath_ = ""; ArkWeb_AnyNativeAPI* result2 = OH_ArkWeb_GetNativeAPI(type); EXPECT_EQ(result2, nullptr); } /** * @tc.name : OHArkWebInterfaceTest_OH_ArkWeb_RegisterScrollCallback * @tc.desc : Test OH_ArkWeb_RegisterScrollCallback */ HWTEST_F(OHArkWebInterfaceTest, OHArkWebInterfaceTest_OH_ArkWeb_RegisterScrollCallback, TestSize.Level1) { const char* webTag = "testWebTag"; void* userData = nullptr; ArkWeb_OnScrollCallback callback = [](const char* webTag, void* userData, double x, double y) {}; auto nwebEngineMock = std::make_shared(); NWebHelper::Instance().nwebEngine_ = nwebEngineMock; bool result = OH_ArkWeb_RegisterScrollCallback(webTag, callback, userData); EXPECT_EQ(result, false); result = OH_ArkWeb_RegisterScrollCallback(webTag, callback, userData); EXPECT_EQ(result, false); OH_ArkWeb_DestroyGlobalPointersForTest(); NWebHelper::Instance().nwebEngine_ = nullptr; NWebHelper::Instance().bundlePath_ = ""; result = OH_ArkWeb_RegisterScrollCallback(webTag, callback, userData); EXPECT_EQ(result, false); } } }