Skip to content

Commit 60b7a30

Browse files
p-sunfacebook-github-bot
authored andcommitted
Annotate <Image> components in QPL logging using ImageAnalyticsTagContext
Reviewed By: mdvacca Differential Revision: D21696266 fbshipit-source-id: b5c9d167e9da77ed969f7b4bdea1af9dd2e471ae
1 parent 1b1ebaf commit 60b7a30

File tree

6 files changed

+28
-8
lines changed

6 files changed

+28
-8
lines changed

Libraries/Image/Image.ios.js

+16-8
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ const React = require('react');
1515
const ReactNative = require('../Renderer/shims/ReactNative'); // eslint-disable-line no-unused-vars
1616
const StyleSheet = require('../StyleSheet/StyleSheet');
1717

18+
const ImageAnalyticsTagContext = require('./ImageAnalyticsTagContext').default;
1819
const flattenStyle = require('../StyleSheet/flattenStyle');
1920
const resolveAssetSource = require('./resolveAssetSource');
2021

@@ -124,14 +125,21 @@ let Image = (props: ImagePropsType, forwardedRef) => {
124125
}
125126

126127
return (
127-
<ImageViewNativeComponent
128-
{...props}
129-
ref={forwardedRef}
130-
style={style}
131-
resizeMode={resizeMode}
132-
tintColor={tintColor}
133-
source={sources}
134-
/>
128+
<ImageAnalyticsTagContext.Consumer>
129+
{analyticTag => {
130+
return (
131+
<ImageViewNativeComponent
132+
{...props}
133+
ref={forwardedRef}
134+
style={style}
135+
resizeMode={resizeMode}
136+
tintColor={tintColor}
137+
source={sources}
138+
internal_analyticTag={analyticTag}
139+
/>
140+
);
141+
}}
142+
</ImageAnalyticsTagContext.Consumer>
135143
);
136144
};
137145

Libraries/Image/RCTImageURLLoaderWithAttribution.h

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ namespace react {
1515
struct ImageURLLoaderAttribution {
1616
int32_t nativeViewTag = 0;
1717
int32_t surfaceId = 0;
18+
NSString *analyticTag;
1819
};
1920

2021
} // namespace react

Libraries/Image/RCTImageView.h

+1
Original file line numberDiff line numberDiff line change
@@ -22,5 +22,6 @@
2222
@property (nonatomic, copy) NSArray<RCTImageSource *> *imageSources;
2323
@property (nonatomic, assign) CGFloat blurRadius;
2424
@property (nonatomic, assign) RCTResizeMode resizeMode;
25+
@property (nonatomic, copy) NSString *internal_analyticTag;
2526

2627
@end

Libraries/Image/RCTImageView.mm

+8
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,13 @@ - (void)setResizeMode:(RCTResizeMode)resizeMode
216216
}
217217
}
218218

219+
- (void)setInternal_analyticTag:(NSString *)internal_analyticTag {
220+
if (_internal_analyticTag != internal_analyticTag) {
221+
_internal_analyticTag = internal_analyticTag;
222+
_needsReload = YES;
223+
}
224+
}
225+
219226
- (void)cancelImageLoad
220227
{
221228
[_loaderRequest cancel];
@@ -341,6 +348,7 @@ - (void)reloadImage
341348
attribution:{
342349
.nativeViewTag = [self.reactTag intValue],
343350
.surfaceId = [self.rootTag intValue],
351+
.analyticTag = self.internal_analyticTag
344352
}
345353
progressBlock:progressHandler
346354
partialLoadBlock:partialLoadHandler

Libraries/Image/RCTImageViewManager.mm

+1
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ - (UIView *)view
4040
RCT_EXPORT_VIEW_PROPERTY(onLoad, RCTDirectEventBlock)
4141
RCT_EXPORT_VIEW_PROPERTY(onLoadEnd, RCTDirectEventBlock)
4242
RCT_EXPORT_VIEW_PROPERTY(resizeMode, RCTResizeMode)
43+
RCT_EXPORT_VIEW_PROPERTY(internal_analyticTag, NSString)
4344
RCT_REMAP_VIEW_PROPERTY(source, imageSources, NSArray<RCTImageSource *>);
4445
RCT_CUSTOM_VIEW_PROPERTY(tintColor, UIColor, RCTImageView)
4546
{

Libraries/Image/__tests__/__snapshots__/Image-test.js.snap

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ exports[`<Image /> should render as <Image> when mocked 1`] = `
1212
1313
exports[`<Image /> should render as <RCTImageView> when not mocked 1`] = `
1414
<RCTImageView
15+
internal_analyticTag={null}
1516
resizeMode="cover"
1617
source={
1718
Array [

0 commit comments

Comments
 (0)