| 213 | } |
| 214 | |
| 215 | Ref<ViewFactory> ViewNodeTree::getOrCreateViewFactory(const StringBox& viewClassName) { |
| 216 | auto viewFactory = getViewFactory(viewClassName); |
| 217 | if (viewFactory != nullptr) { |
| 218 | return viewFactory; |
| 219 | } |
| 220 | |
| 221 | if (viewClassName == AttributesManager::getDeferredClassName()) { |
| 222 | viewFactory = createDeferredViewFactory(); |
| 223 | } else { |
| 224 | viewFactory = |
| 225 | getCompatibleViewFactory(getViewManagerContext()->getGlobalViewFactories()->getViewFactory(viewClassName)); |
| 226 | } |
| 227 | |
| 228 | // Register it in our ViewNodeTree to avoid the double lookup next time |
| 229 | registerLocalViewFactory(viewClassName, viewFactory); |
| 230 | |
| 231 | return viewFactory; |
| 232 | } |
| 233 | |
| 234 | Ref<ViewFactory> ViewNodeTree::createDeferredViewFactory() { |
| 235 | // For the deferred view factory, we create a ViewFactory that conforms to the default view class, |
no test coverage detected