Source/WebCore/ChangeLog

 12020-05-10 Devin Rousso <drousso@apple.com>
 2
 3 Web Inspector: show JavaScript Worker name as an internal property
 4 https://bugs.webkit.org/show_bug.cgi?id=211708
 5
 6 Reviewed by NOBODY (OOPS!).
 7
 8 Test: inspector/worker/worker-create-and-terminate.html
 9
 10 * inspector/WebInjectedScriptHost.cpp:
 11 (WebCore::WebInjectedScriptHost::getInternalProperties):
 12
 13 * workers/Worker.h:
 14 (WebCore::Worker::name const): Added.
 15
1162020-05-08 David Kilzer <ddkilzer@apple.com>
217
318 Remove empty directories from from svn.webkit.org repository

Source/WebCore/inspector/WebInjectedScriptHost.cpp

@@JSValue WebInjectedScriptHost::getInternalProperties(VM& vm, JSGlobalObject* exe
168168 if (auto* worker = JSWorker::toWrapped(vm, value)) {
169169 unsigned index = 0;
170170 auto* array = constructEmptyArray(exec, nullptr);
 171 array->putDirectIndex(exec, index++, constructInternalProperty(vm, exec, "name"_s, jsString(vm, worker->name())));
171172 array->putDirectIndex(exec, index++, constructInternalProperty(vm, exec, "terminated"_s, jsBoolean(worker->wasTerminated())));
172173 RETURN_IF_EXCEPTION(scope, { });
173174 return array;

Source/WebCore/workers/Worker.h

@@public:
6464 bool wasTerminated() const { return m_wasTerminated; }
6565
6666 String identifier() const { return m_identifier; }
 67 const String& name() const { return m_name; }
6768
6869 ScriptExecutionContext* scriptExecutionContext() const final { return ActiveDOMObject::scriptExecutionContext(); }
6970

LayoutTests/ChangeLog

 12020-05-10 Devin Rousso <drousso@apple.com>
 2
 3 Web Inspector: show JavaScript Worker name as an internal property
 4 https://bugs.webkit.org/show_bug.cgi?id=211708
 5
 6 Reviewed by NOBODY (OOPS!).
 7
 8 * inspector/worker/worker-create-and-terminate.html:
 9
1102020-05-08 David Kilzer <ddkilzer@apple.com>
211
312 Remove empty directories from from svn.webkit.org repository

LayoutTests/inspector/worker/worker-create-and-terminate.html

33<head>
44<script src="../../http/tests/inspector/resources/protocol-test.js"></script>
55<script>
6 let worker1 = new Worker("resources/worker-1.js");
7 let worker2 = new Worker("resources/worker-2.js");
 6let worker1 = new Worker("resources/worker-1.js", {name: "Worker 1"});
 7let worker2 = new Worker("resources/worker-2.js", {name: "Worker 2"});
88let worker3 = null;
99
1010function createWorker3() {
11  worker3 = new Worker("resources/worker-3.js");
 11 worker3 = new Worker("resources/worker-3.js", {name: "Worker 3"});
1212}
1313
1414function terminateWorker2FromPage() {

@@function test()
4343 ProtocolTest.log("No Workers");
4444 }
4545
46  async function checkInternalProperties(expression, {terminated} = {}) {
 46 async function checkInternalProperties(expression, internalPropertiesToCheck) {
4747 let evaluateResult = await InspectorProtocol.awaitCommand({
4848 method: "Runtime.evaluate",
4949 params: {

@@function test()
5555 ProtocolTest.assert(evaluateResult.result.type === "object", `Evaluate result of '${expression}' should have type 'object'.`);
5656 ProtocolTest.assert(evaluateResult.result.className === "Worker", `Evaluate result of '${expression}' should have className 'Worker'.`);
5757
58  let getPropertiesResult = await InspectorProtocol.awaitCommand({
 58 let {internalProperties} = await InspectorProtocol.awaitCommand({
5959 method: "Runtime.getProperties",
6060 params: {
6161 objectId: evaluateResult.result.objectId,
6262 },
6363 });
 64 ProtocolTest.assert(internalProperties.length === 2, `Worker '${expression}' should only have one internal property.`);
6465
65  let internalProperties = getPropertiesResult.internalProperties;
66  ProtocolTest.assert(internalProperties.length === 1, `Worker '${expression}' should only have one internal property.`);
 66 function checkInternalProperty(propertyName, type) {
 67 let internalProperty = internalProperties.find((item) => item.name === propertyName);
6768
68  ProtocolTest.assert(internalProperties[0].name === "terminated", `Worker '${expression}' should have 'terminated' internal property.`);
69  ProtocolTest.assert(internalProperties[0].value.type === "boolean", `Internal 'terminated' property of '${expression}' should be a boolean.`);
70  ProtocolTest.assert(internalProperties[0].value.value === terminated, `Internal 'terminated' property of '${expression}' should have value '${terminated}'.`);
 69 ProtocolTest.assert(internalProperty, `Worker '${expression}' should have '${propertyName}' internal property.`);
 70 ProtocolTest.assert(internalProperty.value.type === type, `Internal '${propertyName}' property of '${expression}' should be a boolean.`);
 71 ProtocolTest.assert(internalProperty.value.value === internalPropertiesToCheck[propertyName], `Internal '${propertyName}' property of '${expression}' should have value '${internalPropertiesToCheck[propertyName]}'.`);
 72 }
 73 if ("name" in internalPropertiesToCheck)
 74 checkInternalProperty("name", "string");
 75 if ("terminated" in internalPropertiesToCheck)
 76 checkInternalProperty("terminated", "boolean");
7177 }
7278
7379

@@function test()
112118 dumpWorkers();
113119
114120 await Promise.all([
115  checkInternalProperties(`worker1`, {terminated: false}),
116  checkInternalProperties(`worker2`, {terminated: false}),
 121 checkInternalProperties(`worker1`, {name: "Worker 1", terminated: false}),
 122 checkInternalProperties(`worker2`, {name: "Worker 2", terminated: false}),
117123 ]);
118124 }
119125 });

@@function test()
131137 dumpWorkers();
132138
133139 await Promise.all([
134  checkInternalProperties(`worker1`, {terminated: false}),
135  checkInternalProperties(`worker2`, {terminated: false}),
136  checkInternalProperties(`worker3`, {terminated: false}),
 140 checkInternalProperties(`worker1`, {name: "Worker 1", terminated: false}),
 141 checkInternalProperties(`worker2`, {name: "Worker 2", terminated: false}),
 142 checkInternalProperties(`worker3`, {name: "Worker 3", terminated: false}),
137143 ]);
138144 }
139145 });

@@function test()
151157 dumpWorkers();
152158
153159 await Promise.all([
154  checkInternalProperties(`worker1`, {terminated: false}),
155  checkInternalProperties(`worker2`, {terminated: true}),
156  checkInternalProperties(`worker3`, {terminated: false}),
 160 checkInternalProperties(`worker1`, {name: "Worker 1", terminated: false}),
 161 checkInternalProperties(`worker2`, {name: "Worker 2", terminated: true}),
 162 checkInternalProperties(`worker3`, {name: "Worker 3", terminated: false}),
157163 ]);
158164 }
159165 });

@@function test()
171177 dumpWorkers();
172178
173179 await Promise.all([
174  checkInternalProperties(`worker1`, {terminated: false}),
175  checkInternalProperties(`worker2`, {terminated: true}),
 180 checkInternalProperties(`worker1`, {name: "Worker 1", terminated: false}),
 181 checkInternalProperties(`worker2`, {name: "Worker 2", terminated: true}),
176182 ]);
177183 }
178184 });

@@function test()
190196 ProtocolTest.pass("Worker.workerTerminated");
191197 dumpWorkers();
192198
193  await checkInternalProperties(`worker2`, {terminated: true});
 199 await Promise.all([
 200 checkInternalProperties(`worker2`, {name: "Worker 2", terminated: true}),
 201 ]);
194202 }
195203 });
196204