Skip to content

Commit

Permalink
Revert web worker registry name refactor to fix CSP build edge case (#…
Browse files Browse the repository at this point in the history
…11790) (#11805)

Co-authored-by: Volodymyr Agafonkin <agafonkin@gmail.com>
  • Loading branch information
ansis and mourner authored Apr 22, 2022
1 parent 0071ce7 commit ffba1e9
Show file tree
Hide file tree
Showing 25 changed files with 138 additions and 135 deletions.
154 changes: 77 additions & 77 deletions src/data/array_types.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion src/data/bucket/circle_bucket.js
Original file line number Diff line number Diff line change
Expand Up @@ -242,6 +242,6 @@ class CircleBucket<Layer: CircleStyleLayer | HeatmapStyleLayer> implements Bucke
}
}

register(CircleBucket, {omit: ['layers']});
register(CircleBucket, 'CircleBucket', {omit: ['layers']});

export default CircleBucket;
2 changes: 1 addition & 1 deletion src/data/bucket/fill_bucket.js
Original file line number Diff line number Diff line change
Expand Up @@ -227,6 +227,6 @@ class FillBucket implements Bucket {
}
}

register(FillBucket, {omit: ['layers', 'patternFeatures']});
register(FillBucket, 'FillBucket', {omit: ['layers', 'patternFeatures']});

export default FillBucket;
4 changes: 2 additions & 2 deletions src/data/bucket/fill_extrusion_bucket.js
Original file line number Diff line number Diff line change
Expand Up @@ -578,8 +578,8 @@ class FillExtrusionBucket implements Bucket {
}
}

register(FillExtrusionBucket, {omit: ['layers', 'features']});
register(PartMetadata);
register(FillExtrusionBucket, 'FillExtrusionBucket', {omit: ['layers', 'features']});
register(PartMetadata, 'PartMetadata');

export default FillExtrusionBucket;

Expand Down
2 changes: 1 addition & 1 deletion src/data/bucket/heatmap_bucket.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,6 @@ class HeatmapBucket extends CircleBucket<HeatmapStyleLayer> {
layers: Array<HeatmapStyleLayer>;
}

register(HeatmapBucket, {omit: ['layers']});
register(HeatmapBucket, 'HeatmapBucket', {omit: ['layers']});

export default HeatmapBucket;
2 changes: 1 addition & 1 deletion src/data/bucket/line_bucket.js
Original file line number Diff line number Diff line change
Expand Up @@ -659,6 +659,6 @@ class LineBucket implements Bucket {
}
}

register(LineBucket, {omit: ['layers', 'patternFeatures']});
register(LineBucket, 'LineBucket', {omit: ['layers', 'patternFeatures']});

export default LineBucket;
6 changes: 3 additions & 3 deletions src/data/bucket/symbol_bucket.js
Original file line number Diff line number Diff line change
Expand Up @@ -234,7 +234,7 @@ export class SymbolBuffers {
}
}

register(SymbolBuffers);
register(SymbolBuffers, 'SymbolBuffers');

class CollisionBuffers {
layoutVertexArray: StructArray;
Expand Down Expand Up @@ -280,7 +280,7 @@ class CollisionBuffers {
}
}

register(CollisionBuffers);
register(CollisionBuffers, 'CollisionBuffers');

