Skip to content

Commit c0ff127

Browse files
committed
scope handling fix (wip)
1 parent 7ac862c commit c0ff127

9 files changed

Lines changed: 19 additions & 17 deletions

File tree

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1345,7 +1345,7 @@ public static Scriptable newObject(final VarScope scope) {
13451345
* dynamically).
13461346
* @return the new array object
13471347
*/
1348-
public static Scriptable newArray(final Scriptable scope, final int length) {
1348+
public static Scriptable newArray(final VarScope scope, final int length) {
13491349
final NativeArray result = new NativeArray(length);
13501350
ScriptRuntime.setBuiltinProtoAndParent(result, scope, TopLevel.Builtins.Array);
13511351
return result;
@@ -1398,7 +1398,7 @@ public static Scriptable newArrayIteratorTypeEntries(final VarScope scope, final
13981398
* JavaScript type and type of array should be exactly Object[], not SomeObjectSubclass[].
13991399
* @return the new array object
14001400
*/
1401-
public static Scriptable newArray(final Scriptable scope, final Object[] elements) {
1401+
public static Scriptable newArray(final VarScope scope, final Object[] elements) {
14021402
if (elements.getClass().getComponentType() != ScriptRuntime.ObjectClass) {
14031403
throw new IllegalArgumentException();
14041404
}

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.htmlunit.corejs.javascript.Function;
2323
import org.htmlunit.corejs.javascript.FunctionObject;
2424
import org.htmlunit.corejs.javascript.Scriptable;
25+
import org.htmlunit.corejs.javascript.TopLevel;
2526
import org.htmlunit.corejs.javascript.VarScope;
2627
import org.htmlunit.javascript.AbstractJavaScriptEngine;
2728
import org.htmlunit.javascript.HtmlUnitContextFactory;
@@ -152,11 +153,12 @@ public void postMessage(final Object message) {
152153
final Page channelPage = channelWebWindow.getEnclosedPage();
153154

154155
if (UrlUtils.isSameOrigin(currentURL, channelPage.getUrl())) {
155-
final Scriptable ports = JavaScriptEngine.newArray(w, 0);
156+
final TopLevel scope = channelWebWindow.getTopLevelScope();
157+
final Scriptable ports = JavaScriptEngine.newArray(scope, 0);
156158

157159
final MessageEvent event = new MessageEvent();
158160
event.initMessageEvent(Event.TYPE_MESSAGE, false, false, message, origin, "", null, ports);
159-
event.setParentScope(channelWebWindow.getTopLevelScope());
161+
event.setParentScope(scope);
160162
event.setPrototype(channelWindow.getPrototype(event.getClass()));
161163

162164
final PostponedAction action =

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -686,15 +686,15 @@ public Scriptable getAttributeNames() {
686686
final org.w3c.dom.NamedNodeMap attributes = getDomNodeOrDie().getAttributes();
687687

688688
if (attributes.getLength() == 0) {
689-
return JavaScriptEngine.newArray(this, 0);
689+
return JavaScriptEngine.newArray(getParentScope(), 0);
690690
}
691691

692692
final ArrayList<String> res = new ArrayList<>();
693693
for (int i = 0; i < attributes.getLength(); i++) {
694694
res.add(attributes.item(i).getNodeName());
695695
}
696696

697-
return JavaScriptEngine.newArray(this, res.toArray());
697+
return JavaScriptEngine.newArray(getParentScope(), res.toArray());
698698
}
699699

700700
/**

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ public String getLanguage() {
107107
public Scriptable getLanguages() {
108108
final String acceptLang = getBrowserVersion().getAcceptLanguageHeader();
109109
if (StringUtils.isEmptyOrNull(acceptLang)) {
110-
return JavaScriptEngine.newArray(this, 0);
110+
return JavaScriptEngine.newArray(getParentScope(), 0);
111111
}
112112

113113
final ArrayList<String> res = new ArrayList<>();
@@ -121,7 +121,7 @@ public Scriptable getLanguages() {
121121
}
122122
}
123123

124-
return JavaScriptEngine.newArray(this, res.toArray());
124+
return JavaScriptEngine.newArray(getParentScope(), res.toArray());
125125
}
126126

127127
/**

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -365,7 +365,7 @@ public Scriptable getAll(final String name) {
365365
}
366366
}
367367

368-
return JavaScriptEngine.newArray(getWindow(this), result.toArray());
368+
return JavaScriptEngine.newArray(getParentScope(), result.toArray());
369369
}
370370

371371
/**

src/main/java/org/htmlunit/javascript/host/crypto/CryptoKey.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ public Scriptable getAlgorithm() {
134134
*/
135135
@JsxGetter
136136
public Scriptable getUsages() {
137-
return JavaScriptEngine.newArray(this, usages_.toArray());
137+
return JavaScriptEngine.newArray(getParentScope(), usages_.toArray());
138138
}
139139

140140
/**

src/main/java/org/htmlunit/javascript/host/performance/Performance.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ public double now() {
8686
*/
8787
@JsxFunction
8888
public Scriptable getEntries() {
89-
return JavaScriptEngine.newArray(this, 0);
89+
return JavaScriptEngine.newArray(getParentScope(), 0);
9090
}
9191

9292
/**
@@ -98,7 +98,7 @@ public Scriptable getEntries() {
9898
*/
9999
@JsxFunction
100100
public Scriptable getEntriesByName() {
101-
return JavaScriptEngine.newArray(this, 0);
101+
return JavaScriptEngine.newArray(getParentScope(), 0);
102102
}
103103

104104
/**
@@ -108,6 +108,6 @@ public Scriptable getEntriesByName() {
108108
*/
109109
@JsxFunction
110110
public Scriptable getEntriesByType() {
111-
return JavaScriptEngine.newArray(this, 0);
111+
return JavaScriptEngine.newArray(getParentScope(), 0);
112112
}
113113
}

src/main/java/org/htmlunit/javascript/host/worker/WorkerNavigator.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ public String getLanguage() {
112112
public Scriptable getLanguages() {
113113
final String acceptLang = getBrowserVersion().getAcceptLanguageHeader();
114114
if (StringUtils.isEmptyOrNull(acceptLang)) {
115-
return JavaScriptEngine.newArray(this, 0);
115+
return JavaScriptEngine.newArray(getParentScope(), 0);
116116
}
117117

118118
final ArrayList<String> res = new ArrayList<>();
@@ -126,7 +126,7 @@ public Scriptable getLanguages() {
126126
}
127127
}
128128

129-
return JavaScriptEngine.newArray(this, res.toArray());
129+
return JavaScriptEngine.newArray(getParentScope(), res.toArray());
130130
}
131131

132132
/**

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ public String get(final String name) {
213213
@JsxFunction
214214
public Scriptable getAll(final String name) {
215215
if (StringUtils.isEmptyOrNull(name)) {
216-
return JavaScriptEngine.newArray(this, 0);
216+
return JavaScriptEngine.newArray(getParentScope(), 0);
217217
}
218218

219219
final List<Object> values = new ArrayList<>();
@@ -224,7 +224,7 @@ public Scriptable getAll(final String name) {
224224
}
225225

226226
final Object[] stringValues = values.toArray(new Object[0]);
227-
return JavaScriptEngine.newArray(this, stringValues);
227+
return JavaScriptEngine.newArray(getParentScope(), stringValues);
228228
}
229229

230230
/**

0 commit comments

Comments
 (0)