Refactor interfaces

Reviewed By: johnislarry

Differential Revision: D4840716

fbshipit-source-id: 1a82437c81ce5b767efd39ab0716998bab4f5363
This commit is contained in:
Theo Yaung
2017-04-06 00:04:06 -07:00
committed by Facebook Github Bot
parent 37c1678421
commit fd99330b6c
11 changed files with 126 additions and 35 deletions
@@ -39,7 +39,6 @@ cxx_library(
preprocessor_flags = [
"-DLOG_TAG=\"ReactNativeJNI\"",
"-DWITH_FBSYSTRACE=1",
"-DWITH_INSPECTOR=1",
],
soname = "libreactnativejnifb.$(ext)",
visibility = [
@@ -1,24 +1,25 @@
// Copyright 2004-present Facebook. All Rights Reserved.
#include "JInspector.h"
#include <jschelpers/JavaScriptCore.h>
#ifdef WITH_INSPECTOR
#ifdef WITH_FBJSCEXTENSIONS
namespace facebook {
namespace react {
namespace {
class RemoteConnection : public Inspector::RemoteConnection {
class RemoteConnection : public IRemoteConnection {
public:
RemoteConnection(jni::alias_ref<JRemoteConnection::javaobject> connection)
: connection_(jni::make_global(connection)) {}
void onMessage(std::string message) override {
virtual void onMessage(std::string message) override {
connection_->onMessage(message);
}
void onDisconnect() override {
virtual void onDisconnect() override {
connection_->onDisconnect();
}
private:
@@ -42,7 +43,7 @@ void JRemoteConnection::onDisconnect() const {
method(self());
}
JLocalConnection::JLocalConnection(std::unique_ptr<Inspector::LocalConnection> connection)
JLocalConnection::JLocalConnection(std::unique_ptr<ILocalConnection> connection)
: connection_(std::move(connection)) {}
void JLocalConnection::sendMessage(std::string message) {
@@ -60,13 +61,17 @@ void JLocalConnection::registerNatives() {
});
}
static IInspector* getInspectorInstance() {
return JSC_JSInspectorGetInstance(true /*useCustomJSC*/);
}
jni::global_ref<JInspector::javaobject> JInspector::instance(jni::alias_ref<jclass>) {
static auto instance = jni::make_global(newObjectCxxArgs(&Inspector::instance()));
static auto instance = jni::make_global(newObjectCxxArgs(getInspectorInstance()/*&Inspector::instance()*/));
return instance;
}
jni::local_ref<jni::JArrayClass<JPage::javaobject>> JInspector::getPages() {
std::vector<Inspector::Page> pages = inspector_->getPages();
std::vector<InspectorPage> pages = inspector_->getPages();
auto array = jni::JArrayClass<JPage::javaobject>::newArray(pages.size());
for (size_t i = 0; i < pages.size(); i++) {
(*array)[i] = JPage::create(pages[i].id, pages[i].title);
@@ -2,9 +2,9 @@
#pragma once
#ifdef WITH_INSPECTOR
#ifdef WITH_FBJSCEXTENSIONS
#include <inspector/Inspector.h>
#include <jschelpers/InspectorInterfaces.h>
#include <fb/fbjni.h>
#include <folly/Memory.h>
@@ -31,14 +31,14 @@ class JLocalConnection : public jni::HybridClass<JLocalConnection> {
public:
static constexpr auto kJavaDescriptor = "Lcom/facebook/react/bridge/Inspector$LocalConnection;";
JLocalConnection(std::unique_ptr<Inspector::LocalConnection> connection);
JLocalConnection(std::unique_ptr<ILocalConnection> connection);
void sendMessage(std::string message);
void disconnect();
static void registerNatives();
private:
std::unique_ptr<Inspector::LocalConnection> connection_;
std::unique_ptr<ILocalConnection> connection_;
};
class JInspector : public jni::HybridClass<JInspector> {
@@ -54,9 +54,9 @@ public:
private:
friend HybridBase;
JInspector(Inspector* inspector) : inspector_(inspector) {}
JInspector(IInspector* inspector) : inspector_(inspector) {}
Inspector* inspector_;
IInspector* inspector_;
};
}
@@ -18,7 +18,7 @@
#include "JCallback.h"
#include "JSLogging.h"
#ifdef WITH_INSPECTOR
#ifdef WITH_FBJSCEXTENSIONS
#include "JInspector.h"
#endif
@@ -171,7 +171,7 @@ extern "C" JNIEXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved) {
CxxModuleWrapperBase::registerNatives();
CxxModuleWrapper::registerNatives();
JCallbackImpl::registerNatives();
#ifdef WITH_INSPECTOR
#ifdef WITH_FBJSCEXTENSIONS
JInspector::registerNatives();
#endif