/**
* Unlike other buckets, which simply implement #addFeature with type-specific
Expand Down Expand Up @@ -1036,7 +1036,7 @@ class SymbolBucket implements Bucket {
}
}

register(SymbolBucket, {
register(SymbolBucket, 'SymbolBucket', {
omit: ['layers', 'collisionBoxArray', 'features', 'compareText']
});

Expand Down
4 changes: 2 additions & 2 deletions src/data/dem_data.js
Original file line number Diff line number Diff line change
Expand Up @@ -176,5 +176,5 @@ export default class DEMData {
}
}

register(DEMData);
register(DemMinMaxQuadTree, {omit: ['dem']});
register(DEMData, 'DEMData');
register(DemMinMaxQuadTree, 'DemMinMaxQuadTree', {omit: ['dem']});
2 changes: 1 addition & 1 deletion src/data/feature_index.js
Original file line number Diff line number Diff line change
Expand Up @@ -311,7 +311,7 @@ class FeatureIndex {
}
}

register(FeatureIndex, {omit: ['rawTileData', 'sourceLayerCoder']});
register(FeatureIndex, 'FeatureIndex', {omit: ['rawTileData', 'sourceLayerCoder']});

export default FeatureIndex;

Expand Down
2 changes: 1 addition & 1 deletion src/data/feature_position_map.js
Original file line number Diff line number Diff line change
Expand Up @@ -126,4 +126,4 @@ function swap(arr, i, j) {
arr[j] = tmp;
}

register(FeaturePositionMap);
register(FeaturePositionMap, 'FeaturePositionMap');
14 changes: 7 additions & 7 deletions src/data/program_configuration.js
Original file line number Diff line number Diff line change
Expand Up @@ -704,10 +704,10 @@ function layoutType(property, type, binderType) {
return (layoutException && layoutException[binderType]) || defaultLayouts[type][binderType];
}

register(ConstantBinder);
register(CrossFadedConstantBinder);
register(SourceExpressionBinder);
register(CrossFadedCompositeBinder);
register(CompositeExpressionBinder);
register(ProgramConfiguration, {omit: ['_buffers']});
register(ProgramConfigurationSet);
register(ConstantBinder, 'ConstantBinder');
register(CrossFadedConstantBinder, 'CrossFadedConstantBinder');
register(SourceExpressionBinder, 'SourceExpressionBinder');
register(CrossFadedCompositeBinder, 'CrossFadedCompositeBinder');
register(CompositeExpressionBinder, 'CompositeExpressionBinder');
register(ProgramConfiguration, 'ProgramConfiguration', {omit: ['_buffers']});
register(ProgramConfigurationSet, 'ProgramConfigurationSet');
2 changes: 1 addition & 1 deletion src/data/segment.js
Original file line number Diff line number Diff line change
Expand Up @@ -72,5 +72,5 @@ class SegmentVector {
*/
SegmentVector.MAX_VERTEX_ARRAY_LENGTH = Math.pow(2, 16) - 1;

register(SegmentVector);
register(SegmentVector, 'SegmentVector');
export default SegmentVector;
2 changes: 1 addition & 1 deletion src/render/glyph_atlas.js
Original file line number Diff line number Diff line change
Expand Up @@ -76,4 +76,4 @@ export default class GlyphAtlas {
}
}

register(GlyphAtlas);
register(GlyphAtlas, 'GlyphAtlas');
4 changes: 2 additions & 2 deletions src/render/image_atlas.js
Original file line number Diff line number Diff line change
Expand Up @@ -143,5 +143,5 @@ export default class ImageAtlas {

}

register(ImagePosition);
register(ImageAtlas);
register(ImagePosition, 'ImagePosition');
register(ImageAtlas, 'ImageAtlas');
2 changes: 1 addition & 1 deletion src/render/line_atlas.js
Original file line number Diff line number Diff line change
Expand Up @@ -215,6 +215,6 @@ class LineAtlas {
}
}

register(LineAtlas);
register(LineAtlas, 'LineAtlas');

export default LineAtlas;
4 changes: 2 additions & 2 deletions src/source/tile_id.js
Original file line number Diff line number Diff line change
Expand Up @@ -191,5 +191,5 @@ function getQuadkey(z, x, y) {
return quadkey;
}

register(CanonicalTileID);
register(OverscaledTileID, {omit: ['projMatrix']});
register(CanonicalTileID, 'CanonicalTileID');
register(OverscaledTileID, 'OverscaledTileID', {omit: ['projMatrix']});
2 changes: 1 addition & 1 deletion src/style/format_section_override.js
Original file line number Diff line number Diff line change
Expand Up @@ -54,4 +54,4 @@ export default class FormatSectionOverride<T> implements Expression {
}
}

register(FormatSectionOverride, {omit: ['defaultValue']});
register(FormatSectionOverride, 'FormatSectionOverride', {omit: ['defaultValue']});
10 changes: 5 additions & 5 deletions src/style/properties.js
Original file line number Diff line number Diff line change
Expand Up @@ -764,8 +764,8 @@ export class Properties<Props: Object> {
}
}

register(DataDrivenProperty);
register(DataConstantProperty);
register(CrossFadedDataDrivenProperty);
register(CrossFadedProperty);
register(ColorRampProperty);
register(DataDrivenProperty, 'DataDrivenProperty');
register(DataConstantProperty, 'DataConstantProperty');
register(CrossFadedDataDrivenProperty, 'CrossFadedDataDrivenProperty');
register(CrossFadedProperty, 'CrossFadedProperty');
register(ColorRampProperty, 'ColorRampProperty');
2 changes: 1 addition & 1 deletion src/symbol/anchor.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,6 @@ class Anchor extends Point {
}
}

register(Anchor);
register(Anchor, 'Anchor');

