@samitouri / QOS-React-2 / commits / 4bf88ddeca

Fix <embed> not triggering onLoad (#15614)

Andrew Cherniavskii committed May 16, 2019 at 11:05 UTC 4bf88ddeca37d5971c05a9ab720f898409c143fd
2 files changed +29
packages/react-dom/src/__tests__/ReactDOMEventListener-test.js
+27
@@ -446,4 +446,31 @@ describe('ReactDOMEventListener', () => {
446 document.body.removeChild(container);
447 }
448 });
449 +
450 + it('should dispatch load for embed elements', () => {
451 + const container = document.createElement('div');
452 + document.body.appendChild(container);
453 +
454 + try {
455 + const ref = React.createRef();
456 + const handleLoad = jest.fn();
457 +
458 + ReactDOM.render(
459 + <div>
460 + <embed ref={ref} onLoad={handleLoad} />
461 + </div>,
462 + container,
463 + );
464 +
465 + ref.current.dispatchEvent(
466 + new ProgressEvent('load', {
467 + bubbles: false,
468 + }),
469 + );
470 +
471 + expect(handleLoad).toHaveBeenCalledTimes(1);
472 + } finally {
473 + document.body.removeChild(container);
474 + }
475 + });
476 });
packages/react-dom/src/client/ReactDOMComponent.js
+2
@@ -522,6 +522,7 @@ export function setInitialProperties(
522 switch (tag) {
523 case 'iframe':
524 case 'object':
525 + case 'embed':
526 trapBubbledEvent(TOP_LOAD, domElement);
527 props = rawProps;
528 break;
@@ -916,6 +917,7 @@ export function diffHydratedProperties(
917 switch (tag) {
918 case 'iframe':
919 case 'object':
920 + case 'embed':
921 trapBubbledEvent(TOP_LOAD, domElement);
922 break;
923 case 'video':