Fabric: Decoupling Telemetry aggregation classes into a separate module

Summary:
We need to do this to break a dependency cycle that would happen if we try to have `view` depend on `mounting` just to add some telemetry to `view`.

Changelog: [Internal] Fabric-specific internal change.

Reviewed By: mdvacca

Differential Revision: D26827446

fbshipit-source-id: 4c415ebf5be3a02c18c80ea8a4a77068cae0f0fe
This commit is contained in:
Samuel Susla 2021-03-29 05:11:13 -07:00 коммит произвёл Facebook GitHub Bot
Родитель 95f7c791c5
Коммит 79090c4802
22 изменённых файлов: 152 добавлений и 14 удалений

Просмотреть файл

@ -11,7 +11,7 @@ LOCAL_MODULE := fabricjni
LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/*.cpp)
LOCAL_SHARED_LIBRARIES := libreactconfig librrc_slider librrc_progressbar librrc_switch librrc_modal libyoga libglog libfb libfbjni libglog_init libfolly_json libfolly_futures libreact_render_mounting libreactnativeutilsjni libreact_utils libreact_render_debug libreact_render_graphics libreact_render_core react_render_componentregistry librrc_view librrc_unimplementedview librrc_root librrc_scrollview libbetter libreact_render_attributedstring libreact_render_uimanager libreact_render_templateprocessor libreact_render_scheduler libreact_render_animations libreact_render_imagemanager libreact_render_textlayoutmanager libreact_codegen_rncore rrc_text librrc_image librrc_textinput librrc_picker libreact_debug libreact_render_mapbuffer libmapbufferjni
LOCAL_SHARED_LIBRARIES := libreactconfig librrc_slider librrc_progressbar librrc_switch librrc_modal libyoga libglog libfb libfbjni libglog_init libfolly_json libfolly_futures libreact_render_mounting libreactnativeutilsjni libreact_utils libreact_render_debug libreact_render_graphics libreact_render_core react_render_componentregistry librrc_view librrc_unimplementedview librrc_root librrc_scrollview libbetter libreact_render_attributedstring libreact_render_uimanager libreact_render_templateprocessor libreact_render_scheduler libreact_render_animations libreact_render_imagemanager libreact_render_textlayoutmanager libreact_codegen_rncore rrc_text librrc_image librrc_textinput librrc_picker libreact_debug libreact_render_mapbuffer libmapbufferjni libreact_render_telemetry
LOCAL_STATIC_LIBRARIES :=
@ -61,3 +61,4 @@ $(call import-module,react/renderer/scheduler)
$(call import-module,react/renderer/templateprocessor)
$(call import-module,react/renderer/textlayoutmanager)
$(call import-module,react/renderer/uimanager)
$(call import-module,react/renderer/telemetry)

Просмотреть файл

@ -318,6 +318,15 @@ Pod::Spec.new do |s|
ss.pod_target_xcconfig = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/ReactCommon\" \"$(PODS_ROOT)/RCT-Folly\"" }
end
s.subspec "telemetry" do |ss|
ss.dependency folly_dep_name, folly_version
ss.compiler_flags = folly_compiler_flags
ss.source_files = "react/renderer/telemetry/**/*.{m,mm,cpp,h}"
ss.exclude_files = "react/renderer/telemetry/tests"
ss.header_dir = "react/renderer/telemetry"
ss.pod_target_xcconfig = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/ReactCommon\" \"$(PODS_ROOT)/RCT-Folly\"" }
end
s.subspec "leakchecker" do |ss|
ss.dependency folly_dep_name, folly_version
ss.compiler_flags = folly_compiler_flags

Просмотреть файл

@ -75,6 +75,7 @@ rn_xplat_cxx_library(
react_native_xplat_target("react/renderer/mounting:mounting"),
react_native_xplat_target("react/renderer/componentregistry:componentregistry"),
react_native_xplat_target("react/utils:utils"),
react_native_xplat_target("react/renderer/telemetry:telemetry"),
],
)

Просмотреть файл

@ -14,6 +14,7 @@
#include <react/renderer/components/view/ViewShadowNode.h>
#include <react/renderer/components/view/conversions.h>
#include <react/renderer/graphics/rounding.h>
#include <react/renderer/telemetry/TransactionTelemetry.h>
#include "ParagraphState.h"

Просмотреть файл

@ -21,7 +21,7 @@ LOCAL_CFLAGS += -fexceptions -frtti -std=c++14 -Wall
LOCAL_STATIC_LIBRARIES :=
LOCAL_SHARED_LIBRARIES := libbetter libyoga libfolly_futures glog libfolly_json libglog_init libreact_render_core libreact_render_debug librrc_view librrc_root libreact_utils libreact_debug
LOCAL_SHARED_LIBRARIES := libbetter libyoga libfolly_futures glog libfolly_json libglog_init libreact_render_core libreact_render_debug librrc_view librrc_root libreact_utils libreact_debug libreact_render_telemetry
include $(BUILD_SHARED_LIBRARY)
@ -36,3 +36,4 @@ $(call import-module,react/renderer/debug)
$(call import-module,react/utils)
$(call import-module,react/debug)
$(call import-module,yogajni)
$(call import-module,react/renderer/telemetry)

