This commit is contained in:
Yamozha
2021-04-02 02:24:13 +03:00
parent c23950b545
commit 7256d79e2c
31493 changed files with 3036630 additions and 0 deletions

View File

@ -0,0 +1,79 @@
load("@fbsource//tools/build_defs/apple:flag_defs.bzl", "get_preprocessor_flags_for_build_mode")
load(
"//tools/build_defs/oss:rn_defs.bzl",
"ANDROID",
"APPLE",
"CXX",
"YOGA_CXX_TARGET",
"fb_xplat_cxx_test",
"get_apple_compiler_flags",
"get_apple_inspector_flags",
"react_native_xplat_target",
"rn_xplat_cxx_library",
"subdir_glob",
)
APPLE_COMPILER_FLAGS = get_apple_compiler_flags()
rn_xplat_cxx_library(
name = "unimplementedview",
srcs = glob(
["**/*.cpp"],
exclude = glob(["tests/**/*.cpp"]),
),
headers = [],
header_namespace = "",
exported_headers = subdir_glob(
[
("", "*.h"),
],
prefix = "react/components/unimplementedview",
),
compiler_flags = [
"-fexceptions",
"-frtti",
"-std=c++14",
"-Wall",
],
fbobjc_compiler_flags = APPLE_COMPILER_FLAGS,
fbobjc_labels = ["supermodule:ios/default/public.react_native.infra"],
fbobjc_preprocessor_flags = get_preprocessor_flags_for_build_mode() + get_apple_inspector_flags(),
macosx_tests_override = [],
platforms = (ANDROID, APPLE, CXX),
preprocessor_flags = [
"-DLOG_TAG=\"ReactNative\"",
"-DWITH_FBSYSTRACE=1",
],
tests = [":tests"],
visibility = ["PUBLIC"],
deps = [
"//xplat/fbsystrace:fbsystrace",
"//xplat/folly:headers_only",
"//xplat/folly:memory",
"//xplat/folly:molly",
"//xplat/third-party/glog:glog",
YOGA_CXX_TARGET,
react_native_xplat_target("fabric/debug:debug"),
react_native_xplat_target("fabric/core:core"),
react_native_xplat_target("fabric/components/view:view"),
],
)
fb_xplat_cxx_test(
name = "tests",
srcs = glob(["tests/**/*.cpp"]),
headers = glob(["tests/**/*.h"]),
compiler_flags = [
"-fexceptions",
"-frtti",
"-std=c++14",
"-Wall",
],
contacts = ["oncall+react_native@xmail.facebook.com"],
platforms = (ANDROID, APPLE, CXX),
deps = [
":unimplementedview",
"//xplat/folly:molly",
"//xplat/third-party/gmock:gtest",
],
)

View File

@ -0,0 +1,43 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#include "UnimplementedViewComponentDescriptor.h"
namespace facebook {
namespace react {
ComponentHandle UnimplementedViewComponentDescriptor::getComponentHandle()
const {
return reinterpret_cast<ComponentHandle>(getComponentName());
}
ComponentName UnimplementedViewComponentDescriptor::getComponentName() const {
return std::static_pointer_cast<std::string const>(this->flavor_)->c_str();
}
Props::Shared UnimplementedViewComponentDescriptor::cloneProps(
Props::Shared const &props,
RawProps const &rawProps) const {
auto clonedProps =
ConcreteComponentDescriptor<UnimplementedViewShadowNode>::cloneProps(
props, rawProps);
assert(std::dynamic_pointer_cast<UnimplementedViewProps const>(clonedProps));
// We have to clone `Props` object one more time to make sure that we have
// an unshared (and non-`const`) copy of it which we can mutate.
RawProps emptyRawProps{};
emptyRawProps.parse(rawPropsParser_);
auto unimplementedViewProps = std::make_shared<UnimplementedViewProps>(
*std::static_pointer_cast<UnimplementedViewProps const>(clonedProps),
emptyRawProps);
unimplementedViewProps->setComponentName(getComponentName());
return unimplementedViewProps;
};
} // namespace react
} // namespace facebook

View File

@ -0,0 +1,40 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#pragma once
#include <react/components/unimplementedview/UnimplementedViewShadowNode.h>
#include <react/core/ConcreteComponentDescriptor.h>
namespace facebook {
namespace react {
/*
* Descriptor for <UnimplementedView> component.
*/
class UnimplementedViewComponentDescriptor final
: public ConcreteComponentDescriptor<UnimplementedViewShadowNode> {
public:
using ConcreteComponentDescriptor::ConcreteComponentDescriptor;
/*
* Returns `name` and `handle` based on a `flavor`, not on static data from
* `UnimplementedViewShadowNode`.
*/
ComponentHandle getComponentHandle() const override;
ComponentName getComponentName() const override;
/*
* In addtion to base implementation, stores a component name inside cloned
* `Props` object.
*/
Props::Shared cloneProps(Props::Shared const &props, RawProps const &rawProps)
const override;
};
} // namespace react
} // namespace facebook

View File

@ -0,0 +1,22 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#include <react/components/unimplementedview/UnimplementedViewProps.h>
namespace facebook {
namespace react {
void UnimplementedViewProps::setComponentName(ComponentName componentName) {
componentName_ = componentName;
}
ComponentName UnimplementedViewProps::getComponentName() const {
return componentName_;
}
} // namespace react
} // namespace facebook

View File

@ -0,0 +1,35 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#pragma once
#include <react/components/view/ViewProps.h>
namespace facebook {
namespace react {
/*
* It's a normal `ViewProps` with additional information about the component
* name which is being updated manually in `ComponentDescriptor`.
*/
class UnimplementedViewProps final : public ViewProps {
public:
using ViewProps::ViewProps;
/*
* Should be called from a `ComponentDescriptor` to store information about
* the name of a particular component.
*/
void setComponentName(ComponentName componentName);
ComponentName getComponentName() const;
private:
mutable ComponentName componentName_{};
};
} // namespace react
} // namespace facebook

View File

@ -0,0 +1,16 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#include "UnimplementedViewShadowNode.h"
namespace facebook {
namespace react {
const char UnimplementedViewComponentName[] = "UnimplementedView";
} // namespace react
} // namespace facebook

View File

@ -0,0 +1,23 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#pragma once
#include <react/components/unimplementedview/UnimplementedViewProps.h>
#include <react/components/view/ConcreteViewShadowNode.h>
namespace facebook {
namespace react {
extern const char UnimplementedViewComponentName[];
using UnimplementedViewShadowNode = ConcreteViewShadowNode<
UnimplementedViewComponentName,
UnimplementedViewProps>;
} // namespace react
} // namespace facebook