/** * 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. */ package com.facebook.react.fabric; import com.facebook.react.bridge.ReactContext; import com.facebook.react.modules.core.ChoreographerCompat; public abstract class GuardedFrameCallback extends ChoreographerCompat.FrameCallback { private final ReactContext mReactContext; protected GuardedFrameCallback(ReactContext reactContext) { mReactContext = reactContext; } @Override public final void doFrame(long frameTimeNanos) { try { doFrameGuarded(frameTimeNanos); } catch (RuntimeException e) { mReactContext.handleException(e); } } /** * Like the standard doFrame but RuntimeExceptions will be caught and passed to {@link * com.facebook.react.bridge.ReactContext#handleException(RuntimeException)}. */ protected abstract void doFrameGuarded(long frameTimeNanos); }