• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 }