export default Anchor;
2 changes: 1 addition & 1 deletion src/symbol/opacity_state.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,6 @@ class OpacityState {
}
}

register(OpacityState);
register(OpacityState, 'OpacityState');

export default OpacityState;
4 changes: 2 additions & 2 deletions src/util/image.js
Original file line number Diff line number Diff line change
Expand Up @@ -144,5 +144,5 @@ export class RGBAImage {
}
}

register(AlphaImage);
register(RGBAImage);
register(AlphaImage, 'AlphaImage');
register(RGBAImage, 'RGBAImage');
2 changes: 1 addition & 1 deletion src/util/struct_array.js.ejs
Original file line number Diff line number Diff line change
Expand Up @@ -94,4 +94,4 @@ if (useComponentGetters) {
-%>
}

register(<%=StructArrayClass%>);
register(<%=StructArrayClass%>, '<%=StructArrayClass%>');
2 changes: 1 addition & 1 deletion src/util/struct_array_layout.js.ejs
Original file line number Diff line number Diff line change
Expand Up @@ -95,4 +95,4 @@ for (const member of members) {
}

<%=StructArrayLayoutClass%>.prototype.bytesPerElement = <%= size %>;
register(<%=StructArrayLayoutClass%>);
register(<%=StructArrayLayoutClass%>, '<%=StructArrayLayoutClass%>');
37 changes: 20 additions & 17 deletions src/util/web_worker_transfer.js
Original file line number Diff line number Diff line change
Expand Up @@ -52,17 +52,20 @@ const registry: Registry = {};
*
* @private
*/
export function register<T: any>(klass: Class<T>, options: RegisterOptions<T> = {}) {
const name = klass.name;
export function register<T: any>(klass: Class<T>, name: string, options: RegisterOptions<T> = {}) {
assert(name, 'Can\'t register a class without a name.');
assert(!registry[name], `${name} is already registered.`);
(Object.defineProperty: any)(klass, '_classRegistryKey', {
value: name,
writeable: false
});
registry[name] = {
klass,
omit: options.omit || []
};
}

register(Object);
register(Object, 'Object');

type SerializedGrid = { buffer: ArrayBuffer };

Expand All @@ -80,21 +83,20 @@ type SerializedGrid = { buffer: ArrayBuffer };

Object.defineProperty(Grid, 'name', {value: 'Grid'});

register(Grid);
register(Grid, 'Grid');

register(Color);
register(Error);
register(AJAXError);
register(ResolvedImage);
register(Color, 'Color');
register(Error, 'Error');
register(AJAXError, 'AJAXError');
register(ResolvedImage, 'ResolvedImage');
register(StylePropertyFunction, 'StylePropertyFunction');
register(StyleExpression, 'StyleExpression', {omit: ['_evaluator']});

register(StylePropertyFunction);
register(StyleExpression, {omit: ['_evaluator']});

register(ZoomDependentExpression);
register(ZoomConstantExpression);
register(CompoundExpression, {omit: ['_evaluate']});
register(ZoomDependentExpression, 'ZoomDependentExpression');
register(ZoomConstantExpression, 'ZoomConstantExpression');
register(CompoundExpression, 'CompoundExpression', {omit: ['_evaluate']});
for (const name in expressions) {
if (!registry[expressions[name].name]) register(expressions[name]);
if (!registry[(expressions[name]: any)._classRegistryKey]) register(expressions[name], `Expression${name}`);
}

function isArrayBuffer(val: any): boolean {
Expand Down Expand Up @@ -167,10 +169,11 @@ export function serialize(input: mixed, transferables: ?Array<Transferable>): Se

if (typeof input === 'object') {
const klass = (input.constructor: any);
const name = klass.name;
if (!registry[name]) {
const name = klass._classRegistryKey;
if (!name) {
throw new Error(`can't serialize object of unregistered class ${name}`);
}
assert(registry[name]);

const properties: SerializedObject = klass.serialize ?
// (Temporary workaround) allow a class to provide static
Expand Down
4 changes: 2 additions & 2 deletions test/unit/util/web_worker_transfer.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ test('round trip', (t) => {
}
}

register(Foo, {omit: ['_cached']});
register(Foo, 'Foo', {omit: ['_cached']});

const foo = new Foo(10);
const transferables = [];
Expand Down Expand Up @@ -64,7 +64,7 @@ test('custom serialization', (t) => {
}
}

register(Bar);
register(Bar, 'Bar');

const bar = new Bar('a');
t.assert(!bar._deserialized);
Expand Down

0 comments on commit ffba1e9

Please sign in to comment.