Changeset 275361 in webkit
- Timestamp:
- Apr 1, 2021 8:35:21 AM (3 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r275358 r275361 1 2021-04-01 Mark Lam <mark.lam@apple.com> 2 3 Fix some missing exception checks in HTMLMediaElement methods. 4 https://bugs.webkit.org/show_bug.cgi?id=224038 5 rdar://69573092 6 7 Reviewed by Eric Carlson. 8 9 * media/missing-exception-checks-in-HTMLMediaElement-methods-expected.txt: Added. 10 * media/missing-exception-checks-in-HTMLMediaElement-methods.html: Added. 11 1 12 2021-04-01 Devin Rousso <drousso@apple.com> 2 13 -
trunk/Source/WebCore/ChangeLog
r275360 r275361 1 2021-04-01 Mark Lam <mark.lam@apple.com> 2 3 Fix some missing exception checks in HTMLMediaElement methods. 4 https://bugs.webkit.org/show_bug.cgi?id=224038 5 rdar://69573092 6 7 Reviewed by Eric Carlson. 8 9 Test: media/missing-exception-checks-in-HTMLMediaElement-methods.html 10 11 * html/HTMLMediaElement.cpp: 12 (WebCore::HTMLMediaElement::setupAndCallJS): 13 (WebCore::HTMLMediaElement::updateCaptionContainer): 14 (WebCore::HTMLMediaElement::ensureMediaControlsInjectedScript): 15 (WebCore::HTMLMediaElement::setControllerJSProperty): 16 (WebCore::HTMLMediaElement::didAddUserAgentShadowRoot): 17 (WebCore::HTMLMediaElement::updateMediaControlsAfterPresentationModeChange): 18 (WebCore::HTMLMediaElement::getCurrentMediaControlsStatus): 19 1 20 2021-04-01 Jean-Yves Avenard <jya@apple.com> 2 21 -
trunk/Source/WebCore/html/HTMLMediaElement.cpp
r275359 r275361 4312 4312 auto& vm = globalObject->vm(); 4313 4313 JSC::JSLockHolder lock(vm); 4314 auto scope = DECLARE_THROW_SCOPE(vm);4315 4314 auto* lexicalGlobalObject = globalObject; 4316 4317 RETURN_IF_EXCEPTION(scope, false);4318 4319 4315 return task(*globalObject, *lexicalGlobalObject, scriptController, world); 4320 4316 } … … 4336 4332 auto& vm = globalObject.vm(); 4337 4333 auto scope = DECLARE_CATCH_SCOPE(vm); 4334 4335 auto reportExceptionAndReturnFalse = [&] () -> bool { 4336 auto* exception = scope.exception(); 4337 scope.clearException(); 4338 reportException(&globalObject, exception); 4339 return false; 4340 }; 4341 4338 4342 auto controllerValue = controllerJSValue(lexicalGlobalObject, globalObject, *this); 4343 RETURN_IF_EXCEPTION(scope, reportExceptionAndReturnFalse()); 4344 4339 4345 auto* controllerObject = JSC::jsDynamicCast<JSC::JSObject*>(vm, controllerValue); 4340 4346 if (!controllerObject) … … 4348 4354 // None 4349 4355 auto methodValue = controllerObject->get(&lexicalGlobalObject, JSC::Identifier::fromString(vm, "updateCaptionContainer")); 4356 RETURN_IF_EXCEPTION(scope, reportExceptionAndReturnFalse()); 4357 4350 4358 auto* methodObject = JSC::jsDynamicCast<JSC::JSObject*>(vm, methodValue); 4351 4359 if (!methodObject) … … 4359 4367 ASSERT(!noArguments.hasOverflowed()); 4360 4368 JSC::call(&lexicalGlobalObject, methodObject, callData, controllerObject, noArguments); 4361 scope.clearException();4369 RETURN_IF_EXCEPTION(scope, reportExceptionAndReturnFalse()); 4362 4370 4363 4371 m_haveSetUpCaptionContainer = true; … … 7157 7165 auto scope = DECLARE_CATCH_SCOPE(vm); 7158 7166 7167 auto reportExceptionAndReturnFalse = [&] () -> bool { 7168 auto* exception = scope.exception(); 7169 scope.clearException(); 7170 reportException(&globalObject, exception); 7171 return false; 7172 }; 7173 7159 7174 auto functionValue = globalObject.get(&lexicalGlobalObject, JSC::Identifier::fromString(vm, "createControls")); 7175 RETURN_IF_EXCEPTION(scope, reportExceptionAndReturnFalse()); 7160 7176 if (functionValue.isCallable(vm)) 7161 7177 return true; … … 7165 7181 continue; 7166 7182 scriptController.evaluateInWorldIgnoringException(ScriptSourceCode(mediaControlsScript), world); 7167 if (UNLIKELY(scope.exception())) { 7168 auto* exception = scope.exception(); 7169 scope.clearException(); 7170 reportException(&globalObject, exception); 7171 return false; 7172 } 7183 RETURN_IF_EXCEPTION(scope, reportExceptionAndReturnFalse()); 7173 7184 } 7174 7185 … … 7200 7211 setupAndCallJS([this, propertyName, propertyValue](JSDOMGlobalObject& globalObject, JSC::JSGlobalObject& lexicalGlobalObject, ScriptController&, DOMWrapperWorld&) { 7201 7212 auto& vm = globalObject.vm(); 7213 auto scope = DECLARE_THROW_SCOPE(vm); 7214 7202 7215 auto controllerValue = controllerJSValue(lexicalGlobalObject, globalObject, *this); 7216 EXCEPTION_ASSERT_UNUSED(scope, !scope.exception() || controllerValue.isNull()); 7203 7217 if (controllerValue.isNull()) 7204 7218 return false; … … 7209 7223 return false; 7210 7224 7225 scope.release(); 7211 7226 controllerObject->methodTable(vm)->put(controllerObject, &lexicalGlobalObject, JSC::Identifier::fromString(vm, propertyName), propertyValue, propertySlot); 7212 7227 … … 7257 7272 return false; 7258 7273 7274 auto reportExceptionAndReturnFalse = [&] () -> bool { 7275 auto* exception = scope.exception(); 7276 scope.clearException(); 7277 reportException(&globalObject, exception); 7278 return false; 7279 }; 7280 7259 7281 auto controllerValue = JSC::call(&lexicalGlobalObject, function, callData, &globalObject, argList); 7260 scope.clearException(); 7282 RETURN_IF_EXCEPTION(scope, reportExceptionAndReturnFalse()); 7283 7261 7284 auto* controllerObject = JSC::jsDynamicCast<JSC::JSObject*>(vm, controllerValue); 7262 7285 if (!controllerObject) … … 7283 7306 7284 7307 updatePageScaleFactorJSProperty(); 7308 RETURN_IF_EXCEPTION(scope, reportExceptionAndReturnFalse()); 7309 7285 7310 updateUsesLTRUserInterfaceLayoutDirectionJSProperty(); 7286 7287 if (UNLIKELY(scope.exception())) 7288 scope.clearException(); 7311 RETURN_IF_EXCEPTION(scope, reportExceptionAndReturnFalse()); 7289 7312 7290 7313 return true; … … 7318 7341 7319 7342 auto controllerValue = controllerJSValue(lexicalGlobalObject, globalObject, *this); 7343 RETURN_IF_EXCEPTION(scope, false); 7320 7344 auto* controllerObject = controllerValue.toObject(&lexicalGlobalObject); 7321 7322 7345 RETURN_IF_EXCEPTION(scope, false); 7323 7346 … … 7362 7385 7363 7386 auto controllerValue = controllerJSValue(lexicalGlobalObject, globalObject, *this); 7387 RETURN_IF_EXCEPTION(scope, false); 7364 7388 auto* controllerObject = controllerValue.toObject(&lexicalGlobalObject); 7365 7366 7389 RETURN_IF_EXCEPTION(scope, false); 7367 7390
Note: See TracChangeset
for help on using the changeset viewer.