Create NativePerformance C++ module

Summary:
[Changelog][Internal]

The NativePerformance module functionality corresponds to the [timing extensions of the Performance API standard interface](https://www.w3.org/TR/user-timing/#extensions-performance-interface).

As this is logically separate from `PerformanceObserver` (which may exist without it), it makes sense to have it as a different native module, so there is no coupling between both.

Reviewed By: christophpurrer

Differential Revision: D41690145

fbshipit-source-id: 7443f4c51f54cc2fdddbdb2e89f9a1fa457ab280
This commit is contained in:
Ruslan Shestopalyuk
2022-12-03 08:32:58 -08:00
committed by Facebook GitHub Bot
parent 1c7e678e08
commit cb552f62f2
9 changed files with 120 additions and 32 deletions
@@ -22,43 +22,36 @@ static PerformanceEntryType stringToPerformanceEntryType(
NativePerformanceObserver::NativePerformanceObserver(
std::shared_ptr<CallInvoker> jsInvoker)
: NativePerformanceObserverCxxSpec(std::move(jsInvoker)),
reporter_(std::make_unique<PerformanceEntryReporter>()) {}
NativePerformanceObserver::~NativePerformanceObserver() {}
: NativePerformanceObserverCxxSpec(std::move(jsInvoker)) {}
void NativePerformanceObserver::startReporting(
jsi::Runtime &rt,
std::string entryType) {
reporter_->startReporting(stringToPerformanceEntryType(entryType));
PerformanceEntryReporter::getInstance().startReporting(
stringToPerformanceEntryType(entryType));
}
void NativePerformanceObserver::stopReporting(
jsi::Runtime &rt,
std::string entryType) {
reporter_->stopReporting(stringToPerformanceEntryType(entryType));
PerformanceEntryReporter::getInstance().stopReporting(
stringToPerformanceEntryType(entryType));
}
std::vector<RawPerformanceEntry> NativePerformanceObserver::popPendingEntries(
jsi::Runtime &rt) {
return reporter_->popPendingEntries();
return PerformanceEntryReporter::getInstance().popPendingEntries();
}
std::vector<RawPerformanceEntry> NativePerformanceObserver::getPendingEntries(
jsi::Runtime &rt) {
return reporter_->getPendingEntries();
return PerformanceEntryReporter::getInstance().getPendingEntries();
}
void NativePerformanceObserver::setOnPerformanceEntryCallback(
jsi::Runtime &rt,
std::optional<AsyncCallback<>> callback) {
reporter_->setReportingCallback(callback);
}
void NativePerformanceObserver::logEntryForDebug(
jsi::Runtime &rt,
RawPerformanceEntry entry) {
reporter_->logEntry(entry);
PerformanceEntryReporter::getInstance().setReportingCallback(callback);
}
} // namespace facebook::react