[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 */
|
||||
|
||||
// Just to make sure the JS gets packaged up.
|
||||
require('RCTDebugComponentOwnership');
|
||||
require('RCTDeviceEventEmitter');
|
||||
require('PerformanceLogger');
|
||||
|
||||
|
|
Loading…
Reference in New Issue