1 /*
2 * Copyright (c) 2024 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include <gtest/gtest.h>
17
18 #define private public
19 #define protected public
20 #include "ability_manager_errors.h"
21 #include "auto_fill_extension_context.h"
22 #undef private
23 #undef protected
24 #include "hilog_tag_wrapper.h"
25 #include "js_auto_fill_extension_util.h"
26 #include "mock_window.h"
27
28 using namespace testing::ext;
29 using namespace OHOS::Rosen;
30
31 namespace OHOS {
32 namespace AbilityRuntime {
33 class AutoFillExtensionContextTest : public testing::Test {
34 public:
35 static void SetUpTestCase();
36 static void TearDownTestCase();
37 void SetUp() override;
38 void TearDown() override;
39 };
40
41 class MockIAutoFillExtensionCallback : public IAutoFillExtensionCallback {
42 public:
MockIAutoFillExtensionCallback()43 MockIAutoFillExtensionCallback() {}
~MockIAutoFillExtensionCallback()44 virtual ~MockIAutoFillExtensionCallback() {}
OnReloadInModal(const sptr<AAFwk::SessionInfo> & sessionInfo,const CustomData & customData)45 int32_t OnReloadInModal(const sptr<AAFwk::SessionInfo> &sessionInfo, const CustomData &customData) override
46 {
47 return 0;
48 }
49 };
50
SetUpTestCase(void)51 void AutoFillExtensionContextTest::SetUpTestCase(void)
52 {}
53
TearDownTestCase(void)54 void AutoFillExtensionContextTest::TearDownTestCase(void)
55 {}
56
SetUp()57 void AutoFillExtensionContextTest::SetUp()
58 {}
59
TearDown()60 void AutoFillExtensionContextTest::TearDown()
61 {}
62
63 class AutoFillMockWindow : public MockWindow {
64 public:
65 AutoFillMockWindow() = default;
66 ~AutoFillMockWindow() = default;
67
GetUIContent() const68 virtual Ace::UIContent* GetUIContent() const override
69 {
70 return (Ace::UIContent*)0x12345678;
71 }
72 };
73
74 /**
75 * @tc.number: GetWidow_0100
76 * @tc.name: GetWidow
77 * @tc.desc: GetWidow.
78 */
79 HWTEST_F(AutoFillExtensionContextTest, GetWidow_0100, TestSize.Level1)
80 {
81 TAG_LOGI(AAFwkTag::TEST, "GetWidow_0100 start");
82
83 auto context = std::make_shared<AutoFillExtensionContext>();
84 sptr<AutoFillMockWindow> window(new (std::nothrow) AutoFillMockWindow());
85 context->SetWindow(window);
86 EXPECT_TRUE(context->GetWindow() != nullptr);
87 TAG_LOGI(AAFwkTag::TEST, "GetWidow_0100 end");
88 }
89
90 /**
91 * @tc.number: GetUIContent_0100
92 * @tc.name: GetUIContent
93 * @tc.desc: GetUIContent.
94 */
95 HWTEST_F(AutoFillExtensionContextTest, GetUIContent_0100, TestSize.Level1)
96 {
97 TAG_LOGI(AAFwkTag::TEST, "GetUIContent_0100 start");
98
99 auto context = std::make_shared<AutoFillExtensionContext>();
100 sptr<AutoFillMockWindow> window(new (std::nothrow) AutoFillMockWindow());
101 context->SetWindow(window);
102 Ace::UIContent* content = context->GetUIContent();
103 EXPECT_TRUE(content == (Ace::UIContent*)0x12345678);
104 TAG_LOGI(AAFwkTag::TEST, "GetUIContent_0100 end");
105 }
106
107 /**
108 * @tc.number: IsContext_0100
109 * @tc.name: IsContext
110 * @tc.desc: IsContext.
111 */
112 HWTEST_F(AutoFillExtensionContextTest, IsContext_0100, TestSize.Level1)
113 {
114 TAG_LOGI(AAFwkTag::TEST, "IsContext_0100 start");
115 auto context = std::make_shared<AutoFillExtensionContext>();
116 auto ret = context->IsContext(AutoFillExtensionContext::CONTEXT_TYPE_ID);
117 EXPECT_TRUE(ret);
118 ret = context->IsContext(UIExtensionContext::CONTEXT_TYPE_ID);
119 EXPECT_TRUE(ret);
120 TAG_LOGI(AAFwkTag::TEST, "IsContext_0100 end");
121 }
122
123 /**
124 * @tc.number: ConvertTo_0100
125 * @tc.name: ConvertTo
126 * @tc.desc: ConvertTo.
127 */
128 HWTEST_F(AutoFillExtensionContextTest, ConvertTo_0100, TestSize.Level1)
129 {
130 TAG_LOGI(AAFwkTag::TEST, "ConvertTo_0100 start");
131 std::shared_ptr<Context> context = std::make_shared<AutoFillExtensionContext>();
132 auto uiHolderExtensionContext = Context::ConvertTo<UIHolderExtensionContext>(context);
133 EXPECT_NE(uiHolderExtensionContext, nullptr);
134 auto uiExtensionContext = Context::ConvertTo<UIExtensionContext>(context);
135 EXPECT_NE(uiExtensionContext, nullptr);
136 auto autoFillExtensionContext = Context::ConvertTo<AutoFillExtensionContext>(context);
137 EXPECT_NE(autoFillExtensionContext, nullptr);
138 TAG_LOGI(AAFwkTag::TEST, "ConvertTo_0100 end");
139 }
140
141 /**
142 * @tc.number: ConvertTo_0200
143 * @tc.name: ConvertTo
144 * @tc.desc: ConvertTo.
145 */
146 HWTEST_F(AutoFillExtensionContextTest, ConvertTo_0200, TestSize.Level1)
147 {
148 TAG_LOGI(AAFwkTag::TEST, "ConvertTo_0200 start");
149 std::shared_ptr<Context> context = std::make_shared<UIExtensionContext>();
150 auto autoFillExtensionContext = Context::ConvertTo<AutoFillExtensionContext>(context);
151 EXPECT_EQ(autoFillExtensionContext, nullptr);
152 TAG_LOGI(AAFwkTag::TEST, "ConvertTo_0200 end");
153 }
154
155 /**
156 * @tc.number: SetAutoFillExtensionCallback_0100
157 * @tc.name: SetAutoFillExtensionCallback
158 * @tc.desc: SetAutoFillExtensionCallback.
159 */
160 HWTEST_F(AutoFillExtensionContextTest, SetAutoFillExtensionCallback_0100, TestSize.Level1)
161 {
162 TAG_LOGI(AAFwkTag::TEST, "SetAutoFillExtensionCallback_0100 start");
163 std::shared_ptr<AutoFillExtensionContext> context = std::make_shared<AutoFillExtensionContext>();
164 ASSERT_NE(context, nullptr);
165 auto autoFillExtension = std::make_shared<MockIAutoFillExtensionCallback>();
166 context->SetAutoFillExtensionCallback(autoFillExtension);
167 ASSERT_NE(context->autoFillExtensionCallback_.lock(), nullptr);
168 TAG_LOGI(AAFwkTag::TEST, "SetAutoFillExtensionCallback_0100 end");
169 }
170
171 /**
172 * @tc.number: SetSessionInfo_0100
173 * @tc.name: SetSessionInfo
174 * @tc.desc: SetSessionInfo.
175 */
176 HWTEST_F(AutoFillExtensionContextTest, SetSessionInfo_0100, TestSize.Level1)
177 {
178 TAG_LOGI(AAFwkTag::TEST, "SetSessionInfo_0100 start");
179 sptr<AAFwk::SessionInfo> sessionInfo = new (std::nothrow) AAFwk::SessionInfo();
180 ASSERT_NE(sessionInfo, nullptr);
181 std::shared_ptr<AutoFillExtensionContext> context = std::make_shared<AutoFillExtensionContext>();
182 ASSERT_NE(context, nullptr);
183 context->SetSessionInfo(sessionInfo);
184 ASSERT_NE(context->sessionInfo_, nullptr);
185 TAG_LOGI(AAFwkTag::TEST, "SetSessionInfo_0100 end");
186 }
187
188 /**
189 * @tc.number: ReloadInModal_0100
190 * @tc.name: ReloadInModal
191 * @tc.desc: ReloadInModal.
192 */
193 HWTEST_F(AutoFillExtensionContextTest, ReloadInModal_0100, TestSize.Level1)
194 {
195 TAG_LOGI(AAFwkTag::TEST, "ReloadInModal_0100 start");
196 sptr<AAFwk::SessionInfo> sessionInfo = new (std::nothrow) AAFwk::SessionInfo();
197 ASSERT_NE(sessionInfo, nullptr);
198 std::shared_ptr<AutoFillExtensionContext> context = std::make_shared<AutoFillExtensionContext>();
199 ASSERT_NE(context, nullptr);
200 context->SetSessionInfo(sessionInfo);
201 ASSERT_NE(context->sessionInfo_, nullptr);
202
203 auto autoFillExtension = std::make_shared<MockIAutoFillExtensionCallback>();
204 context->SetAutoFillExtensionCallback(autoFillExtension);
205 ASSERT_NE(context->autoFillExtensionCallback_.lock(), nullptr);
206
207 struct OHOS::AbilityRuntime::CustomData data;
208 auto ret = context->ReloadInModal(data);
209 EXPECT_EQ(ret, 0);
210 TAG_LOGI(AAFwkTag::TEST, "ReloadInModal_0100 end");
211 }
212
213 /**
214 * @tc.number: ConnectUIServiceExtensionAbility_0100
215 * @tc.name: ConnectUIServiceExtensionAbility
216 * @tc.desc: ConnectUIServiceExtensionAbility.
217 */
218 HWTEST_F(AutoFillExtensionContextTest, ConnectUIServiceExtensionAbility_0100, TestSize.Level1)
219 {
220 TAG_LOGI(AAFwkTag::TEST, "ConnectUIServiceExtensionAbility_0100 start");
221
222 std::shared_ptr<AutoFillExtensionContext> context = std::make_shared<AutoFillExtensionContext>();
223 ASSERT_NE(context, nullptr);
224 AAFwk::Want want;
225 sptr<AbilityConnectCallback> connectCallback = nullptr;
226 EXPECT_EQ(context->ConnectUIServiceExtensionAbility(want, connectCallback), AAFwk::ERR_INVALID_CALLER);
227
228 TAG_LOGI(AAFwkTag::TEST, "ConnectUIServiceExtensionAbility_0100 end");
229 }
230 } // namespace AbilityRuntime
231 } // namespace OHOS
232