已关闭
UI组件_DEMO #189
jarvis_chen创建于 9月15日关闭于 21 天前
UI组件_DEMO #189
已关闭
共 232 个文件变更+20133-93
| @@ -13,6 +13,7 @@ | |||
| 13 | 13 | ||
| 14 | import("//build/lite/config/hap_pack.gni") | 14 | import("//build/lite/config/hap_pack.gni") |
| 15 | import("//build/lite/config/subsystem/applications/config.gni") | 15 | import("//build/lite/config/subsystem/applications/config.gni") |
| 16 | +import("//foundation/arkui/ui_lite/ui.gni") | ||
| 16 | 17 | ||
| 17 | # lite 构建默认 language_cpp 为 c++11,本模块使用 std::make_unique 需要 c++14。 | 18 | # lite 构建默认 language_cpp 为 c++11,本模块使用 std::make_unique 需要 c++14。 |
| 18 | # 注意:目标直写 cflags_cc 会排在默认配置之前而被 -std=c++11 覆盖, | 19 | # 注意:目标直写 cflags_cc 会排在默认配置之前而被 -std=c++11 覆盖, |
| @@ -32,9 +33,39 @@ shared_library("graphic") { | |||
| 32 | "graphic/src/main/cpp/button_demo_ability_slice.cpp", | 33 | "graphic/src/main/cpp/button_demo_ability_slice.cpp", |
| 33 | "graphic/src/main/cpp/scroller_demo_ability_slice.cpp", | 34 | "graphic/src/main/cpp/scroller_demo_ability_slice.cpp", |
| 34 | "graphic/src/main/cpp/switch_demo_ability_slice.cpp", | 35 | "graphic/src/main/cpp/switch_demo_ability_slice.cpp", |
| 35 | - "graphic/src/main/cpp/slider_demo_ability_slice.cpp" | 36 | + "graphic/src/main/cpp/slider_demo_ability_slice.cpp", |
| 37 | + "graphic/src/main/cpp/rm_test_utils.cpp" | ||
| 36 | ] | 38 | ] |
| 37 | 39 | ||
| 40 | + if (ui_lite_enable_button_animation_touch_extend_config) { | ||
| 41 | + sources += [ | ||
| 42 | + "graphic/src/main/cpp/button_rm_case_view.cpp", | ||
| 43 | + "graphic/src/main/cpp/button_rm_test_slice.cpp", | ||
| 44 | + ] | ||
| 45 | + } | ||
| 46 | + | ||
| 47 | + if (ui_lite_enable_scroller_indicator_style_adapt) { | ||
| 48 | + sources += [ | ||
| 49 | + "graphic/src/main/cpp/scroller_rm_case_view.cpp", | ||
| 50 | + "graphic/src/main/cpp/scroller_rm_test_slice.cpp", | ||
| 51 | + ] | ||
| 52 | + } | ||
| 53 | + | ||
| 54 | + if (ui_lite_enable_switch_config) { | ||
| 55 | + sources += [ | ||
| 56 | + "graphic/src/main/cpp/switch_rm_case_view.cpp", | ||
| 57 | + "graphic/src/main/cpp/switch_rm_test_slice.cpp", | ||
| 58 | + ] | ||
| 59 | + } | ||
| 60 | + | ||
| 61 | + if (ui_lite_enable_slider_config) { | ||
| 62 | + sources += [ | ||
| 63 | + "graphic/src/main/cpp/slider_rm_case_view.cpp", | ||
| 64 | + "graphic/src/main/cpp/slider_rm_test_slice.cpp", | ||
| 65 | + ] | ||
| 66 | + } | ||
| 67 | + | ||
| 68 | + | ||
| 38 | deps = [ | 69 | deps = [ |
| 39 | "${aafwk_lite_path}/frameworks/ability_lite:aafwk_abilitykit_lite", | 70 | "${aafwk_lite_path}/frameworks/ability_lite:aafwk_abilitykit_lite", |
| 40 | "${appexecfwk_lite_path}/frameworks/bundle_lite:bundle", | 71 | "${appexecfwk_lite_path}/frameworks/bundle_lite:bundle", |
| @@ -47,7 +78,8 @@ shared_library("graphic") { | |||
| 47 | "${appexecfwk_lite_path}/interfaces/kits/bundle_lite", | 78 | "${appexecfwk_lite_path}/interfaces/kits/bundle_lite", |
| 48 | "${aafwk_lite_path}/interfaces/kits/want_lite", | 79 | "${aafwk_lite_path}/interfaces/kits/want_lite", |
| 49 | "//foundation/arkui/ui_lite/interfaces/kits", | 80 | "//foundation/arkui/ui_lite/interfaces/kits", |
| 50 | - "//foundation/arkui/ui_lite/interfaces/innerkits" | 81 | + "//foundation/arkui/ui_lite/interfaces/innerkits", |
| 82 | + "//foundation/arkui/ui_lite/frameworks" | ||
| 51 | ] | 83 | ] |
| 52 | 84 | ||
| 53 | defines = [ | 85 | defines = [ |
| @@ -0,0 +1,203 @@ | |||
| 1 | +/* | ||
| 2 | + * Copyright (c) 2026 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 | +#ifndef RM_TEST_SLICE_BASE_H | ||
| 17 | +#define RM_TEST_SLICE_BASE_H | ||
| 18 | + | ||
| 19 | +#include "component_demo_slice.h" | ||
| 20 | +#include "components/ui_list.h" | ||
| 21 | +#include "components/ui_label_button.h" | ||
| 22 | +#include "common/screen.h" | ||
| 23 | +#include "graphic_utils.h" | ||
| 24 | +#include "rm_test_utils.h" | ||
| 25 | +#include <cstdio> | ||
| 26 | +#include <new> | ||
| 27 | + | ||
| 28 | +namespace OHOS { | ||
| 29 | + | ||
| 30 | +/** | ||
| 31 | + * @brief 共享的 RM 列表/用例/返回按钮模板基类。 | ||
| 32 | + * | ||
| 33 | + * @tparam RunnerType 用例运行器类型(如 ButtonRmCaseRunner/ScrollerRmCaseRunner) | ||
| 34 | + * @tparam CaseType 用例配置类型(如 ButtonRmCase/ScrollerRmCase) | ||
| 35 | + * @tparam Cases 用例表全局数组指针 | ||
| 36 | + * @tparam CaseCount 用例数全局变量指针 | ||
| 37 | + */ | ||
| 38 | +template<typename RunnerType, typename CaseType, const CaseType* Cases, const uint32_t& CaseCount> | ||
| 39 | +class RmTestSliceBase : public ComponentDemoSlice { | ||
| 40 | +public: | ||
| 41 | + explicit RmTestSliceBase(const char* title); | ||
| 42 | + ~RmTestSliceBase() override; | ||
| 43 | + | ||
| 44 | +protected: | ||
| 45 | + void SetupContent(UIViewGroup* content) override; | ||
| 46 | + | ||
| 47 | +private: | ||
| 48 | + void EnterCase(uint32_t index); | ||
| 49 | + void BackToList(); | ||
| 50 | + | ||
| 51 | + static constexpr int16_t BACK_BTN_W = 88; | ||
| 52 | + static constexpr int16_t BACK_BTN_H = 56; | ||
| 53 | + static constexpr int16_t BACK_BTN_TOP = 8; | ||
| 54 | + static constexpr int16_t BACK_BTN_RIGHT_MARGIN = 8; | ||
| 55 | + static constexpr uint16_t BACK_BTN_FONT_SIZE = 20; | ||
| 56 | + | ||
| 57 | + UIList* caseList_ = nullptr; | ||
| 58 | + RmCaseListAdapter* adapter_ = nullptr; | ||
| 59 | + UILabelButton* backToListBtn_ = nullptr; | ||
| 60 | + RunnerType* runner_ = nullptr; | ||
| 61 | + RmClickListener* backListener_ = nullptr; | ||
| 62 | + UIViewGroup* content_ = nullptr; | ||
| 63 | +}; | ||
| 64 | + | ||
| 65 | +namespace internal { | ||
| 66 | +inline void FormatCaseTitle(uint32_t index, char* buf, uint32_t bufSize, | ||
| 67 | + const char* id, const char* name) | ||
| 68 | +{ | ||
| 69 | + (void)snprintf(buf, bufSize, "%s %s", id, name); | ||
| 70 | +} | ||
| 71 | +} // namespace internal | ||
| 72 | + | ||
| 73 | +template<typename RunnerType, typename CaseType, const CaseType* Cases, const uint32_t& CaseCount> | ||
| 74 | +RmTestSliceBase<RunnerType, CaseType, Cases, CaseCount>::RmTestSliceBase(const char* title) | ||
| 75 | + : ComponentDemoSlice(title) {} | ||
| 76 | + | ||
| 77 | +template<typename RunnerType, typename CaseType, const CaseType* Cases, const uint32_t& CaseCount> | ||
| 78 | +RmTestSliceBase<RunnerType, CaseType, Cases, CaseCount>::~RmTestSliceBase() | ||
| 79 | +{ | ||
| 80 | + if (runner_ != nullptr) { | ||
| 81 | + delete runner_; | ||
| 82 | + runner_ = nullptr; | ||
| 83 | + } | ||
| 84 | + if (backToListBtn_ != nullptr) { | ||
| 85 | + backToListBtn_->SetOnClickListener(nullptr); | ||
| 86 | + } | ||
| 87 | + delete backListener_; | ||
| 88 | + backListener_ = nullptr; | ||
| 89 | + if (adapter_ != nullptr) { | ||
| 90 | + delete adapter_; | ||
| 91 | + adapter_ = nullptr; | ||
| 92 | + } | ||
| 93 | + caseList_ = nullptr; | ||
| 94 | + backToListBtn_ = nullptr; | ||
| 95 | +} | ||
| 96 | + | ||
| 97 | +template<typename RunnerType, typename CaseType, const CaseType* Cases, const uint32_t& CaseCount> | ||
| 98 | +void RmTestSliceBase<RunnerType, CaseType, Cases, CaseCount>::SetupContent(UIViewGroup* content) | ||
| 99 | +{ | ||
| 100 | + content_ = content; | ||
| 101 | + int16_t screenW = Screen::GetInstance().GetWidth(); | ||
| 102 | + int16_t screenH = Screen::GetInstance().GetHeight(); | ||
| 103 | + | ||
| 104 | + adapter_ = new (std::nothrow) RmCaseListAdapter( | ||
| 105 | + CaseCount, | ||
| 106 | + [](uint32_t index, char* buf, uint32_t bufSize) { | ||
| 107 | + internal::FormatCaseTitle(index, buf, bufSize, Cases[index].id, Cases[index].name); | ||
| 108 | + }, | ||
| 109 | + [this](uint32_t index) { EnterCase(index); }); | ||
| 110 | + if (adapter_ == nullptr) { | ||
| 111 | + printf("[RmTestSlice] create case list adapter failed\n"); | ||
| 112 | + return; | ||
| 113 | + } | ||
| 114 | + | ||
| 115 | + caseList_ = GraphicCreateView<UIList>(content); | ||
| 116 | + if (caseList_ == nullptr) { | ||
| 117 | + printf("[RmTestSlice] create case list failed\n"); | ||
| 118 | + delete adapter_; | ||
| 119 | + adapter_ = nullptr; | ||
| 120 | + return; | ||
| 121 | + } | ||
| 122 | + caseList_->SetPosition(RM_GROUP_LIST_MARGIN, RM_GROUP_LIST_TOP, | ||
| 123 | + screenW - RM_GROUP_LIST_MARGIN * 2, | ||
| 124 | + screenH - headHeight - RM_GROUP_LIST_TOP * 2); | ||
| 125 | + caseList_->SetThrowDrag(true); | ||
| 126 | + caseList_->SetReboundSize(50); | ||
| 127 | + caseList_->SetYScrollBarVisible(true); | ||
| 128 | + caseList_->SetAdapter(adapter_); | ||
| 129 | + | ||
| 130 | + backToListBtn_ = GraphicCreateView<UILabelButton>(content); | ||
| 131 | + if (backToListBtn_ == nullptr) { | ||
| 132 | + printf("[RmTestSlice] create back button failed\n"); | ||
| 133 | + GraphicDeleteViewTree(caseList_); | ||
| 134 | + caseList_ = nullptr; | ||
| 135 | + delete adapter_; | ||
| 136 | + adapter_ = nullptr; | ||
| 137 | + return; | ||
| 138 | + } | ||
| 139 | + backToListBtn_->SetPosition(screenW - BACK_BTN_W - BACK_BTN_RIGHT_MARGIN, BACK_BTN_TOP, | ||
| 140 | + BACK_BTN_W, BACK_BTN_H); | ||
| 141 | + backToListBtn_->SetText("返回列表"); | ||
| 142 | + backToListBtn_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, BACK_BTN_FONT_SIZE); | ||
| 143 | + backToListBtn_->SetStyleForState(STYLE_BORDER_RADIUS, 12, UIButton::RELEASED); | ||
| 144 | + backToListBtn_->SetStyleForState(STYLE_BORDER_RADIUS, 12, UIButton::PRESSED); | ||
| 145 | + backToListBtn_->SetStyleForState(STYLE_BORDER_RADIUS, 12, UIButton::INACTIVE); | ||
| 146 | + backToListBtn_->SetStyleForState(STYLE_BACKGROUND_COLOR, RM_BUTTON_STYLE_BACKGROUND_COLOR_VALUE, UIButton::RELEASED); | ||
| 147 | + backToListBtn_->SetStyleForState(STYLE_BACKGROUND_COLOR, RM_BUTTON_STYLE_BACKGROUND_COLOR_VALUE, UIButton::PRESSED); | ||
| 148 | + backToListBtn_->SetStyleForState(STYLE_BACKGROUND_COLOR, RM_BUTTON_STYLE_BACKGROUND_COLOR_VALUE, UIButton::INACTIVE); | ||
| 149 | + backToListBtn_->SetVisible(false); | ||
| 150 | + backListener_ = new (std::nothrow) RmClickListener([this](UIView& view, const ClickEvent& event) -> bool { | ||
| 151 | + (void)view; | ||
| 152 | + (void)event; | ||
| 153 | + BackToList(); | ||
| 154 | + return true; | ||
| 155 | + }); | ||
| 156 | + if (backListener_ == nullptr) { | ||
| 157 | + printf("[RmTestSlice] create back listener failed\n"); | ||
| 158 | + backToListBtn_->SetOnClickListener(nullptr); | ||
| 159 | + GraphicDeleteViewTree(caseList_); | ||
| 160 | + caseList_ = nullptr; | ||
| 161 | + backToListBtn_->SetOnClickListener(nullptr); | ||
| 162 | + GraphicDeleteViewTree(backToListBtn_); | ||
| 163 | + backToListBtn_ = nullptr; | ||
| 164 | + delete adapter_; | ||
| 165 | + adapter_ = nullptr; | ||
| 166 | + return; | ||
| 167 | + } | ||
| 168 | + backToListBtn_->SetOnClickListener(backListener_); | ||
| 169 | +} | ||
| 170 | + | ||
| 171 | +template<typename RunnerType, typename CaseType, const CaseType* Cases, const uint32_t& CaseCount> | ||
| 172 | +void RmTestSliceBase<RunnerType, CaseType, Cases, CaseCount>::EnterCase(uint32_t index) | ||
| 173 | +{ | ||
| 174 | + if ((caseList_ == nullptr) || (runner_ != nullptr) || (index >= CaseCount) || (content_ == nullptr)) { | ||
| 175 | + return; | ||
| 176 | + } | ||
| 177 | + caseList_->SetVisible(false); | ||
| 178 | + runner_ = new (std::nothrow) RunnerType(&Cases[index]); | ||
| 179 | + if (runner_ == nullptr) { | ||
| 180 | + printf("[RmTestSlice] create runner failed\n"); | ||
| 181 | + caseList_->SetVisible(true); | ||
| 182 | + return; | ||
| 183 | + } | ||
| 184 | + runner_->Build(content_); | ||
| 185 | + backToListBtn_->SetVisible(true); | ||
| 186 | + content_->Invalidate(); | ||
| 187 | +} | ||
| 188 | + | ||
| 189 | +template<typename RunnerType, typename CaseType, const CaseType* Cases, const uint32_t& CaseCount> | ||
| 190 | +void RmTestSliceBase<RunnerType, CaseType, Cases, CaseCount>::BackToList() | ||
| 191 | +{ | ||
| 192 | + if ((runner_ == nullptr) || (caseList_ == nullptr) || (content_ == nullptr)) { | ||
| 193 | + return; | ||
| 194 | + } | ||
| 195 | + delete runner_; | ||
| 196 | + runner_ = nullptr; | ||
| 197 | + backToListBtn_->SetVisible(false); | ||
| 198 | + caseList_->SetVisible(true); | ||
| 199 | + content_->Invalidate(); | ||
| 200 | +} | ||
| 201 | + | ||
| 202 | +} // namespace OHOS | ||
| 203 | +#endif // RM_TEST_SLICE_BASE_H | ||
| @@ -0,0 +1,249 @@ | |||
| 1 | +/* | ||
| 2 | + * Copyright (c) 2026 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 "rm_test_utils.h" | ||
| 17 | +#include <cstdio> | ||
| 18 | +#include <new> | ||
| 19 | +#include "common/screen.h" | ||
| 20 | +#include "graphic_utils.h" | ||
| 21 | + | ||
| 22 | +namespace OHOS { | ||
| 23 | + | ||
| 24 | +// RmClickListener | ||
| 25 | +RmClickListener::RmClickListener(std::function<bool(UIView&, const ClickEvent&)> fn) : fn_(std::move(fn)) {} | ||
| 26 | + | ||
| 27 | +RmClickListener::~RmClickListener() {} | ||
| 28 | + | ||
| 29 | +bool RmClickListener::OnClick(UIView& view, const ClickEvent& event) | ||
| 30 | +{ | ||
| 31 | + return fn_(view, event); | ||
| 32 | +} | ||
| 33 | + | ||
| 34 | +// RmStressDriver | ||
| 35 | +RmStressDriver::RmStressDriver() : animator_(this, this, STEP_PERIOD_MS, true) {} | ||
| 36 | + | ||
| 37 | +RmStressDriver::~RmStressDriver() | ||
| 38 | +{ | ||
| 39 | + animator_.Stop(); | ||
| 40 | +} | ||
| 41 | + | ||
| 42 | +void RmStressDriver::SetStepHandler(const std::function<void(uint32_t iter)>& handler) | ||
| 43 | +{ | ||
| 44 | + handler_ = handler; | ||
| 45 | +} | ||
| 46 | + | ||
| 47 | +void RmStressDriver::Start() | ||
| 48 | +{ | ||
| 49 | + iter_ = 0; | ||
| 50 | + animator_.Start(); | ||
| 51 | +} | ||
| 52 | + | ||
| 53 | +void RmStressDriver::Stop() | ||
| 54 | +{ | ||
| 55 | + animator_.Stop(); | ||
| 56 | +} | ||
| 57 | + | ||
| 58 | +bool RmStressDriver::IsRunning() const | ||
| 59 | +{ | ||
| 60 | + return animator_.GetState() == Animator::START; | ||
| 61 | +} | ||
| 62 | + | ||
| 63 | +void RmStressDriver::Callback(UIView* view) | ||
| 64 | +{ | ||
| 65 | + (void)view; | ||
| 66 | + if (handler_ != nullptr) { | ||
| 67 | + handler_(iter_++); | ||
| 68 | + } | ||
| 69 | +} | ||
| 70 | + | ||
| 71 | +// RmCaseListAdapter | ||
| 72 | +RmCaseListAdapter::ItemClickListener::ItemClickListener(std::function<void(uint32_t)> cb, uint32_t index) | ||
| 73 | + : cb_(std::move(cb)), index_(index) | ||
| 74 | +{ | ||
| 75 | +} | ||
| 76 | + | ||
| 77 | +RmCaseListAdapter::ItemClickListener::~ItemClickListener() {} | ||
| 78 | + | ||
| 79 | +bool RmCaseListAdapter::ItemClickListener::OnClick(UIView& view, const ClickEvent& event) | ||
| 80 | +{ | ||
| 81 | + (void)view; | ||
| 82 | + (void)event; | ||
| 83 | + if (cb_ != nullptr) { | ||
| 84 | + cb_(index_); | ||
| 85 | + } | ||
| 86 | + return true; | ||
| 87 | +} | ||
| 88 | + | ||
| 89 | +namespace { | ||
| 90 | +constexpr int16_t GROUP_LIST_MARGIN = RM_GROUP_LIST_MARGIN; | ||
| 91 | +constexpr int16_t GROUP_LIST_TOP = RM_GROUP_LIST_TOP; | ||
| 92 | +constexpr uint16_t ITEM_HEIGHT = RM_ITEM_HEIGHT; | ||
| 93 | +constexpr uint16_t ITEM_BORDER = RM_ITEM_BORDER; | ||
| 94 | +constexpr uint16_t ITEM_RADIUS = RM_ITEM_RADIUS; | ||
| 95 | +constexpr int16_t ITEM_TEXT_X = RM_ITEM_TEXT_X; | ||
| 96 | +constexpr uint16_t ITEM_FONT_SIZE = RM_ITEM_FONT_SIZE; | ||
| 97 | +} // namespace | ||
| 98 | + | ||
| 99 | +RmCaseListAdapter::RmCaseListAdapter(uint32_t count, TitleProvider provider, | ||
| 100 | + std::function<void(uint32_t index)> onClick) | ||
| 101 | + : count_(count), provider_(std::move(provider)), onClick_(std::move(onClick)), titles_(nullptr), | ||
| 102 | + listeners_(nullptr), views_(nullptr) | ||
| 103 | +{ | ||
| 104 | + if (count_ == 0) { | ||
| 105 | + return; | ||
| 106 | + } | ||
| 107 | + | ||
| 108 | + titles_ = new (std::nothrow) char*[count_]; | ||
| 109 | + if (titles_ == nullptr) { | ||
| 110 | + count_ = 0; | ||
| 111 | + return; | ||
| 112 | + } | ||
| 113 | + for (uint32_t i = 0; i < count_; i++) { | ||
| 114 | + titles_[i] = nullptr; | ||
| 115 | + } | ||
| 116 | + | ||
| 117 | + listeners_ = new (std::nothrow) ItemClickListener*[count_]; | ||
| 118 | + if (listeners_ == nullptr) { | ||
| 119 | + count_ = 0; | ||
| 120 | + return; | ||
| 121 | + } | ||
| 122 | + for (uint32_t i = 0; i < count_; i++) { | ||
| 123 | + listeners_[i] = nullptr; | ||
| 124 | + } | ||
| 125 | + | ||
| 126 | + views_ = new (std::nothrow) UIView*[count_]; | ||
| 127 | + if (views_ == nullptr) { | ||
| 128 | + count_ = 0; | ||
| 129 | + return; | ||
| 130 | + } | ||
| 131 | + for (uint32_t i = 0; i < count_; i++) { | ||
| 132 | + views_[i] = nullptr; | ||
| 133 | + } | ||
| 134 | + | ||
| 135 | + for (uint32_t i = 0; i < count_; i++) { | ||
| 136 | + titles_[i] = new (std::nothrow) char[TITLE_BUF_SIZE]; | ||
| 137 | + if (titles_[i] != nullptr) { | ||
| 138 | + provider_(i, titles_[i], TITLE_BUF_SIZE); | ||
| 139 | + } | ||
| 140 | + listeners_[i] = new (std::nothrow) ItemClickListener(onClick_, i); | ||
| 141 | + } | ||
| 142 | +} | ||
| 143 | + | ||
| 144 | +RmCaseListAdapter::~RmCaseListAdapter() | ||
| 145 | +{ | ||
| 146 | + if (views_ != nullptr) { | ||
| 147 | + for (uint32_t i = 0; i < count_; i++) { | ||
| 148 | + if (views_[i] != nullptr) { | ||
| 149 | + views_[i]->SetOnClickListener(nullptr); | ||
| 150 | + } | ||
| 151 | + } | ||
| 152 | + } | ||
| 153 | + if (listeners_ != nullptr) { | ||
| 154 | + for (uint32_t i = 0; i < count_; i++) { | ||
| 155 | + delete listeners_[i]; | ||
| 156 | + listeners_[i] = nullptr; | ||
| 157 | + } | ||
| 158 | + delete[] listeners_; | ||
| 159 | + listeners_ = nullptr; | ||
| 160 | + } | ||
| 161 | + if (views_ != nullptr) { | ||
| 162 | + delete[] views_; | ||
| 163 | + views_ = nullptr; | ||
| 164 | + } | ||
| 165 | + if (titles_ != nullptr) { | ||
| 166 | + for (uint32_t i = 0; i < count_; i++) { | ||
| 167 | + delete[] titles_[i]; | ||
| 168 | + titles_[i] = nullptr; | ||
| 169 | + } | ||
| 170 | + delete[] titles_; | ||
| 171 | + titles_ = nullptr; | ||
| 172 | + } | ||
| 173 | +} | ||
| 174 | + | ||
| 175 | +uint16_t RmCaseListAdapter::GetCount() | ||
| 176 | +{ | ||
| 177 | + return static_cast<uint16_t>(count_); | ||
| 178 | +} | ||
| 179 | + | ||
| 180 | +UIView* RmCaseListAdapter::GetView(UIView* inView, int16_t index) | ||
| 181 | +{ | ||
| 182 | + if ((index < 0) || (index >= static_cast<int16_t>(count_))) { | ||
| 183 | + return nullptr; | ||
| 184 | + } | ||
| 185 | + UILabelButton* item = nullptr; | ||
| 186 | + if (inView == nullptr) { | ||
| 187 | + item = new (std::nothrow) UILabelButton(); | ||
| 188 | + if (item == nullptr) { | ||
| 189 | + return nullptr; | ||
| 190 | + } | ||
| 191 | + item->SetPosition(0, 0); | ||
| 192 | + item->SetStyleForState(STYLE_BORDER_WIDTH, ITEM_BORDER, UIButton::RELEASED); | ||
| 193 | + item->SetStyleForState(STYLE_BORDER_WIDTH, ITEM_BORDER, UIButton::PRESSED); | ||
| 194 | + item->SetStyleForState(STYLE_BORDER_WIDTH, ITEM_BORDER, UIButton::INACTIVE); | ||
| 195 | + item->SetStyleForState(STYLE_BORDER_OPA, 0, UIButton::RELEASED); | ||
| 196 | + item->SetStyleForState(STYLE_BORDER_OPA, 0, UIButton::PRESSED); | ||
| 197 | + item->SetStyleForState(STYLE_BORDER_OPA, 0, UIButton::INACTIVE); | ||
| 198 | + item->Resize(Screen::GetInstance().GetWidth() - GROUP_LIST_MARGIN * 2 - ITEM_BORDER * 2, ITEM_HEIGHT); | ||
| 199 | + } else { | ||
| 200 | + item = static_cast<UILabelButton*>(inView); | ||
| 201 | + // 视图被回收时,先清除旧 listener 的绑定,避免旧条目上的 listener 悬空 | ||
| 202 | + if (views_ != nullptr) { | ||
| 203 | + for (uint32_t i = 0; i < count_; i++) { | ||
| 204 | + if (views_[i] == item) { | ||
| 205 | + views_[i] = nullptr; | ||
| 206 | + break; | ||
| 207 | + } | ||
| 208 | + } | ||
| 209 | + } | ||
| 210 | + } | ||
| 211 | + | ||
| 212 | + if (listeners_[index] != nullptr) { | ||
| 213 | + item->SetOnClickListener(listeners_[index]); | ||
| 214 | + } | ||
| 215 | + if (titles_[index] != nullptr) { | ||
| 216 | + item->SetText(titles_[index]); | ||
| 217 | + item->SetViewId(titles_[index]); | ||
| 218 | + } | ||
| 219 | + item->SetFont(DEFAULT_VECTOR_FONT_FILENAME, ITEM_FONT_SIZE); | ||
| 220 | + item->SetViewIndex(index); | ||
| 221 | + item->SetAlign(TEXT_ALIGNMENT_LEFT); | ||
| 222 | + item->SetLabelPosition(ITEM_TEXT_X, 0); | ||
| 223 | + item->SetImageSrc(GRAPHIC_IMAGE_FORWARD, GRAPHIC_IMAGE_FORWARD); | ||
| 224 | + item->SetImagePosition(item->GetWidth() - RM_TEXT_DISTANCE_TO_LEFT_SIDE, ITEM_HEIGHT / 2 - 18); | ||
| 225 | + item->SetStyleForState(STYLE_BORDER_RADIUS, ITEM_RADIUS, UIButton::RELEASED); | ||
| 226 | + item->SetStyleForState(STYLE_BORDER_RADIUS, ITEM_RADIUS, UIButton::PRESSED); | ||
| 227 | + item->SetStyleForState(STYLE_BORDER_RADIUS, ITEM_RADIUS, UIButton::INACTIVE); | ||
| 228 | + item->SetStyleForState(STYLE_BACKGROUND_COLOR, RM_BUTTON_STYLE_BACKGROUND_COLOR_VALUE, UIButton::RELEASED); | ||
| 229 | + item->SetStyleForState(STYLE_BACKGROUND_COLOR, RM_BUTTON_STYLE_BACKGROUND_COLOR_VALUE, UIButton::PRESSED); | ||
| 230 | + item->SetStyleForState(STYLE_BACKGROUND_COLOR, RM_BUTTON_STYLE_BACKGROUND_COLOR_VALUE, UIButton::INACTIVE); | ||
| 231 | + if (views_ != nullptr) { | ||
| 232 | + views_[index] = item; | ||
| 233 | + } | ||
| 234 | + return item; | ||
| 235 | +} | ||
| 236 | + | ||
| 237 | +int16_t RmCaseListAdapter::GetItemWidthWithMargin(int16_t index) | ||
| 238 | +{ | ||
| 239 | + (void)index; | ||
| 240 | + return Screen::GetInstance().GetWidth() - GROUP_LIST_MARGIN * 2; | ||
| 241 | +} | ||
| 242 | + | ||
| 243 | +int16_t RmCaseListAdapter::GetItemHeightWithMargin(int16_t index) | ||
| 244 | +{ | ||
| 245 | + (void)index; | ||
| 246 | + return ITEM_HEIGHT + ITEM_BORDER * 2; | ||
| 247 | +} | ||
| 248 | + | ||
| 249 | +} // namespace OHOS | ||
| @@ -0,0 +1,133 @@ | |||
| 1 | +/* | ||
| 2 | + * Copyright (c) 2026 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 | +#ifndef RM_TEST_UTILS_H | ||
| 17 | +#define RM_TEST_UTILS_H | ||
| 18 | + | ||
| 19 | +#include <functional> | ||
| 20 | +#include "components/ui_label_button.h" | ||
| 21 | +#include "components/ui_list.h" | ||
| 22 | +#include "components/abstract_adapter.h" | ||
| 23 | +#include "animator/animator.h" | ||
| 24 | + | ||
| 25 | +namespace OHOS { | ||
| 26 | + | ||
| 27 | +/** | ||
| 28 | + * @brief 从 ui_test.h 抽取的 RM 验收页面通用常量。 | ||
| 29 | + */ | ||
| 30 | +constexpr uint16_t RM_TITLE_LABEL_DEFAULT_HEIGHT = 29; | ||
| 31 | +constexpr uint16_t RM_FONT_DEFAULT_SIZE = 20; | ||
| 32 | +constexpr uint16_t RM_VIEW_DISTANCE_TO_LEFT_SIDE = 48; | ||
| 33 | +constexpr uint16_t RM_VIEW_DISTANCE_TO_TOP_SIDE = 48; | ||
| 34 | +constexpr uint16_t RM_VIEW_DISTANCE_TO_LEFT_SIDE2 = 24; | ||
| 35 | +constexpr uint16_t RM_TEXT_DISTANCE_TO_LEFT_SIDE = 48; | ||
| 36 | +constexpr uint16_t RM_TEXT_DISTANCE_TO_TOP_SIDE = 11; | ||
| 37 | +constexpr uint16_t RM_HALF_OPA_OPAQUE = OPA_OPAQUE / 2; | ||
| 38 | +constexpr uint16_t RM_VIEW_STYLE_BORDER_WIDTH = 2; | ||
| 39 | +constexpr uint16_t RM_VIEW_STYLE_BORDER_RADIUS = 8; | ||
| 40 | +constexpr uint16_t RM_BUTTON_LABEL_SIZE = 16; | ||
| 41 | +constexpr uint8_t RM_BUTTON_STYLE_BORDER_RADIUS_VALUE = 20; | ||
| 42 | +constexpr uint32_t RM_BUTTON_STYLE_BACKGROUND_COLOR_VALUE = 0xFF333333; | ||
| 43 | +constexpr uint32_t RM_BUTTON_STYLE_BACKGROUND_COLOR_PRESS = 0xFF2D2D2D; | ||
| 44 | +constexpr int16_t RM_BACK_BUTTON_HEIGHT = 64; | ||
| 45 | + | ||
| 46 | +// 共享的用例列表布局常量 | ||
| 47 | +constexpr int16_t RM_GROUP_LIST_MARGIN = 24; | ||
| 48 | +constexpr int16_t RM_GROUP_LIST_TOP = 8; | ||
| 49 | +constexpr uint16_t RM_ITEM_HEIGHT = 64; | ||
| 50 | +constexpr uint16_t RM_ITEM_BORDER = 4; | ||
| 51 | +constexpr uint16_t RM_ITEM_RADIUS = 12; | ||
| 52 | +constexpr int16_t RM_ITEM_TEXT_X = 24; | ||
| 53 | +constexpr uint16_t RM_ITEM_FONT_SIZE = 24; | ||
| 54 | + | ||
| 55 | +/** | ||
| 56 | + * @brief 将 std::function 包装为 UIView::OnClickListener。 | ||
| 57 | + */ | ||
| 58 | +class RmClickListener : public UIView::OnClickListener { | ||
| 59 | +public: | ||
| 60 | + explicit RmClickListener(std::function<bool(UIView&, const ClickEvent&)> fn); | ||
| 61 | + ~RmClickListener() override; | ||
| 62 | + bool OnClick(UIView& view, const ClickEvent& event) override; | ||
| 63 | + | ||
| 64 | +private: | ||
| 65 | + std::function<bool(UIView&, const ClickEvent&)> fn_; | ||
| 66 | +}; | ||
| 67 | + | ||
| 68 | +/** | ||
| 69 | + * @brief RM 验收压测驱动:挂在内容容器内的不可见 UIView,用 repeat Animator 每 16ms 推进一次压测步。 | ||
| 70 | + * | ||
| 71 | + * 压测逻辑通过 SetStepHandler 注入;驱动随 DeleteChildren 一并析构,析构中停止 Animator, | ||
| 72 | + * 避免 AnimatorManager 残留。 | ||
| 73 | + */ | ||
| 74 | +class RmStressDriver : public UIView, public AnimatorCallback { | ||
| 75 | +public: | ||
| 76 | + static constexpr uint32_t STEP_PERIOD_MS = 16; | ||
| 77 | + | ||
| 78 | + RmStressDriver(); | ||
| 79 | + ~RmStressDriver() override; | ||
| 80 | + | ||
| 81 | + void SetStepHandler(const std::function<void(uint32_t iter)>& handler); | ||
| 82 | + void Start(); | ||
| 83 | + void Stop(); | ||
| 84 | + bool IsRunning() const; | ||
| 85 | + | ||
| 86 | + void Callback(UIView* view) override; | ||
| 87 | + void OnStop(UIView& view) override {} | ||
| 88 | + | ||
| 89 | +private: | ||
| 90 | + Animator animator_; | ||
| 91 | + std::function<void(uint32_t iter)> handler_; | ||
| 92 | + uint32_t iter_ = 0; | ||
| 93 | +}; | ||
| 94 | + | ||
| 95 | +/** | ||
| 96 | + * @brief UIList 用例列表适配器:一行一个用例(id + name),点击回调进入对应用例。 | ||
| 97 | + */ | ||
| 98 | +class RmCaseListAdapter : public AbstractAdapter { | ||
| 99 | +public: | ||
| 100 | + using TitleProvider = std::function<void(uint32_t index, char* buf, uint32_t bufSize)>; | ||
| 101 | + | ||
| 102 | + RmCaseListAdapter(uint32_t count, TitleProvider provider, std::function<void(uint32_t index)> onClick); | ||
| 103 | + ~RmCaseListAdapter() override; | ||
| 104 | + | ||
| 105 | + uint16_t GetCount() override; | ||
| 106 | + UIView* GetView(UIView* inView, int16_t index) override; | ||
| 107 | + int16_t GetItemWidthWithMargin(int16_t index) override; | ||
| 108 | + int16_t GetItemHeightWithMargin(int16_t index) override; | ||
| 109 | + | ||
| 110 | +private: | ||
| 111 | + class ItemClickListener : public UIView::OnClickListener { | ||
| 112 | + public: | ||
| 113 | + ItemClickListener(std::function<void(uint32_t)> cb, uint32_t index); | ||
| 114 | + ~ItemClickListener() override; | ||
| 115 | + bool OnClick(UIView& view, const ClickEvent& event) override; | ||
| 116 | + | ||
| 117 | + private: | ||
| 118 | + std::function<void(uint32_t)> cb_; | ||
| 119 | + uint32_t index_; | ||
| 120 | + }; | ||
| 121 | + | ||
| 122 | + static constexpr uint32_t TITLE_BUF_SIZE = 96; | ||
| 123 | + | ||
| 124 | + uint32_t count_; | ||
| 125 | + TitleProvider provider_; | ||
| 126 | + std::function<void(uint32_t index)> onClick_; | ||
| 127 | + char** titles_; | ||
| 128 | + ItemClickListener** listeners_; | ||
| 129 | + UIView** views_; | ||
| 130 | +}; | ||
| 131 | + | ||
| 132 | +} // namespace OHOS | ||
| 133 | +#endif // RM_TEST_UTILS_H | ||
| @@ -0,0 +1,163 @@ | |||
| 1 | +/* | ||
| 2 | + * Copyright (c) 2026 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 | +#ifndef SCROLLER_RM_CASE_VIEW_H | ||
| 17 | +#define SCROLLER_RM_CASE_VIEW_H | ||
| 18 | + | ||
| 19 | +#include "components/ui_label.h" | ||
| 20 | +#include "components/ui_label_button.h" | ||
| 21 | +#include "components/ui_scroll_view.h" | ||
| 22 | +#include "components/ui_view_group.h" | ||
| 23 | +#include "components/ui_arc_scroll_bar.h" | ||
| 24 | +#include "graphic_config.h" | ||
| 25 | +#include "rm_test_utils.h" | ||
| 26 | + | ||
| 27 | +namespace OHOS { | ||
| 28 | +#if GRAPHIC_ENABLE_SCROLL_FLAG | ||
| 29 | + | ||
| 30 | +enum ScrollerRmCaseType : uint8_t { | ||
| 31 | + SC_CASE_DEMO, | ||
| 32 | + SC_CASE_RESET, | ||
| 33 | + SC_CASE_LATE_VISIBLE, | ||
| 34 | + SC_CASE_UPDATE, | ||
| 35 | + SC_CASE_PLACEHOLDER, | ||
| 36 | + SC_CASE_MANY_ITEMS, | ||
| 37 | + SC_CASE_STRESS_UPDATE, | ||
| 38 | + SC_CASE_STRESS_SCROLL, | ||
| 39 | + SC_CASE_XY_SCROLL, | ||
| 40 | +}; | ||
| 41 | + | ||
| 42 | +struct ScrollerRmCase { | ||
| 43 | + const char* id; | ||
| 44 | + const char* name; | ||
| 45 | + const char* expect; | ||
| 46 | + ScrollerRmCaseType type; | ||
| 47 | + bool wholeStyle; | ||
| 48 | + bool setWidth; | ||
| 49 | + uint16_t width; | ||
| 50 | + bool setColor; | ||
| 51 | + uint32_t colorRgb; | ||
| 52 | + bool setRadius; | ||
| 53 | + uint16_t radius; | ||
| 54 | + bool setMinLen; | ||
| 55 | + uint16_t minLen; | ||
| 56 | + bool setOpa; | ||
| 57 | + uint8_t opacity; | ||
| 58 | + bool longContent; | ||
| 59 | + bool smallViewport; | ||
| 60 | + bool hScroll; | ||
| 61 | +}; | ||
| 62 | + | ||
| 63 | +extern const ScrollerRmCase g_scrollerRmCases[]; | ||
| 64 | +extern const uint32_t g_scrollerRmCaseNum; | ||
| 65 | + | ||
| 66 | +/** | ||
| 67 | + * @brief 测试用 UIScrollView:暴露 GetAllChildRelativeRect 给 ArcScrollBarHostView 使用。 | ||
| 68 | + */ | ||
| 69 | +class TestUIScrollView : public UIScrollView { | ||
| 70 | +public: | ||
| 71 | + Rect GetAllChildRelativeRect() const | ||
| 72 | + { | ||
| 73 | + return UIViewGroup::GetAllChildRelativeRect(); | ||
| 74 | + } | ||
| 75 | +}; | ||
| 76 | + | ||
| 77 | +/** | ||
| 78 | + * @brief 老代码路径对照用 UIArcScrollBar:把受保护的轨道线宽暴露给测试侧。 | ||
| 79 | + */ | ||
| 80 | +class LegacyTrackArcScrollBar : public UIArcScrollBar { | ||
| 81 | +public: | ||
| 82 | + void SetTrackLineWidth(int16_t width) | ||
| 83 | + { | ||
| 84 | + backgroundStyle_->lineWidth_ = width; | ||
| 85 | + } | ||
| 86 | +}; | ||
| 87 | + | ||
| 88 | +/** | ||
| 89 | + * @brief 矩形屏下承载 UIArcScrollBar 的宿主视图,并同步目标 UIScrollView 的滚动位置。 | ||
| 90 | + */ | ||
| 91 | +class ArcScrollBarHostView : public UIView, public AnimatorCallback { | ||
| 92 | +public: | ||
| 93 | + ArcScrollBarHostView(); | ||
| 94 | + ~ArcScrollBarHostView() override; | ||
| 95 | + | ||
| 96 | + void InitArcScrollBar(); | ||
| 97 | + void InitArcScrollBarLegacy(); | ||
| 98 | + UIArcScrollBar* GetArcBar() const; | ||
| 99 | + void BindScrollView(TestUIScrollView* scroll); | ||
| 100 | + | ||
| 101 | + void Callback(UIView* view) override; | ||
| 102 | + | ||
| 103 | +protected: | ||
| 104 | + void OnDraw(BufferInfo& gfxDstBuffer, const Rect& invalidatedArea) override; | ||
| 105 | + | ||
| 106 | +private: | ||
| 107 | + UIArcScrollBar* arcBar_; | ||
| 108 | + TestUIScrollView* targetScroll_; | ||
| 109 | + Animator animator_; | ||
| 110 | +}; | ||
| 111 | + | ||
| 112 | +/** | ||
| 113 | + * @brief Scroller RM 单个用例的视图构建与清理器。 | ||
| 114 | + */ | ||
| 115 | +class ScrollerRmCaseRunner { | ||
| 116 | +public: | ||
| 117 | + explicit ScrollerRmCaseRunner(const ScrollerRmCase* testCase); | ||
| 118 | + ~ScrollerRmCaseRunner(); | ||
| 119 | + | ||
| 120 | + UIViewGroup* Build(UIViewGroup* content); | ||
| 121 | + | ||
| 122 | +private: | ||
| 123 | + static constexpr uint32_t READBACK_LINES = 2; | ||
| 124 | + static constexpr uint32_t CFG_LINES = 2; | ||
| 125 | + | ||
| 126 | + UIScrollView* CreateDemoScroll(); | ||
| 127 | + void CreateCompareScroll(); | ||
| 128 | + void CreateConfigLabels(); | ||
| 129 | + void CreateReadbackLabels(); | ||
| 130 | + void RefreshReadback(); | ||
| 131 | + void ApplyCaseStyle(UIScrollView* scroll); | ||
| 132 | + void SetStatusText(const char* text); | ||
| 133 | + void AddClickListener(UIView* view, std::function<bool(UIView&, const ClickEvent&)> fn); | ||
| 134 | + | ||
| 135 | + void ShowCase(); | ||
| 136 | + void ShowResetCase(); | ||
| 137 | + void ShowLateVisibleCase(); | ||
| 138 | + void ShowUpdateCase(); | ||
| 139 | + void ShowPlaceholderCase(); | ||
| 140 | + void ShowStressUpdateCase(); | ||
| 141 | + void ShowStressScrollCase(); | ||
| 142 | + | ||
| 143 | + static constexpr uint8_t MAX_LISTENERS = 8; | ||
| 144 | + | ||
| 145 | + const ScrollerRmCase* case_; | ||
| 146 | + UIViewGroup* container_; | ||
| 147 | + UIScrollView* demoScroll_; | ||
| 148 | + UILabel* cfgLabels_[CFG_LINES]; | ||
| 149 | + UILabel* readbackLabels_[READBACK_LINES]; | ||
| 150 | + UILabel* statusLabel_; | ||
| 151 | + uint32_t updateCount_; | ||
| 152 | + | ||
| 153 | + struct ListenerEntry { | ||
| 154 | + UIView* view; | ||
| 155 | + RmClickListener* listener; | ||
| 156 | + }; | ||
| 157 | + ListenerEntry listeners_[MAX_LISTENERS]; | ||
| 158 | + uint8_t listenerCount_; | ||
| 159 | +}; | ||
| 160 | + | ||
| 161 | +#endif // GRAPHIC_ENABLE_SCROLL_FLAG | ||
| 162 | +} // namespace OHOS | ||
| 163 | +#endif // SCROLLER_RM_CASE_VIEW_H | ||
| @@ -0,0 +1,25 @@ | |||
| 1 | +/* | ||
| 2 | + * Copyright (c) 2026 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 "scroller_rm_test_slice.h" | ||
| 17 | + | ||
| 18 | +#if GRAPHIC_ENABLE_SCROLL_FLAG | ||
| 19 | +namespace OHOS { | ||
| 20 | +REGISTER_AS(ScrollerRmTestSlice) | ||
| 21 | + | ||
| 22 | +ScrollerRmTestSlice::ScrollerRmTestSlice() : RmTestSliceBase("Scroller RM验收") {} | ||
| 23 | + | ||
| 24 | +} // namespace OHOS | ||
| 25 | +#endif // GRAPHIC_ENABLE_SCROLL_FLAG | ||
| @@ -0,0 +1,31 @@ | |||
| 1 | +/* | ||
| 2 | + * Copyright (c) 2026 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 | +#ifndef SCROLLER_RM_TEST_SLICE_H | ||
| 17 | +#define SCROLLER_RM_TEST_SLICE_H | ||
| 18 | + | ||
| 19 | +#include "rm_test_slice_base.h" | ||
| 20 | +#include "scroller_rm_case_view.h" | ||
| 21 | + | ||
| 22 | +#if GRAPHIC_ENABLE_SCROLL_FLAG | ||
| 23 | +namespace OHOS { | ||
| 24 | +class ScrollerRmTestSlice : public RmTestSliceBase<ScrollerRmCaseRunner, ScrollerRmCase, | ||
| 25 | + g_scrollerRmCases, g_scrollerRmCaseNum> { | ||
| 26 | +public: | ||
| 27 | + ScrollerRmTestSlice(); | ||
| 28 | +}; | ||
| 29 | +} // namespace OHOS | ||
| 30 | +#endif // GRAPHIC_ENABLE_SCROLL_FLAG | ||
| 31 | +#endif // SCROLLER_RM_TEST_SLICE_H | ||
| @@ -0,0 +1,589 @@ | |||
| 1 | +/* | ||
| 2 | + * Copyright (c) 2026 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 "slider_rm_case_view.h" | ||
| 17 | + | ||
| 18 | +#if GRAPHIC_ENABLE_SLIDER_FLAG | ||
| 19 | +#include <cstdio> | ||
| 20 | +#include <cstdlib> | ||
| 21 | +#include <new> | ||
| 22 | +#include "components/ui_edit_text.h" | ||
| 23 | +#include "events/click_event.h" | ||
| 24 | +#include "graphic_utils.h" | ||
| 25 | + | ||
| 26 | +namespace OHOS { | ||
| 27 | + | ||
| 28 | +namespace { | ||
| 29 | +const int32_t g_valsEven[] = { 0, 20, 40, 60, 80, 100 }; | ||
| 30 | +constexpr uint16_t g_valsEvenNum = 6; | ||
| 31 | +const int32_t g_valsMessy[] = { 60, 20, 20, -10, 120, 100, 0 }; | ||
| 32 | +constexpr uint16_t g_valsMessyNum = 7; | ||
| 33 | +const int32_t g_valsDense[] = { 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, | ||
| 34 | + 55, 60, 65, 70, 75, 80, 85, 90, 95, 100 }; | ||
| 35 | +constexpr uint16_t g_valsDenseNum = 21; | ||
| 36 | +const int32_t g_valsOverMax[] = { 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, | ||
| 37 | + 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, | ||
| 38 | + 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96 }; | ||
| 39 | +constexpr uint16_t g_valsOverMaxNum = 33; | ||
| 40 | + | ||
| 41 | +struct SliderColorScheme { | ||
| 42 | + ColorType background; | ||
| 43 | + ColorType foreground; | ||
| 44 | + ColorType knob; | ||
| 45 | +}; | ||
| 46 | +const SliderColorScheme g_colorSchemes[] = { | ||
| 47 | + { Color::GetColorFromRGB(0x2E, 0x5A, 0x2E), Color::GetColorFromRGB(0x00, 0x7A, 0xFF), | ||
| 48 | + Color::GetColorFromRGB(0xFF, 0xA0, 0x00) }, | ||
| 49 | + { Color::GetColorFromRGB(0x50, 0x30, 0x30), Color::GetColorFromRGB(0xD8, 0x30, 0x60), | ||
| 50 | + Color::GetColorFromRGB(0x30, 0xD8, 0xC0) }, | ||
| 51 | +}; | ||
| 52 | +constexpr uint32_t g_colorSchemeNum = sizeof(g_colorSchemes) / sizeof(g_colorSchemes[0]); | ||
| 53 | + | ||
| 54 | +struct SliderGradient { | ||
| 55 | + const ColorType* bg; | ||
| 56 | + uint16_t bgCount; | ||
| 57 | + const ColorType* onTint; | ||
| 58 | + uint16_t onTintCount; | ||
| 59 | +}; | ||
| 60 | +const ColorType g_gradBg0[] = { Color::GetColorFromRGB(0x30, 0x30, 0x30), | ||
| 61 | + Color::GetColorFromRGB(0x90, 0x90, 0x90) }; | ||
| 62 | +const ColorType g_gradFg0[] = { Color::GetColorFromRGB(0x00, 0x7A, 0xFF), | ||
| 63 | + Color::GetColorFromRGB(0x00, 0xD8, 0x60), | ||
| 64 | + Color::GetColorFromRGB(0xFF, 0xD0, 0x00) }; | ||
| 65 | +const SliderGradient g_gradients[] = { | ||
| 66 | + { g_gradBg0, 2, g_gradFg0, 3 }, | ||
| 67 | +}; | ||
| 68 | + | ||
| 69 | +constexpr int16_t CONT_X = 100; | ||
| 70 | +constexpr int16_t CONT_Y = 0; | ||
| 71 | +constexpr int16_t CONT_W = 760; | ||
| 72 | +constexpr int16_t CONT_H = 400; | ||
| 73 | +constexpr uint8_t CONT_RADIUS = 16; | ||
| 74 | + | ||
| 75 | +constexpr int16_t INFO_X = 24; | ||
| 76 | +constexpr int16_t INFO_W = 712; | ||
| 77 | +constexpr uint8_t INFO_SIZE = 22; | ||
| 78 | +constexpr uint8_t HINT_SIZE = 20; | ||
| 79 | +constexpr int16_t HINT_X = 24; | ||
| 80 | +constexpr int16_t HINT_W = 712; | ||
| 81 | +constexpr int16_t HINT_H = 44; | ||
| 82 | + | ||
| 83 | +constexpr int16_t TITLE_X = 24; | ||
| 84 | +constexpr int16_t TITLE_Y = 4; | ||
| 85 | +constexpr int16_t TITLE_W = 712; | ||
| 86 | +constexpr uint8_t TITLE_H = 26; | ||
| 87 | +constexpr uint8_t TITLE_FONT = 20; | ||
| 88 | + | ||
| 89 | +constexpr int16_t SL_H_W = 600; | ||
| 90 | +constexpr int16_t SL_H_H = 92; | ||
| 91 | +constexpr int16_t SL_H_Y = 64; | ||
| 92 | +constexpr int16_t SL_MARK_TEXT_H = 132; | ||
| 93 | +constexpr int16_t SL_EXTEND_H = 180; | ||
| 94 | +constexpr int16_t SL_TRACK_H = 92; | ||
| 95 | +constexpr int16_t SL_V_W = 60; | ||
| 96 | +constexpr int16_t SL_V_H = 210; | ||
| 97 | +constexpr int16_t SL_V_Y = 42; | ||
| 98 | +constexpr int16_t SL_VAL_Y = 168; | ||
| 99 | +constexpr int16_t SL_INPUT_Y = 205; | ||
| 100 | +constexpr int16_t SL_CFG_Y = 258; | ||
| @@ -0,0 +1,104 @@ | |||
| 1 | +/* | ||
| 2 | + * Copyright (c) 2026 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 | +#ifndef SLIDER_RM_CASE_VIEW_H | ||
| 17 | +#define SLIDER_RM_CASE_VIEW_H | ||
| 18 | + | ||
| 19 | +#include "components/ui_label.h" | ||
| 20 | +#include "components/ui_label_button.h" | ||
| 21 | +#include "components/ui_slider.h" | ||
| 22 | +#include "components/ui_view_group.h" | ||
| 23 | +#include "graphic_config.h" | ||
| 24 | +#include "rm_test_utils.h" | ||
| 25 | + | ||
| 26 | +namespace OHOS { | ||
| 27 | +#if GRAPHIC_ENABLE_SLIDER_FLAG | ||
| 28 | + | ||
| 29 | +class SliderRmValueListener; | ||
| 30 | + | ||
| 31 | +/** | ||
| 32 | + * @brief RM013/014/015 Slider 单个验收用例的配置。 | ||
| 33 | + * | ||
| 34 | + * 字段与 PR1230 实际 API 一一对应: | ||
| 35 | + * - 刻度:EnableMarkings / SetMarkingsType(LINE|DOT) / SetMarkingsSize | ||
| 36 | + * - 刻度文本:EnableMarkText | ||
| 37 | + * - 吸附:EnableTicks(或设置 values) | ||
| 38 | + * - 自定义刻度值:SetValues | ||
| 39 | + * - 扩展点击:SetExpandClickArea;disabled:SetDisabled + SetDisabledToastMsg | ||
| 40 | + * - 值 Toast:EnableToast;渐变:SetBgGradientColors / SetOnTintGradientColors | ||
| 41 | + */ | ||
| 42 | +struct SliderRmCase { | ||
| 43 | + const char* id; | ||
| 44 | + const char* name; | ||
| 45 | + const char* expect; | ||
| 46 | + int32_t rangeMin; | ||
| 47 | + int32_t rangeMax; | ||
| 48 | + uint32_t step; | ||
| 49 | + int32_t initValue; | ||
| 50 | + uint8_t direction; | ||
| 51 | + bool enableMarkings; | ||
| 52 | + uint8_t markingsType; | ||
| 53 | + int16_t markingsSize; | ||
| 54 | + bool enableMarkText; | ||
| 55 | + bool enableTicks; | ||
| 56 | + const int32_t* values; | ||
| 57 | + uint16_t valuesCount; | ||
| 58 | + bool expandClickArea; | ||
| 59 | + bool disabled; | ||
| 60 | + const char* disabledToastMsg; | ||
| 61 | + bool enableToast; | ||
| 62 | + int8_t colorScheme; | ||
| 63 | + int8_t gradientScheme; | ||
| 64 | + uint8_t loopAction; | ||
| 65 | +}; | ||
| 66 | + | ||
| 67 | +extern const SliderRmCase g_sliderRmCases[]; | ||
| 68 | +extern const uint32_t g_sliderRmCaseNum; | ||
| 69 | + | ||
| 70 | +/** | ||
| 71 | + * @brief Slider RM 单个用例的视图构建与清理器。 | ||
| 72 | + * | ||
| 73 | + * Build() 在 content 内部创建并返回用例容器;析构时先剥离监听器再删除容器子树。 | ||
| 74 | + */ | ||
| 75 | +class SliderRmCaseRunner { | ||
| 76 | +public: | ||
| 77 | + explicit SliderRmCaseRunner(const SliderRmCase* testCase); | ||
| 78 | + ~SliderRmCaseRunner(); | ||
| 79 | + | ||
| 80 | + UIViewGroup* Build(UIViewGroup* content); | ||
| 81 | + | ||
| 82 | +private: | ||
| 83 | + void ResetState(); | ||
| 84 | + void ShowCase(const SliderRmCase& testCase); | ||
| 85 | + void AddClickListener(UIView* view, std::function<bool(UIView&, const ClickEvent&)> fn); | ||
| 86 | + | ||
| 87 | + struct ListenerEntry { | ||
| 88 | + UIView* view; | ||
| 89 | + RmClickListener* listener; | ||
| 90 | + }; | ||
| 91 | + static constexpr uint8_t MAX_LISTENERS = 8; | ||
| 92 | + | ||
| 93 | + const SliderRmCase* case_; | ||
| 94 | + UIViewGroup* container_; | ||
| 95 | + UISlider* slider_; | ||
| 96 | + UILabel* valueLabel_; | ||
| 97 | + SliderRmValueListener* valueListener_; | ||
| 98 | + ListenerEntry listeners_[MAX_LISTENERS]; | ||
| 99 | + uint8_t listenerCount_; | ||
| 100 | +}; | ||
| 101 | + | ||
| 102 | +#endif // GRAPHIC_ENABLE_SLIDER_FLAG | ||
| 103 | +} // namespace OHOS | ||
| 104 | +#endif // SLIDER_RM_CASE_VIEW_H | ||
| @@ -0,0 +1,25 @@ | |||
| 1 | +/* | ||
| 2 | + * Copyright (c) 2026 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 "slider_rm_test_slice.h" | ||
| 17 | + | ||
| 18 | +#if GRAPHIC_ENABLE_SLIDER_FLAG | ||
| 19 | +namespace OHOS { | ||
| 20 | +REGISTER_AS(SliderRmTestSlice) | ||
| 21 | + | ||
| 22 | +SliderRmTestSlice::SliderRmTestSlice() : RmTestSliceBase("Slider RM验收") {} | ||
| 23 | + | ||
| 24 | +} // namespace OHOS | ||
| 25 | +#endif // GRAPHIC_ENABLE_SLIDER_FLAG | ||
| @@ -0,0 +1,31 @@ | |||
| 1 | +/* | ||
| 2 | + * Copyright (c) 2026 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 | +#ifndef SLIDER_RM_TEST_SLICE_H | ||
| 17 | +#define SLIDER_RM_TEST_SLICE_H | ||
| 18 | + | ||
| 19 | +#include "rm_test_slice_base.h" | ||
| 20 | +#include "slider_rm_case_view.h" | ||
| 21 | + | ||
| 22 | +#if GRAPHIC_ENABLE_SLIDER_FLAG | ||
| 23 | +namespace OHOS { | ||
| 24 | +class SliderRmTestSlice : public RmTestSliceBase<SliderRmCaseRunner, SliderRmCase, | ||
| 25 | + g_sliderRmCases, g_sliderRmCaseNum> { | ||
| 26 | +public: | ||
| 27 | + SliderRmTestSlice(); | ||
| 28 | +}; | ||
| 29 | +} // namespace OHOS | ||
| 30 | +#endif // GRAPHIC_ENABLE_SLIDER_FLAG | ||
| 31 | +#endif // SLIDER_RM_TEST_SLICE_H | ||
| @@ -0,0 +1,693 @@ | |||
| 1 | +/* | ||
| 2 | + * Copyright (c) 2026 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 "switch_rm_case_view.h" | ||
| 17 | + | ||
| 18 | +#if GRAPHIC_ENABLE_SWITCH_FLAG | ||
| 19 | +#include <cstdio> | ||
| 20 | +#include <new> | ||
| 21 | +#include "components/ui_view_group.h" | ||
| 22 | +#include "events/click_event.h" | ||
| 23 | +#include "graphic_utils.h" | ||
| 24 | + | ||
| 25 | +namespace OHOS { | ||
| 26 | + | ||
| 27 | +const SwitchRmCase g_switchRmCases[] = { | ||
| 28 | + { "SW-001", "默认创建与状态切换", "不调新增API: 默认轨道/滑块/边框显示不变,状态切换正常", | ||
| 29 | + SWITCH_CASE_DEMO, false, 0, false, 0, false, 0, false, 0, false, 0, false, 0, false }, | ||
| 30 | + { "SW-002", "on/off滑块尺寸独立配置", "SELECTED用on=10,UNSELECTED用off=8,两态互不覆盖", | ||
| 31 | + SWITCH_CASE_DEMO, true, 10, true, 8, false, 0, false, 0, false, 0, false, 0, false }, | ||
| 32 | + { "SW-003", "on/off滑块颜色独立配置", "选中态滑块白,非选中态灰,随状态切换", | ||
| 33 | + SWITCH_CASE_DEMO, false, 0, false, 0, true, 0xFFFFFF, true, 0x808080, false, 0, false, 0, false }, | ||
| 34 | + { "SW-004", "on/off边框颜色配置", "选中态绿边框,非选中态红边框(宽1px恒不透明,代码无独立alpha)", | ||
| 35 | + SWITCH_CASE_DEMO, false, 0, false, 0, false, 0, false, 0, true, 0x00FF00, true, 0xFF0000, false }, | ||
| 36 | + { "SW-005", "getter返回配置值", "6项getter逐项与setter入参比对,应全部一致", | ||
| 37 | + SWITCH_CASE_VERIFY_GETTER, true, 10, true, 8, true, 0xFFFFFF, true, 0x808080, | ||
| 38 | + true, 0x00FF00, true, 0xFF0000, false }, | ||
| 39 | + { "SW-006", "尺寸+颜色+边框组合配置", "初始ON: 尺寸/滑块色/边框均按当前状态生效,组合无冲突", | ||
| 40 | + SWITCH_CASE_DEMO, true, 12, true, 8, true, 0xFFD700, true, 0x00C8C8, | ||
| 41 | + true, 0x00FF00, true, 0xFF0000, true }, | ||
| 42 | + { "SW-007", "thumb size为0", "size=0 setter直接保存,绘制阶段回默认半径;读回0", | ||
| 43 | + SWITCH_CASE_DEMO, true, 0, true, 12, false, 0, false, 0, false, 0, false, 0, false }, | ||
| 44 | + { "SW-008", "thumb size超轨道圆角999", "999 setter直接保存,绘制阶段回默认半径;读回999", | ||
| 45 | + SWITCH_CASE_DEMO, true, 999, true, 10, false, 0, false, 0, false, 0, false, 0, false }, | ||
| 46 | + { "SW-009", "半径<=1时边框不绘制", "drawRadius<=边框宽1px: 不画边框,仅1px实心滑块(黑边框便于辨别)", | ||
| 47 | + SWITCH_CASE_DEMO, true, 1, false, 0, false, 0, false, 0, true, 0x000000, false, 0, true }, | ||
| 48 | + { "SW-010", "未配置thumb color", "只配边框: 滑块保持默认白色,边框配置仍生效", | ||
| 49 | + SWITCH_CASE_DEMO, false, 0, false, 0, false, 0, false, 0, true, 0x00FF00, true, 0xFF0000, false }, | ||
| 50 | + { "SW-011", "未配置border color", "只配滑块色: 不绘制边框,滑块色按配置生效", | ||
| 51 | + SWITCH_CASE_DEMO, false, 0, false, 0, true, 0xFFFFFF, true, 0x808080, false, 0, false, 0, false }, | ||
| 52 | + { "SW-012", "高频状态切换x200", "自动切换ON/OFF 200次: 回调数与切换一致,无异常日志", | ||
| 53 | + SWITCH_CASE_STRESS_TOGGLE, true, 12, true, 8, true, 0xFFD700, true, 0x00C8C8, | ||
| 54 | + true, 0x00FF00, true, 0xFF0000, false }, | ||
| 55 | + { "SW-013", "90个Switch批量配置", " 90个各配不同尺寸/滑块色,逐项读回防串扰", | ||
| 56 | + SWITCH_CASE_MANY, false, 0, false, 0, false, 0, false, 0, false, 0, false, 0, false }, | ||
| 57 | + { "SW-014", "长稳循环切换校验", "自动循环切换200轮: 每轮校验GetState一致,无残留", | ||
| 58 | + SWITCH_CASE_STRESS_STATE, true, 12, true, 8, true, 0xFFD700, true, 0x00C8C8, | ||
| 59 | + true, 0x00FF00, true, 0xFF0000, false }, | ||
| 60 | + { "SW-015", "运行时反复覆盖配置", "自动循环覆盖6项配置1000轮: 每轮读回=末次配置,设置/读回同屏对照", | ||
| 61 | + SWITCH_CASE_STRESS_CONFIG, false, 0, false, 0, false, 0, false, 0, false, 0, false, 0, false }, | ||
| 62 | +}; | ||
| 63 | +const uint32_t g_switchRmCaseNum = sizeof(g_switchRmCases) / sizeof(g_switchRmCases[0]); | ||
| 64 | + | ||
| 65 | +namespace { | ||
| 66 | +constexpr uint32_t STRESS_TARGET = 1000; | ||
| 67 | +constexpr uint32_t STRESS_TOGGLE_TARGET = 200; | ||
| 68 | +constexpr uint32_t MANY_GRID_SLOTS = 100; | ||
| 69 | + | ||
| 70 | +constexpr int16_t CONT_X = 100; | ||
| 71 | +constexpr int16_t CONT_Y = 0; | ||
| 72 | +constexpr int16_t CONT_W = 760; | ||
| 73 | +constexpr int16_t CONT_H = 400; | ||
| 74 | +constexpr uint8_t CONT_RADIUS = 16; | ||
| 75 | + | ||
| 76 | +constexpr int16_t SW_DEMO_W = 184; | ||
| 77 | +constexpr int16_t SW_DEMO_H = 92; | ||
| 78 | +constexpr int16_t SW_DEMO_X = (CONT_W - SW_DEMO_W) / 2; | ||
| 79 | +constexpr int16_t SW_DEMO_Y = 56; | ||
| 80 | +constexpr int16_t ACTION_BTN_X = 560; | ||
| 81 | +constexpr int16_t ACTION_BTN_Y = 100; | ||
| 82 | +constexpr int16_t ACTION_BTN_W = 130; | ||
| 83 | +constexpr int16_t ACTION_BTN_H = 44; | ||
| 84 | +constexpr uint8_t ACTION_BTN_FONT = 22; | ||
| 85 | +constexpr int16_t CFG_LABEL_Y = 164; | ||
| 86 | +constexpr int16_t READ_LABEL_Y = 196; | ||
| 87 | +constexpr int16_t STATE_LABEL_Y = 228; | ||
| 88 | +constexpr int16_t LABEL_LINE_H = 36; | ||
| 89 | +constexpr int16_t MANY_GRID_X = 24; | ||
| 90 | +constexpr int16_t MANY_GRID_Y = 88; | ||
| 91 | +constexpr int16_t MANY_PITCH_X = 72; | ||
| 92 | +constexpr int16_t MANY_PITCH_Y = 30; | ||
| 93 | +constexpr int16_t MANY_BTN_W = 64; | ||
| 94 | +constexpr int16_t MANY_BTN_H = 28; | ||
| 95 | +constexpr uint32_t MANY_COLS = 10; | ||
| 96 | + | ||
| 97 | +constexpr int16_t INFO_X = 24; | ||
| 98 | +constexpr int16_t INFO_W = 712; | ||
| 99 | +constexpr uint8_t INFO_SIZE = 22; | ||
| 100 | +constexpr uint8_t HINT_SIZE = 20; | ||
| @@ -0,0 +1,106 @@ | |||
| 1 | +/* | ||
| 2 | + * Copyright (c) 2026 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 | +#ifndef SWITCH_RM_CASE_VIEW_H | ||
| 17 | +#define SWITCH_RM_CASE_VIEW_H | ||
| 18 | + | ||
| 19 | +#include "components/ui_label.h" | ||
| 20 | +#include "components/ui_label_button.h" | ||
| 21 | +#include "components/ui_toggle_button.h" | ||
| 22 | +#include "components/ui_view_group.h" | ||
| 23 | +#include "graphic_config.h" | ||
| 24 | +#include "rm_test_utils.h" | ||
| 25 | + | ||
| 26 | +namespace OHOS { | ||
| 27 | +#if GRAPHIC_ENABLE_SWITCH_FLAG | ||
| 28 | + | ||
| 29 | +enum SwitchRmCaseType : uint8_t { | ||
| 30 | + SWITCH_CASE_DEMO, | ||
| 31 | + SWITCH_CASE_VERIFY_GETTER, | ||
| 32 | + SWITCH_CASE_STRESS_TOGGLE, | ||
| 33 | + SWITCH_CASE_MANY, | ||
| 34 | + SWITCH_CASE_STRESS_STATE, | ||
| 35 | + SWITCH_CASE_STRESS_CONFIG, | ||
| 36 | +}; | ||
| 37 | + | ||
| 38 | +struct SwitchRmCase { | ||
| 39 | + const char* id; | ||
| 40 | + const char* name; | ||
| 41 | + const char* expect; | ||
| 42 | + SwitchRmCaseType type; | ||
| 43 | + bool setOnSize; | ||
| 44 | + int16_t onSize; | ||
| 45 | + bool setOffSize; | ||
| 46 | + int16_t offSize; | ||
| 47 | + bool setOnThumb; | ||
| 48 | + uint32_t onThumb; | ||
| 49 | + bool setOffThumb; | ||
| 50 | + uint32_t offThumb; | ||
| 51 | + bool setOnBorder; | ||
| 52 | + uint32_t onBorder; | ||
| 53 | + bool setOffBorder; | ||
| 54 | + uint32_t offBorder; | ||
| 55 | + bool initialOn; | ||
| 56 | +}; | ||
| 57 | + | ||
| 58 | +extern const SwitchRmCase g_switchRmCases[]; | ||
| 59 | +extern const uint32_t g_switchRmCaseNum; | ||
| 60 | + | ||
| 61 | +/** | ||
| 62 | + * @brief Switch RM 单个用例的视图构建与清理器。 | ||
| 63 | + * | ||
| 64 | + * Build() 在 content 内部创建并返回用例容器;析构时先剥离监听器再删除容器子树。 | ||
| 65 | + */ | ||
| 66 | +class SwitchRmCaseRunner { | ||
| 67 | +public: | ||
| 68 | + explicit SwitchRmCaseRunner(const SwitchRmCase* testCase); | ||
| 69 | + ~SwitchRmCaseRunner(); | ||
| 70 | + | ||
| 71 | + UIViewGroup* Build(UIViewGroup* content); | ||
| 72 | + | ||
| 73 | +private: | ||
| 74 | + void ResetState(); | ||
| 75 | + UIToggleButton* CreateDemoToggle(); | ||
| 76 | + void ShowDemoCase(); | ||
| 77 | + void ShowVerifyCase(); | ||
| 78 | + void ShowStressCase(); | ||
| 79 | + void ShowManyCase(); | ||
| 80 | + void SetInfoText(const char* text); | ||
| 81 | + void AddClickListener(UIView* view, std::function<bool(UIView&, const ClickEvent&)> fn); | ||
| 82 | + | ||
| 83 | + class SwitchStateListener; | ||
| 84 | + | ||
| 85 | + struct ListenerEntry { | ||
| 86 | + UIView* view; | ||
| 87 | + RmClickListener* listener; | ||
| 88 | + }; | ||
| 89 | + static constexpr uint8_t MAX_LISTENERS = 128; | ||
| 90 | + | ||
| 91 | + const SwitchRmCase* case_; | ||
| 92 | + UIViewGroup* container_; | ||
| 93 | + UILabel* countLabel_; | ||
| 94 | + UILabel* infoLabel_; | ||
| 95 | + UIToggleButton* toggle_; | ||
| 96 | + SwitchStateListener* changeListener_; | ||
| 97 | + uint32_t changeCount_; | ||
| 98 | + uint32_t stressPassCount_; | ||
| 99 | + uint32_t stressFailCount_; | ||
| 100 | + ListenerEntry listeners_[MAX_LISTENERS]; | ||
| 101 | + uint8_t listenerCount_; | ||
| 102 | +}; | ||
| 103 | + | ||
| 104 | +#endif // GRAPHIC_ENABLE_SWITCH_FLAG | ||
| 105 | +} // namespace OHOS | ||
| 106 | +#endif // SWITCH_RM_CASE_VIEW_H | ||
| @@ -0,0 +1,25 @@ | |||
| 1 | +/* | ||
| 2 | + * Copyright (c) 2026 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 "switch_rm_test_slice.h" | ||
| 17 | + | ||
| 18 | +#if GRAPHIC_ENABLE_SWITCH_FLAG | ||
| 19 | +namespace OHOS { | ||
| 20 | +REGISTER_AS(SwitchRmTestSlice) | ||
| 21 | + | ||
| 22 | +SwitchRmTestSlice::SwitchRmTestSlice() : RmTestSliceBase("Switch RM验收") {} | ||
| 23 | + | ||
| 24 | +} // namespace OHOS | ||
| 25 | +#endif // GRAPHIC_ENABLE_SWITCH_FLAG | ||
| @@ -0,0 +1,31 @@ | |||
| 1 | +/* | ||
| 2 | + * Copyright (c) 2026 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 | +#ifndef SWITCH_RM_TEST_SLICE_H | ||
| 17 | +#define SWITCH_RM_TEST_SLICE_H | ||
| 18 | + | ||
| 19 | +#include "rm_test_slice_base.h" | ||
| 20 | +#include "switch_rm_case_view.h" | ||
| 21 | + | ||
| 22 | +#if GRAPHIC_ENABLE_SWITCH_FLAG | ||
| 23 | +namespace OHOS { | ||
| 24 | +class SwitchRmTestSlice : public RmTestSliceBase<SwitchRmCaseRunner, SwitchRmCase, | ||
| 25 | + g_switchRmCases, g_switchRmCaseNum> { | ||
| 26 | +public: | ||
| 27 | + SwitchRmTestSlice(); | ||
| 28 | +}; | ||
| 29 | +} // namespace OHOS | ||
| 30 | +#endif // GRAPHIC_ENABLE_SWITCH_FLAG | ||
| 31 | +#endif // SWITCH_RM_TEST_SLICE_H | ||
| @@ -18,9 +18,9 @@ action("talm_js_bundle") { | |||
| 18 | "talm/src/main/js/MainAbility/pages/gradient/gradient.hml", | 18 | "talm/src/main/js/MainAbility/pages/gradient/gradient.hml", |
| 19 | "talm/src/main/js/MainAbility/pages/gradient/gradient.js", | 19 | "talm/src/main/js/MainAbility/pages/gradient/gradient.js", |
| 20 | "talm/src/main/js/MainAbility/pages/gradient/gradient.css", | 20 | "talm/src/main/js/MainAbility/pages/gradient/gradient.css", |
| 21 | - "talm/src/main/js/MainAbility/pages/svg/svg.hml", | 21 | + "talm/src/main/js/MainAbility/pages/svgPage/svgPage.hml", |
| 22 | - "talm/src/main/js/MainAbility/pages/svg/svg.js", | 22 | + "talm/src/main/js/MainAbility/pages/svgPage/svgPage.js", |
| 23 | - "talm/src/main/js/MainAbility/pages/svg/svg.css", | 23 | + "talm/src/main/js/MainAbility/pages/svgPage/svgPage.css", |
| 24 | "talm/src/main/js/MainAbility/pages/flex/flex.hml", | 24 | "talm/src/main/js/MainAbility/pages/flex/flex.hml", |
| 25 | "talm/src/main/js/MainAbility/pages/flex/flex.js", | 25 | "talm/src/main/js/MainAbility/pages/flex/flex.js", |
| 26 | "talm/src/main/js/MainAbility/pages/flex/flex.css", | 26 | "talm/src/main/js/MainAbility/pages/flex/flex.css", |
| @@ -49,13 +49,211 @@ action("talm_js_bundle") { | |||
| 49 | "talm/src/main/js/MainAbility/pages/page_animation/target/target.js", | 49 | "talm/src/main/js/MainAbility/pages/page_animation/target/target.js", |
| 50 | "talm/src/main/js/MainAbility/pages/page_animation/target/target.css", | 50 | "talm/src/main/js/MainAbility/pages/page_animation/target/target.css", |
| 51 | "talm_build_js.py", | 51 | "talm_build_js.py", |
| 52 | + "talm/src/main/js/MainAbility/pages/flex/rm020/rm020.js", | ||
| 53 | + "talm/src/main/js/MainAbility/pages/flex/rm020/rm020.css", | ||
| 54 | + "talm/src/main/js/MainAbility/pages/flex/rm020/rm020.hml", | ||
| 55 | + "talm/src/main/js/MainAbility/pages/flex/rm020-abs/rm020-abs.js", | ||
| 56 | + "talm/src/main/js/MainAbility/pages/flex/rm020-abs/rm020-abs.css", | ||
| 57 | + "talm/src/main/js/MainAbility/pages/flex/rm020-abs/rm020-abs.hml", | ||
| 58 | + "talm/src/main/js/MainAbility/pages/flex/rm018/rm018.css", | ||
| 59 | + "talm/src/main/js/MainAbility/pages/flex/rm018/rm018.hml", | ||
| 60 | + "talm/src/main/js/MainAbility/pages/flex/rm018/rm018.js", | ||
| 61 | + "talm/src/main/js/MainAbility/pages/flex/rm019-1/rm019-1.hml", | ||
| 62 | + "talm/src/main/js/MainAbility/pages/flex/rm019-1/rm019-1.js", | ||
| 63 | + "talm/src/main/js/MainAbility/pages/flex/rm019-1/rm019-1.css", | ||
| 64 | + "talm/src/main/js/MainAbility/pages/flex/rm019/rm019.hml", | ||
| 65 | + "talm/src/main/js/MainAbility/pages/flex/rm019/rm019.css", | ||
| 66 | + "talm/src/main/js/MainAbility/pages/flex/rm019/rm019.js", | ||
| 67 | + "talm/src/main/js/MainAbility/pages/flex/rm017/rm017.hml", | ||
| 68 | + "talm/src/main/js/MainAbility/pages/flex/rm017/rm017.css", | ||
| 69 | + "talm/src/main/js/MainAbility/pages/flex/rm017/rm017.js", | ||
| 70 | + "talm/src/main/js/MainAbility/pages/lightGraphics/lightGraphics.hml", | ||
| 71 | + "talm/src/main/js/MainAbility/pages/lightGraphics/lightGraphics.css", | ||
| 72 | + "talm/src/main/js/MainAbility/pages/lightGraphics/lightGraphics.js", | ||
| 73 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm003/index003.hml", | ||
| 74 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm003/index003.js", | ||
| 75 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm003/index003.css", | ||
| 76 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm003/basic_path/basic_path.hml", | ||
| 77 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm003/basic_path/basic_path.css", | ||
| 78 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm003/basic_path/basic_path.js", | ||
| 79 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm003/basic_shape/basic_shape.css", | ||
| 80 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm003/basic_shape/basic_shape.js", | ||
| 81 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm003/basic_shape/basic_shape.hml", | ||
| 82 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm003/exception_parse/exception_parse.hml", | ||
| 83 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm003/exception_parse/exception_parse.js", | ||
| 84 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm003/exception_parse/exception_parse.css", | ||
| 85 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm003/basic_gradient/basic_gradient.hml", | ||
| 86 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm003/basic_gradient/basic_gradient.css", | ||
| 87 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm003/basic_gradient/basic_gradient.js", | ||
| 88 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm003/boundary_shape/boundary_shape.js", | ||
| 89 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm003/boundary_shape/boundary_shape.hml", | ||
| 90 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm003/boundary_shape/boundary_shape.css", | ||
| 91 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm003/basic/basic.css", | ||
| 92 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm003/basic/basic.js", | ||
| 93 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm003/basic/basic.hml", | ||
| 94 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm009/index009.js", | ||
| 95 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm009/index009.css", | ||
| 96 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm009/index009.hml", | ||
| 97 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm009/exception_anim/exception_anim.css", | ||
| 98 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm009/exception_anim/exception_anim.js", | ||
| 99 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm009/exception_anim/exception_anim.hml", | ||
| 100 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm009/basic_basic/basic_basic.hml", | ||
| 101 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm009/basic_basic/basic_basic.js", | ||
| 102 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm009/basic_basic/basic_basic.css", | ||
| 103 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm009/boundary_anim/boundary_anim.css", | ||
| 104 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm009/boundary_anim/boundary_anim.js", | ||
| 105 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm009/boundary_anim/boundary_anim.hml", | ||
| 106 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm009/basic/basic.css", | ||
| 107 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm009/basic/basic.js", | ||
| 108 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm009/basic/basic.hml", | ||
| 109 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm009/basic_bounce/basic_bounce.js", | ||
| 110 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm009/basic_bounce/basic_bounce.css", | ||
| 111 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm009/basic_bounce/basic_bounce.hml", | ||
| 112 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm009/basic_combine/basic_combine.css", | ||
| 113 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm009/basic_combine/basic_combine.hml", | ||
| 114 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm009/basic_combine/basic_combine.js", | ||
| 115 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm005/index005.hml", | ||
| 116 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm005/index005.js", | ||
| 117 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm005/index005.css", | ||
| 118 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm005/basic_angle/basic_angle.hml", | ||
| 119 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm005/basic_angle/basic_angle.css", | ||
| 120 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm005/basic_angle/basic_angle.js", | ||
| 121 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm005/basic_direction/basic_direction.hml", | ||
| 122 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm005/basic_direction/basic_direction.css", | ||
| 123 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm005/basic_direction/basic_direction.js", | ||
| 124 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm005/basic_button/basic_button.css", | ||
| 125 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm005/basic_button/basic_button.hml", | ||
| 126 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm005/basic_button/basic_button.js", | ||
| 127 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm005/exception_gradient/exception_gradient.js", | ||
| 128 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm005/exception_gradient/exception_gradient.css", | ||
| 129 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm005/exception_gradient/exception_gradient.hml", | ||
| 130 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm005/boundary_gradient/boundary_gradient.css", | ||
| 131 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm005/boundary_gradient/boundary_gradient.hml", | ||
| 132 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm005/boundary_gradient/boundary_gradient.js", | ||
| 133 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm005/basic_list/basic_list.hml", | ||
| 134 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm005/basic_list/basic_list.js", | ||
| 135 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm005/basic_list/basic_list.css", | ||
| 136 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm005/basic/basic.css", | ||
| 137 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm005/basic/basic.js", | ||
| 138 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm005/basic/basic.hml", | ||
| 139 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm001/index001.css", | ||
| 140 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm001/index001.js", | ||
| 141 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm001/index001.hml", | ||
| 142 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm001/basic_composite/basic_composite.css", | ||
| 143 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm001/basic_composite/basic_composite.hml", | ||
| 144 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm001/basic_composite/basic_composite.js", | ||
| 145 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm001/exception_parse/exception_parse.hml", | ||
| 146 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm001/exception_parse/exception_parse.js", | ||
| 147 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm001/exception_parse/exception_parse.css", | ||
| 148 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm001/basic_animation/basic_animation.hml", | ||
| 149 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm001/basic_animation/basic_animation.js", | ||
| 150 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm001/basic_animation/basic_animation.css", | ||
| 151 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm001/boundary_composite/boundary_composite.css", | ||
| 152 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm001/boundary_composite/boundary_composite.hml", | ||
| 153 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm001/boundary_composite/boundary_composite.js", | ||
| 154 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm001/basic_text/basic_text.hml", | ||
| 155 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm001/basic_text/basic_text.css", | ||
| 156 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm001/basic_text/basic_text.js", | ||
| 157 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm001/basic/basic.css", | ||
| 158 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm001/basic/basic.js", | ||
| 159 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm001/basic/basic.hml", | ||
| 160 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm008/index008.hml", | ||
| 161 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm008/index008.css", | ||
| 162 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm008/index008.js", | ||
| 163 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm008/basic_path/basic_path.hml", | ||
| 164 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm008/basic_path/basic_path.css", | ||
| 165 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm008/basic_path/basic_path.js", | ||
| 166 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm008/basic_bezier/basic_bezier.css", | ||
| 167 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm008/basic_bezier/basic_bezier.hml", | ||
| 168 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm008/basic_bezier/basic_bezier.js", | ||
| 169 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm008/performance/performance.hml", | ||
| 170 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm008/performance/performance.js", | ||
| 171 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm008/performance/performance.css", | ||
| 172 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm008/exception_path/exception_path.css", | ||
| 173 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm008/exception_path/exception_path.hml", | ||
| 174 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm008/exception_path/exception_path.js", | ||
| 175 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm008/boundary_path/boundary_path.hml", | ||
| 176 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm008/boundary_path/boundary_path.css", | ||
| 177 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm008/boundary_path/boundary_path.js", | ||
| 178 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm008/perf_path/perf_path.css", | ||
| 179 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm008/perf_path/perf_path.js", | ||
| 180 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm008/perf_path/perf_path.hml", | ||
| 181 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm008/basic/basic.css", | ||
| 182 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm008/basic/basic.js", | ||
| 183 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm008/basic/basic.hml", | ||
| 184 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm007/index007.hml", | ||
| 185 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm007/index007.js", | ||
| 186 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm007/index007.css", | ||
| 187 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm007/basic_delay/basic_delay.hml", | ||
| 188 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm007/basic_delay/basic_delay.js", | ||
| 189 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm007/basic_delay/basic_delay.css", | ||
| 190 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm007/boundary_trans/boundary_trans.hml", | ||
| 191 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm007/boundary_trans/boundary_trans.js", | ||
| 192 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm007/boundary_trans/boundary_trans.css", | ||
| 193 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm007/basic_trans/basic_trans.js", | ||
| 194 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm007/basic_trans/basic_trans.hml", | ||
| 195 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm007/basic_trans/basic_trans.css", | ||
| 196 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm007/exception_trans/exception_trans.css", | ||
| 197 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm007/exception_trans/exception_trans.hml", | ||
| 198 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm007/exception_trans/exception_trans.js", | ||
| 199 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm007/basic_shared/basic_shared.css", | ||
| 200 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm007/basic_shared/basic_shared.js", | ||
| 201 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm007/basic_shared/basic_shared.hml", | ||
| 202 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm007/basic/basic.css", | ||
| 203 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm007/basic/basic.js", | ||
| 204 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm007/basic/basic.hml", | ||
| 205 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm002/index002.css", | ||
| 206 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm002/index002.hml", | ||
| 207 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm002/index002.js", | ||
| 208 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm002/exception_parse/exception_parse.hml", | ||
| 209 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm002/exception_parse/exception_parse.js", | ||
| 210 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm002/exception_parse/exception_parse.css", | ||
| 211 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm002/basic_transform/basic_transform.js", | ||
| 212 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm002/basic_transform/basic_transform.hml", | ||
| 213 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm002/basic_transform/basic_transform.css", | ||
| 214 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm002/boundary_stroke/boundary_stroke.js", | ||
| 215 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm002/boundary_stroke/boundary_stroke.hml", | ||
| 216 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm002/boundary_stroke/boundary_stroke.css", | ||
| 217 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm002/basic_stroke/basic_stroke.css", | ||
| 218 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm002/basic_stroke/basic_stroke.js", | ||
| 219 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm002/basic_stroke/basic_stroke.hml", | ||
| 220 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm002/basic_star/basic_star.js", | ||
| 221 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm002/basic_star/basic_star.hml", | ||
| 222 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm002/basic_star/basic_star.css", | ||
| 223 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm002/basic/basic.css", | ||
| 224 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm002/basic/basic.js", | ||
| 225 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm002/basic/basic.hml", | ||
| 226 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm006/index006.js", | ||
| 227 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm006/index006.hml", | ||
| 228 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm006/index006.css", | ||
| 229 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm006/basic_direction/basic_direction.hml", | ||
| 230 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm006/basic_direction/basic_direction.css", | ||
| 231 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm006/basic_direction/basic_direction.js", | ||
| 232 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm006/basic_button/basic_button.css", | ||
| 233 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm006/basic_button/basic_button.hml", | ||
| 234 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm006/basic_button/basic_button.js", | ||
| 235 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm006/exception_gradient/exception_gradient.js", | ||
| 236 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm006/exception_gradient/exception_gradient.css", | ||
| 237 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm006/exception_gradient/exception_gradient.hml", | ||
| 238 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm006/basic_color/basic_color.js", | ||
| 239 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm006/basic_color/basic_color.hml", | ||
| 240 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm006/basic_color/basic_color.css", | ||
| 241 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm006/boundary_gradient/boundary_gradient.css", | ||
| 242 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm006/boundary_gradient/boundary_gradient.hml", | ||
| 243 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm006/boundary_gradient/boundary_gradient.js", | ||
| 244 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm006/basic_list/basic_list.hml", | ||
| 245 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm006/basic_list/basic_list.js", | ||
| 246 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm006/basic_list/basic_list.css", | ||
| 247 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm006/basic/basic.css", | ||
| 248 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm006/basic/basic.js", | ||
| 249 | + "talm/src/main/js/MainAbility/pages/lightGraphics/rm006/basic/basic.hml", | ||
| 52 | ] | 250 | ] |
| 53 | outputs = [ | 251 | outputs = [ |
| 54 | "$root_out_dir/talm/assets/js/default/app.js", | 252 | "$root_out_dir/talm/assets/js/default/app.js", |
| 55 | "$root_out_dir/talm/assets/js/default/manifest.json", | 253 | "$root_out_dir/talm/assets/js/default/manifest.json", |
| 56 | "$root_out_dir/talm/assets/js/default/pages/index/index.js", | 254 | "$root_out_dir/talm/assets/js/default/pages/index/index.js", |
| 57 | "$root_out_dir/talm/assets/js/default/pages/gradient/gradient.js", | 255 | "$root_out_dir/talm/assets/js/default/pages/gradient/gradient.js", |
| 58 | - "$root_out_dir/talm/assets/js/default/pages/svg/svg.js", | 256 | + "$root_out_dir/talm/assets/js/default/pages/svgPage/svgPage.js", |
| 59 | "$root_out_dir/talm/assets/js/default/pages/flex/flex.js", | 257 | "$root_out_dir/talm/assets/js/default/pages/flex/flex.js", |
| 60 | "$root_out_dir/talm/assets/js/default/pages/animation/animation.js", | 258 | "$root_out_dir/talm/assets/js/default/pages/animation/animation.js", |
| 61 | "$root_out_dir/talm/assets/js/default/pages/page_animation/page_animation.js", | 259 | "$root_out_dir/talm/assets/js/default/pages/page_animation/page_animation.js", |
| @@ -65,6 +263,72 @@ action("talm_js_bundle") { | |||
| 65 | "$root_out_dir/talm/assets/js/default/pages/page_animation/over/over.js", | 263 | "$root_out_dir/talm/assets/js/default/pages/page_animation/over/over.js", |
| 66 | "$root_out_dir/talm/assets/js/default/pages/page_animation/edge/edge.js", | 264 | "$root_out_dir/talm/assets/js/default/pages/page_animation/edge/edge.js", |
| 67 | "$root_out_dir/talm/assets/js/default/pages/page_animation/target/target.js", | 265 | "$root_out_dir/talm/assets/js/default/pages/page_animation/target/target.js", |
| 266 | + "$root_out_dir/talm/assets/js/default/pages/flex/rm020/rm020.js", | ||
| 267 | + "$root_out_dir/talm/assets/js/default/pages/flex/rm020-abs/rm020-abs.js", | ||
| 268 | + "$root_out_dir/talm/assets/js/default/pages/flex/rm018/rm018.js", | ||
| 269 | + "$root_out_dir/talm/assets/js/default/pages/flex/rm019-1/rm019-1.js", | ||
| 270 | + "$root_out_dir/talm/assets/js/default/pages/flex/rm019/rm019.js", | ||
| 271 | + "$root_out_dir/talm/assets/js/default/pages/flex/rm017/rm017.js", | ||
| 272 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/lightGraphics.js", | ||
| 273 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm003/index003.js", | ||
| 274 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm003/basic_path/basic_path.js", | ||
| 275 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm003/basic_shape/basic_shape.js", | ||
| 276 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm003/exception_parse/exception_parse.js", | ||
| 277 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm003/basic_gradient/basic_gradient.js", | ||
| 278 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm003/boundary_shape/boundary_shape.js", | ||
| 279 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm003/basic/basic.js", | ||
| 280 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm009/index009.js", | ||
| 281 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm009/exception_anim/exception_anim.js", | ||
| 282 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm009/basic_basic/basic_basic.js", | ||
| 283 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm009/boundary_anim/boundary_anim.js", | ||
| 284 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm009/basic/basic.js", | ||
| 285 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm009/basic_bounce/basic_bounce.js", | ||
| 286 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm009/basic_combine/basic_combine.js", | ||
| 287 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm005/index005.js", | ||
| 288 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm005/basic_angle/basic_angle.js", | ||
| 289 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm005/basic_direction/basic_direction.js", | ||
| 290 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm005/basic_button/basic_button.js", | ||
| 291 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm005/exception_gradient/exception_gradient.js", | ||
| 292 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm005/boundary_gradient/boundary_gradient.js", | ||
| 293 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm005/basic_list/basic_list.js", | ||
| 294 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm005/basic/basic.js", | ||
| 295 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm001/index001.js", | ||
| 296 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm001/basic_composite/basic_composite.js", | ||
| 297 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm001/exception_parse/exception_parse.js", | ||
| 298 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm001/basic_animation/basic_animation.js", | ||
| 299 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm001/boundary_composite/boundary_composite.js", | ||
| 300 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm001/basic_text/basic_text.js", | ||
| 301 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm001/basic/basic.js", | ||
| 302 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm008/index008.js", | ||
| 303 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm008/basic_path/basic_path.js", | ||
| 304 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm008/basic_bezier/basic_bezier.js", | ||
| 305 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm008/performance/performance.js", | ||
| 306 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm008/exception_path/exception_path.js", | ||
| 307 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm008/boundary_path/boundary_path.js", | ||
| 308 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm008/perf_path/perf_path.js", | ||
| 309 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm008/basic/basic.js", | ||
| 310 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm007/index007.js", | ||
| 311 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm007/basic_delay/basic_delay.js", | ||
| 312 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm007/boundary_trans/boundary_trans.js", | ||
| 313 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm007/basic_trans/basic_trans.js", | ||
| 314 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm007/exception_trans/exception_trans.js", | ||
| 315 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm007/basic_shared/basic_shared.js", | ||
| 316 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm007/basic/basic.js", | ||
| 317 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm002/index002.js", | ||
| 318 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm002/exception_parse/exception_parse.js", | ||
| 319 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm002/basic_transform/basic_transform.js", | ||
| 320 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm002/boundary_stroke/boundary_stroke.js", | ||
| 321 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm002/basic_stroke/basic_stroke.js", | ||
| 322 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm002/basic_star/basic_star.js", | ||
| 323 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm002/basic/basic.js", | ||
| 324 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm006/index006.js", | ||
| 325 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm006/basic_direction/basic_direction.js", | ||
| 326 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm006/basic_button/basic_button.js", | ||
| 327 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm006/exception_gradient/exception_gradient.js", | ||
| 328 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm006/basic_color/basic_color.js", | ||
| 329 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm006/boundary_gradient/boundary_gradient.js", | ||
| 330 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm006/basic_list/basic_list.js", | ||
| 331 | + "$root_out_dir/talm/assets/js/default/pages/lightGraphics/rm006/basic/basic.js", | ||
| 68 | ] | 332 | ] |
| 69 | args = [ | 333 | args = [ |
| 70 | rebase_path("talm/src/main/js/MainAbility"), | 334 | rebase_path("talm/src/main/js/MainAbility"), |
| @@ -45,14 +45,80 @@ | |||
| 45 | "pages/gradient/gradient", | 45 | "pages/gradient/gradient", |
| 46 | "pages/flex/flex", | 46 | "pages/flex/flex", |
| 47 | "pages/animation/animation", | 47 | "pages/animation/animation", |
| 48 | - "pages/svg/svg", | 48 | + "pages/svgPage/svgPage", |
| 49 | "pages/page_animation/page_animation", | 49 | "pages/page_animation/page_animation", |
| 50 | "pages/page_animation/fade/fade", | 50 | "pages/page_animation/fade/fade", |
| 51 | "pages/page_animation/scale/scale", | 51 | "pages/page_animation/scale/scale", |
| 52 | "pages/page_animation/slide/slide", | 52 | "pages/page_animation/slide/slide", |
| 53 | "pages/page_animation/over/over", | 53 | "pages/page_animation/over/over", |
| 54 | "pages/page_animation/edge/edge", | 54 | "pages/page_animation/edge/edge", |
| 55 | - "pages/page_animation/target/target" | 55 | + "pages/page_animation/target/target", |
| 56 | + "pages/flex/rm017/rm017", | ||
| 57 | + "pages/flex/rm018/rm018", | ||
| 58 | + "pages/flex/rm019/rm019", | ||
| 59 | + "pages/flex/rm019-1/rm019-1", | ||
| 60 | + "pages/flex/rm020/rm020", | ||
| 61 | + "pages/flex/rm020-abs/rm020-abs", | ||
| 62 | + "pages/lightGraphics/lightGraphics", | ||
| 63 | + "pages/lightGraphics/rm001/basic/basic", | ||
| 64 | + "pages/lightGraphics/rm001/basic_animation/basic_animation", | ||
| 65 | + "pages/lightGraphics/rm001/basic_composite/basic_composite", | ||
| 66 | + "pages/lightGraphics/rm001/basic_text/basic_text", | ||
| 67 | + "pages/lightGraphics/rm001/boundary_composite/boundary_composite", | ||
| 68 | + "pages/lightGraphics/rm001/exception_parse/exception_parse", | ||
| 69 | + "pages/lightGraphics/rm001/index001", | ||
| 70 | + "pages/lightGraphics/rm002/basic/basic", | ||
| 71 | + "pages/lightGraphics/rm002/basic_star/basic_star", | ||
| 72 | + "pages/lightGraphics/rm002/basic_stroke/basic_stroke", | ||
| 73 | + "pages/lightGraphics/rm002/basic_transform/basic_transform", | ||
| 74 | + "pages/lightGraphics/rm002/boundary_stroke/boundary_stroke", | ||
| 75 | + "pages/lightGraphics/rm002/exception_parse/exception_parse", | ||
| 76 | + "pages/lightGraphics/rm002/index002", | ||
| 77 | + "pages/lightGraphics/rm003/basic/basic", | ||
| 78 | + "pages/lightGraphics/rm003/basic_gradient/basic_gradient", | ||
| 79 | + "pages/lightGraphics/rm003/basic_path/basic_path", | ||
| 80 | + "pages/lightGraphics/rm003/basic_shape/basic_shape", | ||
| 81 | + "pages/lightGraphics/rm003/boundary_shape/boundary_shape", | ||
| 82 | + "pages/lightGraphics/rm003/exception_parse/exception_parse", | ||
| 83 | + "pages/lightGraphics/rm003/index003", | ||
| 84 | + "pages/lightGraphics/rm005/basic/basic", | ||
| 85 | + "pages/lightGraphics/rm005/basic_angle/basic_angle", | ||
| 86 | + "pages/lightGraphics/rm005/basic_button/basic_button", | ||
| 87 | + "pages/lightGraphics/rm005/basic_direction/basic_direction", | ||
| 88 | + "pages/lightGraphics/rm005/basic_list/basic_list", | ||
| 89 | + "pages/lightGraphics/rm005/boundary_gradient/boundary_gradient", | ||
| 90 | + "pages/lightGraphics/rm005/exception_gradient/exception_gradient", | ||
| 91 | + "pages/lightGraphics/rm005/index005", | ||
| 92 | + "pages/lightGraphics/rm006/basic/basic", | ||
| 93 | + "pages/lightGraphics/rm006/basic_button/basic_button", | ||
| 94 | + "pages/lightGraphics/rm006/basic_color/basic_color", | ||
| 95 | + "pages/lightGraphics/rm006/basic_direction/basic_direction", | ||
| 96 | + "pages/lightGraphics/rm006/basic_list/basic_list", | ||
| 97 | + "pages/lightGraphics/rm006/boundary_gradient/boundary_gradient", | ||
| 98 | + "pages/lightGraphics/rm006/exception_gradient/exception_gradient", | ||
| 99 | + "pages/lightGraphics/rm006/index006", | ||
| 100 | + "pages/lightGraphics/rm007/basic/basic", | ||
| 101 | + "pages/lightGraphics/rm007/basic_delay/basic_delay", | ||
| 102 | + "pages/lightGraphics/rm007/basic_shared/basic_shared", | ||
| 103 | + "pages/lightGraphics/rm007/basic_trans/basic_trans", | ||
| 104 | + "pages/lightGraphics/rm007/boundary_trans/boundary_trans", | ||
| 105 | + "pages/lightGraphics/rm007/exception_trans/exception_trans", | ||
| 106 | + "pages/lightGraphics/rm007/index007", | ||
| 107 | + "pages/lightGraphics/rm008/basic/basic", | ||
| 108 | + "pages/lightGraphics/rm008/basic_bezier/basic_bezier", | ||
| 109 | + "pages/lightGraphics/rm008/basic_path/basic_path", | ||
| 110 | + "pages/lightGraphics/rm008/boundary_path/boundary_path", | ||
| 111 | + "pages/lightGraphics/rm008/exception_path/exception_path", | ||
| 112 | + "pages/lightGraphics/rm008/index008", | ||
| 113 | + "pages/lightGraphics/rm008/perf_path/perf_path", | ||
| 114 | + "pages/lightGraphics/rm008/performance/performance", | ||
| 115 | + "pages/lightGraphics/rm009/basic/basic", | ||
| 116 | + "pages/lightGraphics/rm009/basic_basic/basic_basic", | ||
| 117 | + "pages/lightGraphics/rm009/basic_bounce/basic_bounce", | ||
| 118 | + "pages/lightGraphics/rm009/basic_combine/basic_combine", | ||
| 119 | + "pages/lightGraphics/rm009/boundary_anim/boundary_anim", | ||
| 120 | + "pages/lightGraphics/rm009/exception_anim/exception_anim", | ||
| 121 | + "pages/lightGraphics/rm009/index009" | ||
| 56 | ], | 122 | ], |
| 57 | "name": "AceAbility" | 123 | "name": "AceAbility" |
| 58 | } | 124 | } |
Rtalm/talm/src/main/js/MainAbility/pages/svg/svg.css→talm/talm/src/main/js/MainAbility/pages/svgPage/svgPage.css+0-0
Rtalm/talm/src/main/js/MainAbility/pages/svg/svg.hml→talm/talm/src/main/js/MainAbility/pages/svgPage/svgPage.hml+0-0
Rtalm/talm/src/main/js/MainAbility/pages/svg/svg.js→talm/talm/src/main/js/MainAbility/pages/svgPage/svgPage.js+0-0