1 /*
2 * Copyright (c) 2022 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 <cstring>
17 #include <gmock/gmock.h>
18 #include <gtest/gtest.h>
19
20 #define private public
21 #include "aafwk_app_mgr_client_adapter_impl.h"
22 #include "aafwk_render_scheduler_impl.h"
23 #include "aafwk_browser_client_adapter_impl.h"
24 #include "aafwk_browser_host_impl.h"
25 #undef private
26
27 #include "aafwk_render_scheduler_host_adapter.h"
28 #include "app_mgr_client.h"
29 #include "ohos_adapter_helper.h"
30
31 using namespace testing;
32 using namespace testing::ext;
33 using namespace OHOS;
34 using namespace AppExecFwk;
35 using namespace OHOS::NWeb;
36
37 namespace OHOS::NWeb {
38 namespace {
39 const int NWEB_ERROR = -1;
40 const int RESULT_OK = 0;
41 constexpr int GET_TIMES_MAX_CNT = 5;
42 std::shared_ptr<AafwkAppMgrClientAdapterImpl> g_adapter;
43 } // namespace
44
45 class NWebAafwkAdapterTest : public testing::Test {
46 public:
47 static void SetUpTestCase(void);
48 static void TearDownTestCase(void);
49 void SetUp();
50 void TearDown();
51 };
52
SetUpTestCase(void)53 void NWebAafwkAdapterTest::SetUpTestCase(void)
54 {}
55
TearDownTestCase(void)56 void NWebAafwkAdapterTest::TearDownTestCase(void)
57 {}
58
SetUp(void)59 void NWebAafwkAdapterTest::SetUp(void)
60 {}
61
TearDown(void)62 void NWebAafwkAdapterTest::TearDown(void)
63 {}
64
65 class MockAppMgrClient : public AppMgrClient {
66 public:
67 MOCK_METHOD6(StartRenderProcess, int(const std::string&, int32_t, int32_t, int32_t, pid_t&, bool));
68 MOCK_METHOD2(GetRenderProcessTerminationStatus, int(pid_t, int &));
69 };
70
71 class RenderScheduler : public AafwkRenderSchedulerHostAdapter {
72 public:
73 void NotifyBrowserFd(int32_t ipcFd, int32_t sharedFd, int32_t crashFd);
74 void NotifyBrowser(int32_t ipcFd, int32_t sharedFd, int32_t crashFd,
75 std::shared_ptr<AafwkBrowserClientAdapter> adapter);
76 };
77
NotifyBrowserFd(int32_t ipcFd,int32_t sharedFd,int32_t crashFd)78 void RenderScheduler::NotifyBrowserFd(int32_t ipcFd, int32_t sharedFd, int32_t crashFd)
79 {
80 (void)ipcFd;
81 (void)sharedFd;
82 (void)crashFd;
83 }
84
NotifyBrowser(int32_t ipcFd,int32_t sharedFd,int32_t crashFd,std::shared_ptr<AafwkBrowserClientAdapter> adapter)85 void RenderScheduler::NotifyBrowser(int32_t ipcFd, int32_t sharedFd, int32_t crashFd,
86 std::shared_ptr<AafwkBrowserClientAdapter> adapter)
87 {
88 (void)ipcFd;
89 (void)sharedFd;
90 (void)crashFd;
91 (void)adapter;
92 }
93
94 class MockBrowserClient : public BrowserClient {
95 public:
96 explicit MockBrowserClient(const sptr<IRemoteObject> &impl);
97
98 sptr<IRemoteObject> QueryRenderSurface(int32_t surface_id);
99
100 void ReportThread(int32_t status, int32_t process_id, int32_t thread_id, int32_t role);
101
102 void PassSurface(sptr<Surface>surface, int64_t surface_id);
103
104 void DestroyRenderSurface(int32_t surface_id);
105 };
106
QueryRenderSurface(int32_t surface_id)107 sptr<IRemoteObject> MockBrowserClient::QueryRenderSurface(int32_t surface_id)
108 {
109 (void)surface_id;
110 return nullptr;
111 }
112
ReportThread(int32_t status,int32_t process_id,int32_t thread_id,int32_t role)113 void MockBrowserClient::ReportThread(int32_t status, int32_t process_id, int32_t thread_id, int32_t role)
114 {
115 (void)status;
116 (void)process_id;
117 (void)thread_id;
118 (void)role;
119 }
120
PassSurface(sptr<Surface> surface,int64_t surface_id)121 void MockBrowserClient::PassSurface(sptr<Surface>surface, int64_t surface_id)
122 {
123 (void)surface;
124 (void)surface_id;
125 }
126
DestroyRenderSurface(int32_t surface_id)127 void MockBrowserClient::DestroyRenderSurface(int32_t surface_id)
128 {
129 (void)surface_id;
130 }
131
132 class MockMessageParcel : public MessageParcel {
133 public:
134 MOCK_METHOD(bool, WriteInterfaceToken, (const std::string& token), ());
135
136 MOCK_METHOD(void, WriteInt32, (int32_t value), ());
137
138 MOCK_METHOD(sptr<IRemoteObject>, ReadRemoteObject, (), ());
139 };
140
141 class MockIRemoteObject : public IRemoteObject {
142 public:
MockIRemoteObject()143 MockIRemoteObject() : IRemoteObject(u"mock_i_remote_object") {}
144
~MockIRemoteObject()145 ~MockIRemoteObject() {}
146
147 MOCK_METHOD(int32_t, SendRequest,
148 (uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option), (override));
149
GetObjectRefCount()150 int32_t GetObjectRefCount() override
151 {
152 return 0;
153 }
154
IsProxyObject() const155 bool IsProxyObject() const override
156 {
157 return true;
158 }
159
CheckObjectLegality() const160 bool CheckObjectLegality() const override
161 {
162 return true;
163 }
164
AddDeathRecipient(const sptr<DeathRecipient> & recipient)165 bool AddDeathRecipient(const sptr<DeathRecipient> &recipient) override
166 {
167 return true;
168 }
169
RemoveDeathRecipient(const sptr<DeathRecipient> & recipient)170 bool RemoveDeathRecipient(const sptr<DeathRecipient> &recipient) override
171 {
172 return true;
173 }
174
Marshalling(Parcel & parcel) const175 bool Marshalling(Parcel &parcel) const override
176 {
177 return true;
178 }
179
AsInterface()180 sptr<IRemoteBroker> AsInterface() override
181 {
182 return nullptr;
183 }
184
Dump(int fd,const std::vector<std::u16string> & args)185 int Dump(int fd, const std::vector<std::u16string> &args) override
186 {
187 return 0;
188 }
189
GetObjectDescriptor() const190 std::u16string GetObjectDescriptor() const
191 {
192 std::u16string descriptor = std::u16string();
193 return descriptor;
194 }
195 };
196
197 class MockIBrowser : public IBrowser {
198 public:
199 MOCK_METHOD(sptr<IRemoteObject>, QueryRenderSurface, (int32_t surface_id), (override));
200
201 MOCK_METHOD(void, ReportThread, (int32_t status, int32_t process_id,
202 int32_t thread_id, int32_t role), (override));
203
204 MOCK_METHOD(void, PassSurface, (sptr<Surface> surface, int64_t surface_id), (override));
205
206 MOCK_METHOD(void, DestroyRenderSurface, (int32_t surface_id), (override));
207
208 MOCK_METHOD(sptr<IRemoteObject>, AsObject, (), (override));
209 };
210
211 /**
212 * @tc.name: NWebInputEvent_AafwkAppMgrClientAdapterImpl_001.
213 * @tc.desc: Test the AafwkAppMgrClientAdapterImpl.
214 * @tc.type: FUNC
215 * @tc.require:
216 */
217 HWTEST_F(NWebAafwkAdapterTest, NWebInputEvent_AafwkAppMgrClientAdapterImpl_001, TestSize.Level1)
218 {
219 int result = 0;
220 g_adapter = std::make_shared<AafwkAppMgrClientAdapterImpl>();
221 if (g_adapter == nullptr) {
222 result = -1;
223 }
224 EXPECT_EQ(RESULT_OK, result);
225 }
226
227 /**
228 * @tc.name: NWebAafwkAdapter_StartRenderProcess_002.
229 * @tc.desc: Test the StartRenderProcess.
230 * @tc.type: FUNC
231 * @tc.require:
232 */
233 HWTEST_F(NWebAafwkAdapterTest, NWebAafwkAdapter_StartRenderProcess_002, TestSize.Level1)
234 {
235 MockAppMgrClient *mock = new MockAppMgrClient();
236 g_adapter->appMgrClient_.reset((AppMgrClient *)mock);
237 EXPECT_CALL(*mock, StartRenderProcess(::testing::_, ::testing::_, ::testing::_,
238 ::testing::_, ::testing::_, ::testing::_))
239 .Times(1)
240 .WillRepeatedly(::testing::Return(0));
241 std::string renderParam = "test";
242 int32_t ipcFd = 0;
243 int32_t sharedFd = 0;
244 int32_t crashFd = 0;
245 pid_t renderPid = 0;
246 int result = g_adapter->StartRenderProcess(renderParam, ipcFd, sharedFd, crashFd, renderPid);
247 EXPECT_EQ(RESULT_OK, result);
248 }
249
250 /**
251 * @tc.name: NWebAafwkAdapter_StartRenderProcess_003.
252 * @tc.desc: Test the StartRenderProcess Exception scenarios.
253 * @tc.type: FUNC
254 * @tc.require:
255 */
256 HWTEST_F(NWebAafwkAdapterTest, NWebAafwkAdapter_StartRenderProcess_003, TestSize.Level1)
257 {
258 MockAppMgrClient *mock = new MockAppMgrClient();
259 g_adapter->appMgrClient_.reset((AppMgrClient *)mock);
260 EXPECT_CALL(*mock, StartRenderProcess(::testing::_, ::testing::_, ::testing::_,
261 ::testing::_, ::testing::_, ::testing::_))
262 .Times(1)
263 .WillRepeatedly(::testing::Return(1));
264 std::string renderParam = "test";
265 int32_t ipcFd = 0;
266 int32_t sharedFd = 0;
267 pid_t renderPid = 0;
268 int32_t crashFd = 0;
269 int result = g_adapter->StartRenderProcess(renderParam, ipcFd, sharedFd, crashFd, renderPid);
270 EXPECT_NE(RESULT_OK, result);
271 }
272
273 /**
274 * @tc.name: NWebAafwkAdapter_AttachRenderProcess_004.
275 * @tc.desc: Test the AttachRenderProcess.
276 * @tc.type: FUNC
277 * @tc.require:
278 */
279 HWTEST_F(NWebAafwkAdapterTest, NWebAafwkAdapter_AttachRenderProcess_004, TestSize.Level1)
280 {
281 int red = 0;
282 std::shared_ptr<RenderScheduler> render = std::make_shared<RenderScheduler>();
283 if (render == nullptr) {
284 red = -1;
285 }
286 EXPECT_EQ(RESULT_OK, red);
287 g_adapter->AttachRenderProcess(render);
288 std::shared_ptr<RenderScheduler> renderd = nullptr;
289 g_adapter->AttachRenderProcess(renderd);
290 }
291
292 /**
293 * @tc.name: NWebAafwkAdapter_GetRenderProcessTerminationStatus_005.
294 * @tc.desc: Test the GetRenderProcessTerminationStatus.
295 * @tc.type: FUNC
296 * @tc.require:
297 */
298 HWTEST_F(NWebAafwkAdapterTest, NWebAafwkAdapter_GetRenderProcessTerminationStatus_005, TestSize.Level1)
299 {
300 int statused = 1;
301 MockAppMgrClient *mock = new MockAppMgrClient();
302 g_adapter->appMgrClient_.reset((AppMgrClient *)mock);
303 EXPECT_CALL(*mock, GetRenderProcessTerminationStatus(::testing::_, ::testing::_))
304 .Times(1)
305 .WillRepeatedly(
306 ::testing::DoAll(
307 ::testing::SetArgReferee<1>(statused),
308 ::testing::Return(0)
309 )
310 );
311 pid_t red = 1;
312 int result = g_adapter->GetRenderProcessTerminationStatus(red, statused);
313 EXPECT_EQ(RESULT_OK, result);
314 }
315
316 /**
317 * @tc.name: NWebAafwkAdapter_GetRenderProcessTerminationStatus_006.
318 * @tc.desc: Test the GetRenderProcessTerminationStatus Exception scenarios.
319 * @tc.type: FUNC
320 * @tc.require:
321 */
322 HWTEST_F(NWebAafwkAdapterTest, NWebAafwkAdapter_GetRenderProcessTerminationStatus_006, TestSize.Level1)
323 {
324 int statused = 1;
325 MockAppMgrClient *mock = new MockAppMgrClient();
326 g_adapter->appMgrClient_.reset((AppMgrClient *)mock);
327 EXPECT_CALL(*mock, GetRenderProcessTerminationStatus(::testing::_, ::testing::_))
328 .Times(1)
329 .WillRepeatedly(
330 ::testing::DoAll(
331 ::testing::SetArgReferee<1>(statused),
332 ::testing::Return(1)
333 )
334 );
335 pid_t red = 1;
336 int result = g_adapter->GetRenderProcessTerminationStatus(red, statused);
337 EXPECT_NE(RESULT_OK, result);
338 }
339
340 /**
341 * @tc.name: NWebAafwkAdapter_GetRenderProcessTerminationStatus_007.
342 * @tc.desc: Test the GetRenderProcessTerminationStatus Exception scenarios.
343 * @tc.type: FUNC
344 * @tc.require:
345 */
346 HWTEST_F(NWebAafwkAdapterTest, NWebAafwkAdapter_GetRenderProcessTerminationStatus_007, TestSize.Level1)
347 {
348 int statused = -1;
349 MockAppMgrClient *mock = new MockAppMgrClient();
350 g_adapter->appMgrClient_.reset((AppMgrClient *)mock);
351 EXPECT_CALL(*mock, GetRenderProcessTerminationStatus(::testing::_, ::testing::_))
352 .Times(GET_TIMES_MAX_CNT)
353 .WillRepeatedly(
354 ::testing::DoAll(
355 ::testing::SetArgReferee<1>(statused),
356 ::testing::Return(0)
357 )
358 );
359 pid_t red = 1;
360 int result = g_adapter->GetRenderProcessTerminationStatus(red, statused);
361 EXPECT_NE(RESULT_OK, result);
362 }
363
364 /**
365 * @tc.name: NWebAafwkAdapter_StartRenderProcess_008.
366 * @tc.desc: In this scence StartRenderProcess will be fail.
367 * @tc.type: FUNC
368 * @tc.require:
369 */
370 HWTEST_F(NWebAafwkAdapterTest, NWebAafwkAdapter_StartRenderProcess_008, TestSize.Level1)
371 {
372 g_adapter->appMgrClient_ = nullptr;
373 std::string renderParam = "test";
374 int32_t ipcFd = 0;
375 int32_t sharedFd = 0;
376 pid_t renderPid = 0;
377 int32_t crashFd = 0;
378 int result = g_adapter->StartRenderProcess(renderParam, ipcFd, sharedFd, crashFd, renderPid);
379 EXPECT_NE(RESULT_OK, result);
380 result = 0;
381 std::shared_ptr<RenderScheduler> render = std::make_shared<RenderScheduler>();
382 if (render == nullptr) {
383 result = -1;
384 }
385 EXPECT_EQ(RESULT_OK, result);
386 g_adapter->AttachRenderProcess(render);
387 int statused = 0;
388 pid_t red = 1;
389 result = g_adapter->GetRenderProcessTerminationStatus(red, statused);
390 EXPECT_NE(RESULT_OK, result);
391 }
392
393 /**
394 * @tc.name: NWebAafwkAdapter_NotifyBrowserFd_009.
395 * @tc.desc: Test the NotifyBrowserFd.
396 * @tc.type: FUNC
397 * @tc.require:
398 */
399 HWTEST_F(NWebAafwkAdapterTest, NWebAafwkAdapter_NotifyBrowserFd_009, TestSize.Level1)
400 {
401 int result = 0;
402 std::shared_ptr<AafwkRenderSchedulerHostAdapter> adapter = std::make_shared<RenderScheduler>();
403 if (adapter == nullptr) {
404 result = -1;
405 }
406 EXPECT_EQ(RESULT_OK, result);
407 result = 0;
408 std::shared_ptr<AafwkRenderSchedulerImpl> render = std::make_shared<AafwkRenderSchedulerImpl>(adapter);
409 if (render == nullptr) {
410 result = -1;
411 }
412 EXPECT_EQ(RESULT_OK, result);
413 int32_t ipcFd = 1;
414 int32_t sharedFd = 2;
415 int32_t crashFd = 3;
416 render->NotifyBrowserFd(ipcFd, sharedFd, crashFd, nullptr);
417 render->renderSchedulerHostAdapter_ = nullptr;
418 render->NotifyBrowserFd(ipcFd, sharedFd, crashFd, nullptr);
419 }
420
421 /**
422 * @tc.name: NWebAafwkAdapter_WriteInterfaceToken_011.
423 * @tc.desc: test write interface token.
424 * @tc.type: FUNC
425 * @tc.require:
426 */
427 HWTEST_F(NWebAafwkAdapterTest, NWebAafwkAdapter_WriteInterfaceToken_011, TestSize.Level1)
428 {
429 sptr<IRemoteObject> impl;
430 auto client = new BrowserClient(impl);
431 ASSERT_NE(client, nullptr);
432 MessageParcel data;
433 client->WriteInterfaceToken(data);
434 }
435
436 /**
437 * @tc.name: NWebAafwkAdapter_QueryRenderSurface_012.
438 * @tc.desc: test query render surface.
439 * @tc.type: FUNC
440 * @tc.require:
441 */
442 HWTEST_F(NWebAafwkAdapterTest, NWebAafwkAdapter_QueryRenderSurface_012, TestSize.Level1)
443 {
444 sptr<IRemoteObject> impl;
445 auto client = new BrowserClient(impl);
446 ASSERT_NE(client, nullptr);
447 int32_t surface_id = 0;
448 client->QueryRenderSurface(surface_id);
449
450 sptr<MockIRemoteObject> mockImpl = new MockIRemoteObject();
451 auto mockClient = new BrowserClient(mockImpl);
452 ASSERT_NE(mockClient, nullptr);
453 EXPECT_CALL(*mockImpl, SendRequest(_, _, _, _)).WillOnce(Return(NWEB_ERROR));
454 mockClient->QueryRenderSurface(surface_id);
455 delete mockClient;
456 }
457
458 /**
459 * @tc.name: NWebAafwkAdapter_ReportThread_013.
460 * @tc.desc: test report thread.
461 * @tc.type: FUNC
462 * @tc.require:
463 */
464 HWTEST_F(NWebAafwkAdapterTest, NWebAafwkAdapter_ReportThread_013, TestSize.Level1)
465 {
466 sptr<IRemoteObject> impl;
467 auto client = new BrowserClient(impl);
468 ASSERT_NE(client, nullptr);
469 int32_t status = 0;
470 int32_t process_id = 0;
471 int32_t thread_id = 0;
472 int32_t role = 0;
473 client->ReportThread(status, process_id, thread_id, role);
474
475 sptr<MockIRemoteObject> mockImpl = new MockIRemoteObject();
476 auto mockClient = new BrowserClient(mockImpl);
477 ASSERT_NE(mockClient, nullptr);
478 EXPECT_CALL(*mockImpl, SendRequest(_, _, _, _)).WillOnce(Return(NWEB_ERROR));
479 mockClient->ReportThread(status, process_id, thread_id, role);
480 delete mockClient;
481 }
482
483 /**
484 * @tc.name: NWebAafwkAdapter_PassSurface_014.
485 * @tc.desc: test pass surface.
486 * @tc.type: FUNC
487 * @tc.require:
488 */
489 HWTEST_F(NWebAafwkAdapterTest, NWebAafwkAdapter_PassSurface_014, TestSize.Level1)
490 {
491 sptr<IRemoteObject> impl;
492 auto client = new BrowserClient(impl);
493 ASSERT_NE(client, nullptr);
494 sptr<Surface> surface;
495 int64_t surface_id = 0;
496 client->PassSurface(surface, surface_id);
497 }
498
499 /**
500 * @tc.name: NWebAafwkAdapter_DestroyRenderSurface_015.
501 * @tc.desc: test destroy render surface.
502 * @tc.type: FUNC
503 * @tc.require:
504 */
505 HWTEST_F(NWebAafwkAdapterTest, NWebAafwkAdapter_DestroyRenderSurface_015, TestSize.Level1)
506 {
507 sptr<IRemoteObject> impl;
508 auto client = new BrowserClient(impl);
509 ASSERT_NE(client, nullptr);
510 int32_t surface_id = 0;
511 client->DestroyRenderSurface(surface_id);
512
513 sptr<MockIRemoteObject> mockImpl = new MockIRemoteObject();
514 auto mockClient = new BrowserClient(mockImpl);
515 ASSERT_NE(mockClient, nullptr);
516 EXPECT_CALL(*mockImpl, SendRequest(_, _, _, _)).WillOnce(Return(NWEB_ERROR));
517 mockClient->DestroyRenderSurface(surface_id);
518 delete mockClient;
519 }
520
521 /**
522 * @tc.name: NWebAafwkAdapter_QueryRenderSurface_016.
523 * @tc.desc: test query render surface.
524 * @tc.type: FUNC
525 * @tc.require:
526 */
527 HWTEST_F(NWebAafwkAdapterTest, NWebAafwkAdapter_QueryRenderSurface_016, TestSize.Level1)
528 {
529 std::shared_ptr<AafwkBrowserClientAdapterImpl> clientAdapter = std::make_shared<AafwkBrowserClientAdapterImpl>();
530 ASSERT_NE(clientAdapter, nullptr);
531 int32_t surface_id = 0;
532 clientAdapter->GetInstance().browserHost_ = nullptr;
533 clientAdapter->QueryRenderSurface(surface_id);
534 sptr mockBrowser = new MockIBrowser();
535 EXPECT_CALL(*mockBrowser, QueryRenderSurface(surface_id));
536 clientAdapter->GetInstance().browserHost_ = mockBrowser;
537 clientAdapter->QueryRenderSurface(surface_id);
538 }
539
540 /**
541 * @tc.name: NWebAafwkAdapter_ReportThread_017.
542 * @tc.desc: test report thread.
543 * @tc.type: FUNC
544 * @tc.require:
545 */
546 HWTEST_F(NWebAafwkAdapterTest, NWebAafwkAdapter_ReportThread_017, TestSize.Level1)
547 {
548 std::shared_ptr<AafwkBrowserClientAdapterImpl> clientAdapter = std::make_shared<AafwkBrowserClientAdapterImpl>();
549 ASSERT_NE(clientAdapter, nullptr);
550 ResSchedStatusAdapter status = ResSchedStatusAdapter::THREAD_CREATED;
551 int32_t process_id = 0;
552 int32_t thread_id = 0;
553 ResSchedRoleAdapter role = ResSchedRoleAdapter::USER_INTERACT;
554 clientAdapter->GetInstance().browserHost_ = nullptr;
555 clientAdapter->ReportThread(status, process_id, thread_id, role);
556 sptr<MockIBrowser> mockBrowser = new MockIBrowser();
557 EXPECT_CALL(*mockBrowser, ReportThread(0, 0, 0, 0));
558 clientAdapter->GetInstance().browserHost_ = mockBrowser;
559 clientAdapter->ReportThread(status, process_id, thread_id, role);
560 }
561
562 /**
563 * @tc.name: NWebAafwkAdapter_PassSurface_018.
564 * @tc.desc: test pass surface.
565 * @tc.type: FUNC
566 * @tc.require:
567 */
568 HWTEST_F(NWebAafwkAdapterTest, NWebAafwkAdapter_PassSurface_018, TestSize.Level1)
569 {
570 std::shared_ptr<AafwkBrowserClientAdapterImpl> clientAdapter = std::make_shared<AafwkBrowserClientAdapterImpl>();
571 ASSERT_NE(clientAdapter, nullptr);
572 int64_t surface_id = 0;
573 clientAdapter->GetInstance().browserHost_ = nullptr;
574 clientAdapter->PassSurface(surface_id);
575 sptr<MockIBrowser> mockBrowser = new MockIBrowser();
576 clientAdapter->GetInstance().browserHost_ = mockBrowser;
577 clientAdapter->PassSurface(surface_id);
578 }
579
580 /**
581 * @tc.name: NWebAafwkAdapter_DestroyRenderSurface_019.
582 * @tc.desc: test destroy render surface.
583 * @tc.type: FUNC
584 * @tc.require:
585 */
586 HWTEST_F(NWebAafwkAdapterTest, NWebAafwkAdapter_DestroyRenderSurface_019, TestSize.Level1)
587 {
588 std::shared_ptr<AafwkBrowserClientAdapterImpl> clientAdapter = std::make_shared<AafwkBrowserClientAdapterImpl>();
589 ASSERT_NE(clientAdapter, nullptr);
590 int32_t surface_id = 0;
591 clientAdapter->GetInstance().browserHost_ = nullptr;
592 clientAdapter->DestroyRenderSurface(surface_id);
593 sptr<MockIBrowser> mockBrowser = new MockIBrowser();
594 EXPECT_CALL(*mockBrowser, DestroyRenderSurface(surface_id)).Times(1);
595 clientAdapter->GetInstance().browserHost_ = mockBrowser;
596 clientAdapter->DestroyRenderSurface(surface_id);
597 }
598
599 /**
600 * @tc.name: NWebAafwkAdapter_browserHost_020.
601 * @tc.desc: test browser host.
602 * @tc.type: FUNC
603 * @tc.require:
604 */
605 HWTEST_F(NWebAafwkAdapterTest, NWebAafwkAdapter_browserHost_020, TestSize.Level1)
606 {
607 std::shared_ptr<AafwkBrowserHostAdapter> hostAdapter = nullptr;
608 auto host = new AafwkBrowserHostImpl(hostAdapter);
609 ASSERT_NE(host, nullptr);
610 uint32_t code = 0;
611 MessageParcel data;
612 MessageParcel reply;
613 MessageOption option;
614 host->OnRemoteRequest(code, data, reply, option);
615 code = 1;
616 data.WriteInterfaceToken(BrowserHost::GetDescriptor());
617 host->OnRemoteRequest(code, data, reply, option);
618 code = 100;
619 data.WriteInterfaceToken(BrowserHost::GetDescriptor());
620 host->OnRemoteRequest(code, data, reply, option);
621 }
622
623 /**
624 * @tc.name: NWebAafwkAdapter_browserHost_021.
625 * @tc.desc: test browser host.
626 * @tc.type: FUNC
627 * @tc.require:
628 */
629 HWTEST_F(NWebAafwkAdapterTest, NWebAafwkAdapter_browserHost_021, TestSize.Level1)
630 {
631 std::shared_ptr<AafwkBrowserHostAdapter> hostAdapter = nullptr;
632 auto host = new AafwkBrowserHostImpl(hostAdapter);
633 ASSERT_NE(host, nullptr);
634 MessageParcel data;
635 MessageParcel reply;
636 host->HandleQueryRenderSurface(data, reply);
637 }
638
639 /**
640 * @tc.name: NWebAafwkAdapter_browserHost_022.
641 * @tc.desc: test browser host.
642 * @tc.type: FUNC
643 * @tc.require:
644 */
645 HWTEST_F(NWebAafwkAdapterTest, NWebAafwkAdapter_browserHost_022, TestSize.Level1)
646 {
647 std::shared_ptr<AafwkBrowserHostAdapter> hostAdapter = nullptr;
648 auto host = new AafwkBrowserHostImpl(hostAdapter);
649 ASSERT_NE(host, nullptr);
650 MessageParcel data;
651 MessageParcel reply;
652 host->HandleReportThread(data, reply);
653 }
654
655 /**
656 * @tc.name: NWebAafwkAdapter_browserHost_023.
657 * @tc.desc: test browser host.
658 * @tc.type: FUNC
659 * @tc.require:
660 */
661 HWTEST_F(NWebAafwkAdapterTest, NWebAafwkAdapter_browserHost_023, TestSize.Level1)
662 {
663 std::shared_ptr<AafwkBrowserHostAdapter> hostAdapter = nullptr;
664 auto host = new AafwkBrowserHostImpl(hostAdapter);
665 ASSERT_NE(host, nullptr);
666 MessageParcel data;
667 MessageParcel reply;
668 host->HandlePassSurface(data, reply);
669 }
670
671 /**
672 * @tc.name: NWebAafwkAdapter_browserHost_024.
673 * @tc.desc: test browser host.
674 * @tc.type: FUNC
675 * @tc.require:
676 */
677 HWTEST_F(NWebAafwkAdapterTest, NWebAafwkAdapter_browserHost_024, TestSize.Level1)
678 {
679 std::shared_ptr<AafwkBrowserHostAdapter> hostAdapter = nullptr;
680 auto host = new AafwkBrowserHostImpl(hostAdapter);
681 ASSERT_NE(host, nullptr);
682 MessageParcel data;
683 MessageParcel reply;
684 host->HandleDestroyRenderSurface(data, reply);
685 }
686
687 /**
688 * @tc.name: NWebAafwkAdapter_browserHost_025.
689 * @tc.desc: test browser host.
690 * @tc.type: FUNC
691 * @tc.require:
692 */
693 HWTEST_F(NWebAafwkAdapterTest, NWebAafwkAdapter_browserHost_025, TestSize.Level1)
694 {
695 std::shared_ptr<AafwkBrowserHostAdapter> hostAdapter = nullptr;
696 auto host = new AafwkBrowserHostImpl(hostAdapter);
697 ASSERT_NE(host, nullptr);
698 int32_t surface_id = 0;
699 host->QueryRenderSurface(surface_id);
700 }
701
702 /**
703 * @tc.name: NWebAafwkAdapter_browserHost_026.
704 * @tc.desc: test browser host.
705 * @tc.type: FUNC
706 * @tc.require:
707 */
708 HWTEST_F(NWebAafwkAdapterTest, NWebAafwkAdapter_browserHost_026, TestSize.Level1)
709 {
710 std::shared_ptr<AafwkBrowserHostAdapter> hostAdapter = nullptr;
711 auto host = new AafwkBrowserHostImpl(hostAdapter);
712 ASSERT_NE(host, nullptr);
713 int32_t status = 0;
714 int32_t process_id = 0;
715 int32_t thread_id = 0;
716 int32_t role = 0;
717 host->ReportThread(status, process_id, thread_id, role);
718 }
719
720 /**
721 * @tc.name: NWebAafwkAdapter_browserHost_027.
722 * @tc.desc: test browser host.
723 * @tc.type: FUNC
724 * @tc.require:
725 */
726 HWTEST_F(NWebAafwkAdapterTest, NWebAafwkAdapter_browserHost_027, TestSize.Level1)
727 {
728 std::shared_ptr<AafwkBrowserHostAdapter> hostAdapter = nullptr;
729 auto host = new AafwkBrowserHostImpl(hostAdapter);
730 ASSERT_NE(host, nullptr);
731 sptr<Surface> surface;
732 int64_t surface_id = 0;
733 host->PassSurface(surface, surface_id);
734 }
735
736 /**
737 * @tc.name: NWebAafwkAdapter_browserHost_028.
738 * @tc.desc: test browser host.
739 * @tc.type: FUNC
740 * @tc.require:
741 */
742 HWTEST_F(NWebAafwkAdapterTest, NWebAafwkAdapter_browserHost_028, TestSize.Level1)
743 {
744 std::shared_ptr<AafwkBrowserHostAdapter> hostAdapter = nullptr;
745 auto host = new AafwkBrowserHostImpl(hostAdapter);
746 ASSERT_NE(host, nullptr);
747 int32_t surface_id = 0;
748 host->DestroyRenderSurface(surface_id);
749 }
750 }