Skip to content

Commit 5cfbb2f

Browse files
committed
scope handling fix (wip)
1 parent c0ff127 commit 5cfbb2f

4 files changed

Lines changed: 9 additions & 5 deletions

File tree

src/main/java/org/htmlunit/javascript/DebugFrameAdapter.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
import org.htmlunit.corejs.javascript.Context;
1818
import org.htmlunit.corejs.javascript.Scriptable;
19+
import org.htmlunit.corejs.javascript.VarScope;
1920
import org.htmlunit.corejs.javascript.debug.DebugFrame;
2021

2122
/**
@@ -35,7 +36,7 @@ public void onDebuggerStatement(final Context cx) {
3536

3637
/** {@inheritDoc} */
3738
@Override
38-
public void onEnter(final Context cx, final Scriptable activation, final Scriptable thisObj, final Object[] args) {
39+
public void onEnter(final Context cx, final VarScope activation, final Scriptable thisObj, final Object[] args) {
3940
// Empty.
4041
}
4142

src/main/java/org/htmlunit/javascript/DebugFrameImpl.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import org.htmlunit.corejs.javascript.NativeFunction;
2626
import org.htmlunit.corejs.javascript.Scriptable;
2727
import org.htmlunit.corejs.javascript.ScriptableObject;
28+
import org.htmlunit.corejs.javascript.VarScope;
2829
import org.htmlunit.corejs.javascript.debug.DebuggableScript;
2930
import org.htmlunit.javascript.host.event.Event;
3031

@@ -74,7 +75,7 @@ public DebugFrameImpl(final DebuggableScript functionOrScript) {
7475
* {@inheritDoc}
7576
*/
7677
@Override
77-
public void onEnter(final Context cx, final Scriptable activation, final Scriptable thisObj, final Object[] args) {
78+
public void onEnter(final Context cx, final VarScope activation, final Scriptable thisObj, final Object[] args) {
7879
if (LOG.isTraceEnabled()) {
7980
final StringBuilder sb = new StringBuilder();
8081

src/main/java/org/htmlunit/javascript/host/Window.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1423,6 +1423,8 @@ public void triggerOnError(final ScriptException e) {
14231423
final int line = e.getFailingLineNumber();
14241424
final int column = e.getFailingColumnNumber();
14251425

1426+
final VarScope scope = getWebWindow().getTopLevelScope();
1427+
14261428
Object jsError = e.getMessage();
14271429
if (e.getCause() instanceof JavaScriptException) {
14281430
msg = "uncaught exception: " + e.getCause().getMessage();
@@ -1431,15 +1433,15 @@ public void triggerOnError(final ScriptException e) {
14311433
else if (e.getCause() instanceof EcmaError ecmaError) {
14321434
msg = "uncaught " + e.getCause().getMessage();
14331435

1434-
final Scriptable err = Context.getCurrentContext().newObject(this, "Error");
1436+
final Scriptable err = JavaScriptEngine.newObject(scope, "Error", JavaScriptEngine.EMPTY_ARGS);
14351437
ScriptableObject.putProperty(err, "message", ecmaError.getMessage());
14361438
ScriptableObject.putProperty(err, "fileName", ecmaError.sourceName());
14371439
ScriptableObject.putProperty(err, "lineNumber", Integer.valueOf(ecmaError.lineNumber()));
14381440
jsError = err;
14391441
}
14401442

14411443
final Object[] args = {msg, url, Integer.valueOf(line), Integer.valueOf(column), jsError};
1442-
f.call(Context.getCurrentContext(), getWebWindow().getTopLevelScope(), this, args);
1444+
f.call(Context.getCurrentContext(), scope, this, args);
14431445
}
14441446
}
14451447

src/main/java/org/htmlunit/javascript/host/xml/XMLHttpRequest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -403,7 +403,7 @@ else if (RESPONSE_TYPE_JSON.equals(responseType_)) {
403403
}
404404

405405
try {
406-
return new JsonParser(Context.getCurrentContext(), this).parseValue(content);
406+
return new JsonParser(Context.getCurrentContext(), getParentScope()).parseValue(content);
407407
}
408408
catch (final ParseException e) {
409409
webResponse_ = new NetworkErrorWebResponse(webRequest_, new IOException(e));

0 commit comments

Comments
 (0)