1 /*
2 * Copyright (c) 2023-2023 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 "pasteboard_client.h"
17 #include "pasteboard_web_controller.h"
18 #include "pasteboard_hilog.h"
19 #include <gtest/gtest.h>
20
21 using namespace testing;
22 using namespace testing::ext;
23 using namespace OHOS::MiscServices;
24 class WebControllerTest : public testing::Test {
25 public:
WebControllerTest()26 WebControllerTest() {};
~WebControllerTest()27 ~WebControllerTest() {};
28 static void SetUpTestCase(void);
29 static void TearDownTestCase(void);
30 void SetUp();
31 void TearDown();
32 };
33
SetUpTestCase(void)34 void WebControllerTest::SetUpTestCase(void) { }
35
TearDownTestCase(void)36 void WebControllerTest::TearDownTestCase(void) { }
37
SetUp(void)38 void WebControllerTest::SetUp(void) { }
39
TearDown(void)40 void WebControllerTest::TearDown(void) { }
41
GetHtmlValue()42 EntryValue GetHtmlValue()
43 {
44 return EntryValue(std::in_place_type<std::string>, "<html><body>Test</body></html>");
45 }
46
47 /**
48 * @tc.name: SplitHtmlTest_001.
49 * @tc.desc: Test did not use local image address HTML with SplitHtml.
50 * @tc.type: FUNC.
51 * @tc.require:
52 * @tc.author:
53 */
54 HWTEST_F(WebControllerTest, SplitHtmlTest_001, TestSize.Level1)
55 {
56 auto webClipboardController = PasteboardWebController::GetInstance();
57 std::shared_ptr<std::string> html(
58 new std::string("<img data-ohos='clipboard' src='http://file1.jpg'><img data-ohos='clipboard' "
59 "src='https://data/storage/el2/distributedfiles/202305301.png'>"));
60 auto records = webClipboardController.SplitHtml2Records(html, 1);
61 EXPECT_EQ(records.size(), 0);
62 }
63
64 /**
65 * @tc.name: SplitHtmlTest_002.
66 * @tc.desc: Test contains a local image address HTML with SplitHtml.
67 * @tc.type: FUNC.
68 * @tc.require:
69 * @tc.author:
70 */
71 HWTEST_F(WebControllerTest, SplitHtmlTest_002, TestSize.Level1)
72 {
73 auto webClipboardController = PasteboardWebController::GetInstance();
74 std::shared_ptr<std::string> html(
75 new std::string("<img data-ohos='clipboard' src='file:///file1.jpg'><img data-ohos='clipboard' "
76 "src='https://data/storage/el2/distributedfiles/202305301.png'>"));
77 auto records = webClipboardController.SplitHtml2Records(html, 1);
78 EXPECT_EQ(records.size(), 1);
79 }
80
81 /**
82 * @tc.name: SplitHtmlTest_003.
83 * @tc.desc: Test contains multiple image addresses, but no local address with SplitHtml.
84 * @tc.type: FUNC.
85 * @tc.require:
86 * @tc.author:
87 */
88 HWTEST_F(WebControllerTest, SplitHtmlTest_003, TestSize.Level1)
89 {
90 auto webClipboardController = PasteboardWebController::GetInstance();
91 std::shared_ptr<std::string> html(
92 new std::string("<img data-ohos='clipboard' src='file://file1.jpg'><img data-ohos='clipboard' "
93 "src='file2.jpg'><img data-ohos='clipboard' "
94 "src='https://data/storage/el2/distributedfiles/202305301.png'>"));
95 auto records = webClipboardController.SplitHtml2Records(html, 1);
96 EXPECT_FALSE(records.empty());
97 }
98
99 /**
100 * @tc.name: RebuildHtmlTest_004.
101 * @tc.desc: Test does not include local image address HTML with RebuildHtml.
102 * @tc.type: FUNC.
103 * @tc.require:
104 * @tc.author:
105 */
106 HWTEST_F(WebControllerTest, RebuildHtmlTest_004, TestSize.Level1)
107 {
108 std::shared_ptr<std::string> html(
109 new std::string("<img data-ohos='clipboard' src='http://file1.jpg'><img data-ohos='clipboard' "
110 "src='https://data/storage/el2/distributedfiles/202305301.png'>"));
111 auto pasteData = PasteboardClient::GetInstance()->CreateHtmlData(*html);
112 auto htmlRecord = pasteData->GetRecordAt(0);
113
114 auto webClipboardController = PasteboardWebController::GetInstance();
115 auto records = webClipboardController.SplitHtml2Records(html, htmlRecord->GetRecordId());
116 EXPECT_EQ(records.size(), 0);
117
118 webClipboardController.MergeExtraUris2Html(*pasteData);
119 EXPECT_EQ(pasteData->GetRecordCount(), 1);
120 }
121
122 /**
123 * @tc.name: RebuildHtmlTest_005.
124 * @tc.desc: Test contains a local image address HTML with RebuildHtml.
125 * @tc.type: FUNC.
126 * @tc.require:
127 * @tc.author:
128 */
129 HWTEST_F(WebControllerTest, RebuildHtmlTest_005, TestSize.Level1)
130 {
131 const int32_t splitRecordCount = 1;
132 const std::string uri = "file:///data/storage/el2/distributedfiles/temp.png";
133 auto webClipboardController = PasteboardWebController::GetInstance();
134 std::shared_ptr<std::string> html(
135 new std::string("<img data-ohos='clipboard' src='file:///file1.jpg'><img data-ohos='clipboard' "
136 "src='https://data/storage/el2/distributedfiles/202305301.png'>"));
137 auto pasteData = PasteboardClient::GetInstance()->CreateHtmlData(*html);
138 auto htmlRecord = pasteData->GetRecordAt(0);
139 htmlRecord->SetFrom(htmlRecord->GetRecordId());
140
141 const char *expectHtml =
142 "<img data-ohos='clipboard' src='file:///data/storage/el2/distributedfiles/temp.png'><img "
143 "data-ohos='clipboard' "
144 "src='https://data/storage/el2/distributedfiles/202305301.png'>";
145 auto records = webClipboardController.SplitHtml2Records(html, htmlRecord->GetRecordId());
146 EXPECT_EQ(records.size(), splitRecordCount);
147 pasteData->AddRecord(records[0]);
148
149 std::shared_ptr<PasteData> newPasteData = std::make_shared<PasteData>();
150 std::vector<std::shared_ptr<PasteDataRecord>> pasteDataRecords = pasteData->AllRecords();
151 EXPECT_EQ(*(pasteDataRecords[pasteData->GetRecordCount() - 1]->GetHtmlTextV0()), *html);
152
153 newPasteData->AddHtmlRecord(*html);
154 for (auto i = 0; i < pasteData->GetRecordCount() - 1; i++) {
155 PasteDataRecord::Builder builder(MIMETYPE_TEXT_URI);
156 auto newUri = std::make_shared<OHOS::Uri>(uri);
157 builder.SetUri(newUri);
158 builder.SetCustomData(pasteDataRecords[i]->GetCustomData());
159 auto record = builder.Build();
160 newPasteData->AddRecord(record);
161 }
162 EXPECT_EQ(newPasteData->GetRecordCount(), 2);
163 std::shared_ptr<std::string> newHtml = webClipboardController.RebuildHtml(newPasteData);
164 EXPECT_EQ(newPasteData->GetRecordCount(), 1);
165 const char* newHtmlStr = newHtml.get()->c_str();
166 EXPECT_STREQ(newHtmlStr, expectHtml);
167 }
168
169 /**
170 * @tc.name: RebuildHtmlTest_006.
171 * @tc.desc: Test contains a multiple image address HTML with MergeExtraUris2Html.
172 * @tc.type: FUNC.
173 * @tc.require:
174 * @tc.author:
175 */
176 HWTEST_F(WebControllerTest, RebuildHtmlTest_006, TestSize.Level1)
177 {
178 const std::string uri = "file:///data/storage/el2/distributedfiles/temp.png";
179 auto webClipboardController = PasteboardWebController::GetInstance();
180 std::shared_ptr<std::string> html(
181 new std::string("<img data-ohos='clipboard' src='file:///file1.jpg'><img data-ohos='clipboard' "
182 "src=\"file2.jpg\"><img data-ohos='clipboard' "
183 "src='https://data/storage/el2/distributedfiles/202305301.png'>"));
184 auto pasteData = PasteboardClient::GetInstance()->CreateHtmlData(*html);
185 auto htmlRecord = pasteData->GetRecordAt(0);
186 htmlRecord->SetFrom(htmlRecord->GetRecordId());
187
188 const char *expectHtml =
189 "<img data-ohos='clipboard' src='file:///data/storage/el2/distributedfiles/temp.png'><img "
190 "data-ohos='clipboard' "
191 "src=\"file:///data/storage/el2/distributedfiles/temp.png\"><img data-ohos='clipboard' "
192 "src='https://data/storage/el2/distributedfiles/202305301.png'>";
193 auto records = webClipboardController.SplitHtml2Records(html, htmlRecord->GetRecordId());
194 EXPECT_EQ(records.size(), 2);
195 EXPECT_EQ(records[0]->GetFrom(), htmlRecord->GetRecordId());
196 pasteData->AddRecord(records[0]);
197 pasteData->AddRecord(records[1]);
198
199 std::shared_ptr<PasteData> newPasteData = std::make_shared<PasteData>();
200 std::vector<std::shared_ptr<PasteDataRecord>> pasteDataRecords = pasteData->AllRecords();
201 EXPECT_EQ(*(pasteDataRecords[pasteData->GetRecordCount() - 1]->GetHtmlTextV0()), *html);
202
203 newPasteData->AddHtmlRecord(*html);
204 auto newHtmlRecord = newPasteData->GetRecordAt(0);
205 newHtmlRecord->SetFrom(newHtmlRecord->GetRecordId());
206 for (auto i = 0; i < pasteData->GetRecordCount() - 1; i++) {
207 PasteDataRecord::Builder builder(MIMETYPE_TEXT_URI);
208 auto newUri = std::make_shared<OHOS::Uri>(uri);
209 builder.SetUri(newUri);
210 builder.SetCustomData(pasteDataRecords[i]->GetCustomData());
211 auto record = builder.Build();
212 record->SetFrom(newHtmlRecord->GetRecordId());
213 newPasteData->AddRecord(record);
214 }
215 EXPECT_EQ(newPasteData->GetRecordCount(), 3);
216 webClipboardController.MergeExtraUris2Html(*newPasteData);
217 ASSERT_EQ(newPasteData->GetRecordCount(), 1);
218 auto recordGet = newPasteData->GetRecordAt(0);
219 auto newHtmlStr = recordGet->GetHtmlTextV0();
220 ASSERT_NE(newHtmlStr, nullptr);
221 EXPECT_STREQ(newHtmlStr->c_str(), expectHtml);
222 }
223
224 /**
225 * @tc.name: SplitHtmlTest_007.
226 * @tc.desc: Test contains invalid protocol image link HTML with SplitHtml.
227 * @tc.type: FUNC.
228 * @tc.require:
229 * @tc.author:
230 */
231 HWTEST_F(WebControllerTest, SplitHtmlTest_007, TestSize.Level1)
232 {
233 auto webClipboardController = PasteboardWebController::GetInstance();
234 std::shared_ptr<std::string> html(
235 new std::string("<img data-ohos='clipboard' src='xxx://file1.jpg'><img data-ohos='clipboard' "
236 "src='yyy://data/storage/el2/distributedfiles/202305301.png'>"));
237 auto records = webClipboardController.SplitHtml2Records(html, 1);
238 EXPECT_EQ(records.size(), 0);
239 }
240
241 /**
242 * @tc.name: RebuildHtmlTest_008.
243 * @tc.desc: Test contains invalid protocol image link HTML with RebuildHtml.
244 * @tc.type: FUNC.
245 * @tc.require:
246 * @tc.author:
247 */
248 HWTEST_F(WebControllerTest, RebuildHtmlTest_008, TestSize.Level1)
249 {
250 auto webClipboardController = PasteboardWebController::GetInstance();
251 std::shared_ptr<std::string> html(
252 new std::string("<img data-ohos='clipboard' src='xxx://file1.jpg'><img data-ohos='clipboard' "
253 "src='ttt://data/storage/el2/distributedfiles/202305301.png'>"));
254 auto pasteData = PasteboardClient::GetInstance()->CreateHtmlData(*html);
255 EXPECT_EQ(pasteData->GetRecordCount(), 1);
256 std::shared_ptr<std::string> newHtml = webClipboardController.RebuildHtml(pasteData);
257 EXPECT_EQ(*newHtml, *html);
258 }
259
260 /**
261 * @tc.name: RebuildHtmlTest_009.
262 * @tc.desc: Test contains a local image address HTML with RebuildHtml.
263 * @tc.type: FUNC.
264 * @tc.require:
265 * @tc.author:
266 */
267 HWTEST_F(WebControllerTest, RebuildHtmlTest_009, TestSize.Level1)
268 {
269 const std::string uri = "file:///data/storage/el2/distributedfiles/temp.png";
270 auto webClipboardController = PasteboardWebController::GetInstance();
271 std::shared_ptr<std::string> html(
272 new std::string("<img src='file:///file1.jpg'><img src=\"file2.jpg\"><img "
273 "src='https://data/storage/el2/distributedfiles/202305301.png'>"));
274 const char *expectHtml =
275 "<img src='file:///data/storage/el2/distributedfiles/temp.png'><img "
276 ""
277 "src=\"file:///data/storage/el2/distributedfiles/temp.png\"><img "
278 "src='https://data/storage/el2/distributedfiles/202305301.png'>";
279 auto pasteData = PasteboardClient::GetInstance()->CreateHtmlData(*html);
280 auto htmlRecord = pasteData->GetRecordAt(0);
281 htmlRecord->SetFrom(htmlRecord->GetRecordId());
282 auto records = webClipboardController.SplitHtml2Records(html, htmlRecord->GetRecordId());
283 EXPECT_EQ(records.size(), 2);
284 pasteData->AddRecord(records[0]);
285 pasteData->AddRecord(records[1]);
286
287 std::shared_ptr<PasteData> newPasteData = std::make_shared<PasteData>();
288 std::vector<std::shared_ptr<PasteDataRecord>> pasteDataRecords = pasteData->AllRecords();
289 EXPECT_EQ(*(pasteDataRecords[pasteData->GetRecordCount() - 1]->GetHtmlTextV0()), *html);
290
291 newPasteData->AddHtmlRecord(*html);
292 for (auto i = 0; i < pasteData->GetRecordCount() - 1; i++) {
293 PasteDataRecord::Builder builder(MIMETYPE_TEXT_URI);
294 auto newUri = std::make_shared<OHOS::Uri>(uri);
295 builder.SetUri(newUri);
296 builder.SetCustomData(pasteDataRecords[i]->GetCustomData());
297 auto record = builder.Build();
298 newPasteData->AddRecord(record);
299 }
300 EXPECT_EQ(newPasteData->GetRecordCount(), 3);
301 std::shared_ptr<std::string> newHtml = webClipboardController.RebuildHtml(newPasteData);
302 EXPECT_EQ(newPasteData->GetRecordCount(), 1);
303 const char* newHtmlStr = newHtml.get()->c_str();
304 EXPECT_STREQ(newHtmlStr, expectHtml);
305 }
306
307 /**
308 * @tc.name: RebuildHtmlTest_010.
309 * @tc.desc: Test contains a local image address HTML with MergeExtraUris2Html.
310 * @tc.type: FUNC.
311 * @tc.require:
312 * @tc.author:
313 */
314 HWTEST_F(WebControllerTest, RebuildHtmlTest_010, TestSize.Level1)
315 {
316 const std::string uri = "file:///data/storage/el2/distributedfiles/temp.png";
317 auto webClipboardController = PasteboardWebController::GetInstance();
318 std::shared_ptr<std::string> html(
319 new std::string("<img src='file:///file1.jpg'><img src=\"file2.jpg\"><img "
320 "src='https://data/storage/el2/distributedfiles/202305301.png'>"));
321 const char *expectHtml =
322 "<img src='file:///data/storage/el2/distributedfiles/temp.png'><img "
323 "src=\"file:///data/storage/el2/distributedfiles/temp.png\"><img "
324 "src='https://data/storage/el2/distributedfiles/202305301.png'>";
325 auto pasteData = PasteboardClient::GetInstance()->CreateHtmlData(*html);
326 auto htmlRecord = pasteData->GetRecordAt(0);
327 htmlRecord->SetFrom(htmlRecord->GetRecordId());
328 auto records = webClipboardController.SplitHtml2Records(html, htmlRecord->GetRecordId());
329 ASSERT_EQ(records.size(), 2);
330 EXPECT_EQ(records[0]->GetFrom(), htmlRecord->GetRecordId());
331 pasteData->AddRecord(records[0]);
332 pasteData->AddRecord(records[1]);
333
334 std::shared_ptr<PasteData> newPasteData = std::make_shared<PasteData>();
335 std::vector<std::shared_ptr<PasteDataRecord>> pasteDataRecords = pasteData->AllRecords();
336 EXPECT_EQ(*(pasteDataRecords[pasteData->GetRecordCount() - 1]->GetHtmlTextV0()), *html);
337
338 newPasteData->AddHtmlRecord(*html);
339 auto newHtmlRecord = newPasteData->GetRecordAt(0);
340 newHtmlRecord->SetFrom(newHtmlRecord->GetRecordId());
341 for (auto i = 0; i < pasteData->GetRecordCount() - 1; i++) {
342 PasteDataRecord::Builder builder(MIMETYPE_TEXT_URI);
343 auto newUri = std::make_shared<OHOS::Uri>(uri);
344 builder.SetUri(newUri);
345 builder.SetCustomData(pasteDataRecords[i]->GetCustomData());
346 auto record = builder.Build();
347 record->SetFrom(newHtmlRecord->GetRecordId());
348 newPasteData->AddRecord(record);
349 }
350 EXPECT_EQ(newPasteData->GetRecordCount(), 3);
351 webClipboardController.MergeExtraUris2Html(*newPasteData);
352
353 ASSERT_EQ(newPasteData->GetRecordCount(), 1);
354 auto recordGet = newPasteData->GetRecordAt(0);
355 auto newHtmlStr = recordGet->GetHtmlTextV0();
356 ASSERT_NE(newHtmlStr, nullptr);
357 EXPECT_STREQ(newHtmlStr->c_str(), expectHtml);
358 }
359
360 /**
361 * @tc.name: UpdateHtmlRecordTest_001.
362 * @tc.desc:
363 * @tc.type: FUNC.
364 * @tc.require:
365 * @tc.author:
366 */
367 HWTEST_F(WebControllerTest, UpdateHtmlRecordTest_001, TestSize.Level1)
368 {
369 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_CLIENT, "start");
370
371 auto tempPasteboard = std::make_shared<PasteboardWebController>();
372 EXPECT_NE(tempPasteboard, nullptr);
373
374 auto webClipboardController = PasteboardWebController::GetInstance();
375 std::shared_ptr<PasteDataRecord> htmlRecord = nullptr;
376 std::shared_ptr<std::string> htmlData = std::make_shared<std::string>("test data");
377
378 webClipboardController.UpdateHtmlRecord(htmlRecord, htmlData);
379 ASSERT_EQ(htmlRecord, nullptr);
380
381 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_CLIENT, "end");
382 }
383
384 /**
385 * @tc.name: UpdateHtmlRecordTest_002.
386 * @tc.desc:
387 * @tc.type: FUNC.
388 * @tc.require:
389 * @tc.author:
390 */
391 HWTEST_F(WebControllerTest, UpdateHtmlRecordTest_002, TestSize.Level1)
392 {
393 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_CLIENT, "start");
394
395 auto tempPasteboard = std::make_shared<PasteboardWebController>();
396 EXPECT_NE(tempPasteboard, nullptr);
397
398 auto webClipboardController = PasteboardWebController::GetInstance();
399 std::shared_ptr<PasteDataRecord> htmlRecord = std::make_shared<PasteDataRecord>();
400 std::shared_ptr<std::string> htmlData = nullptr;
401 webClipboardController.UpdateHtmlRecord(htmlRecord, htmlData);
402 ASSERT_EQ(htmlData, nullptr);
403
404 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_CLIENT, "end");
405 }
406
407 /**
408 * @tc.name: SplitWebviewPasteDataTest_001.
409 * @tc.desc:
410 * @tc.type: FUNC.
411 * @tc.require:
412 * @tc.author:
413 */
414 HWTEST_F(WebControllerTest, SplitWebviewPasteDataTest_001, TestSize.Level1)
415 {
416 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_CLIENT, "start");
417
418 auto webClipboardController = PasteboardWebController::GetInstance();
419 PasteData pasteData;
420 bool result = webClipboardController.SplitWebviewPasteData(pasteData);
421 EXPECT_FALSE(result);
422
423 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_CLIENT, "end");
424 }
425
426 /**
427 * @tc.name: SplitWebviewPasteDataTest_002.
428 * @tc.desc:
429 * @tc.type: FUNC.
430 * @tc.require:
431 * @tc.author:
432 */
433 HWTEST_F(WebControllerTest, SplitWebviewPasteDataTest_002, TestSize.Level1)
434 {
435 PasteData pasteData;
436 PasteDataRecord record;
437 record.SetRecordId(1);
438 record.SetFrom(1);
439 pasteData.AddRecord(std::make_shared<PasteDataRecord>(record));
440 bool result = PasteboardWebController::GetInstance().SplitWebviewPasteData(pasteData);
441 EXPECT_FALSE(result);
442 }
443
444 /**
445 * @tc.name: SplitWebviewPasteDataTest_003.
446 * @tc.desc:
447 * @tc.type: FUNC.
448 * @tc.require:
449 * @tc.author:
450 */
451 HWTEST_F(WebControllerTest, SplitWebviewPasteDataTest_003, TestSize.Level1)
452 {
453 PasteData pasteData;
454 PasteDataRecord record;
455 record.SetRecordId(1);
456 record.SetFrom(2);
457 pasteData.AddRecord(std::make_shared<PasteDataRecord>(record));
458 bool result = PasteboardWebController::GetInstance().SplitWebviewPasteData(pasteData);
459 EXPECT_FALSE(result);
460 }
461
462 /**
463 * @tc.name: SplitWebviewPasteDataTest_004.
464 * @tc.desc:
465 * @tc.type: FUNC.
466 * @tc.require:
467 * @tc.author:
468 */
469 HWTEST_F(WebControllerTest, SplitWebviewPasteDataTest_004, TestSize.Level1)
470 {
471 PasteData pasteData;
472 pasteData.AddHtmlRecord("");
473 bool result = PasteboardWebController::GetInstance().SplitWebviewPasteData(pasteData);
474 EXPECT_FALSE(result);
475 }
476
477 /**
478 * @tc.name: SplitWebviewPasteDataTest_005.
479 * @tc.desc:
480 * @tc.type: FUNC.
481 * @tc.require:
482 * @tc.author:
483 */
484 HWTEST_F(WebControllerTest, SplitWebviewPasteDataTest_005, TestSize.Level1)
485 {
486 PasteData pasteData;
487 pasteData.AddHtmlRecord("<p>Hello world!<img src=\">file:///storage/local/files/Images/hello.png\"/><p>");
488 bool result = PasteboardWebController::GetInstance().SplitWebviewPasteData(pasteData);
489 EXPECT_FALSE(result);
490 }
491
492 /**
493 * @tc.name: SplitWebviewPasteDataTest_006.
494 * @tc.desc:
495 * @tc.type: FUNC.
496 * @tc.require:
497 * @tc.author:
498 */
499 HWTEST_F(WebControllerTest, SplitWebviewPasteDataTest_006, TestSize.Level1)
500 {
501 PasteData pasteData;
502 pasteData.AddHtmlRecord("<p>Hello world!<img src=\">https://storage/local/files/Images/hello.png\"/><p>");
503 bool result = PasteboardWebController::GetInstance().SplitWebviewPasteData(pasteData);
504 EXPECT_FALSE(result);
505 }
506
507 /**
508 * @tc.name: SplitWebviewPasteDataTest_007.
509 * @tc.desc:SplitWebviewPasteData_ShouldReturnTrue_WhenHtmlEntryIsValid
510 * @tc.type: FUNC.
511 * @tc.require:
512 * @tc.author:
513 */
514 HWTEST_F(WebControllerTest, SplitWebviewPasteDataTest_007, TestSize.Level1)
515 {
516 PasteData pasteData;
517 pasteData.AddHtmlRecord("<p>Hello world!<img src=\"file:///storage/local/files/Images/hello.png\"/><p>");
518 bool result = PasteboardWebController::GetInstance().SplitWebviewPasteData(pasteData);
519 EXPECT_TRUE(result);
520 EXPECT_EQ(pasteData.GetTag(), PasteData::WEBVIEW_PASTEDATA_TAG);
521 }
522
523 /**
524 * @tc.name: SplitWebviewPasteDataTest_008.
525 * @tc.desc:
526 * @tc.type: FUNC.
527 * @tc.require:
528 * @tc.author:
529 */
530 HWTEST_F(WebControllerTest, SplitWebviewPasteDataTest_008, TestSize.Level1)
531 {
532 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_CLIENT, "start");
533
534 auto tempPasteboard = std::make_shared<PasteboardWebController>();
535 EXPECT_NE(tempPasteboard, nullptr);
536
537 auto webClipboardController = PasteboardWebController::GetInstance();
538 PasteData pasteData;
539 auto record = std::make_shared<PasteDataRecord>();
540 record->SetFrom(1);
541 record->SetRecordId(1);
542 pasteData.AddRecord(record);
543 bool result = webClipboardController.SplitWebviewPasteData(pasteData);
544 EXPECT_FALSE(result);
545
546 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_CLIENT, "end");
547 }
548
549 /**
550 * @tc.name: SplitWebviewPasteDataTest_009.
551 * @tc.desc:
552 * @tc.type: FUNC.
553 * @tc.require:
554 * @tc.author:
555 */
556 HWTEST_F(WebControllerTest, SplitWebviewPasteDataTest_009, TestSize.Level1)
557 {
558 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_CLIENT, "start");
559
560 auto tempPasteboard = std::make_shared<PasteboardWebController>();
561 EXPECT_NE(tempPasteboard, nullptr);
562
563 auto webClipboardController = PasteboardWebController::GetInstance();
564 PasteData pasteData;
565 auto record = std::make_shared<PasteDataRecord>();
566 record->SetFrom(1);
567 record->SetRecordId(1);
568 auto htmlEntry = std::make_shared<PasteDataEntry>();
569 htmlEntry->SetMimeType(MIMETYPE_TEXT_HTML);
570
571 EntryValue htmlValue(std::in_place_index<4>, "<html><body>Hello</body></html>");
572 htmlEntry->SetValue(htmlValue);
573
574 record->AddEntry("text/html", htmlEntry);
575 pasteData.AddRecord(record);
576
577 bool result = webClipboardController.SplitWebviewPasteData(pasteData);
578 EXPECT_FALSE(result);
579
580 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_CLIENT, "end");
581 }
582
583 /**
584 * @tc.name: SplitWebviewPasteDataTest_010.
585 * @tc.desc:
586 * @tc.type: FUNC.
587 * @tc.require:
588 * @tc.author:
589 */
590 HWTEST_F(WebControllerTest, SplitWebviewPasteDataTest_010, TestSize.Level1)
591 {
592 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_CLIENT, "start");
593
594 auto tempPasteboard = std::make_shared<PasteboardWebController>();
595 EXPECT_NE(tempPasteboard, nullptr);
596
597 auto webClipboardController = PasteboardWebController::GetInstance();
598 PasteData pasteData;
599 auto record = std::make_shared<PasteDataRecord>();
600 record->SetFrom(1);
601 record->SetRecordId(1);
602 auto htmlEntry = std::make_shared<PasteDataEntry>();
603 htmlEntry->SetMimeType(MIMETYPE_TEXT_HTML);
604
605 EntryValue htmlValue(std::in_place_index<4>, "");
606 htmlEntry->SetValue(htmlValue);
607
608 record->AddEntry("text/html", htmlEntry);
609 pasteData.AddRecord(record);
610
611 bool result = webClipboardController.SplitWebviewPasteData(pasteData);
612 EXPECT_FALSE(result);
613 EXPECT_NE(pasteData.GetTag(), PasteData::WEBVIEW_PASTEDATA_TAG);
614
615 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_CLIENT, "end");
616 }
617
618 /**
619 * @tc.name: SetWebviewPasteDataTest_001.
620 * @tc.desc:
621 * @tc.type: FUNC.
622 * @tc.require:
623 * @tc.author:
624 */
625 HWTEST_F(WebControllerTest, SetWebviewPasteDataTest_001, TestSize.Level1)
626 {
627 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_CLIENT, "start");
628
629 auto tempPasteboard = std::make_shared<PasteboardWebController>();
630 EXPECT_NE(tempPasteboard, nullptr);
631
632 auto webClipboardController = PasteboardWebController::GetInstance();
633 PasteData pasteData;
634 pasteData.SetTag(PasteData::WEBVIEW_PASTEDATA_TAG);
635 std::string bundleName = "testBundle";
636 int32_t appIndex = 0;
637 webClipboardController.SetWebviewPasteData(pasteData, { bundleName, appIndex });
638 ASSERT_EQ(pasteData.GetTag(), PasteData::WEBVIEW_PASTEDATA_TAG);
639
640 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_CLIENT, "end");
641 }
642
643 /**
644 * @tc.name: SetWebviewPasteDataTest_002.
645 * @tc.desc:
646 * @tc.type: FUNC.
647 * @tc.require:
648 * @tc.author:
649 */
650 HWTEST_F(WebControllerTest, SetWebviewPasteDataTest_002, TestSize.Level1)
651 {
652 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_CLIENT, "start");
653
654 auto tempPasteboard = std::make_shared<PasteboardWebController>();
655 EXPECT_NE(tempPasteboard, nullptr);
656
657 auto webClipboardController = PasteboardWebController::GetInstance();
658 PasteData pasteData;
659 pasteData.SetTag(PasteData::WEBVIEW_PASTEDATA_TAG);
660 std::pair<std::string, int32_t> bundleIndex = std::make_pair("bundleName", 1);
661 webClipboardController.SetWebviewPasteData(pasteData, bundleIndex);
662
663 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_CLIENT, "end");
664 }
665
666 /**
667 * @tc.name: SetWebviewPasteDataTest_003.
668 * @tc.desc:
669 * @tc.type: FUNC.
670 * @tc.require:
671 * @tc.author:
672 */
673 HWTEST_F(WebControllerTest, SetWebviewPasteDataTest_003, TestSize.Level1)
674 {
675 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_CLIENT, "start");
676
677 auto tempPasteboard = std::make_shared<PasteboardWebController>();
678 EXPECT_NE(tempPasteboard, nullptr);
679
680 auto webClipboardController = PasteboardWebController::GetInstance();
681 PasteData pasteData;
682 pasteData.SetTag("INVALID_TAG");
683 std::pair<std::string, int32_t> bundleIndex = std::make_pair("bundleName", 1);
684 webClipboardController.SetWebviewPasteData(pasteData, bundleIndex);
685
686 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_CLIENT, "end");
687 }
688
689 /**
690 * @tc.name: SetWebviewPasteDataTest_004.
691 * @tc.desc:
692 * @tc.type: FUNC.
693 * @tc.require:
694 * @tc.author:
695 */
696 HWTEST_F(WebControllerTest, SetWebviewPasteDataTest_004, TestSize.Level1)
697 {
698 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_CLIENT, "start");
699
700 auto tempPasteboard = std::make_shared<PasteboardWebController>();
701 EXPECT_NE(tempPasteboard, nullptr);
702
703 auto webClipboardController = PasteboardWebController::GetInstance();
704 PasteData pasteData;
705 pasteData.SetTag(PasteData::WEBVIEW_PASTEDATA_TAG);
706 auto record = std::make_shared<PasteDataRecord>();
707 record->SetUri(nullptr);
708 pasteData.AddRecord(record);
709 std::pair<std::string, int32_t> bundleIndex = std::make_pair("bundleName", 1);
710 webClipboardController.SetWebviewPasteData(pasteData, bundleIndex);
711
712 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_CLIENT, "end");
713 }
714
715 /**
716 * @tc.name: SetWebviewPasteDataTest_005.
717 * @tc.desc:
718 * @tc.type: FUNC.
719 * @tc.require:
720 * @tc.author:
721 */
722 HWTEST_F(WebControllerTest, SetWebviewPasteDataTest_005, TestSize.Level1)
723 {
724 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_CLIENT, "start");
725
726 auto tempPasteboard = std::make_shared<PasteboardWebController>();
727 EXPECT_NE(tempPasteboard, nullptr);
728
729 auto webClipboardController = PasteboardWebController::GetInstance();
730 PasteData pasteData;
731 pasteData.SetTag(PasteData::WEBVIEW_PASTEDATA_TAG);
732 auto record = std::make_shared<PasteDataRecord>();
733 record->SetUri(std::make_shared<OHOS::Uri>("content://local/image.jpg"));
734 record->SetFrom(1);
735 record->SetRecordId(2);
736
737 pasteData.AddRecord(record);
738 std::pair<std::string, int32_t> bundleIndex = std::make_pair("bundleName", 1);
739 webClipboardController.SetWebviewPasteData(pasteData, bundleIndex);
740
741 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_CLIENT, "end");
742 }
743
744 /**
745 * @tc.name: SetWebviewPasteDataTest_006.
746 * @tc.desc:
747 * @tc.type: FUNC.
748 * @tc.require:
749 * @tc.author:
750 */
751 HWTEST_F(WebControllerTest, SetWebviewPasteDataTest_006, TestSize.Level1)
752 {
753 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_CLIENT, "start");
754
755 auto tempPasteboard = std::make_shared<PasteboardWebController>();
756 EXPECT_NE(tempPasteboard, nullptr);
757
758 auto webClipboardController = PasteboardWebController::GetInstance();
759 PasteData pasteData;
760 pasteData.SetTag(PasteData::WEBVIEW_PASTEDATA_TAG);
761 auto record = std::make_shared<PasteDataRecord>();
762 record->SetUri(std::make_shared<OHOS::Uri>("content://local/docs/image.jpg"));
763 record->SetFrom(1);
764 record->SetRecordId(2);
765
766 pasteData.AddRecord(record);
767 std::pair<std::string, int32_t> bundleIndex = std::make_pair("bundleName", 1);
768 webClipboardController.SetWebviewPasteData(pasteData, bundleIndex);
769
770 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_CLIENT, "end");
771 }
772
773 /**
774 * @tc.name: SetWebviewPasteDataTest_007.
775 * @tc.desc:
776 * @tc.type: FUNC.
777 * @tc.require:
778 * @tc.author:
779 */
780 HWTEST_F(WebControllerTest, SetWebviewPasteDataTest_007, TestSize.Level1)
781 {
782 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_CLIENT, "start");
783
784 auto tempPasteboard = std::make_shared<PasteboardWebController>();
785 EXPECT_NE(tempPasteboard, nullptr);
786
787 auto webClipboardController = PasteboardWebController::GetInstance();
788 PasteData pasteData;
789 pasteData.SetTag(PasteData::WEBVIEW_PASTEDATA_TAG);
790 auto record = std::make_shared<PasteDataRecord>();
791 record->SetUri(std::make_shared<OHOS::Uri>("content://local/images/image.jpg"));
792 record->SetFrom(1);
793 record->SetRecordId(2);
794
795 pasteData.AddRecord(record);
796 std::pair<std::string, int32_t> bundleIndex = std::make_pair("bundleName", 1);
797 webClipboardController.SetWebviewPasteData(pasteData, bundleIndex);
798
799 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_CLIENT, "end");
800 }
801
802 /**
803 * @tc.name: CheckAppUriPermissionTest_001.
804 * @tc.desc:
805 * @tc.type: FUNC.
806 * @tc.require:
807 * @tc.author:
808 */
809 HWTEST_F(WebControllerTest, CheckAppUriPermissionTest_001, TestSize.Level1)
810 {
811 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_CLIENT, "start");
812
813 auto tempPasteboard = std::make_shared<PasteboardWebController>();
814 EXPECT_NE(tempPasteboard, nullptr);
815
816 auto webClipboardController = PasteboardWebController::GetInstance();
817 PasteData pasteData;
818 webClipboardController.CheckAppUriPermission(pasteData);
819
820 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_CLIENT, "end");
821 }
822
823 /**
824 * @tc.name: CheckAppUriPermissionTest_002.
825 * @tc.desc:
826 * @tc.type: FUNC.
827 * @tc.require:
828 * @tc.author:
829 */
830 HWTEST_F(WebControllerTest, CheckAppUriPermissionTest_002, TestSize.Level1)
831 {
832 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_CLIENT, "start");
833
834 auto tempPasteboard = std::make_shared<PasteboardWebController>();
835 EXPECT_NE(tempPasteboard, nullptr);
836
837 auto webClipboardController = PasteboardWebController::GetInstance();
838 PasteData pasteData;
839 pasteData.AddRecord(nullptr);
840 webClipboardController.CheckAppUriPermission(pasteData);
841
842 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_CLIENT, "end");
843 }
844
845 /**
846 * @tc.name: CheckAppUriPermissionTest_003.
847 * @tc.desc:
848 * @tc.type: FUNC.
849 * @tc.require:
850 * @tc.author:
851 */
852 HWTEST_F(WebControllerTest, CheckAppUriPermissionTest_003, TestSize.Level1)
853 {
854 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_CLIENT, "start");
855
856 auto tempPasteboard = std::make_shared<PasteboardWebController>();
857 EXPECT_NE(tempPasteboard, nullptr);
858
859 auto webClipboardController = PasteboardWebController::GetInstance();
860 PasteData pasteData;
861 auto record = std::make_shared<PasteDataRecord>();
862 auto fileUri = std::make_shared<OHOS::Uri>("file://test");
863 record->SetUri(fileUri);
864 pasteData.AddRecord(record);
865 webClipboardController.CheckAppUriPermission(pasteData);
866
867 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_CLIENT, "end");
868 }
869
870 /**
871 * @tc.name: CheckAppUriPermissionTest_004.
872 * @tc.desc:
873 * @tc.type: FUNC.
874 * @tc.require:
875 * @tc.author:
876 */
877 HWTEST_F(WebControllerTest, CheckAppUriPermissionTest_004, TestSize.Level1)
878 {
879 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_CLIENT, "start");
880
881 auto tempPasteboard = std::make_shared<PasteboardWebController>();
882 EXPECT_NE(tempPasteboard, nullptr);
883
884 auto webClipboardController = PasteboardWebController::GetInstance();
885 PasteData pasteData;
886 auto validRecord = std::make_shared<PasteDataRecord>();
887 auto fileUri = std::make_shared<OHOS::Uri>("file://test1");
888 validRecord->SetUri(fileUri);
889 pasteData.AddRecord(validRecord);
890
891 auto invaliRecord = std::make_shared<PasteDataRecord>();
892 validRecord->SetUri(nullptr);
893 pasteData.AddRecord(invaliRecord);
894 webClipboardController.CheckAppUriPermission(pasteData);
895
896 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_CLIENT, "end");
897 }