Просмотреть файл

@ -62,6 +62,7 @@ rn_xplat_cxx_library(
react_native_xplat_target("react/renderer/components/view:view"),
react_native_xplat_target("react/renderer/core:core"),
react_native_xplat_target("react/renderer/debug:debug"),
react_native_xplat_target("react/renderer/telemetry:telemetry"),
react_native_xplat_target("react/utils:utils"),
],
)

Просмотреть файл

@ -8,8 +8,8 @@
#pragma once
#include <react/renderer/mounting/ShadowViewMutation.h>
#include <react/renderer/mounting/SurfaceTelemetry.h>
#include <react/renderer/mounting/TransactionTelemetry.h>
#include <react/renderer/telemetry/SurfaceTelemetry.h>
#include <react/renderer/telemetry/TransactionTelemetry.h>
namespace facebook {
namespace react {

Просмотреть файл

@ -8,7 +8,7 @@
#pragma once
#include <react/renderer/mounting/MountingTransaction.h>
#include <react/renderer/mounting/TransactionTelemetry.h>
#include <react/renderer/telemetry/TransactionTelemetry.h>
namespace facebook {
namespace react {

Просмотреть файл

@ -15,7 +15,7 @@
#include <react/renderer/debug/SystraceSection.h>
#include <react/renderer/mounting/ShadowTreeRevision.h>
#include <react/renderer/mounting/ShadowViewMutation.h>
#include <react/renderer/mounting/TransactionTelemetry.h>
#include <react/renderer/telemetry/TransactionTelemetry.h>
#include "ShadowTreeDelegate.h"

Просмотреть файл

@ -13,7 +13,7 @@
#include <react/renderer/mounting/MountingOverrideDelegate.h>
#include <react/renderer/mounting/MountingTransaction.h>
#include <react/renderer/mounting/ShadowViewMutation.h>
#include <react/renderer/mounting/TransactionTelemetry.h>
#include <react/renderer/telemetry/TransactionTelemetry.h>
namespace facebook {
namespace react {

Просмотреть файл

@ -12,7 +12,7 @@
#include <react/renderer/mounting/MountingTransaction.h>
#include <react/renderer/mounting/MountingTransactionMetadata.h>
#include <react/renderer/mounting/TransactionTelemetry.h>
#include <react/renderer/telemetry/TransactionTelemetry.h>
namespace facebook {
namespace react {

Просмотреть файл

@ -0,0 +1,31 @@
# 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.
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := react_render_telemetry
LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/*.cpp)
LOCAL_C_INCLUDES := $(LOCAL_PATH)/
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/../../../
LOCAL_CFLAGS := \
-DLOG_TAG=\"Fabric\"
LOCAL_CFLAGS += -fexceptions -frtti -std=c++14 -Wall
LOCAL_STATIC_LIBRARIES :=
LOCAL_SHARED_LIBRARIES := libbetter libyoga libfolly_futures glog libfolly_json libglog_init libreact_render_core libreact_render_debug librrc_view librrc_root libreact_utils libreact_debug
include $(BUILD_SHARED_LIBRARY)
$(call import-module,better)
$(call import-module,glog)
$(call import-module,folly)
$(call import-module,react/utils)

Просмотреть файл

@ -0,0 +1,83 @@
load(
"//tools/build_defs/oss:rn_defs.bzl",
"ANDROID",
"APPLE",
"CXX",
"fb_xplat_cxx_test",
"get_apple_compiler_flags",
"get_apple_inspector_flags",
"get_preprocessor_flags_for_build_mode",
"react_native_xplat_target",
"rn_xplat_cxx_library",
"subdir_glob",
)
APPLE_COMPILER_FLAGS = get_apple_compiler_flags()
rn_xplat_cxx_library(
name = "telemetry",
srcs = glob(
["**/*.cpp"],
exclude = glob(["tests/**/*.cpp"]),
),
headers = glob(
["**/*.h"],
exclude = glob(["tests/**/*.h"]),
),
header_namespace = "",
exported_headers = subdir_glob(
[
("", "*.h"),
("stubs", "*.h"),
],
prefix = "react/renderer/telemetry",
),
compiler_flags = [
"-fexceptions",
"-frtti",
"-std=c++14",
"-Wall",
],
fbobjc_compiler_flags = APPLE_COMPILER_FLAGS,
fbobjc_preprocessor_flags = get_preprocessor_flags_for_build_mode() + get_apple_inspector_flags(),
force_static = True,
labels = ["supermodule:xplat/default/public.react_native.infra"],
macosx_tests_override = [],
platforms = (ANDROID, APPLE, CXX),
preprocessor_flags = [
"-DLOG_TAG=\"ReactNative\"",
"-DWITH_FBSYSTRACE=1",
],
tests = [":tests"],
visibility = ["PUBLIC"],
deps = [
"//third-party/glog:glog",
"//xplat/fbsystrace:fbsystrace",
"//xplat/folly:headers_only",
"//xplat/folly:memory",
"//xplat/folly:molly",
react_native_xplat_target("better:better"),
react_native_xplat_target("react/debug:debug"),
react_native_xplat_target("react/utils:utils"),
],
)
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"],
fbandroid_use_instrumentation_test = True,
platforms = (ANDROID, APPLE, CXX),
deps = [
":telemetry",
"//xplat/folly:molly",
"//xplat/third-party/gmock:gtest",
],
)

Просмотреть файл

@ -10,7 +10,7 @@
#include <better/small_vector.h>
#include <vector>
#include <react/renderer/mounting/TransactionTelemetry.h>
#include <react/renderer/telemetry/TransactionTelemetry.h>
#include <react/utils/Telemetry.h>
namespace facebook {

Просмотреть файл

@ -10,7 +10,7 @@
#include <gtest/gtest.h>
#include <react/renderer/mounting/TransactionTelemetry.h>
#include <react/renderer/telemetry/TransactionTelemetry.h>
#include <react/utils/Telemetry.h>
using namespace facebook::react;

Просмотреть файл

@ -11,7 +11,7 @@ LOCAL_MODULE := react_render_textlayoutmanager
LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/*.cpp $(LOCAL_PATH)/platform/android/react/renderer/textlayoutmanager/*.cpp)
LOCAL_SHARED_LIBRARIES := libfolly_futures libreactnativeutilsjni libreact_utils libfb libfbjni libreact_render_uimanager libreact_render_componentregistry libreact_render_attributedstring libreact_render_mounting libfolly_json libyoga libfolly_json libreact_render_core libreact_render_debug libreact_render_graphics libreact_debug libreact_render_mapbuffer libmapbufferjni
LOCAL_SHARED_LIBRARIES := libfolly_futures libreactnativeutilsjni libreact_utils libfb libfbjni libreact_render_uimanager libreact_render_componentregistry libreact_render_attributedstring libreact_render_mounting libfolly_json libyoga libfolly_json libreact_render_core libreact_render_debug libreact_render_graphics libreact_debug libreact_render_mapbuffer libmapbufferjni libreact_render_telemetry
LOCAL_STATIC_LIBRARIES :=
@ -40,3 +40,4 @@ $(call import-module,react/renderer/uimanager)
$(call import-module,react/utils)
$(call import-module,yogajni)
$(call import-module,react/renderer/mapbuffer)
$(call import-module,react/renderer/telemetry)

Просмотреть файл

@ -12,7 +12,7 @@
#include <react/jni/ReadableNativeMap.h>
#include <react/renderer/attributedstring/conversions.h>
#include <react/renderer/core/conversions.h>
#include <react/renderer/mounting/TransactionTelemetry.h>
#include <react/renderer/telemetry/TransactionTelemetry.h>
#include <react/utils/LayoutManager.h>
using namespace facebook::jni;

Просмотреть файл

@ -6,7 +6,7 @@
*/
#include "TextLayoutManager.h"
#include <react/renderer/mounting/TransactionTelemetry.h>
#include <react/renderer/telemetry/TransactionTelemetry.h>
#include <react/utils/ManagedObjectWrapper.h>
#import "RCTTextLayoutManager.h"

Просмотреть файл

@ -264,6 +264,7 @@ PODS:
- React-Fabric/leakchecker (= 1000.0.0)
- React-Fabric/mounting (= 1000.0.0)
- React-Fabric/scheduler (= 1000.0.0)
- React-Fabric/telemetry (= 1000.0.0)
- React-Fabric/templateprocessor (= 1000.0.0)
- React-Fabric/textlayoutmanager (= 1000.0.0)
- React-Fabric/uimanager (= 1000.0.0)
@ -521,6 +522,14 @@ PODS:
- React-jsi (= 1000.0.0)
- React-jsiexecutor (= 1000.0.0)
- ReactCommon/turbomodule/core (= 1000.0.0)
- React-Fabric/telemetry (1000.0.0):
- RCT-Folly/Fabric (= 2020.01.13.00)
- RCTRequired (= 1000.0.0)
- RCTTypeSafety (= 1000.0.0)
- React-graphics (= 1000.0.0)
- React-jsi (= 1000.0.0)
- React-jsiexecutor (= 1000.0.0)
- ReactCommon/turbomodule/core (= 1000.0.0)
- React-Fabric/templateprocessor (1000.0.0):
- RCT-Folly/Fabric (= 2020.01.13.00)
- RCTRequired (= 1000.0.0)
@ -841,7 +850,7 @@ SPEC CHECKSUMS:
React-Core: 2d53d893ddeff7a58e7ed51b43a15a3d94c3c4a7
React-CoreModules: c096a150e14753b07dc68a498508da4e55b026e9
React-cxxreact: 14cce64344ab482615dfe82a2cbea6eb73be6481
React-Fabric: bcced8f57507c2bc11d65f31f83891119fc7a330
React-Fabric: d99f756e7ead26e764371939265120d3af324564
React-graphics: 246b8e6cb4aad51271358767c965e47d692921ab
React-jsi: 08c6628096d2025d4085fbaec8fe14a3c9dc667c
React-jsiexecutor: 896c41b04121803e4ee61e4c9ed0900fdb420fea