Skip to content

Commit da14fad

Browse files
pakoitofacebook-github-bot
authored andcommitted
Add AppIdentity and DeviceIdentity to Inspector
Reviewed By: Hypuk Differential Revision: D5924011 fbshipit-source-id: a81d420dbe1a5ede203d2fa313548e19664b9587
1 parent 96f23e7 commit da14fad

File tree

7 files changed

+34
-5
lines changed

7 files changed

+34
-5
lines changed

React/CxxBridge/RCTCxxBridge.mm

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -328,9 +328,13 @@ - (void)start
328328
BOOL useCustomJSC =
329329
[self.delegate respondsToSelector:@selector(shouldBridgeUseCustomJSC:)] &&
330330
[self.delegate shouldBridgeUseCustomJSC:self];
331+
NSString *escapedDeviceName = [[[UIDevice currentDevice] name] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
332+
NSString *escapedAppName = [[[NSBundle mainBundle] bundleIdentifier] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
331333
// The arg is a cache dir. It's not used with standard JSC.
332334
executorFactory.reset(new JSCExecutorFactory(folly::dynamic::object
333335
("OwnerIdentity", "ReactNative")
336+
("AppIdentity", [(escapedAppName ?: @"unknown") UTF8String])
337+
("DeviceIdentity", [(escapedDeviceName ?: @"unknown") UTF8String])
334338
("UseCustomJSC", (bool)useCustomJSC)
335339
#if RCT_PROFILE
336340
("StartSamplingProfilerOnInit", (bool)self.devSettings.startSamplingProfilerOnLaunch)

ReactAndroid/src/androidTest/java/com/facebook/react/testing/ReactTestHelper.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ public CatalystInstance build() {
7373
}
7474
JavaScriptExecutor executor = null;
7575
try {
76-
executor = new JSCJavaScriptExecutorFactory().create();
76+
executor = new JSCJavaScriptExecutorFactory("ReactTestHelperApp", "ReactTestHelperDevice").create();
7777
} catch (Exception e) {
7878
throw new RuntimeException(e);
7979
}

ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManagerBuilder.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,12 @@
22

33
package com.facebook.react;
44

5+
import static com.facebook.react.modules.systeminfo.AndroidInfoHelpers.getFriendlyDeviceName;
6+
57
import android.app.Activity;
68
import android.app.Application;
9+
import android.net.Uri;
10+
import android.os.Build;
711
import com.facebook.infer.annotation.Assertions;
812
import com.facebook.react.bridge.JSBundleLoader;
913
import com.facebook.react.bridge.JSCJavaScriptExecutorFactory;
@@ -262,12 +266,15 @@ public ReactInstanceManager build() {
262266
mUIImplementationProvider = new UIImplementationProvider();
263267
}
264268

269+
String appName = Uri.encode(mApplication.getPackageName());
270+
String deviceName = Uri.encode(getFriendlyDeviceName());
271+
265272
return new ReactInstanceManager(
266273
mApplication,
267274
mCurrentActivity,
268275
mDefaultHardwareBackBtnHandler,
269276
mJavaScriptExecutorFactory == null
270-
? new JSCJavaScriptExecutorFactory()
277+
? new JSCJavaScriptExecutorFactory(appName, deviceName)
271278
: mJavaScriptExecutorFactory,
272279
(mJSBundleLoader == null && mJSBundleAssetUrl != null)
273280
? JSBundleLoader.createAssetLoader(

ReactAndroid/src/main/java/com/facebook/react/bridge/JSCJavaScriptExecutorFactory.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,20 @@
1010
package com.facebook.react.bridge;
1111

1212
public class JSCJavaScriptExecutorFactory implements JavaScriptExecutorFactory {
13+
private final String mAppName;
14+
private final String mDeviceName;
15+
16+
public JSCJavaScriptExecutorFactory(String appName, String deviceName) {
17+
this.mAppName = appName;
18+
this.mDeviceName = deviceName;
19+
}
20+
1321
@Override
1422
public JavaScriptExecutor create() throws Exception {
1523
WritableNativeMap jscConfig = new WritableNativeMap();
1624
jscConfig.putString("OwnerIdentity", "ReactNative");
25+
jscConfig.putString("AppIdentity", mAppName);
26+
jscConfig.putString("OwnerIdentity", mDeviceName);
1727
return new JSCJavaScriptExecutor(jscConfig);
1828
}
1929
}

ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/AndroidInfoHelpers.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ public static String getInspectorProxyHost() {
3131
return getServerIpAddress(INSPECTOR_PROXY_PORT);
3232
}
3333

34+
// FIXME(festevezga): This method is duplicated in an internal module. Any changes should be applied to both.
3435
public static String getFriendlyDeviceName() {
3536
if (isRunningOnGenymotion()) {
3637
// Genymotion already has a friendly name by default

ReactCommon/cxxreact/JSCExecutor.cpp

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -209,9 +209,14 @@ void JSCExecutor::initOnJSVMThread() throw(JSException) {
209209
Object::getGlobalObject(m_context).setPrivate(this);
210210

211211
if (canUseInspector(m_context)) {
212-
const std::string ownerId = m_jscConfig.getDefault("OwnerIdentity", "main").getString();
212+
const std::string ownerId = m_jscConfig.getDefault("OwnerIdentity", "unknown").getString();
213+
const std::string appId = m_jscConfig.getDefault("AppIdentity", "unknown").getString();
214+
const std::string deviceId = m_jscConfig.getDefault("DeviceIdentity", "unknown").getString();
215+
const std::function<bool()> checkIsInspectedRemote = [&ownerId, &appId, &deviceId](){
216+
return false;
217+
};
213218
IInspector* pInspector = JSC_JSInspectorGetInstance(true);
214-
pInspector->registerGlobalContext(ownerId, m_context);
219+
pInspector->registerGlobalContext(ownerId, checkIsInspectedRemote, m_context);
215220
}
216221

217222
installNativeHook<&JSCExecutor::nativeFlushQueueImmediate>("nativeFlushQueueImmediate");

ReactCommon/jschelpers/InspectorInterfaces.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,11 @@
99

1010
#pragma once
1111

12+
#include <functional>
1213
#include <memory>
1314
#include <string>
1415
#include <vector>
16+
1517
#include <JavaScriptCore/JSBase.h>
1618

1719
namespace facebook {
@@ -44,7 +46,7 @@ class ILocalConnection : public IDestructible {
4446
// Note: not destructible!
4547
class IInspector {
4648
public:
47-
virtual void registerGlobalContext(std::string title, JSGlobalContextRef ctx) = 0;
49+
virtual void registerGlobalContext(const std::string& title, const std::function<bool()> &checkIsInspectedRemote, JSGlobalContextRef ctx) = 0;
4850
virtual void unregisterGlobalContext(JSGlobalContextRef ctx) = 0;
4951

5052
virtual std::vector<InspectorPage> getPages() const = 0;

0 commit comments

Comments
 (0)