1 /*
2 * Copyright (c) 2020-2021 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 "ui_test_screenshot.h"
17 #if ENABLE_DEBUG
18 #include "common/screen.h"
19 #include "components/ui_image_view.h"
20 #include "imgdecode/cache_manager.h"
21 #include "test_resource_config.h"
22
23 namespace OHOS {
SetUp()24 void UITestScreenshot::SetUp()
25 {
26 if (container_ == nullptr) {
27 container_ = new UIScrollView();
28 container_->Resize(Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight() - BACK_BUTTON_HEIGHT);
29 container_->SetStyle(STYLE_BACKGROUND_COLOR, Color::Gray().full);
30 }
31 }
32
TearDown()33 void UITestScreenshot::TearDown()
34 {
35 if (clickLeftListener_ != nullptr) {
36 delete clickLeftListener_;
37 clickLeftListener_ = nullptr;
38 }
39 if (clickRightListener_ != nullptr) {
40 delete clickRightListener_;
41 clickRightListener_ = nullptr;
42 }
43 DeleteChildren(container_);
44 container_ = nullptr;
45 }
46
GetTestView()47 const UIView* UITestScreenshot::GetTestView()
48 {
49 UIKit_SCREENSHOT_TEST_001();
50 return container_;
51 }
52
53 class TestScreenshotOnClickListener : public UIView::OnClickListener {
54 public:
TestScreenshotOnClickListener(UIView * uiView)55 explicit TestScreenshotOnClickListener(UIView* uiView) : uiView_(uiView) {}
~TestScreenshotOnClickListener()56 ~TestScreenshotOnClickListener() {}
OnClick(UIView & view,const ClickEvent & event)57 bool OnClick(UIView& view, const ClickEvent& event) override
58 {
59 UIScreenshot::GetInstance()->ScreenshotToFile("/storage/data/screenshot.bin");
60 uiView_->Invalidate();
61 return true;
62 }
63
64 private:
65 UIView* uiView_;
66 };
67
68 class TestSetScreenshotOnClickListener : public UIView::OnClickListener {
69 public:
TestSetScreenshotOnClickListener(UIView * uiView)70 explicit TestSetScreenshotOnClickListener(UIView* uiView) : uiView_(uiView) {}
~TestSetScreenshotOnClickListener()71 ~TestSetScreenshotOnClickListener() {}
OnClick(UIView & view,const ClickEvent & event)72 bool OnClick(UIView& view, const ClickEvent& event) override
73 {
74 static_cast<UIImageView*>(uiView_)->SetSrc("/storage/data/screenshot.bin");
75 uiView_->Invalidate();
76 return true;
77 }
78
79 private:
80 UIView* uiView_;
81 };
82
UIKit_SCREENSHOT_TEST_001()83 void UITestScreenshot::UIKit_SCREENSHOT_TEST_001()
84 {
85 const int16_t titleLableHeight = 29;
86 const int16_t labelButtonWidth = 80;
87 const int16_t labelButtonHeight = 40;
88 if (container_ == nullptr) {
89 return;
90 }
91 UILabel* label = GetTitleLabel("截屏功能测试");
92 container_->Add(label);
93 label->SetPosition(TEXT_DISTANCE_TO_LEFT_SIDE, TEXT_DISTANCE_TO_TOP_SIDE,
94 Screen::GetInstance().GetWidth() - TEXT_DISTANCE_TO_LEFT_SIDE, titleLableHeight);
95 UILabelButton* labelButton = SetUpButton("截屏");
96 container_->Add(labelButton);
97 labelButton->SetPosition(210, 50); // 210: position x; 50: position y
98 labelButton->SetWidth(labelButtonWidth);
99 labelButton->SetHeight(labelButtonHeight);
100 labelButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, BUTTON_LABEL_SIZE);
101 if (clickLeftListener_ == nullptr) {
102 clickLeftListener_ = static_cast<UIView::OnClickListener*>(
103 new TestScreenshotOnClickListener(reinterpret_cast<UIView*>(labelButton)));
104 }
105 labelButton->SetOnClickListener(clickLeftListener_);
106 UILabel* label2 = GetTitleLabel("显示截屏图片 ");
107 container_->Add(label2);
108 label2->SetPosition(VIEW_DISTANCE_TO_LEFT_SIDE, 255, // 255: y-coordinate
109 Screen::GetInstance().GetWidth() - TEXT_DISTANCE_TO_LEFT_SIDE, titleLableHeight);
110 UIImageView* imageView = new UIImageView();
111 imageView->SetAutoEnable(false);
112 imageView->SetPosition(0, 290); // 290: y-coordinate
113 imageView->SetWidth(Screen::GetInstance().GetWidth());
114 imageView->SetHeight(Screen::GetInstance().GetHeight() + 100); // 100: increase height
115 imageView->SetSrc(BLUE_RGB565_IMAGE_PATH);
116 Style style;
117 CacheEntry entry;
118 RetCode ret = CacheManager::GetInstance().Open(imageView->GetPath(), style, entry);
119 if (ret != RetCode::OK) {
120 return;
121 }
122 container_->Add(imageView);
123 UILabelButton* labelButton2 = SetUpButton("显示");
124 container_->Add(labelButton2);
125 labelButton2->SetPosition(300, 50); // 300: position x; 50: position y
126 labelButton2->SetWidth(labelButtonWidth);
127 labelButton2->SetHeight(labelButtonHeight);
128 if (clickRightListener_ == nullptr) {
129 clickRightListener_ = static_cast<UIView::OnClickListener*>(
130 new TestSetScreenshotOnClickListener(static_cast<UIView*>(imageView)));
131 }
132 labelButton2->SetOnClickListener(clickRightListener_);
133 }
134 } // namespace OHOS
135 #endif
136