Introduce NativeFrameRateLogger

Summary: This diff introduces `NativeFrameRateLogger` and eliminates all usages of `NativeModules.FrameRateLogger` from our codebase.

Reviewed By: ejanzer

Differential Revision: D16718105

fbshipit-source-id: caf903162bab978ee1b3faef56aedef6ada75b89
This commit is contained in:
Ramanpreet Nara
2019-08-08 15:59:53 -07:00
committed by Facebook Github Bot
parent b1b5bd4418
commit aecdee0ab0
4 changed files with 127 additions and 9 deletions
@@ -925,6 +925,54 @@ namespace facebook {
}
} // namespace react
} // namespace facebook
@implementation RCTCxxConvert (NativeFrameRateLogger_SpecSetGlobalOptionsOptions)
+ (RCTManagedPointer *)JS_NativeFrameRateLogger_SpecSetGlobalOptionsOptions:(id)json
{
return facebook::react::managedPointer<JS::NativeFrameRateLogger::SpecSetGlobalOptionsOptions>(json);
}
@end
namespace facebook {
namespace react {
static facebook::jsi::Value __hostFunction_NativeFrameRateLoggerSpecJSI_setGlobalOptions(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
return static_cast<ObjCTurboModule&>(turboModule).invokeObjCMethod(rt, VoidKind, "setGlobalOptions", @selector(setGlobalOptions:), args, count);
}
static facebook::jsi::Value __hostFunction_NativeFrameRateLoggerSpecJSI_setContext(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
return static_cast<ObjCTurboModule&>(turboModule).invokeObjCMethod(rt, VoidKind, "setContext", @selector(setContext:), args, count);
}
static facebook::jsi::Value __hostFunction_NativeFrameRateLoggerSpecJSI_beginScroll(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
return static_cast<ObjCTurboModule&>(turboModule).invokeObjCMethod(rt, VoidKind, "beginScroll", @selector(beginScroll), args, count);
}
static facebook::jsi::Value __hostFunction_NativeFrameRateLoggerSpecJSI_endScroll(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
return static_cast<ObjCTurboModule&>(turboModule).invokeObjCMethod(rt, VoidKind, "endScroll", @selector(endScroll), args, count);
}
NativeFrameRateLoggerSpecJSI::NativeFrameRateLoggerSpecJSI(id<RCTTurboModule> instance, std::shared_ptr<JSCallInvoker> jsInvoker)
: ObjCTurboModule("FrameRateLogger", instance, jsInvoker) {
methodMap_["setGlobalOptions"] = MethodMetadata {1, __hostFunction_NativeFrameRateLoggerSpecJSI_setGlobalOptions};
setMethodArgConversionSelector(@"setGlobalOptions", 0, @"JS_NativeFrameRateLogger_SpecSetGlobalOptionsOptions:");
methodMap_["setContext"] = MethodMetadata {1, __hostFunction_NativeFrameRateLoggerSpecJSI_setContext};
methodMap_["beginScroll"] = MethodMetadata {0, __hostFunction_NativeFrameRateLoggerSpecJSI_beginScroll};
methodMap_["endScroll"] = MethodMetadata {0, __hostFunction_NativeFrameRateLoggerSpecJSI_endScroll};
}
} // namespace react
@@ -941,6 +941,44 @@ namespace facebook {
};
} // namespace react
} // namespace facebook
namespace JS {
namespace NativeFrameRateLogger {
struct SpecSetGlobalOptionsOptions {
folly::Optional<bool> debug() const;
folly::Optional<bool> reportStackTraces() const;
SpecSetGlobalOptionsOptions(NSDictionary *const v) : _v(v) {}
private:
NSDictionary *_v;
};
}
}
@interface RCTCxxConvert (NativeFrameRateLogger_SpecSetGlobalOptionsOptions)
+ (RCTManagedPointer *)JS_NativeFrameRateLogger_SpecSetGlobalOptionsOptions:(id)json;
@end
@protocol NativeFrameRateLoggerSpec <RCTBridgeModule, RCTTurboModule>
- (void)setGlobalOptions:(JS::NativeFrameRateLogger::SpecSetGlobalOptionsOptions &)options;
- (void)setContext:(NSString *)context;
- (void)beginScroll;
- (void)endScroll;
@end
namespace facebook {
namespace react {
/**
* ObjC++ class for module 'FrameRateLogger'
*/
class JSI_EXPORT NativeFrameRateLoggerSpecJSI : public ObjCTurboModule {
public:
NativeFrameRateLoggerSpecJSI(id<RCTTurboModule> instance, std::shared_ptr<JSCallInvoker> jsInvoker);
};
} // namespace react
} // namespace facebook
@protocol NativeHeadlessJsTaskSupportSpec <RCTBridgeModule, RCTTurboModule>
- (void)notifyTaskFinished:(double)taskId;
@@ -2597,6 +2635,16 @@ inline folly::Optional<JS::NativeExceptionsManager::ExceptionDataExtraData> JS::
id const p = _v[@"extraData"];
return (p == nil ? folly::none : folly::make_optional(JS::NativeExceptionsManager::ExceptionDataExtraData(p)));
}
inline folly::Optional<bool> JS::NativeFrameRateLogger::SpecSetGlobalOptionsOptions::debug() const
{
id const p = _v[@"debug"];
return RCTBridgingToOptionalBool(p);
}
inline folly::Optional<bool> JS::NativeFrameRateLogger::SpecSetGlobalOptionsOptions::reportStackTraces() const
{
id const p = _v[@"reportStackTraces"];
return RCTBridgingToOptionalBool(p);
}
inline JS::NativeI18nManager::Constants::Builder::Builder(const Input i) : _factory(^{
NSMutableDictionary *d = [NSMutableDictionary new];
auto isRTL = i.isRTL.get();
+7 -9
View File
@@ -10,7 +10,7 @@
'use strict';
const NativeModules = require('../BatchedBridge/NativeModules');
import NativeFrameRateLogger from './NativeFrameRateLogger';
const invariant = require('invariant');
@@ -41,17 +41,17 @@ const FrameRateLogger = {
}) {
if (options.debug !== undefined) {
invariant(
NativeModules.FrameRateLogger,
NativeFrameRateLogger,
'Trying to debug FrameRateLogger without the native module!',
);
}
if (NativeModules.FrameRateLogger) {
if (NativeFrameRateLogger) {
// Needs to clone the object first to avoid modifying the argument.
const optionsClone = {
debug: !!options.debug,
reportStackTraces: !!options.reportStackTraces,
};
NativeModules.FrameRateLogger.setGlobalOptions(optionsClone);
NativeFrameRateLogger.setGlobalOptions(optionsClone);
}
},
@@ -60,8 +60,7 @@ const FrameRateLogger = {
* in `AppRegistry`, but navigation is also a common place to hook in.
*/
setContext: function(context: string) {
NativeModules.FrameRateLogger &&
NativeModules.FrameRateLogger.setContext(context);
NativeFrameRateLogger && NativeFrameRateLogger.setContext(context);
},
/**
@@ -69,8 +68,7 @@ const FrameRateLogger = {
* automatically.
*/
beginScroll() {
NativeModules.FrameRateLogger &&
NativeModules.FrameRateLogger.beginScroll();
NativeFrameRateLogger && NativeFrameRateLogger.beginScroll();
},
/**
@@ -78,7 +76,7 @@ const FrameRateLogger = {
* automatically.
*/
endScroll() {
NativeModules.FrameRateLogger && NativeModules.FrameRateLogger.endScroll();
NativeFrameRateLogger && NativeFrameRateLogger.endScroll();
},
};
@@ -0,0 +1,24 @@
/**
* 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.
*
* @format
* @flow
*/
import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry';
import type {TurboModule} from '../TurboModule/RCTExport';
export interface Spec extends TurboModule {
+setGlobalOptions: (options: {|
+debug?: ?boolean,
+reportStackTraces?: ?boolean,
|}) => void;
+setContext: (context: string) => void;
+beginScroll: () => void;
+endScroll: () => void;
}
export default TurboModuleRegistry.get<Spec>('FrameRateLogger');