[ReactNative] Send debug component ownership info in createView
This commit is contained in:
parent
1373dab826
commit
f23c022f1b
|
@ -0,0 +1,55 @@
|
||||||
|
/**
|
||||||
|
* Copyright (c) 2015-present, Facebook, Inc.
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the BSD-style license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree. An additional grant
|
||||||
|
* of patent rights can be found in the PATENTS file in the same directory.
|
||||||
|
*
|
||||||
|
* Utility class to provide the component owner hierarchy to native code for
|
||||||
|
* debugging purposes.
|
||||||
|
*
|
||||||
|
* @providesModule RCTDebugComponentOwnership
|
||||||
|
* @flow
|
||||||
|
*/
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var DebugComponentOwnershipModule = require('NativeModules').DebugComponentOwnershipModule;
|
||||||
|
var InspectorUtils = require('InspectorUtils');
|
||||||
|
var ReactNativeTagHandles = require('ReactNativeTagHandles');
|
||||||
|
|
||||||
|
function componentToString(component) {
|
||||||
|
return component.getName ? component.getName() : 'Unknown';
|
||||||
|
}
|
||||||
|
|
||||||
|
function getRootTagForTag(tag: number): ?number {
|
||||||
|
var rootNodeID = ReactNativeTagHandles.tagToRootNodeID[tag];
|
||||||
|
if (!rootNodeID) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
var rootID = ReactNativeTagHandles.getNativeTopRootIDFromNodeID(rootNodeID);
|
||||||
|
if (!rootID) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return ReactNativeTagHandles.rootNodeIDToTag[rootID];
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Asynchronously returns the owner hierarchy as an array of strings. Request id is
|
||||||
|
* passed along to the native module so that the native module can identify the
|
||||||
|
* particular call instance.
|
||||||
|
*
|
||||||
|
* Example returned owner hierarchy: ['RootView', 'Dialog', 'TitleView', 'Text']
|
||||||
|
*/
|
||||||
|
getOwnerHierarchy: function(requestID: number, tag: number) {
|
||||||
|
var rootTag = getRootTagForTag(tag);
|
||||||
|
var instance = InspectorUtils.findInstanceByNativeTag(rootTag, tag);
|
||||||
|
var ownerHierarchy = instance ?
|
||||||
|
InspectorUtils.getOwnerHierarchy(instance).map(componentToString) :
|
||||||
|
null;
|
||||||
|
DebugComponentOwnershipModule.receiveOwnershipHierarchy(requestID, tag, ownerHierarchy);
|
||||||
|
},
|
||||||
|
};
|
|
@ -23,6 +23,7 @@
|
||||||
/* globals GLOBAL: true, window: true */
|
/* globals GLOBAL: true, window: true */
|
||||||
|
|
||||||
// Just to make sure the JS gets packaged up.
|
// Just to make sure the JS gets packaged up.
|
||||||
|
require('RCTDebugComponentOwnership');
|
||||||
require('RCTDeviceEventEmitter');
|
require('RCTDeviceEventEmitter');
|
||||||
require('PerformanceLogger');
|
require('PerformanceLogger');
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue