c0e7009734899b35285165285914171e3a07ba63
[WebKit-https.git] / Tools / ChangeLog
1 2017-09-13  Matt Lewis  <jlewis3@apple.com>
2
3         Unreviewed, rolling out r221976.
4
5         The test introduced was flaky from point of addition.
6
7         Reverted changeset:
8
9         "Introduce Storage Access API (document parts) as an
10         experimental feature"
11         https://bugs.webkit.org/show_bug.cgi?id=175759
12         http://trac.webkit.org/changeset/221976
13
14 2017-09-13  Lucas Forschler  <lforschler@apple.com>
15
16         Compress spindumps on client side before packaging into layout test results zip (mac & ios)
17         https://bugs.webkit.org/show_bug.cgi?id=176853
18
19         Reviewed by Aakash Jain.
20
21         * BuildSlaveSupport/test-result-archive:
22         (main):
23         (gzip_file): use gzip to compress a file, removing original
24         (compress_spindumps): find and compress spindumps matching a filter
25         (archive_test_results): refactor to snake_case
26         (archiveTestResults): Deleted.
27
28 2017-09-13  Alex Christensen  <achristensen@webkit.org>
29
30         Add WKUIDelegatePrivate equivalent of WKPageUIClient's setIsResizable, getWindowFrame, and setWindowFrame
31         https://bugs.webkit.org/show_bug.cgi?id=176857
32         <rdar://problem/29270035>
33
34         Reviewed by Tim Horton.
35
36         * TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm:
37         (-[ModalDelegate _webViewRunModal:]):
38         (-[ModalDelegate _webView:setResizable:]):
39         (-[WindowFrameDelegate _webView:setWindowFrame:]):
40         (-[WindowFrameDelegate _webView:getWindowFrameWithCompletionHandler:]):
41         (-[WindowFrameDelegate webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:]):
42         (TEST):
43         (-[ResizableDelegate _webView:setResizable:]):
44         (-[ResizableDelegate _webView:getIsResizableWithCompletionHandler:]):
45         (-[ResizableDelegate webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:]):
46
47 2017-09-13  Youenn Fablet  <youenn@apple.com>
48
49         Add a lambda-based map for Vectors
50         https://bugs.webkit.org/show_bug.cgi?id=176487
51
52         Reviewed by Darin Adler.
53
54         * TestWebKitAPI/Tests/WTF/Vector.cpp:
55         (TestWebKitAPI::TEST):
56
57 2017-09-13  John Wilander  <wilander@apple.com>
58
59         Introduce Storage Access API (document parts) as an experimental feature
60         https://bugs.webkit.org/show_bug.cgi?id=175759
61         <rdar://problem/33666847>
62
63         Reviewed by Alex Christensen.
64
65         * WebKitTestRunner/TestController.cpp:
66         (WTR::TestController::resetPreferencesToConsistentValues):
67             Turns the feature on for tests.
68
69 2017-09-13  Per Arne Vollan  <pvollan@apple.com>
70
71         [Win] DRT option --gc-between-tests is not implemented.
72         https://bugs.webkit.org/show_bug.cgi?id=176849
73
74         Reviewed by Brent Fulgham.
75
76         Perform GC after the test if this option is enabled. This patch also set the initial value of the flag
77         to true, in order to catch GC related issues in the test in which they occur.
78  
79         * DumpRenderTree/win/DumpRenderTree.cpp:
80         (runTest):
81
82 2017-09-12  Wenson Hsieh  <wenson_hsieh@apple.com>
83
84         [iOS DnD] Support DataTransfer.getData and DataTransfer.setData when dragging or dropping
85         https://bugs.webkit.org/show_bug.cgi?id=176672
86         <rdar://problem/34353723>
87
88         Reviewed by Ryosuke Niwa.
89
90         Adds new tests and tweaks existing DataInteractionTests to cover the tweaks made in this patch.
91         SinglePlainTextURLTypeIdentifiers: Verify that inline presentation style is requested when dragging plaintext.
92         SinglePlainTextWordTypeIdentifiers: Verify that inline presentation style is requested when dragging a link.
93         ExternalSourceInlineTextToFileInput:
94                 Verify that an item provider marked as preferring inline presentation does not trigger file uploads by
95                 dragging a piece of inline text into a file input.
96         CanStartDragOnDivWithDraggableAttribute:
97                 Verify that DataTransfer.setData and DataTransfer.getData work as expected by moving a draggable div.
98                 The test harness writes the id of the draggable div via the DataTransfer, and upon drop, reads the id
99                 back to figure out which element to append to the drop destination.
100
101         * TestWebKitAPI/Tests/ios/DataInteractionTests.mm:
102         (TestWebKitAPI::TEST):
103
104 2017-09-12  Ryosuke Niwa  <rniwa@webkit.org>
105
106         Dragging & dropping a file creates an attachment element even when it's disabled
107         https://bugs.webkit.org/show_bug.cgi?id=176769
108
109         Reviewed by Tim Horton.
110
111         Added a webkit-test-runner flag to enable attachment element via runtime flag since this feature is now hidden
112         behind a runtime-enabled flag which needs to be set at the time of global object initialization.
113
114         * DumpRenderTree/TestOptions.h:
115         (TestOptions): Added.
116         * DumpRenderTree/TestOptions.mm:
117         (TestOptions::TestOptions):
118         * DumpRenderTree/mac/DumpRenderTree.mm:
119         (setWebPreferencesForTestOptions):
120         * WebKitTestRunner/TestController.cpp:
121         (WTR::TestController::resetPreferencesToConsistentValues):
122         (WTR::updateTestOptionsFromTestHeader):
123         * WebKitTestRunner/TestOptions.h:
124         (WTR::TestOptions::hasSameInitializationOptions const):
125         * WebKitTestRunner/cocoa/TestControllerCocoa.mm:
126         (WTR::TestController::platformCreateWebView):
127
128 2017-09-11  Filip Pizlo  <fpizlo@apple.com>
129
130         WSL should allow you to say "protocol Foo : Bar { ... }"
131         https://bugs.webkit.org/show_bug.cgi?id=176238
132
133         Reviewed by Mylex Maxfield.
134         
135         This makes protocol "subtyping" work. It's not really subtyping. Protocol A inherits protocol B
136         if every signature in B can be resolved against some signature in A. Also, you can explicitly
137         subtype protocols using extends syntax ("protocol Foo : Bar, Baz { ... }").
138         
139         Also makes the diagnostics when type variable constraints fail a _lot_ better. This will even
140         tell you diagnostics about why a function didn't match when protocols are not inheriting, and
141         then it will tell you why the inheritance failed.
142
143         * WebGPUShadingLanguageRI/All.js:
144         * WebGPUShadingLanguageRI/AutoWrapper.js:
145         (AutoWrapper.prototype.visitTypeVariable):
146         (AutoWrapper):
147         * WebGPUShadingLanguageRI/Checker.js:
148         (Checker.prototype.visitProtocolDecl.set throw):
149         * WebGPUShadingLanguageRI/ConstexprTypeParameter.js:
150         (ConstexprTypeParameter.prototype.verifyAsArgument):
151         (ConstexprTypeParameter.prototype.verifyAsParameter):
152         * WebGPUShadingLanguageRI/FlattenProtocolExtends.js: Added.
153         * WebGPUShadingLanguageRI/Func.js:
154         (Func.prototype.get typeParametersForCallResolution):
155         * WebGPUShadingLanguageRI/InferTypesForCall.js:
156         (inferTypesForCall):
157         * WebGPUShadingLanguageRI/IntLiteralType.js:
158         (IntLiteralType.prototype.verifyAsArgument):
159         * WebGPUShadingLanguageRI/NameResolver.js:
160         (NameResolver.prototype.visitProtocolDecl):
161         (NameResolver.prototype.visitProtocolRef): Deleted.
162         (NameResolver.prototype.visitProtocolFuncDecl): Deleted.
163         (NameResolver.prototype.visitTypeDef): Deleted.
164         (NameResolver.prototype.visitStructType): Deleted.
165         (NameResolver.prototype._resolveTypeArguments): Deleted.
166         (NameResolver.prototype.visitTypeRef): Deleted.
167         (NameResolver.prototype.visitReferenceType): Deleted.
168         (NameResolver.prototype.visitVariableDecl): Deleted.
169         (NameResolver.prototype.visitVariableRef): Deleted.
170         (NameResolver.prototype.visitReturn): Deleted.
171         (NameResolver.prototype.visitCallExpression): Deleted.
172         * WebGPUShadingLanguageRI/Node.js:
173         (Node.prototype.equals):
174         * WebGPUShadingLanguageRI/NullType.js:
175         (NullType.prototype.verifyAsArgument):
176         * WebGPUShadingLanguageRI/Parse.js:
177         (parseProtocolDecl):
178         * WebGPUShadingLanguageRI/Prepare.js:
179         (prepare):
180         * WebGPUShadingLanguageRI/ProtocolDecl.js:
181         (ProtocolDecl): Deleted.
182         (ProtocolDecl.prototype.add): Deleted.
183         (ProtocolDecl.prototype.get signatures): Deleted.
184         (ProtocolDecl.prototype.signaturesByName): Deleted.
185         (ProtocolDecl.prototype.get typeVariable): Deleted.
186         (ProtocolDecl.prototype.signaturesByNameWithTypeVariable): Deleted.
187         (ProtocolDecl.prototype.inherits): Deleted.
188         (ProtocolDecl.prototype.hasHeir): Deleted.
189         (ProtocolDecl.prototype.toString): Deleted.
190         * WebGPUShadingLanguageRI/ProtocolFuncDecl.js:
191         (ProtocolFuncDecl.prototype.get typeParametersForCallResolution):
192         (ProtocolFuncDecl):
193         * WebGPUShadingLanguageRI/Rewriter.js:
194         (Rewriter.prototype.visitProtocolDecl):
195         * WebGPUShadingLanguageRI/Test.html:
196         * WebGPUShadingLanguageRI/Test.js:
197         (TEST_nullTypeVariableUnify):
198         (TEST_simpleProtocolExtends):
199         (TEST_protocolExtendsTwo):
200         * WebGPUShadingLanguageRI/Type.js:
201         (Type.prototype.inherits):
202         * WebGPUShadingLanguageRI/TypeDefResolver.js:
203         (TypeDefResolver.prototype.visitTypeRef):
204         (TypeDefResolver):
205         * WebGPUShadingLanguageRI/TypeVariable.js:
206         (TypeVariable.prototype.inherits):
207         (TypeVariable.prototype.verifyAsArgument):
208         (TypeVariable.prototype.verifyAsParameter):
209         * WebGPUShadingLanguageRI/UnificationContext.js:
210         (UnificationContext.prototype.verify):
211         * WebGPUShadingLanguageRI/Visitor.js:
212         (Visitor.prototype.visitProtocolDecl):
213         (Visitor.prototype.visitTypeRef): Deleted.
214         (Visitor.prototype.visitNativeType): Deleted.
215         (Visitor.prototype.visitNativeTypeInstance): Deleted.
216         (Visitor.prototype.visitTypeDef): Deleted.
217         (Visitor.prototype.visitStructType): Deleted.
218         (Visitor.prototype.visitTypeVariable): Deleted.
219         (Visitor.prototype.visitConstexprTypeParameter): Deleted.
220         (Visitor.prototype.visitField): Deleted.
221         (Visitor.prototype.visitElementalType): Deleted.
222         (Visitor.prototype.visitReferenceType): Deleted.
223         (Visitor.prototype.visitPtrType): Deleted.
224         (Visitor.prototype.visitArrayRefType): Deleted.
225         (Visitor.prototype.visitArrayType): Deleted.
226         (Visitor.prototype.visitVariableDecl): Deleted.
227         (Visitor.prototype.visitAssignment): Deleted.
228         (Visitor.prototype.visitDereferenceExpression): Deleted.
229         (Visitor.prototype.visitDotExpression): Deleted.
230         (Visitor.prototype.visitMakePtrExpression): Deleted.
231         (Visitor.prototype.visitVariableRef): Deleted.
232         (Visitor.prototype.visitIfStatement): Deleted.
233         (Visitor.prototype.visitWhileLoop): Deleted.
234         (Visitor.prototype.visitDoWhileLoop): Deleted.
235         (Visitor.prototype.visitForLoop): Deleted.
236         (Visitor.prototype.visitReturn): Deleted.
237         (Visitor.prototype.visitContinue): Deleted.
238         (Visitor.prototype.visitBreak): Deleted.
239         (Visitor.prototype.visitIntLiteral): Deleted.
240         (Visitor.prototype.visitIntLiteralType): Deleted.
241         (Visitor.prototype.visitUintLiteral): Deleted.
242         (Visitor.prototype.visitNullLiteral): Deleted.
243         (Visitor.prototype.visitBoolLiteral): Deleted.
244         (Visitor.prototype.visitNullType): Deleted.
245         (Visitor.prototype.visitCallExpression): Deleted.
246         (Visitor.prototype.visitLogicalNot): Deleted.
247         (Visitor.prototype.visitFunctionLikeBlock): Deleted.
248         * WebGPUShadingLanguageRI/WrapChecker.js:
249         (WrapChecker.prototype.visitTypeVariable):
250         (WrapChecker):
251
252 2017-09-12  Carlos Garcia Campos  <cgarcia@igalia.com>
253
254         Remove duplicated test results from LayoutTest platform directories
255         https://bugs.webkit.org/show_bug.cgi?id=176686
256
257         Reviewed by Michael Catanzaro.
258
259         After several rebaselines we might end up with the same result in the platform directory than the common result
260         without noticing it. This patch adds a script to detect those cases and remove all duplicated results from the
261         repository.
262
263         * Scripts/check-for-duplicated-platform-test-results: Added.
264         (check_duplicate):
265         (check_duplicate.sha1):
266         (platform_list):
267
268 2017-09-12  Carlos Alberto Lopez Perez  <clopez@igalia.com>
269
270         The EWS build system is forcing a non UTF-8 locale and breaks meson.
271         https://bugs.webkit.org/show_bug.cgi?id=176761
272
273         Reviewed by Michael Catanzaro.
274
275         On 2011 in order to disable GCC smartquotes (UTF-8 pretty quotes)
276         that were causing trouble with the commit-queue server, the tooling
277         for the EWS bots started to force an LC_ALL=C locale.
278
279         This was needed back then apparently because the commit-queue server
280         was unable to handle properly UTF-8 text.
281
282         6 years forward and none of the ports that commit-queue tests before
283         landing a patch use GCC, but Clang. So this should not be an issue anymore.
284
285         Forcing a non UTF-8 locale breaks the Meson build system (that the
286         GTK/WPE ports use for some dependencies of its JHBuild dependencies
287         local build system).
288         It has also the potential to break things in subtle ways that are
289         hard to debug and detect. So better stop doing this.
290
291         This patch also changes TERM=none to TERM=dumb that is the proper
292         way to disable VT100 codes (see bug 127922).
293
294         * Scripts/webkitpy/common/system/environment.py:
295         (Environment.to_dictionary):
296         (Environment.disable_jhbuild_VT100_output):
297         * Scripts/webkitpy/common/system/environment_unittest.py:
298         (EnvironmentTest.test_disable_jhbuild_VT100_output):
299         * Scripts/webkitpy/port/base.py:
300         (Port._build_driver):
301         (Port._build_image_diff):
302         * Scripts/webkitpy/port/port_testcase.py:
303         (PortTestCase.test_build_driver):
304         * Scripts/webkitpy/tool/commands/download_unittest.py:
305         * Scripts/webkitpy/tool/steps/build.py:
306         (Build.build):
307         * Scripts/webkitpy/tool/steps/steps_unittest.py:
308
309 2017-09-12  Michael Catanzaro  <mcatanzaro@igalia.com>
310
311         [WPE][GTK] Run tests with G_DEBUG=fatal-criticals
312         https://bugs.webkit.org/show_bug.cgi?id=176755
313
314         Reviewed by Carlos Garcia Campos.
315
316         * Scripts/webkitpy/port/gtk.py:
317         (GtkPort.setup_environ_for_server):
318         * Scripts/webkitpy/port/wpe.py:
319         (WPEPort.setup_environ_for_server):
320
321 2017-09-12  Alex Christensen  <achristensen@webkit.org>
322
323         Fix build after r221922.
324         https://bugs.webkit.org/show_bug.cgi?id=176728
325
326         * TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm:
327         (-[ModalDelegate _webViewRunModal:]):
328         (-[ModalDelegate webView:createWebViewWithConfiguration:forNavigationAction:windowFeatures:]):
329         (TEST):
330         svn-apply inserted the test too early in the file :(
331         Shift it down to where all the used static variables are declared.
332
333 2017-09-12  Alex Christensen  <achristensen@webkit.org>
334
335         Add WKUIDelegatePrivate equivalent of WKPageUIClient's runModal
336         https://bugs.webkit.org/show_bug.cgi?id=176728
337         <rdar://problem/29270035>
338
339         Reviewed by Tim Horton.
340
341         * TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm:
342         (-[ModalDelegate _webViewRunModal:]):
343         (-[ModalDelegate webView:createWebViewWithConfiguration:forNavigationAction:windowFeatures:]):
344         (TEST):
345
346 2017-09-12  Daniel Bates  <dabates@apple.com>
347
348         REGRESSION (r215784): The title of right-to-left pages are empty
349         https://bugs.webkit.org/show_bug.cgi?id=176746
350         <rdar://problem/34211419>
351
352         Reviewed by Brent Fulgham.
353
354         Add unit test to ensure we do not regress StringWithDirection.truncateFromEnd().
355
356         * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
357         * TestWebKitAPI/Tests/WebCore/StringWithDirection.cpp: Added.
358         (TestWebKitAPI::TEST):
359
360 2017-09-12  Alex Christensen  <achristensen@webkit.org>
361
362         Add WKUIDelegatePrivate equivalent of WKPageUIClient's decidePolicyForNotificationPermissionRequest
363         https://bugs.webkit.org/show_bug.cgi?id=176768
364         <rdar://problem/29270035>
365
366         Reviewed by Tim Horton.
367
368         * TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm:
369         (-[NotificationDelegate initWithAllowNotifications:]):
370         (-[NotificationDelegate webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:]):
371         (-[NotificationDelegate _webView:requestNotificationPermissionForSecurityOrigin:decisionHandler:]):
372         (TEST):
373
374 2017-09-12 Brent Fulgham  <bfulgham@apple.com>
375
376         Show punycode to user if a URL mixes Armenian Seh or Vo with other scripts
377         https://bugs.webkit.org/show_bug.cgi?id=176578
378         <rdar://problem/33906231>
379
380         Reviewed by Alex Christensen.
381
382         * TestWebKitAPI/Tests/WebCore/cocoa/URLExtras.mm:
383         (TestWebKitAPI::TEST):
384
385 2017-09-12  Carlos Garcia Campos  <cgarcia@igalia.com>
386
387         [Freetype] Doesn't support coloured fonts
388         https://bugs.webkit.org/show_bug.cgi?id=156579
389
390         Reviewed by Michael Catanzaro.
391
392         Bump webkitgtk-test-fonts to 0.0.6 version that includes the EmijoOne font.
393
394         * gtk/jhbuild.modules:
395         * wpe/jhbuild.modules:
396
397 2017-09-11  Wenson Hsieh  <wenson_hsieh@apple.com>
398
399         [iOS DnD] Support DataTransfer.setDragImage when starting a drag on iOS
400         https://bugs.webkit.org/show_bug.cgi?id=176721
401         <rdar://problem/34373660>
402
403         Reviewed by Tim Horton.
404
405         In DataInteractionSimulator, ask the UIDragInteractionDelegate (WKContentView) for targeted drag previews after
406         retrieving UIDragItems during a lift. Remember these previews after the drag and drop simulation is complete, so
407         API tests (currently, just DragLiftPreviewDataTransferSetDragImage) can verify that the generated drag previews
408         are as expected.
409
410         * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
411         * TestWebKitAPI/Tests/WebKitCocoa/DataTransfer-setDragImage.html: Added.
412
413         Adds a new test harness containing 5 draggable elements, each generating a drag image using different codepaths.
414         DragLiftPreviewDataTransferSetDragImage uses this page to check that the frame of the targeted drag preview in
415         each scenario is as expected.
416
417         * TestWebKitAPI/Tests/ios/DataInteractionTests.mm:
418         (checkCGRectIsEqualToCGRectWithLogging):
419         (TestWebKitAPI::TEST):
420         * TestWebKitAPI/ios/DataInteractionSimulator.h:
421         * TestWebKitAPI/ios/DataInteractionSimulator.mm:
422         (-[DataInteractionSimulator _resetSimulatedState]):
423         (-[DataInteractionSimulator _advanceProgress]):
424         (-[DataInteractionSimulator liftPreviews]):
425
426 2017-09-11  Tim Horton  <timothy_horton@apple.com>
427
428         REGRESSION (r221272): WKWebView gets stuck zoomed in if the web process crashes
429         https://bugs.webkit.org/show_bug.cgi?id=176767
430         <rdar://problem/34196874>
431
432         Reviewed by Dan Bernstein.
433
434         * TestWebKitAPI/Tests/WebKitCocoa/AnimatedResize.mm:
435         (TEST):
436         Add a test ensuring that override layout size persists through Web
437         Content process crash.
438
439 2017-09-11  Wenson Hsieh  <wenson_hsieh@apple.com>
440
441         [iOS WK2] Support tapping to add items to the current drag session in web content
442         https://bugs.webkit.org/show_bug.cgi?id=176421
443         <rdar://problem/31144674>
444
445         Reviewed by Tim Horton.
446
447         Adds a new drag and drop test that begins a drag on a text selection, adds an image and a link, and then drops
448         into a contenteditable area. This verifies that the text, link and image are inserted into the editable area
449         upon drop.
450
451         * TestWebKitAPI/Tests/ios/DataInteractionTests.mm:
452         (TestWebKitAPI::TEST):
453
454 2017-09-11  Lucas Forschler  <lforschler@apple.com>
455
456         bisect-builds: add --list option
457         https://bugs.webkit.org/show_bug.cgi?id=174836
458
459         Reviewed by Aakash Jain & Stephanie Lewis.
460
461         * Scripts/bisect-builds:
462         (parse_args): add --list option
463         (minified_platforms): update supported platform list (add ios simulator)
464         (print_list_and_exit): helper function to print list and exit
465
466 2017-09-11  Wenson Hsieh  <wenson_hsieh@apple.com>
467
468         [iOS WK2] ExternalSourceDataTransferItemGetAsEntry tests produce inconsistent results on test automation bots
469         https://bugs.webkit.org/show_bug.cgi?id=176736
470
471         Reviewed by Andy Estes and Megan Gardner.
472
473         The test output dumped when dropping a file in DataTransferItem-getAsEntry.html should adhere to some deterministic order.
474         Currently, this is not enforced, so on some systems, these tests fail due to expected test output being out of order. To
475         fix this, simply have the test harness alphabetically sort the output before writing to the textarea.
476
477         * TestWebKitAPI/Tests/WebKitCocoa/DataTransferItem-getAsEntry.html:
478         * TestWebKitAPI/Tests/ios/DataInteractionTests.mm:
479         (TestWebKitAPI::TEST):
480
481 2017-09-11  Ryosuke Niwa  <rniwa@webkit.org>
482
483         webkitbot should recognize commands even when colon is omitted
484         https://bugs.webkit.org/show_bug.cgi?id=176680
485         <rdar://problem/29933898>
486
487         Reviewed by Daniel Bates.
488
489         Recognize the IRC command even when : and , were not present.
490         Unfortunately, there is no unit test for this code at the moment.
491
492         * Scripts/webkitpy/common/net/irc/ircbot.py:
493         (IRCBot.on_pubmsg):
494
495 2017-09-11  Lucas Forschler  <lforschler@apple.com>
496
497         bisect-builds doesn't work due to missing requests module
498         https://bugs.webkit.org/show_bug.cgi?id=175709
499         
500         Reviewed by Ryosuke Niwa.
501
502         * Scripts/bisect-builds: use urllib2 instead of the requests module.
503         (get_s3_location_for_revision):
504         (main):
505
506 2017-09-11  Filip Pizlo  <fpizlo@apple.com>
507
508         WSL Substitution should probably wrap type variables of substituted types rather than just wrapping the whole type
509         https://bugs.webkit.org/show_bug.cgi?id=176677
510
511         Reviewed by Mylex Maxfield.
512         
513         This adds a checker that verifies that all type references and variable references are wrapped.
514         
515         Then this fixes errors found by that checker by making Substitution auto-wrap replacements rather than
516         manually wrapping the outer type (for types) and cloning (for values).
517
518         * WebGPUShadingLanguageRI/All.js:
519         * WebGPUShadingLanguageRI/AutoWrapper.js: Added.
520         (AutoWrapper.prototype.visitVariableRef):
521         (AutoWrapper.prototype.visitTypeRef):
522         (AutoWrapper.prototype.visitConstexprTypeParameter):
523         (AutoWrapper.prototype.visitFuncParameter):
524         (AutoWrapper.prototype.visitVariableDecl):
525         (AutoWrapper.prototype.visitStructType):
526         (AutoWrapper.prototype.visitNativeType):
527         (AutoWrapper):
528         * WebGPUShadingLanguageRI/CheckWrapped.js:
529         (checkExpressionWrapped):
530         (checkProgramWrapped):
531         (checkWrapped): Deleted.
532         * WebGPUShadingLanguageRI/Checker.js:
533         * WebGPUShadingLanguageRI/ExpressionFinder.js: Added.
534         (ExpressionFinder):
535         (ExpressionFinder.prototype.visitFunc):
536         (ExpressionFinder.prototype.visitFuncParameter):
537         (ExpressionFinder.prototype.visitConstexprTypeParameter):
538         (ExpressionFinder.prototype.visitAssignment):
539         (ExpressionFinder.prototype.visitCallExpression):
540         (ExpressionFinder.prototype.visitReturn):
541         (ExpressionFinder.prototype.visitWhileLoop):
542         (ExpressionFinder.prototype.visitDoWhileLoop):
543         (ExpressionFinder.prototype.visitIfStatement):
544         (ExpressionFinder.prototype.visitForLoop):
545         (ExpressionFinder.prototype.visitVariableDecl):
546         * WebGPUShadingLanguageRI/NativeFuncInstance.js:
547         (NativeFuncInstance):
548         * WebGPUShadingLanguageRI/Node.js:
549         (Node.prototype.substituteToUnification):
550         (Node):
551         (Node.prototype.clone): Deleted.
552         * WebGPUShadingLanguageRI/Prepare.js:
553         (prepare):
554         * WebGPUShadingLanguageRI/StructLayoutBuilder.js:
555         (StructLayoutBuilder.prototype.visitReferenceType):
556         (StructLayoutBuilder.prototype.visitField):
557         (StructLayoutBuilder):
558         * WebGPUShadingLanguageRI/Substitution.js:
559         (Substitution):
560         (Substitution.prototype.visitTypeRef):
561         (Substitution.prototype.visitVariableRef):
562         * WebGPUShadingLanguageRI/Test.html:
563         * WebGPUShadingLanguageRI/Test.js:
564         (TEST_chainConstexpr):
565         (TEST_chainGeneric):
566         (TEST_chainStruct):
567         (TEST_chainStructInvalid):
568         * WebGPUShadingLanguageRI/Visitor.js:
569         (Visitor.prototype.visitNativeTypeInstance):
570         * WebGPUShadingLanguageRI/WrapChecker.js:
571         (WrapChecker.prototype._foundUnwrapped.originString):
572         (WrapChecker.prototype._foundUnwrapped):
573         (WrapChecker):
574
575 2017-09-11  Ryan Haddad  <ryanhaddad@apple.com>
576
577         Fix multiple master.cfg unit test failures.
578         https://bugs.webkit.org/show_bug.cgi?id=176745
579
580         Reviewed by Alexey Proskuryakov.
581
582         * BuildSlaveSupport/build.webkit.org-config/master.cfg:
583         (TestFactory.__init__): Add missing ':'.
584         * BuildSlaveSupport/build.webkit.org-config/mastercfg_unittest.py: Update expected results for Windows and iOS build steps.
585
586 2017-09-11  Jonathan Bedard  <jbedard@apple.com>
587
588         Older versions should adopt newer version's expectations on mac
589         https://bugs.webkit.org/show_bug.cgi?id=176699
590         <rdar://problem/34367907>
591
592         Reviewed by Alexey Proskuryakov.
593
594         Before:
595                 mac-elcapitan-wk2
596                 mac-elcapitan
597                 mac-wk2
598                 mac
599                 wk2
600         After:
601                 mac-elcapitan-wk2
602                 mac-elcapitan
603                 mac-sierra-wk2
604                 mac-sierra
605                 mac-wk2
606                 mac
607                 wk2
608
609         * Scripts/webkitpy/port/mac.py:
610         (MacPort.default_baseline_search_path): Use VERSION_FALLBACK_ORDER to have old
611         versions inherit expectations from newer versions.
612         * Scripts/webkitpy/port/mac_unittest.py:
613         (MacTest.test_layout_test_searchpath_with_apple_additions): Check new behavior
614         with older versions inheriting expectations from newer versions.
615
616 2017-09-11  Ryan Haddad  <ryanhaddad@apple.com>
617
618         Skip JSC test wsl-tests.yaml/Test.js
619         https://bugs.webkit.org/show_bug.cgi?id=176727
620
621         Unreviewed test gardening.
622
623         * WebGPUShadingLanguageRI/wsl-tests.yaml:
624
625 2017-09-11  Alex Christensen  <achristensen@webkit.org>
626
627         Add WKUIDelegatePrivate equivalent of WKPageUIClient's decidePolicyForGeolocationPermissionRequest
628         https://bugs.webkit.org/show_bug.cgi?id=176642
629         <rdar://problem/29270035>
630
631         Reviewed by Darin Adler.
632
633         * TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm:
634         (-[GeolocationDelegate initWithAllowGeolocation:]):
635         (-[GeolocationDelegate _webView:requestGeolocationPermissionForFrame:decisionHandler:]):
636         (-[GeolocationDelegate webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:]):
637         (TEST):
638
639 2017-09-11  Wenson Hsieh  <wenson_hsieh@apple.com>
640
641         [iOS DnD] Elements in the DOM with the `draggable` attribute should be draggable
642         https://bugs.webkit.org/show_bug.cgi?id=176664
643         <rdar://problem/32596156>
644
645         Reviewed by Tim Horton.
646
647         Adds a new API test checking that elements marked as drag sources via the `draggable` attribute can be dragged
648         with a non-null drag preview. Additionally, refactor the drag and drop simulator to not plumb drag/drop
649         interaction delegate calls through to the WKContentView via -_simulate*-prefixed testing SPI, but rather
650         by grabbing the WKWebView's drag and drop interaction delegates (i.e. the WKContentView) and calling delegate
651         methods directly. This avoids requiring boilerplate plumbing on WKWebView and WKContentView for each of the drag
652         and drop delegate methods, so these have been removed from WKWebView and WKContentView.
653
654         Additionally, renames MockDataOperationSession and MockDataInteractionSession to MockDragSession and
655         MockDropSession, respectively, and adjusts their ivars on DataInteractionSimulator to match.
656
657         * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
658         * TestWebKitAPI/Tests/WebKitCocoa/custom-draggable-div.html: Added.
659
660         Add a new test harness covering dragging and dropping elements with the draggable attribute, using DataTransfer
661         API (setData and getData) as well.
662
663         * TestWebKitAPI/Tests/ios/DataInteractionTests.mm:
664         (TestWebKitAPI::TEST):
665         * TestWebKitAPI/ios/DataInteractionSimulator.h:
666         * TestWebKitAPI/ios/DataInteractionSimulator.mm:
667         (-[WKWebView dropInteractionDelegate]):
668         (-[WKWebView dragInteractionDelegate]):
669         (-[WKWebView dropInteraction]):
670         (-[WKWebView dragInteraction]):
671
672         Add testing utilities to ask a WKWebView for information about its drag/drop interactions and delegates. In this
673         case, this will return the WKWebView's WKContentView.
674
675         (-[DataInteractionSimulator _resetSimulatedState]):
676         (-[DataInteractionSimulator simulateAllTouchesCanceled:]):
677         (-[DataInteractionSimulator runFrom:to:additionalItemRequestLocations:]):
678         (-[DataInteractionSimulator _concludeDataInteractionAndPerformOperationIfNecessary]):
679         (-[DataInteractionSimulator _sendQueuedAdditionalItemRequest]):
680         (-[DataInteractionSimulator _advanceProgress]):
681
682         When beginning a drag session, ask the delegate for targeted lift previews and verify that these are non-null.
683         This check would fail prior to the tweak in DragDropInteractionState in this patch.
684
685         (-[DataInteractionSimulator _webView:showCustomSheetForElement:]):
686         (-[MockDataOperationSession initWithProviders:location:window:allowMove:]): Deleted.
687         (-[MockDataOperationSession session]): Deleted.
688         (-[MockDataOperationSession isLocal]): Deleted.
689         (-[MockDataOperationSession progress]): Deleted.
690         (-[MockDataOperationSession setProgressIndicatorStyle:]): Deleted.
691         (-[MockDataOperationSession progressIndicatorStyle]): Deleted.
692         (-[MockDataOperationSession operationMask]): Deleted.
693         (-[MockDataOperationSession localDragSession]): Deleted.
694         (-[MockDataOperationSession hasItemsConformingToTypeIdentifier:]): Deleted.
695         (-[MockDataOperationSession canCreateItemsOfClass:]): Deleted.
696         (-[MockDataOperationSession loadObjectsOfClass:completion:]): Deleted.
697         (-[MockDataInteractionSession initWithWindow:allowMove:]): Deleted.
698         (-[MockDataInteractionSession localOperationMask]): Deleted.
699         (-[MockDataInteractionSession externalOperationMask]): Deleted.
700
701         Replace various places where we called -_simulate* methods on WKWebView with calls to the
702         UIDragInteractionDelegate or UIDropInteractionDelegate (the WKContentView) instead. Also, adjust for some
703         mechanical renaming of drag and drop sessions.
704
705         (-[MockDataInteractionSession session]): Deleted.
706         * TestWebKitAPI/ios/UIKitSPI.h:
707
708 2017-09-11  Joseph Pecoraro  <pecoraro@apple.com>
709
710         Make the WPT entry point for LayoutTests/http/wpt more discoverable
711         https://bugs.webkit.org/show_bug.cgi?id=176494
712
713         Reviewed by Youenn Fablet.
714
715         * Scripts/webkitpy/layout_tests/servers/run_webkit_httpd.py:
716         (run_server):
717         Output a tip for how to access the http/wpt tests.
718
719 2017-09-11  Mark Lam  <mark.lam@apple.com>
720
721         Turn on exception scope verification for JSC tests.
722         https://bugs.webkit.org/show_bug.cgi?id=162351
723         <rdar://problem/29563911>
724
725         Reviewed by Saam Barati.
726
727         Added the option to --validateExceptionChecks=true option to BASE_OPTIONS in
728         run-jsc-stress-tests.  This turns on exception scope verification on JSC test
729         runs (which currently does not include testapi).
730
731         Some stats on time to run JSC stress and mozilla tests:
732         1. Release build w/o --validateExceptionChecks=true: real 16m22.544s, user 156m24.080s, sys 123m3.649s
733         2. Debug build w/o --validateExceptionChecks=true: real 78m34.206s, user 1661m57.008s, sys 73m21.177s
734         3. Debug build w/ --validateExceptionChecks=true: real 77m41.106s, user 1656m13.924s, sys 73m42.309s
735         4. Debug build w/ --validateExceptionChecks=true --dumpSimulatedThrows=true: real 92m56.918s, user 2012m56.441s, sys 75m14.174s
736
737         The stats shows that (2) and (3) has effectively no time difference.  Hence, the
738         cost of enabling --validateExceptionChecks=true is not significant.
739
740         It would be nice to enable --dumpSimulatedThrows=true as well, but (4) is about
741         21% slower than (3).  To avoid making debug test runs a lot slower, we'll leave
742         --dumpSimulatedThrows=true off.  We can manually add that when we see a regression
743         and need to debug the issue.  Otherwise, we wont pay the price for it.
744
745         * Scripts/run-jsc-stress-tests:
746
747 2017-09-11  Myles C. Maxfield  <mmaxfield@apple.com>
748
749         WSL should support for loops
750         https://bugs.webkit.org/show_bug.cgi?id=176682
751
752         Reviewed by Filip Pizlo.
753
754         Follows the pattern of the existing infrastructure of while loops.
755
756         * WebGPUShadingLanguageRI/All.js:
757         * WebGPUShadingLanguageRI/Checker.js:
758         * WebGPUShadingLanguageRI/Evaluator.js:
759         (Evaluator.prototype.visitForLoop):
760         * WebGPUShadingLanguageRI/ForLoop.js: Copied from Tools/WebGPUShadingLanguageRI/LoopChecker.js.
761         (ForLoop):
762         (ForLoop.prototype.get origin):
763         (ForLoop.prototype.get initialization):
764         (ForLoop.prototype.get condition):
765         (ForLoop.prototype.get increment):
766         (ForLoop.prototype.get body):
767         (ForLoop.prototype.toString):
768         * WebGPUShadingLanguageRI/LoopChecker.js:
769         (LoopChecker.prototype.visitForLoop):
770         * WebGPUShadingLanguageRI/NameResolver.js:
771         (NameResolver.prototype.visitForLoop):
772         * WebGPUShadingLanguageRI/Parse.js:
773         (parseFor):
774         * WebGPUShadingLanguageRI/ReturnChecker.js:
775         (ReturnChecker.prototype._isBoolCastFromLiteralTrue):
776         (ReturnChecker.prototype.visitWhileLoop):
777         (ReturnChecker.prototype.visitDoWhileLoop):
778         (ReturnChecker.prototype.visitForLoop):
779         * WebGPUShadingLanguageRI/Rewriter.js:
780         (Rewriter.prototype.visitForLoop):
781         (Rewriter):
782         * WebGPUShadingLanguageRI/Test.html:
783         * WebGPUShadingLanguageRI/Test.js:
784         (TEST_forLoop):
785         * WebGPUShadingLanguageRI/Visitor.js:
786         (Visitor.prototype.visitForLoop):
787
788 2017-09-11  Robin Morisset  <rmorisset@apple.com>
789
790         Just added myself to the contributors.json file as a committer
791
792         Unreviewed
793
794 2017-09-10  Filip Pizlo  <fpizlo@apple.com>
795
796         IntLiteral should prefer int32 during overload resolution
797         https://bugs.webkit.org/show_bug.cgi?id=176675
798
799         Reviewed by Myles Maxfield.
800         
801         This makes intLiteralType prefer to resolve to int over other types.
802         
803         This also adds tests that if you pass intLiteral to T, then you can make it work by saying
804         int(intLiteral).
805
806         * WebGPUShadingLanguageRI/IntLiteralType.js:
807         (IntLiteralType):
808         (IntLiteralType.prototype.conversionCost):
809         * WebGPUShadingLanguageRI/Node.js:
810         (Node.prototype.conversionCost):
811         * WebGPUShadingLanguageRI/ResolveOverloadImpl.js:
812         (resolveOverloadImpl):
813         * WebGPUShadingLanguageRI/Rewriter.js:
814         (Rewriter.prototype.visitIntLiteralType):
815         * WebGPUShadingLanguageRI/Test.js:
816         (TEST_intOverloadResolution):
817         (TEST_intOverloadResolutionReverseOrder):
818         (TEST_intOverloadResolutionGeneric):
819         (TEST_intLiteralGeneric):
820         * WebGPUShadingLanguageRI/UnificationContext.js:
821         (UnificationContext.prototype.get conversionCost):
822         * WebGPUShadingLanguageRI/Visitor.js:
823         (Visitor.prototype.visitIntLiteralType):
824
825 2017-09-10  Filip Pizlo  <fpizlo@apple.com>
826
827         WSL should be able to handle a simple constexpr type parameter
828         https://bugs.webkit.org/show_bug.cgi?id=176676
829
830         Reviewed by Myles Maxfield.
831         
832         This adds a test that uses a constexpr type parameter, and then fixed enough bugs to get this to work.
833
834         * WebGPUShadingLanguageRI/All.js:
835         * WebGPUShadingLanguageRI/CallExpression.js:
836         (CallExpression.prototype.resolve):
837         * WebGPUShadingLanguageRI/CheckWrapped.js: Added.
838         (checkWrapped):
839         * WebGPUShadingLanguageRI/Checker.js:
840         * WebGPUShadingLanguageRI/Evaluator.js:
841         (Evaluator.prototype.visitCallExpression):
842         (Evaluator):
843         * WebGPUShadingLanguageRI/Node.js:
844         (Node.prototype.substituteToUnification):
845         (Node.prototype.clone):
846         (Node):
847         * WebGPUShadingLanguageRI/Substitution.js:
848         (Substitution):
849         (Substitution.prototype.visitVariableRef):
850         * WebGPUShadingLanguageRI/Test.html:
851         * WebGPUShadingLanguageRI/Test.js:
852         (TEST_simpleConstexpr):
853         * WebGPUShadingLanguageRI/WrapChecker.js: Added.
854         (WrapChecker):
855         (WrapChecker.prototype.visitVariableRef):
856         (WrapChecker.prototype.visitTypeRef):
857         (WrapChecker.prototype.visitIntLiteral):
858         (WrapChecker.prototype._foundUnwrapped):
859         (WrapChecker.visitConstexprTypeParameter):
860         (WrapChecker.prototype.visitFuncParameter):
861         (WrapChecker.prototype.visitVariableDecl):
862         (WrapChecker.prototype.visitStructType):
863         (WrapChecker.prototype.visitNativeType):
864
865 2017-09-11  Carlos Alberto Lopez Perez  <clopez@igalia.com>
866
867         [WPE] Bump freetype version to 2.8.0
868         https://bugs.webkit.org/show_bug.cgi?id=176501
869
870         Reviewed by Michael Catanzaro.
871
872         Bump freetype on WPE like r221670 did on GTK.
873
874         * wpe/jhbuild.modules:
875         * wpe/patches/freetype6-2.4.11-truetype-font-height-fix.patch: Removed.
876
877 2017-09-10  Carlos Garcia Campos  <cgarcia@igalia.com>
878
879         REGRESSION: [GTK] Generated HTML API documentation is missing descriptions
880         https://bugs.webkit.org/show_bug.cgi?id=176667
881
882         Reviewed by Michael Catanzaro.
883
884         This is happening since we moved the implementation files to glib dirs. The generate-gtkdoc script assumes that
885         header and implementation files are always in the same directory. To reduce the input we pass to gtk-doc we
886         ignore cpp files for which there isn't a public header. The code to do this check doesn't consider cpp files in
887         a different directory than the header file. It also assumes that header and cpp files have the same filename
888         except for the extension, which is true in all cases but WebKitWebView that we have two files WebKitWebView.cpp
889         and WebKitWebViewGtk.cpp.
890
891         * gtk/generate-gtkdoc:
892         (files_to_ignore): Check also cpp files with the Gtk suffix.
893         (files_to_ignore.add_file_if_exists): Check if a file with the given name exists in any of the source dirs.
894
895 2017-09-10  Myles C. Maxfield  <mmaxfield@apple.com>
896
897         WSL should support while loops
898         https://bugs.webkit.org/show_bug.cgi?id=176581
899
900         Reviewed by Filip Pizlo.
901
902         There are a few interesting pieces to this patch:
903         1. Because the evaluator is just a node-based descent through the tree, the implementation of break
904         and continue are just "throw".
905         2. The ReturnChecker now has to return a three-state enum because of nested blocks. The outer block
906         cares about if the inner block has "break" as opposed to it having no returns nor breaks/continues.
907         3. ReturnChecker will treat "while (true)" the same as { }, but will not descend deeper for things
908         like "while (3 == 3)".
909         4. This patch also adds a few more boolean conditional functions like operator<().
910         5. I added another pass which makes sure there are no bare break/return keywords outside of loops.
911
912         * WebGPUShadingLanguageRI/All.js:
913         * WebGPUShadingLanguageRI/Break.js: Copied from Tools/WebGPUShadingLanguageRI/CheckUnreachableCode.js.
914         (Break):
915         (Break.prototype.get origin):
916         (Break.prototype.toString):
917         * WebGPUShadingLanguageRI/CheckLoops.js: Copied from Tools/WebGPUShadingLanguageRI/CheckReturns.js.
918         (checkLoops):
919         * WebGPUShadingLanguageRI/CheckReturns.js:
920         (checkReturns):
921         * WebGPUShadingLanguageRI/CheckUnreachableCode.js:
922         (checkUnreachableCode):
923         * WebGPUShadingLanguageRI/Checker.js:
924         * WebGPUShadingLanguageRI/Continue.js: Copied from Tools/WebGPUShadingLanguageRI/CheckReturns.js.
925         (Continue):
926         (Continue.prototype.get origin):
927         (Continue.prototype.toString):
928         * WebGPUShadingLanguageRI/Evaluator.js:
929         (Evaluator.prototype.visitWhileLoop):
930         (Evaluator.prototype.visitBreak):
931         (Evaluator.prototype.visitContinue):
932         * WebGPUShadingLanguageRI/Intrinsics.js:
933         (Intrinsics):
934         * WebGPUShadingLanguageRI/Lexer.js:
935         (Lexer.prototype.next):
936         (Lexer):
937         * WebGPUShadingLanguageRI/LoopChecker.js: Copied from Tools/WebGPUShadingLanguageRI/ReturnChecker.js.
938         (LoopChecker):
939         (LoopChecker.prototype.visitFuncDef):
940         (LoopChecker.prototype.visitWhileLoop):
941         (LoopChecker.prototype.visitBreak):
942         (LoopChecker.prototype.visitContinue):
943         * WebGPUShadingLanguageRI/NameResolver.js:
944         (NameResolver.prototype.visitWhileLoop):
945         * WebGPUShadingLanguageRI/Node.js:
946         (Node.prototype.visit):
947         * WebGPUShadingLanguageRI/Parse.js:
948         (parsePossibleRelationalInequality):
949         (parseBreak):
950         (parseContinue):
951         (parseWhile):
952         * WebGPUShadingLanguageRI/Prepare.js:
953         (prepare):
954         * WebGPUShadingLanguageRI/ReturnChecker.js:
955         (ReturnChecker):
956         (ReturnChecker.prototype.visitFuncDef):
957         (ReturnChecker.prototype.visitBlock):
958         (ReturnChecker.prototype.visitIfStatement):
959         (ReturnChecker.prototype.visitWhileLoop):
960         (ReturnChecker.prototype.visitReturn):
961         (ReturnChecker.prototype.visitBreak):
962         (ReturnChecker.prototype.visitContinue):
963         * WebGPUShadingLanguageRI/Rewriter.js:
964         (Rewriter.prototype.visitContinue):
965         (Rewriter.prototype.visitBreak):
966         (Rewriter.prototype.visitWhileLoop):
967         (Rewriter):
968         * WebGPUShadingLanguageRI/StandardLibraryPrologue.js:
969         * WebGPUShadingLanguageRI/Test.html:
970         * WebGPUShadingLanguageRI/Test.js:
971         (TEST_returnIf):
972         (TEST_simpleWhile):
973         * WebGPUShadingLanguageRI/UnreachableCodeChecker.js:
974         (UnreachableCodeChecker):
975         (UnreachableCodeChecker.prototype.visitBlock):
976         * WebGPUShadingLanguageRI/Visitor.js:
977         (Visitor.prototype.visitWhileLoop):
978         (Visitor.prototype.visitContinue):
979         (Visitor.prototype.visitBreak):
980         * WebGPUShadingLanguageRI/WhileLoop.js: Copied from Tools/WebGPUShadingLanguageRI/CheckReturns.js.
981         (WhileLoop):
982         (WhileLoop.prototype.get origin):
983         (WhileLoop.prototype.get conditional):
984         (WhileLoop.prototype.get body):
985         (WhileLoop.prototype.toString):
986
987 2017-09-07  Filip Pizlo  <fpizlo@apple.com>
988
989         WSL overload resolution should not be cascading
990         https://bugs.webkit.org/show_bug.cgi?id=176333
991
992         Reviewed by Myles Maxfield.
993         
994         This removes the cascading nature of overload resolution that WSL used to have, and replaces it with
995         something C++-like. If there are multiple overload candidates that match the callsite, then we resolve
996         them against each other. Anytime a function cannot be resolved onto another function, it is removed,
997         since this means that this function is in some way more general than the other one, and we are just
998         looking for the most specific function.
999         
1000         If this process ends with only one function being selected, then we succeed, else we fail.
1001         
1002         Also changed the syntax for defining generic casts to:
1003         
1004         operator<T> Thingy<T>(things)
1005         
1006         Also fixed parsing of cast expressions. It's now possible to say a cast expression in WSL.
1007         
1008         The removal of cascading causes some problems. For example, the following two operators in our standard
1009         library are ambiguous for bool(bool):
1010         
1011         operator<T> T(T)
1012         operator<T:Equatable> bool(T)
1013         
1014         I think that what we really want is to say that the following operators are restricted to the standard
1015         library:
1016         
1017         operator<T> T()
1018         operator<T> T(T)
1019         
1020         It should not be possible to ever overload these.
1021         
1022         These changes are mostly tested by existing tests and the changes in the standard library, which has to
1023         be parsed for every test.
1024
1025         * WebGPUShadingLanguageRI/All.js:
1026         * WebGPUShadingLanguageRI/ArrayRefType.js:
1027         (ArrayRefType.prototype.unifyImpl):
1028         * WebGPUShadingLanguageRI/CallExpression.js:
1029         (CallExpression):
1030         (CallExpression.prototype.get isCast):
1031         (CallExpression.prototype.get returnType):
1032         (CallExpression.prototype.resolve):
1033         (CallExpression.prototype.becomeCast):
1034         (CallExpression.prototype.setCastData):
1035         (CallExpression.prototype.toString):
1036         * WebGPUShadingLanguageRI/Checker.js:
1037         * WebGPUShadingLanguageRI/Evaluator.js:
1038         (Evaluator.prototype.visitLogicalNot):
1039         * WebGPUShadingLanguageRI/Func.js:
1040         (Func.prototype.get returnTypeForOverloadResolution):
1041         * WebGPUShadingLanguageRI/FuncDef.js:
1042         (FuncDef):
1043         * WebGPUShadingLanguageRI/FuncInstantiator.js:
1044         (FuncInstantiator.prototype.getUnique.FindTypeVariable.prototype.visitTypeVariable):
1045         (FuncInstantiator.prototype.getUnique.FindTypeVariable):
1046         (FuncInstantiator.prototype.getUnique.InstantiationSubstitution.prototype.visitCallExpression):
1047         (FuncInstantiator.prototype.getUnique.InstantiationSubstitution):
1048         * WebGPUShadingLanguageRI/FunctionLikeBlock.js:
1049         (FunctionLikeBlock.prototype.toString):
1050         (FunctionLikeBlock):
1051         * WebGPUShadingLanguageRI/InferTypesForCall.js: Added.
1052         (inferTypesForCall):
1053         * WebGPUShadingLanguageRI/Inline.js:
1054         (resolveInlinedFunction):
1055         * WebGPUShadingLanguageRI/Lexer.js:
1056         (Lexer):
1057         (Lexer.prototype.next):
1058         * WebGPUShadingLanguageRI/NameContext.js:
1059         (NameContext):
1060         (NameContext.prototype.mapFor):
1061         (NameContext.prototype.add):
1062         (NameContext.prototype.get let):
1063         (NameContext.prototype.Symbol.iterator):
1064         (NameContext.get currentStatement): Deleted.
1065         * WebGPUShadingLanguageRI/NameResolver.js:
1066         (NameResolver.prototype.visitProgram):
1067         (NameResolver.prototype.determinePossibleOverloads):
1068         (NameResolver.prototype.visitProtocolFuncDecl):
1069         (NameResolver.prototype.visitCallExpression):
1070         (NameResolver):
1071         * WebGPUShadingLanguageRI/NativeFunc.js:
1072         (NativeFunc):
1073         * WebGPUShadingLanguageRI/Node.js:
1074         (Node.prototype.visit):
1075         * WebGPUShadingLanguageRI/Parse.js:
1076         (parsePossiblePrefix):
1077         (parseFuncDecl):
1078         (parseNativeFunc):
1079         (parseNative):
1080         (parsePreferredFuncDef):
1081         (parse):
1082         * WebGPUShadingLanguageRI/Prepare.js:
1083         (prepare):
1084         * WebGPUShadingLanguageRI/Program.js:
1085         (Program.prototype.resolveFuncOverload): Deleted.
1086         (Program.prototype.get nameContext): Deleted.
1087         * WebGPUShadingLanguageRI/ProtocolDecl.js:
1088         (ProtocolDecl.prototype.inherits):
1089         (ProtocolDecl.prototype.hasHeir):
1090         * WebGPUShadingLanguageRI/PtrType.js:
1091         (PtrType.prototype.unifyImpl):
1092         * WebGPUShadingLanguageRI/ResolveOverloadImpl.js:
1093         (resolveOverloadImpl):
1094         * WebGPUShadingLanguageRI/Rewriter.js:
1095         (Rewriter.prototype.visitProtocolFuncDecl):
1096         (Rewriter.prototype.processDerivedCallData):
1097         (Rewriter.prototype.visitCastExpression): Deleted.
1098         * WebGPUShadingLanguageRI/StandardLibrary.js: Added.
1099         (preferred.operator.T.T):
1100         (operator.T.Equatable.bool):
1101         * WebGPUShadingLanguageRI/StandardLibraryEpilogue.js: Removed.
1102         * WebGPUShadingLanguageRI/StandardLibraryPrologue.js: Removed.
1103         * WebGPUShadingLanguageRI/Test.html:
1104         * WebGPUShadingLanguageRI/Test.js:
1105         (doLex):
1106         (checkUInt):
1107         (checkBool):
1108         * WebGPUShadingLanguageRI/TypeRef.js:
1109         (TypeRef.prototype.toString):
1110         (TypeRef):
1111         * WebGPUShadingLanguageRI/Visitor.js:
1112         (Visitor.prototype.visitCallExpression):
1113         (Visitor.prototype.visitCastExpression): Deleted.
1114
1115 2017-09-10  Brady Eidson  <beidson@apple.com>
1116
1117         Try to avoid creating the default WKWebsiteDataStore until its actually needed.
1118         <rdar://problem/33164453> and https://bugs.webkit.org/show_bug.cgi?id=176551
1119
1120         Reviewed by Tim Horton.
1121
1122         * TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm:
1123         (TEST):
1124
1125 2017-09-10  Michael Catanzaro  <mcatanzaro@igalia.com>
1126
1127         [GTK] Improve Ctrl+W and Ctrl+Q shortcuts in MiniBrowser
1128         https://bugs.webkit.org/show_bug.cgi?id=176619
1129
1130         Reviewed by Carlos Garcia Campos.
1131
1132         There are two different problems here. First, Ctrl+W is closing the entire window. That made
1133         sense when I implemented the shortcut a couple years ago, but now MiniBrowser supports tabs
1134         and it should really close only one single tab. Fix that.
1135
1136         Next, the keyboard shortcuts are not using webkit_web_view_try_close() and so are bypassing
1137         onbeforeunload handlers, which are respected when closing with the mouse. Fix that too.
1138
1139         * MiniBrowser/gtk/BrowserWindow.c:
1140         (browserWindowTryCloseCurrentWebView):
1141         (browserWindowTryClose):
1142         (browser_window_init):
1143
1144 2017-09-07  Myles C. Maxfield  <mmaxfield@apple.com>
1145
1146         Add "if" statements to WSL
1147         https://bugs.webkit.org/show_bug.cgi?id=176294
1148
1149         Reviewed by Filip Pizlo.
1150         
1151         Rolling back in after skipping Test.js on debug.
1152
1153         Fairly straightforward implementation. ReturnChecker only returns true iff there is an else block,
1154         and both the if body and the else body recursively return true.
1155
1156         In order to accept both syntaxes:
1157         if (foo)
1158             bar;
1159         ... and ...
1160         if (foo) {
1161             bar;
1162         }
1163         This patch lets parseStatement() call parseBlock(). This means that the following is valid:
1164         int x = 7;
1165         if (foo) {
1166             int x = 8;
1167             // x is 8 here!
1168         }
1169         // x is 7 here!
1170
1171         This production means that these blocks don't require "if" statements, so you can just have:
1172         int foo() {
1173            int x = 7;
1174            {
1175                int x = 8;
1176                // x is 8 here!
1177            }
1178            // x is 7 here!
1179         }
1180
1181         However, this patch doesn't touch the following use-case:
1182         if (int x = bar()) {
1183             // use x here
1184         }
1185
1186         * WebGPUShadingLanguageRI/All.js:
1187         * WebGPUShadingLanguageRI/Checker.js:
1188         * WebGPUShadingLanguageRI/Evaluator.js:
1189         (Evaluator.prototype.visitIfStatement):
1190         * WebGPUShadingLanguageRI/IfStatement.js: Copied from Tools/WebGPUShadingLanguageRI/TypeDef.js.
1191         (IfStatement):
1192         (IfStatement.prototype.get origin):
1193         (IfStatement.prototype.get conditional):
1194         (IfStatement.prototype.get body):
1195         (IfStatement.prototype.get elseBody):
1196         (IfStatement.prototype.toString):
1197         * WebGPUShadingLanguageRI/NameResolver.js:
1198         (NameResolver.prototype.visitIfStatement):
1199         * WebGPUShadingLanguageRI/Parse.js:
1200         (parseTypeParameters):
1201         (parseIfStatement):
1202         (parseStatement):
1203         * WebGPUShadingLanguageRI/ReturnChecker.js:
1204         (ReturnChecker.prototype.visitIfStatement):
1205         * WebGPUShadingLanguageRI/Rewriter.js:
1206         (Rewriter.prototype.visitIfStatement):
1207         (Rewriter):
1208         * WebGPUShadingLanguageRI/Test.html:
1209         * WebGPUShadingLanguageRI/Test.js:
1210         (TEST_variableShadowing):
1211         (TEST_ifStatement):
1212         (TEST_ifElseStatement):
1213         (TEST_ifElseIfStatement):
1214         (TEST_ifElseIfElseStatement):
1215         (TEST_returnIf):
1216         (TEST_protocolMonoPolySigDoublePolyDefExplicit): Deleted.
1217         * WebGPUShadingLanguageRI/TypeDef.js:
1218         (TypeDef.prototype.toString):
1219         (TypeDef):
1220         * WebGPUShadingLanguageRI/Visitor.js:
1221         (Visitor.prototype.visitIfStatement):
1222
1223 2017-09-09  Michael Catanzaro  <mcatanzaro@igalia.com>
1224
1225         [GTK] Unreviewed, fix typo forwad -> forward
1226
1227         * MiniBrowser/gtk/BrowserWindow.c:
1228         (browserWindowUpdateNavigationActions):
1229         (backForwardlistChanged):
1230         (browserWindowSwitchTab):
1231         (backForwadlistChanged): Deleted.
1232
1233 2017-09-09  Ryan Haddad  <ryanhaddad@apple.com>
1234
1235         Unreviewed, rolling out r221801.
1236
1237         This change introduced a webkitpy test failure.
1238
1239         Reverted changeset:
1240
1241         "bisect-builds doesn't work due to missing requests module"
1242         https://bugs.webkit.org/show_bug.cgi?id=175709
1243         http://trac.webkit.org/changeset/221801
1244
1245 2017-09-09  Ryan Haddad  <ryanhaddad@apple.com>
1246
1247         Unreviewed, rolling out r221776.
1248
1249         This change caused wsl-tests.yaml/Test.js to time out on Debug
1250         JSC bots.
1251
1252         Reverted changeset:
1253
1254         "Add "if" statements to WSL"
1255         https://bugs.webkit.org/show_bug.cgi?id=176294
1256         http://trac.webkit.org/changeset/221776
1257
1258 2017-09-09  Michael Catanzaro  <mcatanzaro@igalia.com>
1259
1260         MiniBrowser closes tab instead of window on close signal
1261         https://bugs.webkit.org/show_bug.cgi?id=176587
1262
1263         Reviewed by Carlos Garcia Campos.
1264
1265         This has been broken since we added support for multiple tabs. We need to run try_close for
1266         every open tab, not just the current one. If there are no onbeforeonload handlers then all
1267         tabs will close; if there are some, then they'll be respected, but the remaining tabs will
1268         be closed.
1269
1270         Note that we cannot simply iterate through the tabs of the GtkNotebook, as we'd be deleting
1271         tabs as we go, so save all the tabs into a separate list and then try to close each in turn.
1272
1273         * MiniBrowser/gtk/BrowserWindow.c:
1274         (browserWindowTryClose):
1275         (browserWindowDeleteEvent):
1276
1277 2017-09-09  Zan Dobersek  <zdobersek@igalia.com>
1278
1279         Unreviewed WPE build fix.
1280
1281         * TestWebKitAPI/PlatformWPE.cmake:
1282         Link WebCore archives into the TestWebCore binary as a group.
1283
1284 2017-09-08  Lucas Forschler  <lforschler@apple.com>
1285
1286         bisect-builds doesn't work due to missing requests module
1287         https://bugs.webkit.org/show_bug.cgi?id=175709
1288         
1289         Reviewed by Ryosuke Niwa.
1290
1291         * Scripts/bisect-builds: update import to webkitpy.thirdparty.autoinstalled
1292         * Scripts/webkitpy/thirdparty/__init__.py: add logic to install requests module.
1293         (AutoinstallImportHook.find_module):
1294         (AutoinstallImportHook):
1295         (AutoinstallImportHook._install_requests):
1296         * Scripts/webkitpy/thirdparty/__init___unittest.py:
1297         (ThirdpartyTest.test_imports):
1298
1299 2017-09-08  Lucas Forschler  <lforschler@apple.com>
1300
1301         Test commit to verify trac sync is working.
1302
1303 2017-09-08  Lucas Forschler  <lforschler@apple.com>
1304
1305         Test commit to verify git sync is working.
1306
1307 2017-09-08  Lucas Forschler  <lforschler@apple.com>
1308
1309         bisect-builds should not print out extracting command
1310         https://bugs.webkit.org/show_bug.cgi?id=175632
1311         
1312         Reviewed by Alexey Proskuryakov.
1313
1314         * Scripts/bisect-builds:
1315         (extract_archive):
1316
1317 2017-09-07  Joseph Pecoraro  <pecoraro@apple.com>
1318
1319         WebKit should claim that it can show responses for a broader range of JSON MIMETypes
1320         https://bugs.webkit.org/show_bug.cgi?id=176252
1321         <rdar://problem/34212885>
1322
1323         Reviewed by Ryosuke Niwa.
1324
1325         * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
1326         * TestWebKitAPI/Tests/WebKitCocoa/WKNavigationResponse.mm: Added.
1327         (-[WKNavigationResponseTestNavigationDelegate webView:decidePolicyForNavigationResponse:decisionHandler:]):
1328         (-[WKNavigationResponseTestNavigationDelegate webView:didCommitNavigation:]):
1329         (-[WKNavigationResponseTestSchemeHandler webView:startURLSchemeTask:]):
1330         (-[WKNavigationResponseTestSchemeHandler webView:stopURLSchemeTask:]):
1331         (TEST):
1332         Test for canShowMIMEType with multiple JSON mime types and a garbage mime type.
1333         Previously canShowMIMEType would have been YES for "application/json" but
1334         NO for "application/vnd.api+json". Now it shows YES for both.
1335
1336         * TestWebKitAPI/PlatformGTK.cmake:
1337         * TestWebKitAPI/PlatformWPE.cmake:
1338         * TestWebKitAPI/PlatformWin.cmake:
1339         * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
1340         * TestWebKitAPI/Tests/WebCore/MIMETypeRegistry.cpp: Added.
1341         (TestWebKitAPI::TEST):
1342         Tests for MIMETypeRegistry's dynamic JSON mime type detection.
1343
1344 2017-09-07  Matthew Stewart  <matthew_r_stewart@apple.com>
1345
1346         Add Live PLT implemented with WebDriver
1347         https://bugs.webkit.org/show_bug.cgi?id=176436
1348
1349         Reviewed by Stephanie Lewis.
1350
1351         Adds a new PLT that runs on live websites.
1352
1353         * Scripts/run-webdriver-plt.py: Added.
1354         (parse_args):
1355         (start):
1356         (make_suites):
1357         (main):
1358         * Scripts/webkitpy/webdriver_plt/__init__.py: Added.
1359         * Scripts/webkitpy/webdriver_plt/liveplt.py: Added.
1360         (PageLoadTest):
1361         (PageLoadTest.__init__):
1362         (PageLoadTest.start):
1363         (PageLoadTest.run_suite):
1364         (PageLoadTest._get_driver_for_browser):
1365         (PageLoadTest._setup_browser_window):
1366         (PageLoadTest.run_one_test):
1367         (PageLoadTest.get_results):
1368         * Scripts/webkitpy/webdriver_plt/pltresults.py: Added.
1369         (PLTResults):
1370         (PLTResults.__init__):
1371         (PLTResults.__add__):
1372         (PLTResults.add_timing_result):
1373         (PLTResults.mean):
1374         (PLTResults.geometric_mean):
1375         (PLTResults.mean_coef_variance):
1376         (PLTResults.print_results):
1377         (PLTResults.print_url_results):
1378         (PLTResults._format_time):
1379         * Scripts/webkitpy/webdriver_plt/suites/__init__.py: Added.
1380         * Scripts/webkitpy/webdriver_plt/suites/arabic.suite: Added.
1381         * Scripts/webkitpy/webdriver_plt/suites/cjk.suite: Added.
1382         * Scripts/webkitpy/webdriver_plt/suites/news.suite: Added.
1383         * Scripts/webkitpy/webdriver_plt/suites/search.suite: Added.
1384         * Scripts/webkitpy/webdriver_plt/suites/shopping.suite: Added.
1385         * Scripts/webkitpy/webdriver_plt/suites/social.suite: Added.
1386         * Scripts/webkitpy/webdriver_plt/suites/suite.py: Added.
1387         (Suite):
1388         (Suite.__init__):
1389         (Suite.get_available_suites):
1390         * Scripts/webkitpy/webdriver_plt/urlresults.py: Added.
1391         (URLResults):
1392         (URLResults.__init__):
1393         (URLResults.__add__):
1394         (URLResults.mean):
1395         (URLResults.coef_variance):
1396         (URLResults.print_results):
1397         (URLResults._format_time):
1398
1399 2017-09-07  Myles C. Maxfield  <mmaxfield@apple.com>
1400
1401         Add "if" statements to WSL
1402         https://bugs.webkit.org/show_bug.cgi?id=176294
1403
1404         Reviewed by Filip Pizlo.
1405
1406         Fairly straightforward implementation. ReturnChecker only returns true iff there is an else block,
1407         and both the if body and the else body recursively return true.
1408
1409         In order to accept both syntaxes:
1410         if (foo)
1411             bar;
1412         ... and ...
1413         if (foo) {
1414             bar;
1415         }
1416         This patch lets parseStatement() call parseBlock(). This means that the following is valid:
1417         int x = 7;
1418         if (foo) {
1419             int x = 8;
1420             // x is 8 here!
1421         }
1422         // x is 7 here!
1423
1424         This production means that these blocks don't require "if" statements, so you can just have:
1425         int foo() {
1426            int x = 7;
1427            {
1428                int x = 8;
1429                // x is 8 here!
1430            }
1431            // x is 7 here!
1432         }
1433
1434         However, this patch doesn't touch the following use-case:
1435         if (int x = bar()) {
1436             // use x here
1437         }
1438
1439         * WebGPUShadingLanguageRI/All.js:
1440         * WebGPUShadingLanguageRI/Checker.js:
1441         * WebGPUShadingLanguageRI/Evaluator.js:
1442         (Evaluator.prototype.visitIfStatement):
1443         * WebGPUShadingLanguageRI/IfStatement.js: Copied from Tools/WebGPUShadingLanguageRI/TypeDef.js.
1444         (IfStatement):
1445         (IfStatement.prototype.get origin):
1446         (IfStatement.prototype.get conditional):
1447         (IfStatement.prototype.get body):
1448         (IfStatement.prototype.get elseBody):
1449         (IfStatement.prototype.toString):
1450         * WebGPUShadingLanguageRI/NameResolver.js:
1451         (NameResolver.prototype.visitIfStatement):
1452         * WebGPUShadingLanguageRI/Parse.js:
1453         (parseTypeParameters):
1454         (parseIfStatement):
1455         (parseStatement):
1456         * WebGPUShadingLanguageRI/ReturnChecker.js:
1457         (ReturnChecker.prototype.visitIfStatement):
1458         * WebGPUShadingLanguageRI/Rewriter.js:
1459         (Rewriter.prototype.visitIfStatement):
1460         (Rewriter):
1461         * WebGPUShadingLanguageRI/Test.html:
1462         * WebGPUShadingLanguageRI/Test.js:
1463         (TEST_variableShadowing):
1464         (TEST_ifStatement):
1465         (TEST_ifElseStatement):
1466         (TEST_ifElseIfStatement):
1467         (TEST_ifElseIfElseStatement):
1468         (TEST_returnIf):
1469         (TEST_protocolMonoPolySigDoublePolyDefExplicit): Deleted.
1470         * WebGPUShadingLanguageRI/TypeDef.js:
1471         (TypeDef.prototype.toString):
1472         (TypeDef):
1473         * WebGPUShadingLanguageRI/Visitor.js:
1474         (Visitor.prototype.visitIfStatement):
1475
1476 2017-09-07  Lucas Forschler  <lforschler@apple.com>
1477
1478         Test commit after server upgrade from subversion 1.9.5 to 1.9.7
1479
1480 2017-09-07  Chris Dumez  <cdumez@apple.com>
1481
1482         [WK2] Add C API to retrieve the originating page of a WKDownload
1483         https://bugs.webkit.org/show_bug.cgi?id=176557
1484         <rdar://problem/34314776>
1485
1486         Reviewed by Alex Christensen.
1487
1488         Add layout test coverage for both the ObjC and C API.
1489
1490         * TestWebKitAPI/Tests/WebKit/mac/ContextMenuDownload.mm:
1491         (TestWebKitAPI::decideDestinationWithSuggestedFilename):
1492         (TestWebKitAPI::TEST):
1493         * TestWebKitAPI/Tests/WebKitCocoa/Download.mm:
1494         (-[RedirectedDownloadDelegate _downloadDidStart:]):
1495         (TEST):
1496
1497 2017-09-07  Filip Pizlo  <fpizlo@apple.com>
1498
1499         WSL Node.prototype.visit should probably do memoization
1500         https://bugs.webkit.org/show_bug.cgi?id=176286
1501
1502         Reviewed by Mark Lam.
1503         
1504         Visitors can sometimes revisit the same thing. For example, we may visit a FuncDef because it belongs
1505         to Program and we may visit it again because a CallExpression resolved to it. That's just plain silly.
1506         
1507         Our tests don't currently do this, so it's not a performance problem, yet. Also, we usually avoid that
1508         kind of repetitive visiting inside the visitor implementations. But as far as I can tell, this is an
1509         emergent property rather than a deliberate design.
1510         
1511         This change just makes the policy super explicit. If you visit something more than once with the same
1512         visitor, you get the same answer back. This is achieved by means of a memo table inside each visitor.
1513         
1514         * WebGPUShadingLanguageRI/All.js:
1515         * WebGPUShadingLanguageRI/FuncInstantiator.js:
1516         * WebGPUShadingLanguageRI/Node.js:
1517         (Node.prototype.visit):
1518         * WebGPUShadingLanguageRI/Rewriter.js:
1519         (Rewriter):
1520         * WebGPUShadingLanguageRI/Test.html:
1521         * WebGPUShadingLanguageRI/Visitor.js:
1522         (Visitor):
1523         * WebGPUShadingLanguageRI/VisitorBase.js: Added.
1524         (VisitorBase):
1525
1526 2017-09-07  Wenson Hsieh  <wenson_hsieh@apple.com>
1527
1528         [Directory Upload] Extend drag and drop support to iOS
1529         https://bugs.webkit.org/show_bug.cgi?id=176492
1530         <rdar://problem/34291584>
1531
1532         Reviewed by Tim Horton.
1533
1534         Adds two new iOS drag and drop unit tests, which both exercise the DataTransferItem.webKitGetAsEntry codepath
1535         upon drop. (...)GetFolderAsEntry creates a new folder in the temporary directory and uses it to generate an item
1536         provider. This item provider is then dropped over a custom drop handling element, which writes information about
1537         the exposed FileSystemEntries into a textarea. (...)ExternalSourceDataTransferItemGetPlainTextFileAsEntry does
1538         something similar, except that it only drops a plain text file instead.
1539
1540         * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
1541         * TestWebKitAPI/Tests/WebKitCocoa/DataTransferItem-getAsEntry.html: Added.
1542
1543         Introduce a new test page that dumps information about DataTransferItems' file system entries upon drop.
1544
1545         * TestWebKitAPI/Tests/ios/DataInteractionTests.mm:
1546         (runTestWithTemporaryTextFile):
1547         (runTestWithTemporaryFolder):
1548
1549         Introduce helpers to set up and tear down temporary files and folders over the duration of a test.
1550
1551         (TestWebKitAPI::setUpTestWebViewForDataTransferItems):
1552         (TestWebKitAPI::TEST):
1553
1554 2017-09-07  Filip Pizlo  <fpizlo@apple.com>
1555
1556         WSL should check recursion
1557         https://bugs.webkit.org/show_bug.cgi?id=176553
1558
1559         Reviewed by Michael Saboff and Mark Lam.
1560         
1561         This adds a recursion checker. Previously, we would only check for recursion during inlining, but that
1562         generally only happens when we call the function.
1563
1564         * WebGPUShadingLanguageRI/All.js:
1565         * WebGPUShadingLanguageRI/CheckRecursion.js: Added.
1566         (checkRecursion):
1567         * WebGPUShadingLanguageRI/Prepare.js:
1568         (prepare):
1569         * WebGPUShadingLanguageRI/RecursionChecker.js: Added.
1570         (RecursionChecker):
1571         (RecursionChecker.prototype.visitFuncDef):
1572         (RecursionChecker.prototype.visitCallExpression):
1573         * WebGPUShadingLanguageRI/Test.html:
1574         * WebGPUShadingLanguageRI/Test.js:
1575         (TEST_simpleRecursion):
1576
1577 2017-09-07  Chris Dumez  <cdumez@apple.com>
1578
1579         [WK2] Notify client when downloads are redirected
1580         https://bugs.webkit.org/show_bug.cgi?id=176481
1581         <rdar://problem/34309065>
1582
1583         Reviewed by Geoffrey Garen.
1584
1585         * TestWebKitAPI/Tests/WebKitCocoa/Download.mm:
1586         (-[UIDownloadAsFileTestDelegate _webView:contextMenu:forElement:]):
1587         (-[RedirectedDownloadDelegate _download:decideDestinationWithSuggestedFilename:allowOverwrite:]):
1588         (-[RedirectedDownloadDelegate _download:didReceiveServerRedirectToURL:]):
1589         (-[RedirectedDownloadDelegate _downloadDidFinish:]):
1590         (TEST):
1591         Add API test coverage.
1592
1593         * WebKitTestRunner/TestController.cpp:
1594         (WTR::TestController::createWebViewWithOptions):
1595         (WTR::TestController::downloadDidReceiveServerRedirectToURL):
1596         * WebKitTestRunner/TestController.h:
1597         Add layout test infrastructure.
1598
1599 2017-09-07  Per Arne Vollan  <pvollan@apple.com>
1600
1601         [Win] fast/canvas/2d.getPath.modification.html is failing.
1602         https://bugs.webkit.org/show_bug.cgi?id=176534
1603
1604         Reviewed by Alex Christensen.
1605
1606         We need to enable Inspector additions at runtime in order to expose the getPath function.
1607
1608         * DumpRenderTree/win/DumpRenderTree.cpp:
1609         (resetWebPreferencesToConsistentValues):
1610
1611 2017-09-07  Filip Pizlo  <fpizlo@apple.com>
1612
1613         WSL tests should run in run-javascriptcore-tests
1614         https://bugs.webkit.org/show_bug.cgi?id=176550
1615
1616         Reviewed by Keith Miller.
1617
1618         * Scripts/run-javascriptcore-tests:
1619         (runJSCStressTests):
1620         * WebGPUShadingLanguageRI/wsl-tests.yaml: Added.
1621
1622 2017-09-07  Lucas Forschler  <lforschler@apple.com>
1623
1624         bisect-builds started failing with invalid json
1625         https://bugs.webkit.org/show_bug.cgi?id=176478
1626         
1627         Once we hit 1000 items in our dynamoDB, we ran into an upper limit on the AWS API Gateway looping mechanism. 
1628         This prevented us from doing a body mapping template to reformat the json. This fix is to simply return the raw json, 
1629         and adjust the json parsing in our code. The AWS rest API has been fixed, and updated to v2. 
1630         
1631         This change is for the script which operates against the endpoint.
1632         
1633         Reviewed by Aakash Jain.
1634
1635         * Scripts/bisect-builds:
1636         (get_sorted_revisions):
1637
1638 2017-09-07  Filip Pizlo  <fpizlo@apple.com>
1639
1640         [WSL] Rationalize how protocol inheritance deals with type parameters
1641         https://bugs.webkit.org/show_bug.cgi?id=176334
1642
1643         Reviewed by Mark Lam.
1644         
1645         This adds a bunch of tests for structs, protocols, and functions interacting in interesting
1646         ways. The most complex of these tests triggers the case where the protocol contains a function
1647         with one type parameter and the real function has more than one. This should give a WTypeError,
1648         and now it does.
1649         
1650         * WebGPUShadingLanguageRI/ProtocolDecl.js:
1651         (ProtocolDecl.prototype.hasHeir): Fix the handling of a mismatch of number of type parameters by actually passing the type parameters and then correctly handling the error.
1652         * WebGPUShadingLanguageRI/Test.js: Add a bunch of tests for this case and a lot of other protocol cases.
1653         (TEST_protocolMonoSigPolyDef):
1654         (TEST_protocolPolySigPolyDef):
1655         (TEST_protocolDoublePolySigDoublePolyDef):
1656         (TEST_protocolDoublePolySigDoublePolyDefExplicit):
1657         (TEST_protocolMonoPolySigDoublePolyDefExplicit):
1658         * WebGPUShadingLanguageRI/TypeVariable.js:
1659         (TypeVariable.prototype.get origin): This wasn't implemented before, which made error reporting harder.
1660
1661 2017-09-07  Per Arne Vollan  <pvollan@apple.com>
1662
1663         [Win] Dashboard test is failing.
1664         https://bugs.webkit.org/show_bug.cgi?id=176527
1665
1666         Reviewed by Brent Fulgham.
1667
1668         Skip test on Windows since WebKitTestRunner is required, but not built on Windows.
1669
1670         * BuildSlaveSupport/build.webkit.org-config/master.cfg:
1671         (TestFactory.__init__):
1672
1673 2017-09-07  Adrian Perez de Castro  <aperez@igalia.com>
1674
1675         [WPE][CMake] Add "dist" and "distcheck" targets
1676         https://bugs.webkit.org/show_bug.cgi?id=176448
1677
1678         Reviewed by Carlos Garcia Campos.
1679
1680         Add "dist" and "distcheck" CMake targets, which create release tarballs.
1681         These are available only when configuring with -DDEVELOPER_MODE=TRUE.
1682
1683         * wpe/manifest.txt.in: Added.
1684
1685 2017-09-07  Per Arne Vollan  <pvollan@apple.com>
1686
1687         [Win] Enable DatatransferItems in DRT.
1688         https://bugs.webkit.org/show_bug.cgi?id=176424
1689
1690         Reviewed by Brent Fulgham.
1691
1692         * DumpRenderTree/win/DumpRenderTree.cpp:
1693         (resetWebPreferencesToConsistentValues):
1694
1695 2017-09-07  Carlos Garcia Campos  <cgarcia@igalia.com>
1696
1697         [GTK] Bump libxml2 version to 1.9.5
1698         https://bugs.webkit.org/show_bug.cgi?id=176502
1699
1700         Reviewed by Carlos Alberto Lopez Perez.
1701
1702         It has been released very recently, but it fixes the issues that prevented us from upgrading to 1.9.4.
1703
1704         * gtk/jhbuild.modules:
1705
1706 2017-09-06  Joseph Pecoraro  <pecoraro@apple.com>
1707
1708         Remove new-run-webkit-httpd as it appears to be old
1709         https://bugs.webkit.org/show_bug.cgi?id=176493
1710
1711         Reviewed by Alexey Proskuryakov.
1712
1713         * Scripts/new-run-webkit-httpd: Removed.
1714
1715 2017-09-06  Alex Christensen  <achristensen@webkit.org>
1716
1717         Add WKUIDelegatePrivate equivalent of WKPageUIClient's pageDidScroll
1718         https://bugs.webkit.org/show_bug.cgi?id=176482
1719         <rdar://problem/29270035>
1720
1721         Reviewed by Tim Horton.
1722
1723         * TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm:
1724         (-[DidScrollDelegate _webViewDidScroll:]):
1725         (TEST):
1726
1727 2017-09-06  Eric Carlson  <eric.carlson@apple.com>
1728
1729         Require LoggingHelper overrides to provide identifier
1730         https://bugs.webkit.org/show_bug.cgi?id=176477
1731
1732         Reviewed by Jer Noble.
1733
1734         * TestWebKitAPI/Tests/WebCore/Logging.cpp:
1735         (TestWebKitAPI::TEST_F):
1736
1737 2017-09-06  Alex Christensen  <achristensen@webkit.org>
1738
1739         Add WKUIDelegatePrivate equivalent of WKPageUIClient's pinnedStateDidChange
1740         https://bugs.webkit.org/show_bug.cgi?id=176474
1741         <rdar://problem/29270035>
1742
1743         Reviewed by Tim Horton.
1744
1745         * TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm:
1746         (-[PinnedStateObserver observeValueForKeyPath:ofObject:change:context:]):
1747         (TEST):
1748
1749 2017-09-06  Alex Christensen  <achristensen@webkit.org>
1750
1751         Unreviewed, rolling out r221694.
1752
1753         broke build
1754
1755         Reverted changeset:
1756
1757         "Add WKUIDelegatePrivate equivalent of WKPageUIClient's
1758         pinnedStateDidChange"
1759         https://bugs.webkit.org/show_bug.cgi?id=176474
1760         http://trac.webkit.org/changeset/221694
1761
1762 2017-09-06  Per Arne Vollan  <pvollan@apple.com>
1763
1764         [Win] test-webkitpy test timeout_context_unittest is failing.
1765         https://bugs.webkit.org/show_bug.cgi?id=176471
1766
1767         Reviewed by Brent Fulgham.
1768
1769         This assert failure is possibly caused by different time resolution on
1770         various platforms.
1771  
1772         * Scripts/webkitpy/common/timeout_context_unittest.py:
1773         (TimeoutContextTests.test_timeout_data):
1774
1775 2017-09-06  Aakash Jain  <aakash_jain@apple.com>
1776
1777         status-bubbles turn orange after checking relevance of patch
1778         https://bugs.webkit.org/show_bug.cgi?id=176457
1779
1780         Reviewed by Alexey Proskuryakov.
1781
1782         * QueueStatusServer/handlers/statusbubble.py: Added "Checked relevance of patch" as a progress_statuses.
1783
1784 2017-09-06  Alex Christensen  <achristensen@webkit.org>
1785
1786         Add WKUIDelegatePrivate equivalent of WKPageUIClient's pinnedStateDidChange
1787         https://bugs.webkit.org/show_bug.cgi?id=176474
1788         <rdar://problem/29270035>
1789
1790         Reviewed by Tim Horton.
1791
1792         * TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm:
1793         (-[PinnedStateObserver observeValueForKeyPath:ofObject:change:context:]):
1794         (TEST):
1795
1796 2017-09-06  Filip Pizlo  <fpizlo@apple.com>
1797
1798         WSL: Inliner doesn't allow double-negation
1799         https://bugs.webkit.org/show_bug.cgi?id=176440
1800
1801         Reviewed by Mylex Maxfield.
1802         
1803         The problem was that we were visiting the operands to calls while inside doVisit. This is too strict
1804         since it rejects nested calls like foo(foo(x)). The solution is to visit the operands to calls before
1805         entering doVisit.
1806         
1807         This also fixes some other issues in the parser that made the Inliner's error really strange.
1808
1809         * WebGPUShadingLanguageRI/Func.js:
1810         (Func):
1811         * WebGPUShadingLanguageRI/Inliner.js:
1812         (Inliner.prototype.visitCallExpression):
1813         (Inliner):
1814         * WebGPUShadingLanguageRI/Parse.js:
1815         (parseOperatorFuncDefValues):
1816         (parseNonOperatorFuncDefValues):
1817         (parseGenericFuncDefValues):
1818         (parseFuncDecl):
1819         * WebGPUShadingLanguageRI/Test.js:
1820         * WebGPUShadingLanguageRI/VisitingSet.js:
1821         (VisitingSet.prototype.doVisit):
1822         (VisitingSet):
1823
1824 2017-09-06  Myles C. Maxfield  <mmaxfield@apple.com>
1825
1826         WSL should support the bool type
1827         https://bugs.webkit.org/show_bug.cgi?id=176285
1828
1829         Reviewed by Filip Pizlo.
1830
1831         I forgot to commit a couple files.
1832
1833         * WebGPUShadingLanguageRI/StandardLibraryEpilogue.js: Added.
1834         (const.standardLibraryEpilogue.operator.bool.T.Equatable):
1835         * WebGPUShadingLanguageRI/StandardLibraryPrologue.js: Added.
1836         (operator.T.T):
1837
1838 2017-09-06  Myles C. Maxfield  <mmaxfield@apple.com>
1839
1840         WSL should correctly handle the interaction between casting operators and complex types
1841         https://bugs.webkit.org/show_bug.cgi?id=176316
1842
1843         Reviewed by Filip Pizlo.
1844
1845         This allows the standard library to include all identity cast operators for all exsting
1846         and yet-to-exist types. The standard library now has a function with the signature:
1847         operator T<><T>(T). This means "for all T, define a cast operator from T to T<>." The
1848         duplicate <>s lets us say things like operator OutputVector<T><T>(InputVector<T> x).
1849
1850         For testing, this patch also adds the ability to cast an arbitrary Equatable type to bool,
1851         by comparing the value to the default value for that type.
1852
1853         * WebGPUShadingLanguageRI/All.js:
1854         * WebGPUShadingLanguageRI/CastExpression.js: Copied from Tools/WebGPUShadingLanguageRI/NativeFuncInstance.js.
1855         (CastExpression):
1856         (CastExpression.prototype.get functionName):
1857         (CastExpression.prototype.get returnType):
1858         (CastExpression.prototype.toString):
1859         * WebGPUShadingLanguageRI/Checker.js:
1860         * WebGPUShadingLanguageRI/Func.js:
1861         (Func.prototype.toDeclString):
1862         * WebGPUShadingLanguageRI/FuncInstantiator.js:
1863         (FuncInstantiator.prototype.getUnique.Instantiate.prototype.visitNativeFunc):
1864         (FuncInstantiator.prototype.getUnique.Instantiate):
1865         (FuncInstantiator.prototype.getUnique):
1866         (FuncInstantiator):
1867         * WebGPUShadingLanguageRI/Inliner.js:
1868         (Inliner.prototype.visitCastExpression):
1869         (Inliner):
1870         * WebGPUShadingLanguageRI/Intrinsics.js:
1871         (Intrinsics):
1872         * WebGPUShadingLanguageRI/NativeFunc.js:
1873         * WebGPUShadingLanguageRI/NativeFuncInstance.js:
1874         (NativeFuncInstance):
1875         * WebGPUShadingLanguageRI/Parse.js:
1876         (parsePossiblePrefix):
1877         (parseFuncDecl):
1878         (parseOperatorFuncDefValues): Deleted.
1879         (parseNonOperatorFuncDefValues): Deleted.
1880         (parseGenericFuncDefValues): Deleted.
1881         * WebGPUShadingLanguageRI/Prepare.js:
1882         (prepare):
1883         * WebGPUShadingLanguageRI/Program.js:
1884         (Program.prototype.resolveFuncOverload):
1885         * WebGPUShadingLanguageRI/ResolveOverloadImpl.js:
1886         (resolveOverloadImpl):
1887         * WebGPUShadingLanguageRI/Rewriter.js:
1888         (Rewriter.prototype.processDerivedCallData):
1889         (Rewriter.prototype.visitCastExpression):
1890         (Rewriter.prototype.visitCallExpression):
1891         * WebGPUShadingLanguageRI/StandardLibrary.js: Removed.
1892         * WebGPUShadingLanguageRI/Test.html:
1893         * WebGPUShadingLanguageRI/Test.js:
1894         * WebGPUShadingLanguageRI/TypeDefResolver.js:
1895         (TypeDefResolver):
1896         (TypeDefResolver.prototype.visitFuncDef): Deleted.
1897         * WebGPUShadingLanguageRI/Visitor.js:
1898         (Visitor.prototype.visitCastExpression):
1899
1900 2017-09-06  Daniel Bates  <dabates@apple.com>
1901
1902         Copy WebKit Permalink may generate wrong URL with SVN checkout
1903         https://bugs.webkit.org/show_bug.cgi?id=176427
1904
1905         Reviewed by Darin Adler.
1906
1907         Fixes an issue where Copy WebKit Permalink would generate an incorrect URL for
1908         any file not in the top-level directory of the repository when using an SVN
1909         checkout of WebKit.
1910
1911         Copy WebKit Permalink changes directories to the containing directory D of the
1912         active Xcode document F before running "svn info <path to F>". Currently we use
1913         the value of "Path" from the output of "svn info" when generating the permalink.
1914         This path is relative to D. But we want the path to F relative to the top-level
1915         checkout directory. We need to explicitly compute this.
1916
1917         * CopyPermalink/Copy WebKit Permalink.workflow/Contents/document.wflow:
1918
1919 2017-09-06  Carlos Garcia Campos  <cgarcia@igalia.com>
1920
1921         [GTK] Bump freetype version to 2.8.0
1922         https://bugs.webkit.org/show_bug.cgi?id=176351
1923
1924         Reviewed by Carlos Alberto Lopez Perez.
1925
1926         Remove the patch we were using since it was reverted upstream.
1927
1928         * gtk/jhbuild.modules:
1929         * gtk/patches/freetype6-2.4.11-truetype-font-height-fix.patch: Removed.
1930
1931 2017-09-06  Yoshiaki Jitsukawa  <Yoshiaki.Jitsukawa@sony.com>
1932
1933         [Win] Tools/TestWebKitAPI/Tests/WTF/PriorityQueue.cpp fails to compile with MSVC 2015
1934         https://bugs.webkit.org/show_bug.cgi?id=176442
1935
1936         Reviewed by Keith Miller.
1937
1938         * TestWebKitAPI/Tests/WTF/PriorityQueue.cpp:
1939         (TEST):
1940
1941 2017-09-05  Darin Adler  <darin@apple.com>
1942
1943         Fix a few minor problems found while working toward removing unneeded calls to updateStyle
1944         https://bugs.webkit.org/show_bug.cgi?id=176279
1945
1946         Reviewed by Antti Koivisto.
1947
1948         * WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:
1949         (WTR::AccessibilityUIElement::setSelectedChild const): Handle null here. The old code instead
1950         would trigger an Objective-C exception unnecessarily.
1951
1952 2017-09-05  Wenson Hsieh  <wenson_hsieh@apple.com>
1953
1954         [iOS WK2] Add plumbing for WKContentView to ask the web process for additional drag items
1955         https://bugs.webkit.org/show_bug.cgi?id=176348
1956         Work towards <rdar://problem/31144674>
1957
1958         Reviewed by Tim Horton.
1959
1960         Introduces new test infrastructure to simulate tapping to add additional items to the current drag session. We
1961         add -[DataInteractionSimulator runFrom:to:additionalItemRequestLocations:], for which the last argument is a
1962         dictionary mapping progress (a double between 0 and 1) to NSValues representing the location from which the drag
1963         and drop simulation will request an additional drag item. During the simulated drag and drop, when the progress
1964         value exceeds a value in the map of remaining additional item request locations, we halt drag simulation
1965         progress for that runloop and instead request additional items from the location specified.
1966
1967         The only (useful) passing test we can create using the new machinery is one that verifies that preventDefault()
1968         on dragstart works as expected, preventing additional items from being added. While this trivially passes now,
1969         since the web-process-side of the additional items flow is not yet implemented, it should continue to pass after
1970         the web process portion is implemented.
1971
1972         * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
1973         * TestWebKitAPI/Tests/WebKitCocoa/selected-text-image-link-and-editable.html: Added.
1974
1975         Add a new test page that contains some non-editable text, an image, a link, and a rich text editable area.
1976
1977         * TestWebKitAPI/Tests/ios/DataInteractionTests.mm:
1978         (TestWebKitAPI::TEST):
1979         * TestWebKitAPI/ios/DataInteractionSimulator.h:
1980         * TestWebKitAPI/ios/DataInteractionSimulator.mm:
1981         (-[MockDragDropSession addItems:]):
1982
1983         Convenience method to add additional mock drag items to a drag or drop session.
1984
1985         (-[DataInteractionSimulator _resetSimulatedState]):
1986         (-[DataInteractionSimulator runFrom:to:]):
1987
1988         Converted into a convenience wrapper around the latter version, passing in nil for the additional item request
1989         locations dictionary.
1990
1991         (-[DataInteractionSimulator runFrom:to:additionalItemRequestLocations:]):
1992         (-[DataInteractionSimulator _enqueuePendingAdditionalItemRequestLocations]):
1993         (-[DataInteractionSimulator _sendQueuedAdditionalItemRequest]):
1994
1995         New helper methods to detect when and where additional items should be "added", and subsequently simulate adding
1996         drag items at these given locations.
1997
1998         (-[DataInteractionSimulator _advanceProgress]):
1999
2000 2017-09-05  Alex Christensen  <achristensen@webkit.org>
2001
2002         Add WKUIDelegatePrivate equivalent of WKPageUIClient's mouseDidMoveOverElement
2003         https://bugs.webkit.org/show_bug.cgi?id=176428
2004         <rdar://problem/29270035>
2005
2006         Reviewed by Tim Horton.
2007
2008         * TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm:
2009         (-[MouseMoveOverElementDelegate _webView:mouseDidMoveOverElement:withFlags:userInfo:]):
2010         (TEST):
2011         * TestWebKitAPI/cocoa/TestWKWebView.h:
2012         * TestWebKitAPI/cocoa/TestWKWebView.mm:
2013         (-[TestWKWebView mouseMoveToPoint:withFlags:]):
2014
2015 2017-09-05  Matthew Stewart  <matthew_r_stewart@apple.com>
2016
2017         Benchmark Runner WebDriver maximize window on browser launch
2018         https://bugs.webkit.org/show_bug.cgi?id=175702
2019
2020         Reviewed by Stephanie Lewis.
2021
2022         * Scripts/webkitpy/benchmark_runner/browser_driver/linux_browser_driver.py:
2023         (LinuxBrowserDriver.launch_webdriver): added driver.maximize_window()
2024         * Scripts/webkitpy/benchmark_runner/browser_driver/osx_browser_driver.py:
2025         (OSXBrowserDriver._launch_webdriver): added driver.maximize_window()
2026         * Scripts/webkitpy/benchmark_runner/webdriver_benchmark_runner.py:
2027         (WebDriverBenchmarkRunner._run_one_test): added driver.quit()
2028
2029 2017-09-05  Matthew Stewart  <matthew_r_stewart@apple.com>
2030
2031         Fix Benchmark Runner selenium autoinstall imports
2032         https://bugs.webkit.org/show_bug.cgi?id=175727
2033
2034         Reviewed by Stephanie Lewis.
2035
2036         This fixes run-benchmark taking a long time to start with WebDriver.
2037
2038         Inside webdriver's __init__.py file, it imports many other modules.
2039         So if we try to directly import autoinstalled.selenium.webdriver, it
2040         will re-run the autoinstall __init__.py for each new imported module
2041         that contains ".selenium"
2042         TODO: fix this inside the autoinstall code, to only do one install per
2043         import.
2044
2045         * Scripts/webkitpy/benchmark_runner/browser_driver/linux_chrome_driver.py:
2046         (LinuxChromeDriver.launch_driver):
2047         * Scripts/webkitpy/benchmark_runner/browser_driver/linux_firefox_driver.py:
2048         (LinuxFirefoxDriver.launch_driver):
2049         * Scripts/webkitpy/benchmark_runner/browser_driver/osx_chrome_driver.py:
2050         (OSXChromeDriver.launch_driver):
2051         (OSXChromeCanaryDriver.launch_driver):
2052         (create_chrome_options):
2053         * Scripts/webkitpy/benchmark_runner/browser_driver/osx_firefox_driver.py:
2054         (OSXFirefoxDriver.launch_driver):
2055         (OSXFirefoxNightlyDriver.launch_driver):
2056         * Scripts/webkitpy/benchmark_runner/browser_driver/osx_safari_driver.py:
2057         (OSXSafariDriver.launch_driver):
2058         * Scripts/webkitpy/benchmark_runner/webdriver_benchmark_runner.py:
2059         (WebDriverBenchmarkRunner._run_one_test):
2060
2061 2017-09-05  Aakash Jain  <aakash_jain@apple.com>
2062
2063         EWS should report when a step succeeds
2064         https://bugs.webkit.org/show_bug.cgi?id=176332
2065         <rdar://problem/25224607>
2066
2067         Reviewed by Sam Weinig.
2068
2069         Most of the EWSes report only if a step fails, but do not report when a step succeed. For e.g.: If a build succeeds,
2070         EWS does not report it. Information about a step passing is sometimes very valuable, especially when waiting for a 
2071         patch to complete processing. Sometimes, patch authors know that their changes are not covered by any tests. Having EWS 
2072         display that build was successful and it is currently running tests is valuable.
2073
2074         * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
2075         (AbstractEarlyWarningSystem.command_passed): Update the EWS status server when a command pass. This is
2076         similar to what is done in Commit Queue and Style Queue.
2077         * Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py:
2078         (EarlyWarningSystemTest._default_expected_logs): Updated unit-tests appropriately.
2079
2080 2017-09-05  Myles C. Maxfield  <mmaxfield@apple.com>
2081
2082         WSL should support the bool type
2083         https://bugs.webkit.org/show_bug.cgi?id=176285
2084
2085         Reviewed by Filip Pizlo.
2086
2087         Very similar to the int and uint types. This patch also adds support for a logical negation expression "!x".
2088         This patch also reverts the ability of the program author to create their own "operator!()", and instead
2089         adds the ability of the program author to create their own "operator bool()". The code is generic, so
2090         programmers can make two arbitrary types Foo and Bar, and implement a "operator Bar(Foo)." The logical
2091         negation expression is a built-in, and requires its argument be a bool.
2092
2093         * WebGPUShadingLanguageRI/All.js:
2094         * WebGPUShadingLanguageRI/BoolLiteral.js: Copied from Tools/WebGPUShadingLanguageRI/NativeFunc.js.
2095         (BoolLiteral):
2096         (BoolLiteral.prototype.get value):
2097         (BoolLiteral.prototype.get isConstexpr):
2098         (BoolLiteral.prototype.toString):
2099         * WebGPUShadingLanguageRI/Checker.js:
2100         * WebGPUShadingLanguageRI/Evaluator.js:
2101         (Evaluator.prototype.visitBoolLiteral):
2102         (Evaluator.prototype.visitLogicalNot):
2103         * WebGPUShadingLanguageRI/Func.js:
2104         (Func):
2105         (Func.prototype.get isCast):
2106         (Func.prototype.toDeclString):
2107         * WebGPUShadingLanguageRI/FuncDef.js:
2108         (FuncDef):
2109         (FuncDef.prototype.get body):
2110         (FuncDef.prototype.rewrite):
2111         * WebGPUShadingLanguageRI/Intrinsics.js:
2112         (Intrinsics):
2113         * WebGPUShadingLanguageRI/Lexer.js:
2114         (Lexer.prototype.next):
2115         (Lexer):
2116         * WebGPUShadingLanguageRI/LogicalNot.js: Copied from Tools/WebGPUShadingLanguageRI/NativeFunc.js.
2117         (LogicalNot):
2118         (LogicalNot.prototype.get operand):
2119         (LogicalNot.prototype.toString):
2120         * WebGPUShadingLanguageRI/NativeFunc.js:
2121         (NativeFunc):
2122         * WebGPUShadingLanguageRI/Parse.js:
2123         (parseTerm):
2124         (parsePossiblePrefix):
2125         (parsePossibleRelationalEquality):
2126         (parseFuncName):
2127         (parseOperatorFuncDefValues):
2128         (parseNonOperatorFuncDefValues):
2129         (parseGenericFuncDefValues):
2130         (parseFuncDecl):
2131         (parseProtocolFuncDecl):
2132         (parseFuncDef):
2133         (parseNative):
2134         (parse):
2135         * WebGPUShadingLanguageRI/Rewriter.js:
2136         (Rewriter.prototype.visitBoolLiteral):
2137         (Rewriter.prototype.visitLogicalNot):
2138         (Rewriter):
2139         * WebGPUShadingLanguageRI/StandardLibrary.js:
2140         * WebGPUShadingLanguageRI/Test.html:
2141         * WebGPUShadingLanguageRI/Test.js:
2142         (makeUInt):
2143         (makeBool):
2144         (checkUInt):
2145         (checkBool):
2146         (TEST_literalBool):
2147         (TEST_identityBool):
2148         (TEST_intSimpleMath):
2149         (TEST_uintSimpleMath):
2150         (TEST_equality):
2151         (TEST_logicalNegation):
2152         (TEST_notEquality):
2153         (TEST_equalityTypeFailure):
2154         (TEST_add1): Deleted.
2155         * WebGPUShadingLanguageRI/TypeDefResolver.js:
2156         (TypeDefResolver.prototype.visitFuncDef):
2157         * WebGPUShadingLanguageRI/Visitor.js:
2158         (Visitor.prototype.visitBoolLiteral):
2159         (Visitor.prototype.visitLogicalNot):
2160
2161 2017-09-05  Matt Lewis  <jlewis3@apple.com>
2162
2163         Unreviewed, rolling out r221603.
2164
2165         This caused accessibility/mac/select-element-selection-with-
2166         optgroups.html to consistently timeout on macOS
2167
2168         Reverted changeset:
2169
2170         "Fix a few minor problems found while working toward removing
2171         unneeded calls to updateStyle"
2172         https://bugs.webkit.org/show_bug.cgi?id=176279
2173         http://trac.webkit.org/changeset/221603
2174
2175 2017-09-05  Youenn Fablet  <youenn@apple.com>
2176
2177         WebKitTestRunner should set the cache storage directory path
2178         https://bugs.webkit.org/show_bug.cgi?id=176373
2179
2180         Reviewed by Chris Dumez.
2181
2182         * WebKitTestRunner/TestController.cpp:
2183         (WTR::TestController::generateContextConfiguration const):
2184
2185 2017-09-05  Joseph Pecoraro  <pecoraro@apple.com>
2186
2187         test262: Completion values for control flow do not match the spec
2188         https://bugs.webkit.org/show_bug.cgi?id=171265
2189
2190         Reviewed by Saam Barati.
2191
2192         * Scripts/run-jsc-stress-tests:
2193         Include a :failDueToOutdatedOrBadTest to mark failures with justification.
2194
2195 2017-09-05  Alex Christensen  <achristensen@webkit.org>
2196
2197         Add WKUIDelegatePrivate equivalent of WKPageUIClient's unavailablePluginButtonClicked
2198         https://bugs.webkit.org/show_bug.cgi?id=176274
2199         <rdar://problem/29270035>
2200
2201         Reviewed by Darin Adler.
2202
2203         * TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm:
2204         (-[PluginDelegate _webView:unavailablePluginButtonClickedWithReason:pluginInfo:]):
2205         (TEST):
2206
2207 2017-09-05  Carlos Garcia Campos  <cgarcia@igalia.com>
2208
2209         [GTK] Wrong use of PLUGIN_ARCHITECTURE(X11) in several places
2210         https://bugs.webkit.org/show_bug.cgi?id=176329
2211
2212         Reviewed by Michael Catanzaro.
2213
2214         * CMakeLists.txt: Build TestNetscapePlugIn when NETSCAPE_PLUGIN_API is enabled and only link to X11 libraries
2215         when building the X11 target.
2216         * DumpRenderTree/TestNetscapePlugIn/CMakeLists.txt:
2217         * DumpRenderTree/TestNetscapePlugIn/Tests/unix/CallInvalidateRectWithNullNPPArgument.cpp: Renamed from Tools/DumpRenderTree/TestNetscapePlugIn/Tests/x11/CallInvalidateRectWithNullNPPArgument.cpp.
2218         * DumpRenderTree/TestNetscapePlugIn/main.cpp:
2219         (NP_Initialize):
2220         (NPP_HandleEvent):
2221         (NPP_GetValue):
2222
2223 2017-09-04  Eric Carlson  <eric.carlson@apple.com>
2224
2225         Switch HTMLMediaElement to release logging
2226         https://bugs.webkit.org/show_bug.cgi?id=176065
2227
2228         Reviewed by Jer Noble.
2229
2230         * TestWebKitAPI/Tests/WebCore/Logging.cpp:
2231         (TestWebKitAPI::LogObserver::level const):
2232
2233 2017-09-03  Darin Adler  <darin@apple.com>
2234
2235         Fix a few minor problems found while working toward removing unneeded calls to updateStyle
2236         https://bugs.webkit.org/show_bug.cgi?id=176279
2237
2238         Reviewed by Antti Koivisto.
2239
2240         * WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:
2241         (WTR::AccessibilityUIElement::setSelectedChild const): Handle null here. The old code instead
2242         would trigger an Objective-C exception unnecessarily.
2243
2244 2017-09-04  Wenson Hsieh  <wenson_hsieh@apple.com>
2245
2246         [iOS DnD] Refactor drag and drop logic in WKContentView in preparation for supporting multiple drag items in a drag session
2247         https://bugs.webkit.org/show_bug.cgi?id=176264
2248         <rdar://problem/31144674>
2249
2250         Reviewed by Darin Adler.
2251
2252         Adds two new iOS drag and drop tests to check that the clientX and clientY attributes of mouse events propagated
2253         to the page during drop are correct. Each test drags from an image element and drops into three custom-drop-
2254         handling elements; `dragenter`, `dragover`, and `drop` event listeners on the body then use the clientX and
2255         clientY event attributes to hit-test for drop target elements. The first test is suffixed with "-Basic"; the
2256         second test, suffixed with "-WithScrollOffset", makes the document scrollable to check that clientY is correct
2257         when scrolled.
2258
2259         * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
2260         * TestWebKitAPI/Tests/WebKitCocoa/drop-targets.html: Added.
2261         * TestWebKitAPI/Tests/ios/DataInteractionTests.mm:
2262         (TestWebKitAPI::testDragAndDropOntoTargetElements):
2263         (TestWebKitAPI::TEST):
2264         * TestWebKitAPI/cocoa/TestWKWebView.mm:
2265         (-[TestWKWebView stringByEvaluatingJavaScript:]):
2266
2267         Log a warning message when an API test fails due to JavaScript evaluation in TestWKWebView.
2268
2269 2017-09-03  Filip Pizlo  <fpizlo@apple.com>
2270
2271         WSL IntLiteral should have variable type so that it can unify with things like uint
2272         https://bugs.webkit.org/show_bug.cgi?id=176209
2273
2274         Reviewed by Mylex Maxfield.
2275         
2276         This introduces IntLiteralType, which can unify with any number type that can represent the
2277         int literal.
2278         
2279         This means that all of the following are legal:
2280         
2281             double x = 0; // 0 unifies with double
2282             double y = x + 5; // should resolve to double+double
2283             double z = array[0]; // 0 unifies with uint
2284         
2285         We can do similar things with float literals, so that you don't have to suffix "f" all the
2286         time.
2287         
2288         I think that this is very different from what C does. C just supports implicit type
2289         conversions. That's why "double x = 0" works in C. We don't do type conversions. Instead, we
2290         let each literal unify itself with one type.
2291         
2292         Also updated Test.html so that it runs again and is better at printing things.
2293
2294         * WebGPUShadingLanguageRI/All.js:
2295         * WebGPUShadingLanguageRI/Checker.js:
2296         * WebGPUShadingLanguageRI/IntLiteral.js:
2297         (IntLiteral):
2298         (IntLiteral.prototype.toString):
2299         * WebGPUShadingLanguageRI/IntLiteralType.js: Added.
2300         (IntLiteralType):
2301         (IntLiteralType.prototype.get origin):
2302         (IntLiteralType.prototype.get value):
2303         (IntLiteralType.prototype.get isPrimitive):
2304         (IntLiteralType.prototype.get isUnifiable):
2305         (IntLiteralType.prototype.typeVariableUnify):
2306         (IntLiteralType.prototype.unifyImpl):
2307         (IntLiteralType.prototype.verifyAsArgument):
2308         (IntLiteralType.prototype.verifyAsParameter):
2309         (IntLiteralType.prototype.commitUnification):
2310         (IntLiteralType.prototype.toString):
2311         * WebGPUShadingLanguageRI/Intrinsics.js:
2312         (Intrinsics.):
2313         (Intrinsics):
2314         * WebGPUShadingLanguageRI/LiteralTypeChecker.js:
2315         (LiteralTypeChecker.prototype.visitIntLiteralType):
2316         (LiteralTypeChecker):
2317         * WebGPUShadingLanguageRI/NativeType.js:
2318         (NativeType):
2319         (NativeType.prototype.get isNumber):
2320         (NativeType.prototype.set isNumber):
2321         (NativeType.prototype.get isInt):
2322         (NativeType.prototype.set isInt):
2323         (NativeType.prototype.get isFloat):
2324         (NativeType.prototype.set isFloat):
2325         * WebGPUShadingLanguageRI/Prepare.js:
2326         (prepare):
2327         * WebGPUShadingLanguageRI/Rewriter.js:
2328         (Rewriter.prototype.visitIntLiteral):
2329         (Rewriter.prototype.visitIntLiteralType):
2330         * WebGPUShadingLanguageRI/StandardLibrary.js:
2331         * WebGPUShadingLanguageRI/Test.html:
2332         * WebGPUShadingLanguageRI/Test.js:
2333         (this.window.this.print):
2334         (doPrep):
2335         (doLex):
2336         (checkNumber):
2337         (checkInt):
2338         (TEST_nameResolutionFailure):
2339         (TEST_threadArrayLoadIntLiteral):
2340         (TEST_deviceArrayStoreIntLiteral):
2341         (TEST_returnIntLiteralDouble):
2342         * WebGPUShadingLanguageRI/Type.js:
2343         (Type.prototype.get isNumber):
2344         (Type.prototype.get isInt):
2345         (Type.prototype.get isFloat):
2346         * WebGPUShadingLanguageRI/Visitor.js:
2347         (Visitor.prototype.visitIntLiteral):
2348         (Visitor.prototype.visitIntLiteralType):
2349
2350 2017-09-03  Filip Pizlo  <fpizlo@apple.com>
2351
2352         Add more tests for null behavior in WSL
2353         https://bugs.webkit.org/show_bug.cgi?id=176318
2354
2355         Reviewed by Myles Maxfield.
2356         
2357         This adds more tests for the unification behavior of null. In the process, I found a couple
2358         small bugs and fixed them.
2359
2360         * WebGPUShadingLanguageRI/Checker.js:
2361         * WebGPUShadingLanguageRI/FuncInstantiator.js:
2362         (FuncInstantiator.prototype.getUnique.InstantiationSubstitution.prototype.visitCallExpression):
2363         (FuncInstantiator.prototype.getUnique.InstantiationSubstitution):
2364         * WebGPUShadingLanguageRI/Substitution.js:
2365         (Substitution.prototype.visitTypeRef):
2366         * WebGPUShadingLanguageRI/Test.js:
2367         (TEST_passNullAndNotNullFullPoly):
2368         (TEST_passNullAndNotNullFullPolyReverse):
2369         (TEST_nullTypeVariableUnify.recurse):
2370         (TEST_nullTypeVariableUnify.everyOrder):
2371         (TEST_nullTypeVariableUnify.everyPair):
2372         (TEST_nullTypeVariableUnify):
2373         * WebGPUShadingLanguageRI/TypeRef.js:
2374         (TypeRef.wrap):
2375         * WebGPUShadingLanguageRI/TypeVariable.js:
2376         (TypeVariable.prototype.verifyAsArgument):
2377
2378 2017-09-04  Commit Queue  <commit-queue@webkit.org>
2379
2380         Unreviewed, rolling out r221494 and r221500.
2381         https://bugs.webkit.org/show_bug.cgi?id=176258
2382
2383         This caused the windows build to fail. (Requested by mlewis13
2384         on #webkit).
2385
2386         Reverted changesets:
2387
2388         "Switch HTMLMediaElement to release logging"
2389         https://bugs.webkit.org/show_bug.cgi?id=176065
2390         http://trac.webkit.org/changeset/221494
2391
2392         "Switch HTMLMediaElement to release logging"
2393         https://bugs.webkit.org/show_bug.cgi?id=176065
2394         http://trac.webkit.org/changeset/221500
2395
2396 2017-09-03  Darin Adler  <darin@apple.com>
2397
2398         REGRESSION (r220052): [Sierra] API test VideoControlsManager.VideoControlsManagerFullSizeVideoInWideMainFrame is a flaky failure
2399         https://bugs.webkit.org/show_bug.cgi?id=175329
2400
2401         Reviewed by Wenson Hsieh.
2402
2403         These tests rely on using setTimeout to wait a run loop iteration for the
2404         video controls to appear. With changes to how loading occurs, it can now
2405         take two run loop iterations. The concept here is inherently a bit flaky
2406         and racy -- end users will not be able to tell how many run loop cycles it
2407         takes for controls to come up, and websites can't tell either -- but for now
2408         changing the tests to wait one more run loop should get rid of the flakiness.
2409
2410         * TestWebKitAPI/Tests/WebKitCocoa/VideoControlsManager.mm: Re-enable test.
2411
2412         * TestWebKitAPI/Tests/WebKitCocoa/full-size-autoplaying-video-with-audio.html: Add a
2413         second setTimeout and a comment.
2414         * TestWebKitAPI/Tests/WebKitCocoa/skinny-autoplaying-video-with-audio.html: Ditto.
2415         * TestWebKitAPI/Tests/WebKitCocoa/wide-autoplaying-video-with-audio.html: Ditto.
2416
2417 2017-09-03  Sam Weinig  <sam@webkit.org>
2418
2419         Make webkit-patch post --no-review enable EWS just like webkit-patch post-commits --no-review
2420         https://bugs.webkit.org/show_bug.cgi?id=176321
2421
2422         Reviewed by Darin Adler.
2423
2424         * Scripts/webkitpy/tool/commands/upload.py:
2425         Add the SubmitToEWS step to Post command
2426
2427 2017-09-03  Chris Dumez  <cdumez@apple.com>
2428
2429         Have getFileMetadata() return a std::optional<FileMetadata>
2430         https://bugs.webkit.org/show_bug.cgi?id=176293
2431
2432         Reviewed by Darin Adler.
2433
2434         * TestWebKitAPI/Tests/WebCore/FileSystem.cpp:
2435         (TestWebKitAPI::TEST_F):
2436
2437 2017-09-02  Filip Pizlo  <fpizlo@apple.com>
2438
2439         WSL should support structs
2440         https://bugs.webkit.org/show_bug.cgi?id=176290
2441
2442         Reviewed by Mylex Maxfield.
2443         
2444         This adds parsing of struct types and makes them work.
2445         
2446         This required adding a struct layout phase, which in turn required being a bit more careful
2447         about how we instantiate functions and types. We cannot have any instantiation TypeRefs left
2448         once we're doing struct layout.
2449
2450         * WebGPUShadingLanguageRI/All.js:
2451         * WebGPUShadingLanguageRI/CallFunction.js:
2452         (callFunction):
2453         * WebGPUShadingLanguageRI/Checker.js:
2454         (Checker.prototype.visitProtocolDecl.set throw):
2455         * WebGPUShadingLanguageRI/DotExpression.js: Added.
2456         (DotExpression):
2457         (DotExpression.prototype.get struct):
2458         (DotExpression.prototype.get fieldName):
2459         (DotExpression.prototype.get isLValue):
2460         (DotExpression.prototype.toString):
2461         * WebGPUShadingLanguageRI/EBufferBuilder.js:
2462         (EBufferBuilder.prototype._createEPtr):
2463         * WebGPUShadingLanguageRI/EPtr.js:
2464         (EPtr.prototype.copyFrom): Deleted.
2465         (EPtr.prototype.toString): Deleted.
2466         * WebGPUShadingLanguageRI/Evaluator.js:
2467         (Evaluator.prototype.visitAssignment):
2468         (Evaluator.prototype.visitDotExpression):
2469         * WebGPUShadingLanguageRI/Field.js:
2470         (Field):
2471         * WebGPUShadingLanguageRI/FuncDef.js:
2472         (FuncDef.prototype.rewrite):
2473         * WebGPUShadingLanguageRI/FuncInstantiator.js:
2474         (FuncInstantiator.prototype.getUnique):
2475         (FuncInstantiator):
2476         * WebGPUShadingLanguageRI/Inline.js:
2477         (inline):
2478         (_inlineFunction):
2479         (resolveInlinedFunction):
2480         * WebGPUShadingLanguageRI/Inliner.js:
2481         (Inliner.prototype.visitDotExpression):
2482         * WebGPUShadingLanguageRI/InstantiateImmediates.js:
2483         (InstantiateImmediates.prototype.visitTypeRef):
2484         (InstantiateImmediates.prototype.visitVariableDecl):
2485         (InstantiateImmediates):
2486         * WebGPUShadingLanguageRI/NameResolver.js:
2487         (NameResolver.prototype._resolveTypeArguments):
2488         (NameResolver.prototype.visitTypeRef):
2489         * WebGPUShadingLanguageRI/Node.js:
2490         (Node.prototype.visit):
2491         * WebGPUShadingLanguageRI/OverloadResolutionFailure.js: Added.
2492         (OverloadResolutionFailure):
2493         (OverloadResolutionFailure.prototype.get func):
2494         (OverloadResolutionFailure.prototype.get reason):
2495         (OverloadResolutionFailure.prototype.toString):
2496         * WebGPUShadingLanguageRI/Parse.js:
2497         (parsePossibleSuffix):
2498         (parseField):
2499         (parseStructType):
2500         (parse):
2501         * WebGPUShadingLanguageRI/ResolveOverloadImpl.js:
2502         (resolveOverloadImpl):
2503         * WebGPUShadingLanguageRI/Rewriter.js:
2504         (Rewriter.prototype.visitDotExpression):
2505         (Rewriter.prototype.visitVariableRef):
2506         * WebGPUShadingLanguageRI/StructLayoutBuilder.js: Added.
2507         (StructLayoutBuilder):
2508         (StructLayoutBuilder.prototype.visitStructType):
2509         (StructLayoutBuilder.prototype.get offset):
2510         (StructLayoutBuilder.prototype.visitField):
2511         (StructLayoutBuilder.prototype.visitVariableRef):
2512         (StructLayoutBuilder.prototype.visitVariableDecl):
2513         * WebGPUShadingLanguageRI/StructType.js:
2514         (StructType.prototype.add):
2515         (StructType.prototype.instantiate):
2516         (StructType.prototype.populateDefaultValue):
2517         * WebGPUShadingLanguageRI/Substitution.js:
2518         (Substitution.prototype.visitTypeRef):
2519         (Substitution.prototype.visitVariableRef):
2520         (Substitution):
2521         * WebGPUShadingLanguageRI/Test.js:
2522         (TEST_genericStructInstance):
2523         * WebGPUShadingLanguageRI/Type.js:
2524         (Type.prototype.inherits):
2525         * WebGPUShadingLanguageRI/TypeRef.js:
2526         (TypeRef.instantiate):
2527         * WebGPUShadingLanguageRI/VariableRef.js:
2528         (VariableRef.wrap):
2529         * WebGPUShadingLanguageRI/Visitor.js:
2530         (Visitor.prototype.visitTypeRef):
2531         (Visitor.prototype.visitDotExpression):
2532         (Visitor.prototype.visitVariableRef):
2533
2534 2017-09-02  Filip Pizlo  <fpizlo@apple.com>
2535
2536         WSL NullType should be a special type variable so it can unify with any pointer type
2537         https://bugs.webkit.org/show_bug.cgi?id=176235
2538
2539         Reviewed by Myles Maxfield.
2540         
2541         Null is just a type variable that plays by weird rules:
2542         
2543         - Other type variables don't recognize it, so if it's unified with T, it fails.
2544         - It behaves like a type variable for pointer and array reference types.
2545         - It arises only in argument (RHS) position.
2546         - Once Checker finds it to be equals to something, we need to remember what that was.
2547         
2548         I refactored some of the type system code to allow for the possibility of type variables being
2549         unified during equals() tests. It turns out that we were playing fast and loose here; I needed
2550         to beef up UnificationContext.prototype.verify. I added tests for this.
2551         
2552         I added an equalsWithCommit() that triggers commitUnification(), which allows NullType to
2553         remember what type it got unified with.
2554         
2555         NullLiteral then just instantiates its own NullType, which is what Checker uses as the type of
2556         the NullLiteral. Everything else just works.
2557         
2558         This adds a bunch of tests to make sure we generate type errors in various weird cases while
2559         also accepting a number of safe cases.
2560         
2561         I also added a way to run the tests in-browser.
2562
2563         * WebGPUShadingLanguageRI/All.js:
2564         * WebGPUShadingLanguageRI/ArrayRefType.js:
2565         (ArrayRefType.prototype.get isArrayRef):
2566         * WebGPUShadingLanguageRI/Checker.js:
2567         (Checker.prototype.visitProtocolDecl.set throw):
2568         * WebGPUShadingLanguageRI/ConstexprTypeParameter.js:
2569         (ConstexprTypeParameter.prototype.typeVariableUnify):
2570         * WebGPUShadingLanguageRI/Evaluator.js:
2571         (Evaluator.prototype.visitDereferenceExpression):
2572         (Evaluator.prototype.visitNullLiteral):
2573         * WebGPUShadingLanguageRI/Func.js:
2574         (Func.prototype.toString):
2575         (Func):
2576         * WebGPUShadingLanguageRI/Intrinsics.js:
2577         (Intrinsics):
2578         * WebGPUShadingLanguageRI/NativeFunc.js:
2579         (NativeFunc.prototype.toDeclString):
2580         (NativeFunc):
2581         (NativeFunc.prototype.toString): Deleted.
2582         * WebGPUShadingLanguageRI/NativeFuncInstance.js:
2583         (NativeFuncInstance.prototype.toDeclString):
2584         (NativeFuncInstance):
2585         (NativeFuncInstance.prototype.toString): Deleted.
2586         * WebGPUShadingLanguageRI/Node.js:
2587         (Node.unify):
2588         (Node.prototype._typeVariableUnifyImpl):
2589         (Node.prototype.equals):
2590         * WebGPUShadingLanguageRI/NullLiteral.js: Added.
2591         (NullLiteral):
2592         (NullLiteral.prototype.toString):
2593         * WebGPUShadingLanguageRI/NullType.js:
2594         (NullType):
2595         (NullType.prototype.get isPrimitive):
2596         (NullType.prototype.get isUnifiable):
2597         (NullType.prototype.typeVariableUnify):
2598         (NullType.prototype.unifyImpl):
2599         (NullType.prototype.verifyAsArgument):
2600         (NullType.prototype.verifyAsParameter):
2601         (NullType.prototype.toString):
2602         * WebGPUShadingLanguageRI/Parse.js:
2603         (parseTerm):
2604         (parseType.getAddressSpace):
2605         (parseType):
2606         * WebGPUShadingLanguageRI/Rewriter.js:
2607         (Rewriter.prototype.visitNullLiteral):
2608         * WebGPUShadingLanguageRI/Test.html: Added.
2609         * WebGPUShadingLanguageRI/Test.js:
2610         (this.window.this.print):
2611         (TEST_doubleGenericCallsSingleGeneric):
2612         (TEST_dereferenceDefaultNull):
2613         (TEST_dereferenceDefaultNullArrayRef):
2614         (doTest):
2615         (let.s.in.this.s.startsWith.string_appeared_here.s.match): Deleted.
2616         * WebGPUShadingLanguageRI/Type.js:
2617         (Type.prototype.get isArrayRef):
2618         * WebGPUShadingLanguageRI/TypeVariable.js:
2619         (TypeVariable.prototype.typeVariableUnify):
2620         * WebGPUShadingLanguageRI/UnificationContext.js:
2621         (UnificationContext.prototype.verify):
2622         (UnificationContext):
2623         (UnificationContext.prototype.isUnunified): Deleted.
2624         * WebGPUShadingLanguageRI/VariableRef.js:
2625         (VariableRef.prototype.get unifyNode):
2626         * WebGPUShadingLanguageRI/Visitor.js:
2627         (Visitor.prototype.visitNullLiteral):
2628
2629 2017-09-03  Sam Weinig  <sam@webkit.org>
2630
2631         Remove CanvasProxy
2632         https://bugs.webkit.org/show_bug.cgi?id=176288
2633
2634         Reviewed by Yusuke Suzuki.
2635
2636         CanvasProxy does not appear to be in any current HTML spec
2637         and was disabled and unimplemented in our tree. Time to 
2638         get rid of it.
2639
2640         * Scripts/webkitperl/FeatureList.pm:
2641         * TestWebKitAPI/Configurations/FeatureDefines.xcconfig:
2642
2643 2017-09-01  Filip Pizlo  <fpizlo@apple.com>
2644
2645         WSL should check unreachable code and no returns
2646         https://bugs.webkit.org/show_bug.cgi?id=176262
2647
2648         Reviewed by Myles Maxfield.
2649         
2650         This adds phases to check whether non-void functions return and whether there is any code after
2651         a return in any block. Added tests for simple versions of both of those things. We cannot add
2652         more complex versions until we support control flow statements.
2653
2654         * WebGPUShadingLanguageRI/All.js:
2655         * WebGPUShadingLanguageRI/CheckReturns.js: Added.
2656         (checkReturns):
2657         * WebGPUShadingLanguageRI/CheckUnreachableCode.js: Added.
2658         (checkUnreachableCode):
2659         * WebGPUShadingLanguageRI/Parse.js:
2660         (parseReturn):
2661         * WebGPUShadingLanguageRI/Prepare.js:
2662         (prepare):
2663         * WebGPUShadingLanguageRI/ReturnChecker.js: Added.
2664         (ReturnChecker.prototype.visitFuncDef):
2665         (ReturnChecker.prototype.visitBlock):
2666         (ReturnChecker.prototype.visitReturn):
2667         (ReturnChecker):
2668         * WebGPUShadingLanguageRI/Test.js:
2669         (TEST_simpleNoReturn):
2670         * WebGPUShadingLanguageRI/UnreachableCodeChecker.js: Added.
2671         (UnreachableCodeChecker.prototype.visitBlock):
2672         (UnreachableCodeChecker):
2673
2674 2017-09-01  Filip Pizlo  <fpizlo@apple.com>
2675
2676         WSL should use & for getting a ^ and @ for getting a []
2677         https://bugs.webkit.org/show_bug.cgi?id=176245
2678
2679         Reviewed by Myles Maxfield.
2680         
2681         Using \ as an operator was a bad decision since that's an escape character in so many contexts.
2682         
2683         Henceforth, & is for making pointers, for example:
2684         
2685         thread int^ foo() { int x; return &x; }
2686         
2687         And @ is for making array references, for example:
2688         
2689         thread int[] foo() { int[42] x; return @x; }
2690         
2691         Having separate operators makes it easy to have pointers to fixed-size arrays:
2692         
2693         thread int[42]^ foo() { int[42] x; return &x; }
2694
2695         * WebGPUShadingLanguageRI/Intrinsics.js:
2696         (Intrinsics):
2697         * WebGPUShadingLanguageRI/Lexer.js:
2698         (Lexer.prototype.next):
2699         (Lexer):
2700         * WebGPUShadingLanguageRI/MakePtrExpression.js:
2701         (MakePtrExpression.prototype.toString):
2702         (MakePtrExpression):
2703         * WebGPUShadingLanguageRI/Parse.js:
2704         (parsePossibleSuffix):
2705         (parsePossiblePrefix):
2706         (parseFuncName):
2707         * WebGPUShadingLanguageRI/StandardLibrary.js:
2708         * WebGPUShadingLanguageRI/Test.js:
2709         (TEST_simpleMakePtr):
2710
2711 2017-09-01  Myles C. Maxfield  <mmaxfield@apple.com>
2712
2713         WSL's lexer will never emit keyword tokens
2714         https://bugs.webkit.org/show_bug.cgi?id=176248
2715
2716         Reviewed by Filip Pizlo.
2717
2718         Because all tokens are also identified as idents, we need to handle them together.
2719
2720         * WebGPUShadingLanguageRI/Lexer.js:
2721         (Lexer.prototype.next):
2722         (Lexer):
2723         * WebGPUShadingLanguageRI/Test.js:
2724         (doLex):
2725         (checkLexerToken):
2726         (TEST_lexerKeyword):
2727
2728 2017-09-01  Alex Christensen  <achristensen@webkit.org>
2729
2730         Rename WebKit2 API tests after directory rename
2731         https://bugs.webkit.org/show_bug.cgi?id=176250
2732
2733         Reviewed by Tim Horton.
2734
2735         * TestWebKitAPI/Tests/Lots of files...
2736         Renamed WebKit2 to WebKit and WebKit1 to WebKitLegacy.
2737
2738 2017-09-01  Alex Christensen  <achristensen@webkit.org>
2739
2740         Add WKUIDelegatePrivate equivalent of WKPageUIClient's toolbarsAreVisible
2741         https://bugs.webkit.org/show_bug.cgi?id=176246
2742         <rdar://problem/29270035>
2743
2744         Reviewed by Tim Horton.
2745
2746         * TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm:
2747         (-[ToolbarDelegate _webView:getToolbarsAreVisibleWithCompletionHandler:]):
2748         (-[ToolbarDelegate webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:]):
2749         (TEST):
2750
2751 2017-09-01  Eric Carlson  <eric.carlson@apple.com>
2752
2753         Switch HTMLMediaElement to release logging
2754         https://bugs.webkit.org/show_bug.cgi?id=176065
2755
2756         Unreviewed build fix.
2757
2758         * TestWebKitAPI/Tests/WebCore/Logging.cpp:
2759
2760 2017-09-01  Filip Pizlo  <fpizlo@apple.com>
2761
2762         WSL should have more tests of type checking failures
2763         https://bugs.webkit.org/show_bug.cgi?id=176244
2764
2765         Reviewed by Myles Maxfield.
2766
2767         * WebGPUShadingLanguageRI/Checker.js:
2768         (Checker.prototype.visitProtocolDecl.set throw):
2769         * WebGPUShadingLanguageRI/Test.js:
2770         (TEST_typeMismatchReturn):
2771
2772 2017-09-01  Filip Pizlo  <fpizlo@apple.com>
2773
2774         WSL should be be able to call a function declared in a protocol from a generic function
2775         https://bugs.webkit.org/show_bug.cgi?id=176242
2776
2777         Reviewed by Myles Maxfield.
2778         
2779         It turns out that we need to know when a function is resolved to a protocol signature, so we
2780         need to have a type for this. This introduces ProtocolFuncDecl.
2781         
2782         Also, this introduces parsing of protocol decls.
2783         
2784         When instantiating a function, we need to rewrite its CallExpressions if they were previously
2785         resolved to a PrtococolFuncDecl instead of a FuncDef or NativeFunc. In that case, we need to
2786         rerun the resolution on the program. That resolution is guaranteed to succeed if the type
2787         system works correctly.
2788
2789         * WebGPUShadingLanguageRI/All.js:
2790         * WebGPUShadingLanguageRI/CallExpression.js:
2791         (CallExpression.prototype.resolve):
2792         * WebGPUShadingLanguageRI/Checker.js:
2793         (Checker.prototype.visitProtocolDecl.set throw):
2794         * WebGPUShadingLanguageRI/EBufferBuilder.js:
2795         (EBufferBuilder.prototype._createEPtr):
2796         * WebGPUShadingLanguageRI/Func.js:
2797         (Func):
2798         (Func.prototype.get origin):
2799         * WebGPUShadingLanguageRI/FuncDef.js:
2800         (FuncDef):
2801         (FuncDef.prototype.get origin): Deleted.
2802         * WebGPUShadingLanguageRI/FuncInstantiator.js:
2803         (FuncInstantiator):
2804         (FuncInstantiator.prototype.getUnique.InstantiationSubstitution.prototype.visitCallExpression):
2805         (FuncInstantiator.prototype.getUnique.InstantiationSubstitution):
2806         * WebGPUShadingLanguageRI/NativeFunc.js:
2807         (NativeFunc):
2808         (NativeFunc.prototype.get origin): Deleted.
2809         * WebGPUShadingLanguageRI/NativeFuncInstance.js:
2810         (NativeFuncInstance):
2811         * WebGPUShadingLanguageRI/Node.js:
2812         (Node.prototype.substitute):
2813         * WebGPUShadingLanguageRI/Parse.js:
2814         (parseProtocolFuncDecl):
2815         (parseProtocolDecl):
2816         (parse):
2817         * WebGPUShadingLanguageRI/Program.js:
2818         (Program):
2819         (Program.prototype.get protocols):
2820         (Program.prototype.add):
2821         * WebGPUShadingLanguageRI/ProtocolDecl.js:
2822         (ProtocolDecl.prototype.add):
2823         (ProtocolDecl.prototype.hasHeir):
2824         (ProtocolDecl.prototype.addSignature): Deleted.
2825         * WebGPUShadingLanguageRI/ProtocolFuncDecl.js: Added.
2826         (ProtocolFuncDecl):
2827         * WebGPUShadingLanguageRI/Rewriter.js:
2828         (Rewriter.prototype.visitStructType):
2829         (Rewriter.prototype.visitTypeVariable):
2830         (Rewriter.prototype.visitProtocolFuncDecl):
2831         (Rewriter.prototype.visitCallExpression):
2832         * WebGPUShadingLanguageRI/StructType.js:
2833         (StructType.prototype.instantiate):
2834         * WebGPUShadingLanguageRI/Substitution.js:
2835         (Substitution):
2836         (Substitution.mapping): Deleted.
2837         * WebGPUShadingLanguageRI/Test.js:
2838         (TEST_simpleGeneric):
2839         (TEST_simpleAssignment):
2840         (TEST_simpleDefault):
2841         (TEST_simpleDereference):
2842         (TEST_dereferenceStore):
2843         (TEST_simpleMakePtr):
2844         (TEST_threadArrayLoad):
2845         (TEST_deviceArrayLoad):
2846         (TEST_threadArrayStore):
2847         (TEST_deviceArrayStore):
2848         (TEST_simpleProtocol):
2849         * WebGPUShadingLanguageRI/Visitor.js:
2850         (Visitor.prototype.visitProtocolFuncDecl):
2851
2852 2017-09-01  Eric Carlson  <eric.carlson@apple.com>
2853
2854         Switch HTMLMediaElement to release logging
2855         https://bugs.webkit.org/show_bug.cgi?id=176065
2856
2857         Reviewed by Jer Noble.
2858
2859         * TestWebKitAPI/Tests/WebCore/Logging.cpp:
2860         (TestWebKitAPI::LogObserver::level const):
2861
2862 2017-09-01  Ross Kirsling  <ross.kirsling@sony.com>
2863
2864         download-latest-github-release.py should have friendlier output for non-404 errors
2865         https://bugs.webkit.org/show_bug.cgi?id=176201
2866
2867         Reviewed by Brent Fulgham.
2868
2869         * Scripts/download-latest-github-release.py:
2870
2871 2017-09-01  Filip Pizlo  <fpizlo@apple.com>
2872
2873         [WSL] Add tests for storing to arrays
2874         https://bugs.webkit.org/show_bug.cgi?id=176237
2875
2876         Reviewed by Myles Maxfield.
2877         
2878         Storing to arrays works now.
2879
2880         * WebGPUShadingLanguageRI/ArrayType.js:
2881         (ArrayType):
2882         * WebGPUShadingLanguageRI/Test.js:
2883         (TEST_threadArrayStore):
2884         (TEST_deviceArrayStore):
2885
2886 2017-09-01  Alex Christensen  <achristensen@webkit.org>
2887
2888         Replace WKUIDelegatePrivate's isPlayingMediaDidChange with KVO _isPlayingAudio on WKWebView
2889         https://bugs.webkit.org/show_bug.cgi?id=176212
2890
2891         Reviewed by Tim Horton.
2892
2893         * TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm:
2894         (-[AudioObserver observeValueForKeyPath:ofObject:change:context:]):
2895         (TEST):
2896         (-[MediaDelegate _webView:isPlayingMediaDidChange:]): Deleted.
2897
2898 2017-09-01  Filip Pizlo  <fpizlo@apple.com>
2899
2900         WSL Rewriter should be an identity on things that aren't inside function bodies
2901         https://bugs.webkit.org/show_bug.cgi?id=176208
2902
2903         Reviewed by Myles Maxfield.
2904         
2905         Previously, if the Rewriter encountered a FunctionDef, StructType, NativeType, etc., then it
2906         would either crash or try to rewrite them. That's unfortunate because we use the Rewriter to
2907         rewrite struct and function bodies. If a function calls another function, then rewriting the
2908         caller should not mean also rewriting the callee. Previously we "fixed" this by religiously
2909         wrapping references to types with TypeDef and doing other such hacks. But that's subtly wrong.
2910         It only worked because Rewriter wasn't rewriting TypeRef.type. I think that Rewriter has to
2911         rewrite that in the long run because it may refer to another TypeRef, and it may be an
2912         instantiation that is using types that themselves need to be rewritten.
2913
2914         * WebGPUShadingLanguageRI/Checker.js:
2915         (Checker.prototype.visitProtocolDecl.set throw):
2916         * WebGPUShadingLanguageRI/NullType.js:
2917         (NullType):
2918         * WebGPUShadingLanguageRI/Rewriter.js:
2919         (Rewriter.prototype.visitFuncDef):
2920         (Rewriter.prototype.visitNativeFunc):
2921         (Rewriter.prototype.visitNativeFuncInstance):
2922         (Rewriter.prototype.visitNativeType):
2923         (Rewriter.prototype.visitTypeDef):
2924         (Rewriter.prototype.visitStructType):
2925         (Rewriter.prototype.visitTypeVariable):
2926         (Rewriter.prototype.visitConstexprTypeParameter):
2927         (Rewriter.prototype.visitNativeTypeInstance):
2928         (Rewriter.prototype.visitTypeRef):
2929         * WebGPUShadingLanguageRI/Visitor.js:
2930         (Visitor.prototype.visitNativeTypeInstance):
2931
2932 2017-09-01  Alex Christensen  <achristensen@webkit.org>
2933
2934         Disable ObjC WebGL policy SPI on iOS
2935         https://bugs.webkit.org/show_bug.cgi?id=176233
2936
2937         Reviewed by Tim Horton.
2938
2939         * TestWebKitAPI/Tests/WebKitCocoa/WebGLPolicy.mm:
2940
2941 2017-08-31  Carlos Garcia Campos  <cgarcia@igalia.com>
2942
2943         [GTK] Improve the way unit test are run and the results reported
2944         https://bugs.webkit.org/show_bug.cgi?id=176104
2945
2946         Reviewed by Carlos Alberto Lopez Perez.
2947
2948         There are several issues with the way unit tests are run by run-gtk-tests and also with the way results are
2949         reported:
2950
2951          - The results summary only mentions the test binaries, not the actual test cases, so you always have to scroll
2952            up to find the actual test cases failing.
2953          - The number of reported failures is the number of test binaries that failed, so if a new test case fails for
2954            the same binary in a new revision, we won't notice it just looking at the number of failures.
2955          - We show detailed information about skipped test in the results summary, which is just noise.
2956          - In the case of glib tests, when a test case times out, we finish the test suite, instead of continuing with the
2957            rest of the test cases like we do for normal failures or crashes. If a new test case fails after a test case that
2958            timed out we will not notice it until we fix or skip the test cases timing out.
2959          - In the case of glib tests, the timeout is applied to the whole suite, instead of per test case, we have a hack
2960            to make it longer only for that. It has worked so far, but it doesn't scale, and it's an ugly hack.
2961          - It's not currently possible to detect flaky tests, because again, we know the binaries/suites that failed but
2962            not the actual test cases.
2963
2964         This patch fixes all these issues and makes it possible to add support for flaky tests in a follow up patch.
2965
2966         * BuildSlaveSupport/build.webkit.org-config/master.cfg:
2967         (RunGtkAPITests.commandComplete): Update the RunGtkAPITests step to parse the new output.
2968         * Scripts/run-gtk-tests:
2969         (TestRunner._start_timeout): Helper to start the timeout if needed.
2970         (TestRunner._start_timeout._alarm_handler): Raise timeout exception.
2971         (TestRunner._stop_timeout): Helper to stop the timeout if needed.
2972         (TestRunner._waitpid): Merged waitpid and return_code_from_exit_status.
2973         (TestRunner._run_test_glib): Do not double the timeout anymore, we now start/stop the timeout for every test
2974         case. Return a dictionary where keys are test cases and values the results only in case of failures.
2975         (TestRunner._run_test_glib.parse_line): Update the parser to also detect test cases and the results.
2976         (TestRunner._run_test_glib.parse_line.set_test_result): Helper to set the result of a test case.
2977         (TestRunner._run_google_test): Return a dictionary where key is the test case and value is the result only in
2978         case of failure.
2979         (TestRunner._run_google_test_suite): Updated now that _run_google_test returns a dictionary.
2980         (TestRunner.run_tests): Handle the results dictionary and show the results with information about test cases
2981         failing and grouped by test binaries.
2982
2983 2017-08-31  Filip Pizlo  <fpizlo@apple.com>
2984
2985         WSL should support loading from arrays
2986         https://bugs.webkit.org/show_bug.cgi?id=176207
2987
2988         Reviewed by Saam Barati.
2989         
2990         Getting a test that loads from arrays to work required doing a lot of things:
2991         
2992         - a[i] now parses to ^(operator\[](a, i)).
2993         - added operator\[] for four array reference types.
2994         - to make thread|threadgroup|device T[] work, you need T:primitive.
2995         - so this adds the magical primitive protocol.
2996         
2997         This required a little bit of rejuggling in the name resolver and type checker. The main thing
2998         is that to prevent the rewriter from copying the types referenced by some function, you need to
2999         make sure that when you add a reference to a type, you wrap it in a TypeRef. This doesn't
3000         completely feel right, but I'm sure we'll figure out the balance eventually. See bug 176208.
3001
3002         * WebGPUShadingLanguageRI/All.js:
3003         * WebGPUShadingLanguageRI/Checker.js:
3004         (Checker.prototype.visitProtocolDecl.set throw):
3005         * WebGPUShadingLanguageRI/EArrayRef.js: Added.
3006         (EArrayRef):
3007         (EArrayRef.prototype.get ptr):
3008         (EArrayRef.prototype.get length):
3009         (EArrayRef.prototype.toString):
3010         * WebGPUShadingLanguageRI/EPtr.js:
3011         (EPtr.prototype.plus):
3012         (EPtr.prototype.toString):
3013         (EPtr):
3014         * WebGPUShadingLanguageRI/Evaluator.js:
3015         (Evaluator.prototype.visitUintLiteral):
3016         * WebGPUShadingLanguageRI/FuncInstantiator.js:
3017         (FuncInstantiator.prototype.getUnique.Instantiate.prototype.visitNativeFunc):
3018         (FuncInstantiator.prototype.getUnique.Instantiate):
3019         (FuncInstantiator.prototype.getUnique):
3020         (FuncInstantiator):
3021         * WebGPUShadingLanguageRI/Intrinsics.js:
3022         (Intrinsics):
3023         * WebGPUShadingLanguageRI/Lexer.js:
3024         (Lexer.prototype.next):
3025         (Lexer):
3026         * WebGPUShadingLanguageRI/NameContext.js:
3027         (NameContext.prototype.recognizeIntrinsics):
3028         * WebGPUShadingLanguageRI/NameResolver.js:
3029         (NameResolver.prototype.visitProtocolRef):
3030         * WebGPUShadingLanguageRI/NativeFuncInstance.js:
3031         (NativeFuncInstance.prototype.get isNative):
3032         * WebGPUShadingLanguageRI/Parse.js:
3033         (parseTerm):
3034         (parseTypeDef):
3035         (parseNative):
3036         (parsePossibleSuffix):
3037         (parse):
3038         * WebGPUShadingLanguageRI/ProtocolDecl.js:
3039         (ProtocolDecl):
3040         * WebGPUShadingLanguageRI/ProtocolRef.js:
3041         (ProtocolRef.prototype.get isPrimitive):
3042         (ProtocolRef):
3043         * WebGPUShadingLanguageRI/PtrType.js:
3044         (PtrType.prototype.populateDefaultValue): Deleted.
3045         * WebGPUShadingLanguageRI/ReferenceType.js:
3046         (ReferenceType.prototype.populateDefaultValue):
3047         (ReferenceType):
3048         * WebGPUShadingLanguageRI/Rewriter.js:
3049         (Rewriter.prototype.visitUintLiteral):
3050         (Rewriter.prototype.visitFunc): Deleted.
3051         (Rewriter.prototype.visitTypeVariable): Deleted.
3052         (Rewriter.prototype.visitConstexprTypeParameter): Deleted.
3053         * WebGPUShadingLanguageRI/StandardLibrary.js:
3054         * WebGPUShadingLanguageRI/Test.js:
3055         (TEST_threadArrayLoad):
3056         (TEST_deviceArrayLoad):
3057         * WebGPUShadingLanguageRI/TypeRef.js:
3058         (TypeRef.prototype.get instantiatedType):
3059         * WebGPUShadingLanguageRI/TypeVariable.js:
3060         (TypeVariable.prototype.toString):
3061         (TypeVariable):
3062         * WebGPUShadingLanguageRI/UintLiteral.js: Added.
3063         (UintLiteral):
3064         (UintLiteral.prototype.get value):
3065         (UintLiteral.prototype.get isConstexpr):
3066         (UintLiteral.prototype.toString):
3067         * WebGPUShadingLanguageRI/Visitor.js:
3068         (Visitor.prototype.visitNativeFuncInstance):
3069         (Visitor.prototype.visitTypeVariable):
3070         (Visitor.prototype.visitPtrType):
3071         (Visitor.prototype.visitArrayRefType):
3072         (Visitor.prototype.visitUintLiteral):
3073         * WebGPUShadingLanguageRI/WTrapError.js: Added.
3074         (WTrapError):
3075
3076 2017-08-31  Alex Christensen  <achristensen@webkit.org>
3077
3078         Add WKUIDelegatePrivate equivalent of WKPageUIClient's isPlayingAudioDidChange
3079         https://bugs.webkit.org/show_bug.cgi?id=176203
3080         <rdar://problem/29270035>
3081
3082         Reviewed by Tim Horton.
3083
3084         * TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm:
3085         (-[MediaDelegate _webView:isPlayingMediaDidChange:]):
3086         (-[MediaDelegate webView:didFinishNavigation:]):
3087         (TEST):
3088
3089 2017-08-31  Alex Christensen  <achristensen@webkit.org>
3090
3091         Add ObjC SPI corresponding to WKPageLoaderClient's webGLLoadPolicy and resolveWebGLLoadPolicy
3092         https://bugs.webkit.org/show_bug.cgi?id=175779
3093         <rdar://problem/22367975>
3094
3095         Reviewed by Tim Horton.
3096
3097         * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
3098         * TestWebKitAPI/Tests/WebKitCocoa/WebGLPolicy.mm: Added.
3099         (-[WebGLTestDelegate webView:startURLSchemeTask:]):
3100         (-[WebGLTestDelegate webView:stopURLSchemeTask:]):
3101         (-[WebGLTestDelegate _webView:webGLLoadPolicyForURL:decisionHandler:]):
3102         (-[WebGLTestDelegate _webView:resolveWebGLLoadPolicyForURL:decisionHandler:]):
3103         (-[WebGLTestDelegate webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:]):
3104         (urlsEqual):
3105         (runTest):
3106         (TEST):
3107
3108 2017-08-31  Don Olmstead  <don.olmstead@sony.com>
3109
3110         [CMake] Make USE_CF conditional within Windows
3111         https://bugs.webkit.org/show_bug.cgi?id=176173
3112
3113         Reviewed by Alex Christensen.
3114
3115         * DumpRenderTree/config.h:
3116         * MiniBrowser/win/CMakeLists.txt:
3117         * MiniBrowser/win/stdafx.h:
3118         * TestWebKitAPI/PlatformWin.cmake:
3119
3120 2017-08-31  Filip Pizlo  <fpizlo@apple.com>
3121
3122         WSL should support makeptr (\)
3123         https://bugs.webkit.org/show_bug.cgi?id=176197
3124
3125         Reviewed by Saam Barati.
3126         
3127         This required introducing some sanity about how pointers are carried around in the evaluator.
3128         It turns out that we need to be careful about when a pointer to an rvalue is dereferenced. It
3129         should be dereferenced basically immediately. If it cannot be, then we need to snapshot the
3130         value. To do that, we need to know the types of things in a few more places. That's what this
3131         change accomplishes.
3132
3133         * WebGPUShadingLanguageRI/All.js:
3134         * WebGPUShadingLanguageRI/CallFunction.js:
3135         (callFunction):
3136         * WebGPUShadingLanguageRI/Checker.js:
3137         (Checker.prototype.visitProtocolDecl.set throw):
3138         * WebGPUShadingLanguageRI/DereferenceExpression.js:
3139         (DereferenceExpression.prototype.get isLValue):
3140         * WebGPUShadingLanguageRI/Evaluator.js:
3141         (Evaluator.prototype._snapshot):
3142         (Evaluator.prototype.runBody):
3143         (Evaluator.prototype.visitFunctionLikeBlock):
3144         (Evaluator.prototype.visitDereferenceExpression):
3145         (Evaluator.prototype.visitMakePtrExpression):
3146         (Evaluator.prototype.visitCommaExpression):
3147         (Evaluator.prototype.visitCallExpression):
3148         (Evaluator):
3149         (Evaluator.prototype._dereference): Deleted.
3150         * WebGPUShadingLanguageRI/FuncInstantiator.js:
3151         (FuncInstantiator.prototype.getUnique.Instantiate.prototype.visitFuncDef):
3152         (FuncInstantiator.prototype.getUnique.Instantiate.prototype.visitNativeFunc):
3153         (FuncInstantiator.prototype.getUnique.Instantiate):
3154         (FuncInstantiator.prototype.getUnique):
3155         (FuncInstantiator):
3156         * WebGPUShadingLanguageRI/FunctionLikeBlock.js:
3157         (FunctionLikeBlock):
3158         (FunctionLikeBlock.prototype.get returnType):
3159         (FunctionLikeBlock.prototype.toString):
3160         * WebGPUShadingLanguageRI/Inliner.js:
3161         (Inliner.prototype.visitCallExpression):
3162         (Inliner):
3163         * WebGPUShadingLanguageRI/MakePtrExpression.js: Added.
3164         (MakePtrExpression):
3165         (MakePtrExpression.prototype.get lValue):
3166         (MakePtrExpression.prototype.toString):
3167         * WebGPUShadingLanguageRI/NativeFuncInstance.js: Added.
3168         (NativeFuncInstance):
3169         (NativeFuncInstance.prototype.get func):
3170         (NativeFuncInstance.prototype.toString):
3171         * WebGPUShadingLanguageRI/Rewriter.js:
3172         (Rewriter.prototype.visitMakePtrExpression):
3173         (Rewriter.prototype.visitCallExpression):
3174         * WebGPUShadingLanguageRI/Test.js:
3175         (TEST_dereferenceStore):
3176         (TEST_simpleMakePtr):
3177         * WebGPUShadingLanguageRI/Value.js:
3178         (Value.prototype.get isLValue):
3179         (Value):
3180         * WebGPUShadingLanguageRI/VariableRef.js:
3181         (VariableRef.prototype.get isLValue):
3182         (VariableRef.prototype.get addressSpace):
3183         * WebGPUShadingLanguageRI/Visitor.js:
3184         (Visitor.prototype.visitMakePtrExpression):
3185         (Visitor.prototype.visitCallExpression):
3186
3187 2017-08-31  Ryan Haddad  <ryanhaddad@apple.com>
3188
3189         Unreviewed, rolling out r221445.
3190
3191         This change broke Sierra Release builds.
3192
3193         Reverted changeset:
3194
3195         "Switch HTMLMediaElement to release logging"
3196         https://bugs.webkit.org/show_bug.cgi?id=176065
3197         http://trac.webkit.org/changeset/221445
3198
3199 2017-08-31  Filip Pizlo  <fpizlo@apple.com>
3200
3201         WSL should support dereference (^)
3202         https://bugs.webkit.org/show_bug.cgi?id=176192
3203
3204         Reviewed by Myles Maxfield.
3205         
3206         This implements DereferenceExpression.
3207         
3208         It also renames Evaluator.prototype.visitFunctionBody, because that name confusingly implies
3209         that there is a class named FunctionBody. It's now called runBody.
3210         
3211         I made the check to see if a type is a pointer type be the isPtr method, so that we can have
3212         other pointer types that are implemented via something other than PtrType. We might want it if
3213         for example we wanted a pointer type that is generic over address space.
3214
3215         * WebGPUShadingLanguageRI/All.js:
3216         * WebGPUShadingLanguageRI/CallFunction.js:
3217         (callFunction):
3218         * WebGPUShadingLanguageRI/Checker.js:
3219         (Checker.prototype.visitProtocolDecl.set throw):
3220         * WebGPUShadingLanguageRI/DereferenceExpression.js: Added.
3221         (DereferenceExpression):
3222         (DereferenceExpression.prototype.get ptr):
3223         (DereferenceExpression.prototype.toString):
3224         * WebGPUShadingLanguageRI/Evaluator.js:
3225         (Evaluator.prototype.visitFunctionLikeBlock):
3226         (Evaluator.prototype._dereference):
3227         (Evaluator.prototype.visitDereferenceExpression):
3228         (Evaluator.prototype.visitFunctionBody): Deleted.
3229         * WebGPUShadingLanguageRI/PtrType.js:
3230         (PtrType.prototype.get isPtr):
3231         (PtrType.prototype.populateDefaultValue):
3232         * WebGPUShadingLanguageRI/Rewriter.js:
3233         (Rewriter.prototype.visitAssignment):
3234         (Rewriter.prototype.visitDereferenceExpression):
3235         * WebGPUShadingLanguageRI/Test.js:
3236         (TEST_simpleDereference):
3237         * WebGPUShadingLanguageRI/Type.js:
3238         (Type.prototype.get isPtr):
3239         * WebGPUShadingLanguageRI/Visitor.js:
3240         (Visitor.prototype.visitDereferenceExpression):
3241
3242 2017-08-31  Filip Pizlo  <fpizlo@apple.com>
3243
3244         There should only be one callFunction API in WSL
3245         https://bugs.webkit.org/show_bug.cgi?id=176189
3246
3247         Reviewed by Saam Barati.
3248         
3249         This removes the need for callFunctionByRef, which was weird. It's now the case the TypedValue
3250         is always a tuple of type and ePtr, and TypedValue has a super simple API for boxing and
3251         unboxing single-cell values like ints.
3252
3253         * WebGPUShadingLanguageRI/CallFunction.js:
3254         (callFunction):
3255         (callFunctionByRef): Deleted.
3256         * WebGPUShadingLanguageRI/Test.js:
3257         (makeInt):
3258         * WebGPUShadingLanguageRI/TypedValue.js:
3259         (TypedValue):
3260         (TypedValue.prototype.get type):
3261         (TypedValue.prototype.get ePtr):
3262         (TypedValue.box):
3263         (TypedValue.prototype.get value):
3264         (TypedValue.prototype.toString):
3265
3266 2017-08-31  Filip Pizlo  <fpizlo@apple.com>
3267
3268         WSL EPtr does not need to carry around the type
3269         https://bugs.webkit.org/show_bug.cgi?id=176188
3270
3271         Reviewed by Saam Barati.
3272         
3273         To validate that the interpreter is modeling a statically typed execution environment, it's
3274         really best if values don't know their types at all. A pointer is just a pointer (i.e a buffer
3275         and offset in our world), and it's the job of the AST node that uses it to figure out what its
3276         type should be.
3277         
3278         I think this makes the code simpler overall.
3279
3280         * WebGPUShadingLanguageRI/All.js:
3281         * WebGPUShadingLanguageRI/CallFunction.js:
3282         (callFunctionByRef):
3283         (callFunction):
3284         * WebGPUShadingLanguageRI/Checker.js:
3285         (Checker.prototype.visitProtocolDecl.set throw):
3286         * WebGPUShadingLanguageRI/EBufferBuilder.js:
3287         (EBufferBuilder.prototype._createEPtr):
3288         * WebGPUShadingLanguageRI/EPtr.js:
3289         (EPtr):
3290         (EPtr.box):
3291         (EPtr.prototype.copyFrom):
3292         (EPtr.prototype.toString):
3293         * WebGPUShadingLanguageRI/EValue.js: Removed.
3294         * WebGPUShadingLanguageRI/Evaluator.js:
3295         (Evaluator.prototype.visitFunctionLikeBlock):
3296         (Evaluator.prototype.visitVariableDecl):
3297         (Evaluator.prototype.visitAssignment):
3298         (Evaluator.prototype.visitIntLiteral):
3299         * WebGPUShadingLanguageRI/Intrinsics.js:
3300         (Intrinsics):
3301         * WebGPUShadingLanguageRI/Rewriter.js:
3302         (Rewriter.prototype.visitAssignment):
3303         * WebGPUShadingLanguageRI/StructType.js:
3304         (StructType.prototype.instantiate):
3305         * WebGPUShadingLanguageRI/Test.js:
3306         (checkInt):
3307
3308 2017-08-31  Filip Pizlo  <fpizlo@apple.com>
3309
3310         WSL doesn't need to wrap primitives like ints and floats in specialized classes like EInt and EFloat
3311         https://bugs.webkit.org/show_bug.cgi?id=176184
3312
3313         Reviewed by Saam Barati.
3314         
3315         The only use for EInt and EFloat was that users of the interpreter want to be able to reason
3316         about values that know their type. But for the actual interpreter, it makes most sense for
3317         EBuffer to hold values directly - for example, ints in the case of values of type int. Then,
3318         all of the logic of doing math on those things can be implemented in Intrinsics.js.
3319         
3320         So, this removes EInt and EFloat but introduces a new TypedValue class that is used only on the
3321         boundary of the interpreter. You can either use the interpreter by speaking its internal
3322         language (EPtr to an EBuffer that has the values) or by using the simple API (which uses
3323         TypedValue as a trade-off between power and convenience).
3324
3325         * WebGPUShadingLanguageRI/All.js:
3326         * WebGPUShadingLanguageRI/CallFunction.js:
3327         (callFunction):
3328         * WebGPUShadingLanguageRI/EFloat.js: Removed.
3329         * WebGPUShadingLanguageRI/EInt.js: Removed.
3330         * WebGPUShadingLanguageRI/EPtr.js:
3331         (EPtr.box):
3332         * WebGPUShadingLanguageRI/Evaluator.js:
3333         (Evaluator.prototype.visitIntLiteral):
3334         * WebGPUShadingLanguageRI/Intrinsics.js:
3335         (Intrinsics):
3336         * WebGPUShadingLanguageRI/Test.js:
3337         (makeInt):
3338         (checkInt):
3339         (TEST_add1):
3340         (TEST_simpleGeneric):
3341         (TEST_simpleAssignment):
3342         (TEST_simpleDefault):
3343         * WebGPUShadingLanguageRI/TypedValue.js: Added.
3344         (TypedValue):
3345         (TypedValue.prototype.toString):
3346
3347 2017-08-31  David Quesada  <david_quesada@apple.com>
3348
3349         WKNavigationDelegatePrivate client redirect SPI needs to be able to detect redirects scheduled before the document finishes loading
3350         https://bugs.webkit.org/show_bug.cgi?id=176128
3351         rdar://problem/34068476
3352
3353         Reviewed by Brady Eidson.
3354
3355         Removed API test for the deleted WKNavigationDelegatePrivate method,
3356         and added two new tests for the two new methods.
3357
3358         * TestWebKitAPI/Tests/WebKitCocoa/Navigation.mm:
3359         (-[ClientRedirectNavigationDelegate _webView:willPerformClientRedirectToURL:delay:]):
3360         (-[ClientRedirectNavigationDelegate _webViewDidCancelClientRedirect:]):
3361         (-[ClientRedirectNavigationDelegate webView:didFinishNavigation:]):
3362         (TEST):
3363
3364 2017-08-31  Filip Pizlo  <fpizlo@apple.com>
3365
3366         WSL should handle variable assignments and variable declarations
3367         https://bugs.webkit.org/show_bug.cgi?id=176180
3368
3369         Reviewed by Saam Barati.
3370         
3371         Just fills in VariableDecl and Assignment logic so that we can test variables.
3372
3373         * WebGPUShadingLanguageRI/Checker.js:
3374         (Checker.prototype.visitProtocolDecl.set throw):
3375         * WebGPUShadingLanguageRI/EBufferBuilder.js:
3376         (EBufferBuilder.prototype._createEPtrForNode):
3377         (EBufferBuilder.prototype.visitFuncParameter):
3378         (EBufferBuilder.prototype.visitVariableDecl):
3379         (EBufferBuilder):
3380         * WebGPUShadingLanguageRI/Evaluator.js:
3381         (Evaluator.prototype.visitVariableDecl):
3382         (Evaluator.prototype.visitAssignment):
3383         * WebGPUShadingLanguageRI/NameResolver.js:
3384         (NameResolver.prototype.visitVariableDecl):
3385         * WebGPUShadingLanguageRI/Rewriter.js:
3386         (Rewriter.prototype.visitFuncParameter):
3387         (Rewriter.prototype.visitVariableDecl):
3388         * WebGPUShadingLanguageRI/Test.js:
3389         (makeInt):
3390         (TEST_add1):
3391         (TEST_simpleGeneric):
3392         (TEST_simpleAssignment):
3393         (TEST_simpleDefault):
3394         * WebGPUShadingLanguageRI/Visitor.js:
3395         (Visitor.prototype.visitVariableDecl):
3396
3397 2017-08-31  Chris Dumez  <cdumez@apple.com>
3398
3399         getFileMetadata() does not work as expected for symbolic links
3400         https://bugs.webkit.org/show_bug.cgi?id=176143
3401
3402         Reviewed by Andreas Kling.
3403
3404         Add API test coverage.
3405
3406         * TestWebKitAPI/Tests/WebCore/FileSystem.cpp:
3407         (TestWebKitAPI::TEST_F):
3408
3409 2017-08-31  Filip Pizlo  <fpizlo@apple.com>
3410
3411         WSL parser should pass the token as the origin to the AST
3412         https://bugs.webkit.org/show_bug.cgi?id=176177
3413
3414         Reviewed by Keith Miller.
3415         
3416         Parse.js was sometimes passing token.origin as the origin, but that's just the filename
3417         component of the origin. This fixes the problem and adds a test. The test previously failed
3418         because instead of reporting the origin of the type error as "<test>:1", it reported undefined.
3419
3420         * WebGPUShadingLanguageRI/Parse.js:
3421         (parseProtocolRef):
3422         (consumeEndOfTypeArgs):
3423         (parseTypeParameters):
3424         (parseTerm):
3425         (parseTypeArguments):
3426         (parseType):
3427         (parseTypeDef):
3428         (parseNative):
3429         (parseLeftOperatorCall):
3430         (parsePossibleSuffix):
3431         (parsePossiblePrefix):
3432         (parsePossibleRelationalEquality):
3433         (parseLeftLogicalExpression):
3434         (parsePossibleTernaryConditional):
3435         (parsePossibleAssignment):
3436         (genericParseCommaExpression):
3437         (parseReturn):
3438         (parseVariableDecls):
3439         (parseBlock):
3440         * WebGPUShadingLanguageRI/Test.js:
3441         (checkFail):
3442         (TEST_nameResolutionFailure):
3443
3444 2017-08-31  Keith Miller  <keith_miller@apple.com>
3445
3446         Add a filter argument to WSL test suite.
3447         https://bugs.webkit.org/show_bug.cgi?id=176176
3448
3449         Reviewed by Filip Pizlo.
3450
3451         * WebGPUShadingLanguageRI/Test.js:
3452         (this.string_appeared_here.i.switch):
3453         (let.s.in.this.s.startsWith.string_appeared_here.s.match):
3454         (let.s.in.this.s.startsWith): Deleted.
3455
3456 2017-08-30  Filip Pizlo  <fpizlo@apple.com>
3457
3458         WSL should be able to run a program that uses generics
3459         https://bugs.webkit.org/show_bug.cgi?id=176152
3460
3461         Reviewed by Keith Miller.
3462         
3463         This fixes the WSL parser and type checker to the point that we can:
3464         
3465         - Parse a function call!
3466         - Type check a generic function call with an inferred type parameter.
3467         - Instantiate a generic function.
3468         - Inline a function call.
3469         - Evaluate an inlined function call.
3470         
3471         This also changes the test suite so that it's a little nicer to add new tests. Functions whose
3472         names start with "TEST_" are tests.
3473
3474         * WebGPUShadingLanguageRI/Checker.js:
3475         (Checker.prototype.visitProtocolDecl.set throw):
3476         * WebGPUShadingLanguageRI/EBufferBuilder.js:
3477         (EBufferBuilder.prototype.visitFuncParameter):
3478         (EBufferBuilder):
3479         * WebGPUShadingLanguageRI/Evaluator.js:
3480         (Evaluator.prototype.visitFunctionLikeBlock):
3481         * WebGPUShadingLanguageRI/FuncDef.js:
3482         (FuncDef.prototype.toString):
3483         (FuncDef):
3484         * WebGPUShadingLanguageRI/FuncInstantiator.js:
3485         (FuncInstantiator.prototype.getUnique):
3486         (FuncInstantiator):
3487         * WebGPUShadingLanguageRI/Inliner.js:
3488         (Inliner.prototype.visitCallExpression):
3489         (Inliner):
3490         * WebGPUShadingLanguageRI/Lexer.js:
3491         (Lexer):
3492         * WebGPUShadingLanguageRI/NameContext.js:
3493         (NameContext):
3494         (NameContext.prototype.add):
3495         (NameContext.prototype.get let):
3496         (NameContext.prototype.defineAll):
3497         (NameContext.get intrinsics): Deleted.
3498         (NameContext.set program): Deleted.
3499         (NameContext.get program): Deleted.
3500         * WebGPUShadingLanguageRI/NameResolver.js:
3501         (NameResolver.prototype.visitProgram):
3502         * WebGPUShadingLanguageRI/Parse.js:
3503         (parseTerm):
3504         (parsePossibleSuffix):
3505         (genericParseCommaExpression):
3506         (parseReturn):
3507         * WebGPUShadingLanguageRI/Program.js:
3508         (Program.prototype.resolveFuncOverload):
3509         * WebGPUShadingLanguageRI/ProtocolDecl.js:
3510         (ProtocolDecl.prototype.inherits):
3511         * WebGPUShadingLanguageRI/ResolveOverloadImpl.js:
3512         (resolveOverloadImpl):
3513         * WebGPUShadingLanguageRI/Rewriter.js:
3514         (Rewriter.prototype.visitFuncParameter):
3515         (Rewriter.prototype.visitCallExpression):
3516         (Rewriter.prototype._map): Deleted.
3517         * WebGPUShadingLanguageRI/Test.js:
3518         (checkInt):
3519         (TEST_add1):
3520         (TEST_simpleGeneric):
3521         (let.s.in.this.s.startsWith):
3522         (load): Deleted.
3523         * WebGPUShadingLanguageRI/TypeVariable.js:
3524         (TypeVariable.prototype.typeVariableUnify):
3525         * WebGPUShadingLanguageRI/UnificationContext.js:
3526         (UnificationContext.prototype.union):
3527
3528 2017-08-30  Alex Christensen  <achristensen@webkit.org>
3529
3530         Add WKUIDelegatePrivate equivalent of WKPageUIClient's didClickAutoFillButton
3531         https://bugs.webkit.org/show_bug.cgi?id=176139
3532         <rdar://problem/29270035>
3533
3534         Reviewed by Tim Horton.
3535
3536         * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
3537         * TestWebKitAPI/Tests/WebKitCocoa/ClickAutoFillButton.mm: Added.
3538         (didClickAutoFillButton):
3539         (-[ClickAutoFillButton webProcessPlugIn:didCreateBrowserContextController:]):
3540         * TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm:
3541         (-[AutoFillDelegate _webView:didClickAutoFillButtonWithUserInfo:]):
3542         (-[AutoFillDelegate webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:]):
3543         (TEST):
3544
3545 2017-08-31  Carlos Garcia Campos  <cgarcia@igalia.com>
3546
3547         [GTK] Several InputMethodFilter tests are failing and crashing
3548         https://bugs.webkit.org/show_bug.cgi?id=176158
3549
3550         Reviewed by Carlos Alberto Lopez Perez.
3551
3552         This started to happen after the GTK+ upgrade from 3.16 to 3.22 in the internal jhbuild. Now, GtkIMContext
3553         doesn't emit the preedit signals when using the compose key (GDK_KEY_Multi_key). The composition results are
3554         committed directly when they are ready. The test InputMethodFilterComposeKey was failing because it expected
3555         preedit events that no longer happen. Tests InputMethodFilterContextFocusOutDuringOngoingComposition and
3556         InputMethodFilterContextMouseClickDuringOngoingComposition were crashing because InputMethodFilter::confirmCurrentComposition()
3557         accessed the WebPageProxy unconditionally, that is not available in testing mode. I wonder how this ever
3558         worked. Other tests results have also been updated because logHandleKeyboardEventWithCompositionResultsForTesting()
3559         now uses hexadecimal numbers for the key codes, for consistency with all other event logs.
3560
3561         * TestWebKitAPI/Tests/WebKit/gtk/InputMethodFilter.cpp:
3562         (TestWebKitAPI::TestInputMethodFilter::TestInputMethodFilter):
3563         (TestWebKitAPI::TEST):
3564         (TestWebKitAPI::verifyCanceledComposition): Deleted.
3565
3566 2017-08-31  Carlos Garcia Campos  <cgarcia@igalia.com>
3567
3568         [GTK][Wayland] Crash when gdk_keymap_get_entries_for_keyval returns TRUE but n_keys=0
3569         https://bugs.webkit.org/show_bug.cgi?id=176154
3570
3571         Reviewed by Carlos Alberto Lopez Perez.
3572
3573         Also check the n_keys > 0 when using gdk_keymap_get_entries_for_keyval().
3574
3575         * TestWebKitAPI/Tests/WebKit/gtk/InputMethodFilter.cpp:
3576         (TestWebKitAPI::TestInputMethodFilter::sendKeyEventToFilter):
3577         * TestWebKitAPI/Tests/WebKitGtk/TestPrinting.cpp: Remove duplicated code and use WebViewTest::keyStroke instead.
3578         * TestWebKitAPI/glib/WebKitGLib/gtk/WebViewTestGtk.cpp:
3579         (WebViewTest::keyStroke):
3580         * TestWebKitAPI/gtk/PlatformWebViewGtk.cpp:
3581         (TestWebKitAPI::doKeyStroke):
3582         * WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:
3583         (WTR::EventSenderProxy::keyDown):
3584
3585 2017-08-31  Carlos Garcia Campos  <cgarcia@igalia.com>
3586
3587         Unreviewed. Fix GTK+ test /webkit2/WebKitAutomationSession/request-session.
3588
3589         It fails when comparing the browser version if micro version is 0 (or if both micro and minor are 0 too).
3590
3591         * TestWebKitAPI/Tests/WebKitGLib/TestAutomationSession.cpp: Use a helper method to convert major, minor, micro
3592         numbers into a version string, using the same approach as WebKitAutomationSession.
3593
3594 2017-08-30  Dan Bernstein  <mitz@apple.com>
3595
3596         [iOS] REGRESSION (r218144) -[WKContentView targetForAction:withSender:] returns the content view for actions implemented only by the WKWebView, causing a crash
3597         https://bugs.webkit.org/show_bug.cgi?id=176077
3598         <rdar://problem/34145200>
3599
3600         Reviewed by Sam Weinig.
3601
3602         * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
3603         * TestWebKitAPI/Tests/WebKitCocoa/WKContentViewTargetForAction.mm: Added.
3604         (-[TestWKContentViewTargetForActionView testAction:]):
3605         (TEST):
3606         * TestWebKitAPI/ios/UIKitSPI.h:
3607
3608 2017-08-30  Carlos Alberto Lopez Perez  <clopez@igalia.com>
3609
3610         [GTK] install-dependencies script should install CUPS headers
3611         https://bugs.webkit.org/show_bug.cgi?id=176129
3612
3613         Reviewed by Michael Catanzaro.
3614         
3615         When building GTK+ on the JHBuild, it will enable the CUPS print
3616         backend if the CUPS headers are installed. Having a print backend
3617         on GTK+ is needed for the print-related API tests.
3618
3619         * gtk/install-dependencies:
3620
3621 2017-08-30  Filip Pizlo  <fpizlo@apple.com>
3622
3623         Rename ArrayLang to WebGPU Shading Language, or WSL for short, pronounced "whistle"
3624         https://bugs.webkit.org/show_bug.cgi?id=176117
3625
3626         Reviewed by Myles Maxfield.
3627         
3628         Renamed ArrayLangRI to WebGPUShadingLanguageRI.
3629         
3630         Renamed ALSyntaxError/ALTypeError to WSyntaxError/WTypeError.
3631         
3632         Renamed all references to "ArrayLang" in the code to "WSL".
3633
3634         * ArrayLangRI: Removed.
3635         * ArrayLangRI/ALSyntaxError.js: Removed.
3636         * ArrayLangRI/ALTypeError.js: Removed.
3637         * ArrayLangRI/AddressSpace.js: Removed.
3638         * ArrayLangRI/All.js: Removed.
3639         * ArrayLangRI/ArrayRefType.js: Removed.
3640         * ArrayLangRI/ArrayType.js: Removed.
3641         * ArrayLangRI/Assignment.js: Removed.
3642         * ArrayLangRI/Block.js: Removed.
3643         * ArrayLangRI/CallAssignment.js: Removed.
3644         * ArrayLangRI/CallExpression.js: Removed.
3645         * ArrayLangRI/CallFunction.js: Removed.
3646         * ArrayLangRI/Check.js: Removed.
3647         * ArrayLangRI/Checker.js: Removed.
3648         * ArrayLangRI/CommaExpression.js: Removed.
3649         * ArrayLangRI/ConstexprTypeParameter.js: Removed.
3650         * ArrayLangRI/EBuffer.js: Removed.
3651         * ArrayLangRI/EBufferBuilder.js: Removed.
3652         * ArrayLangRI/EFloat.js: Removed.
3653         * ArrayLangRI/EInt.js: Removed.
3654         * ArrayLangRI/EPtr.js: Removed.
3655         * ArrayLangRI/EValue.js: Removed.
3656         * ArrayLangRI/EvaluationCommon.js: Removed.
3657         * ArrayLangRI/Evaluator.js: Removed.
3658         * ArrayLangRI/Expression.js: Removed.
3659         * ArrayLangRI/Field.js: Removed.
3660         * ArrayLangRI/Func.js: Removed.
3661         * ArrayLangRI/FuncDef.js: Removed.
3662         * ArrayLangRI/FuncInstantiator.js: Removed.
3663         * ArrayLangRI/FuncParameter.js: Removed.
3664         * ArrayLangRI/FunctionLikeBlock.js: Removed.
3665         * ArrayLangRI/Inline.js: Removed.
3666         * ArrayLangRI/Inliner.js: Removed.
3667         * ArrayLangRI/InstantiateImmediates.js: Removed.
3668         * ArrayLangRI/IntLiteral.js: Removed.
3669         * ArrayLangRI/Intrinsics.js: Removed.
3670         * ArrayLangRI/Lexer.js: Removed.
3671         * ArrayLangRI/LexerToken.js: Removed.
3672         * ArrayLangRI/NameContext.js: Removed.
3673         * ArrayLangRI/NameResolver.js: Removed.
3674         * ArrayLangRI/NativeFunc.js: Removed.
3675         * ArrayLangRI/NativeType.js: Removed.
3676         * ArrayLangRI/NativeTypeInstance.js: Removed.
3677         * ArrayLangRI/Node.js: Removed.
3678         * ArrayLangRI/NullType.js: Removed.
3679         * ArrayLangRI/Parse.js: Removed.
3680         * ArrayLangRI/Prepare.js: Removed.
3681         * ArrayLangRI/Program.js: Removed.
3682         * ArrayLangRI/Protocol.js: Removed.
3683         * ArrayLangRI/ProtocolDecl.js: Removed.
3684         * ArrayLangRI/ProtocolRef.js: Removed.
3685         * ArrayLangRI/PtrType.js: Removed.
3686         * ArrayLangRI/ReferenceType.js: Removed.
3687         * ArrayLangRI/ResolveNames.js: Removed.
3688         * ArrayLangRI/ResolveOverloadImpl.js: Removed.
3689         * ArrayLangRI/ResolveTypeDefs.js: Removed.
3690         * ArrayLangRI/Return.js: Removed.
3691         * ArrayLangRI/ReturnException.js: Removed.
3692         * ArrayLangRI/Rewriter.js: Removed.
3693         * ArrayLangRI/StandardLibrary.js: Removed.
3694         * ArrayLangRI/StructType.js: Removed.
3695         * ArrayLangRI/Substitution.js: Removed.
3696         * ArrayLangRI/SuffixCallAssignment.js: Removed.
3697         * ArrayLangRI/Test.js: Removed.
3698         * ArrayLangRI/Type.js: Removed.
3699         * ArrayLangRI/TypeDef.js: Removed.
3700         * ArrayLangRI/TypeDefResolver.js: Removed.
3701         * ArrayLangRI/TypeOrVariableRef.js: Removed.
3702         * ArrayLangRI/TypeRef.js: Removed.
3703         * ArrayLangRI/TypeVariable.js: Removed.
3704         * ArrayLangRI/UnificationContext.js: Removed.
3705         * ArrayLangRI/Value.js: Removed.
3706         * ArrayLangRI/VariableDecl.js: Removed.
3707         * ArrayLangRI/VariableRef.js: Removed.
3708         * ArrayLangRI/VisitingSet.js: Removed.
3709         * ArrayLangRI/Visitor.js: Removed.
3710         * WebGPUShadingLanguageRI: Copied from Tools/ArrayLangRI.
3711         * WebGPUShadingLanguageRI/ALSyntaxError.js: Removed.
3712         * WebGPUShadingLanguageRI/ALTypeError.js: Removed.
3713         * WebGPUShadingLanguageRI/All.js:
3714         * WebGPUShadingLanguageRI/CallFunction.js:
3715         (callFunctionByRef):
3716         * WebGPUShadingLanguageRI/Checker.js:
3717         (Checker.prototype.visitProtocolDecl.set throw):
3718         * WebGPUShadingLanguageRI/Intrinsics.js:
3719         (Intrinsics.prototype.add):
3720         (Intrinsics):
3721         * WebGPUShadingLanguageRI/Lexer.js:
3722         (Lexer):
3723         * WebGPUShadingLanguageRI/NameContext.js:
3724         (NameContext.prototype.add):
3725         * WebGPUShadingLanguageRI/NameResolver.js:
3726         (NameResolver.prototype._resolveTypeArguments):
3727         (NameResolver.prototype.visitTypeRef):
3728         (NameResolver.prototype.visitVariableRef):
3729         * WebGPUShadingLanguageRI/Parse.js:
3730         * WebGPUShadingLanguageRI/StandardLibrary.js:
3731         * WebGPUShadingLanguageRI/StructType.js:
3732         (StructType.prototype.add):
3733         (StructType.prototype.instantiate):
3734         * WebGPUShadingLanguageRI/TypeDefResolver.js:
3735         (TypeDefResolver.prototype.visitTypeRef):
3736         (TypeDefResolver):
3737         * WebGPUShadingLanguageRI/VisitingSet.js:
3738         (VisitingSet.prototype.doVisit):
3739         (VisitingSet):
3740         * WebGPUShadingLanguageRI/WSyntaxError.js: Copied from Tools/ArrayLangRI/ALSyntaxError.js.
3741         (ALSyntaxError): Deleted.
3742         * WebGPUShadingLanguageRI/WTypeError.js: Copied from Tools/ArrayLangRI/ALTypeError.js.
3743         (ALTypeError): Deleted.
3744
3745 2017-08-30  Eric Carlson  <eric.carlson@apple.com>
3746
3747         Add Logger observer and helper class
3748         https://bugs.webkit.org/show_bug.cgi?id=176106
3749
3750         Reviewed by Andy Estes.
3751
3752         * TestWebKitAPI/Tests/WebCore/Logging.cpp:
3753         (TestWebKitAPI::LoggingTest::LoggingTest):
3754         (TestWebKitAPI::LoggingTest::Logger::create):
3755         (TestWebKitAPI::TEST_F):
3756         (TestWebKitAPI::LogObserver::log):
3757         (TestWebKitAPI::LogObserver::channel const):
3758
3759 2017-08-29  Filip Pizlo  <fpizlo@apple.com>
3760
3761         Initial reference implementation scaffolding for ArrayLang
3762         https://bugs.webkit.org/show_bug.cgi?id=175925
3763
3764         Reviewed by Myles Maxfield.
3765         
3766         This introduces a very rough scaffolding for an AST walk interpreter and type checker for an
3767         experimental shader language we are calling ArrayLang for now.
3768         
3769         The idea is to have a strong core type system that includes generics and memory-safe pointers
3770         and array references. Everything has deterministic semantics right up to the limit of what is
3771         portably possible.
3772         
3773         This language will support generics. This will be valid:
3774         
3775         protocol Addable { Addable operator+(Addable, Addable); }
3776         T add<T:Addable>(T a, T b) { return a + b; }
3777         
3778         This language will support pointers and array references. This will be valid:
3779         
3780         thread int^ foo() { int x; return \x; }
3781         
3782         Each variable behaves as if it was declared "static", with one copy per type instantiation.
3783         Functions cannot recurse and there is no stack.
3784         
3785         Currently, this just tests that the following function can be parsed, checked, and called:
3786         
3787         int foo(int x) { return x + 1; }
3788
3789         * ArrayLangRI: Added.
3790         * ArrayLangRI/ALSyntaxError.js: Added.
3791         (ALSyntaxError):
3792         * ArrayLangRI/ALTypeError.js: Added.
3793         (ALTypeError):
3794         * ArrayLangRI/AddressSpace.js: Added.
3795         (isAddressSpace):
3796         (validateAddressSpace):
3797         * ArrayLangRI/All.js: Added.
3798         * ArrayLangRI/ArrayRefType.js: Added.
3799         (ArrayRefType.prototype.unifyImpl):
3800         (ArrayRefType.prototype.toString):
3801         (ArrayRefType):
3802         * ArrayLangRI/ArrayType.js: Added.
3803         (ArrayType):
3804         (ArrayType.prototype.get origin):
3805         (ArrayType.prototype.get elementType):
3806         (ArrayType.prototype.get numElements):
3807         (ArrayType.prototype.get isPrimitive):
3808         (ArrayType.prototype.toString):
3809         (ArrayType.prototype.get size):
3810         (ArrayType.prototype.unifyImpl):
3811         * ArrayLangRI/Assignment.js: Added.
3812         (Assignment):
3813         (Assignment.prototype.get lhs):
3814         (Assignment.prototype.get rhs):
3815         (Assignment.prototype.toString):
3816         * ArrayLangRI/Block.js: Added.
3817         (Block):
3818         (Block.prototype.get origin):
3819         (Block.prototype.add):
3820         (Block.prototype.get statements):
3821         (Block.prototype.toString):
3822         * ArrayLangRI/CallAssignment.js: Added.
3823         (CallAssignment):
3824         (CallAssignment.prototype.get name):
3825         (CallAssignment.prototype.get lhs):
3826         (CallAssignment.prototype.get rhs):
3827         (CallAssignment.prototype.toString):
3828         * ArrayLangRI/CallExpression.js: Added.
3829         (CallExpression):
3830         (CallExpression.prototype.get name):
3831         (CallExpression.prototype.get typeArguments):
3832         (CallExpression.prototype.get argumentList):
3833         (CallExpression.prototype.toString):
3834         * ArrayLangRI/CallFunction.js: Added.
3835         (callFunctionByRef):
3836         (callFunction):
3837         * ArrayLangRI/Check.js: Added.
3838         (check):
3839         * ArrayLangRI/Checker.js: Added.
3840         (Checker):
3841         (Checker.prototype.visitProgram):
3842         (Checker.prototype.visitProtocolDecl.NoticeTypeVariable.prototype.visitTypeRef):
3843         (Checker.prototype.visitProtocolDecl.NoticeTypeVariable.prototype.visitVariableRef):
3844         (Checker.prototype.visitProtocolDecl.NoticeTypeVariable):
3845         (Checker.prototype.visitProtocolDecl.set throw):
3846         * ArrayLangRI/CommaExpression.js: Added.
3847         (CommaExpression):
3848         (CommaExpression.prototype.get list):
3849         (CommaExpression.prototype.toString):
3850         * ArrayLangRI/ConstexprTypeParameter.js: Added.
3851         (ConstexprTypeParameter):
3852         (ConstexprTypeParameter.prototype.get name):
3853         (ConstexprTypeParameter.prototype.get type):
3854         (ConstexprTypeParameter.prototype.get isConstexpr):
3855         (ConstexprTypeParameter.prototype.get isUnifiable):
3856         (ConstexprTypeParameter.prototype.typeVariableUnify):
3857         (ConstexprTypeParameter.prototype.unifyImpl):
3858         (ConstexprTypeParameter.prototype.verifyAsArgument):
3859         (ConstexprTypeParameter.prototype.verifyAsParameter):
3860         (ConstexprTypeParameter.prototype.toString):
3861         * ArrayLangRI/EBuffer.js: Added.
3862         (EBuffer):
3863         (EBuffer.get index):
3864         * ArrayLangRI/EBufferBuilder.js: Added.
3865         (EBufferBuilder):
3866         (EBufferBuilder.prototype._createEPtr):
3867         (EBufferBuilder.prototype.visitFuncParameter):
3868         * ArrayLangRI/EFloat.js: Added.
3869         (EFloat):
3870         (EFloat.prototype.get value):
3871         (EFloat.prototype.add):
3872         (EFloat.prototype.toString):
3873         * ArrayLangRI/EInt.js: Added.
3874         (EInt):
3875         (EInt.prototype.get value):
3876         (EInt.prototype.add):
3877         (EInt.prototype.toString):
3878         * ArrayLangRI/EPtr.js: Added.
3879         (EPtr):
3880         (EPtr.box):
3881         (EPtr.prototype.get buffer):
3882         (EPtr.prototype.get offset):
3883         (EPtr.prototype.loadValue):
3884         (EPtr.prototype.copyFrom):
3885         (EPtr.prototype.toString):
3886         * ArrayLangRI/EValue.js: Added.
3887         (EValue):
3888         (EValue.prototype.get type):
3889         * ArrayLangRI/EvaluationCommon.js: Added.
3890         * ArrayLangRI/Evaluator.js: Added.
3891         (Evaluator):
3892         (Evaluator.prototype.visitFunctionBody):
3893         (Evaluator.prototype.visitFunctionLikeBlock):
3894         (Evaluator.prototype.visitReturn):
3895         (Evaluator.prototype.visitCommaExpression):
3896         (Evaluator.prototype.visitVariableRef):
3897         (Evaluator.prototype.visitIntLiteral):
3898         (Evaluator.prototype.visitCallExpression):
3899         * ArrayLangRI/Expression.js: Added.
3900         (Expression):
3901         (Expression.prototype.get origin):
3902         * ArrayLangRI/Field.js: Added.
3903         (Field):
3904         (Field.prototype.get origin):
3905         (Field.prototype.get name):
3906         (Field.prototype.get type):
3907         (Field.prototype.toString):
3908         * ArrayLangRI/Func.js: Added.
3909         (Func):
3910         (Func.prototype.get name):
3911         (Func.prototype.get returnType):
3912         (Func.prototype.get typeParameters):
3913         (Func.prototype.get parameters):
3914         (Func.prototype.get parameterTypes):
3915         (Func.prototype.get kind):
3916         (Func.prototype.toString):
3917         * ArrayLangRI/FuncDef.js: Added.
3918         (FuncDef):
3919         (FuncDef.prototype.get origin):
3920         (FuncDef.prototype.toString):
3921         * ArrayLangRI/FuncInstantiator.js: Added.
3922         (FuncInstantiator):
3923         (FuncInstantiator.prototype.getUnique):
3924         * ArrayLangRI/FuncParameter.js: Added.
3925         (FuncParameter):
3926         (FuncParameter.prototype.get origin):
3927         (FuncParameter.prototype.get name):
3928         (FuncParameter.prototype.get type):
3929         (FuncParameter.prototype.toString):
3930         * ArrayLangRI/FuncSignature.js: Added.
3931         * ArrayLangRI/FunctionLikeBlock.js: Added.
3932         (FunctionLikeBlock):
3933         (FunctionLikeBlock.prototype.get origin):
3934         (FunctionLikeBlock.prototype.get argumentList):
3935         (FunctionLikeBlock.prototype.get parameters):
3936         (FunctionLikeBlock.prototype.get body):
3937         (FunctionLikeBlock.prototype.toString):
3938         * ArrayLangRI/Inline.js: Added.
3939         (inline):
3940         (_inlineFunction):
3941         (resolveInlinedFunction):
3942         * ArrayLangRI/Inliner.js: Added.
3943         (Inliner):
3944         (Inliner.prototype.visitCallExpression):
3945         * ArrayLangRI/InstantiateImmediates.js: Added.
3946         (InstantiateImmediates.prototype.visitTypeRef):
3947         (InstantiateImmediates.prototype.visitReferenceType):
3948         (InstantiateImmediates.prototype.visitStructType):
3949         (InstantiateImmediates.prototype.visitNativeType):
3950         (InstantiateImmediates.prototype.visitTypeVariable):
3951         (InstantiateImmediates):
3952         * ArrayLangRI/IntLiteral.js: Added.
3953         (IntLiteral):
3954         (IntLiteral.prototype.get value):
3955         (IntLiteral.prototype.get isConstexpr):
3956         (IntLiteral.prototype.toString):
3957         * ArrayLangRI/Intrinsics.js: Added.
3958         (Intrinsics):
3959         (Intrinsics.prototype.add):
3960         * ArrayLangRI/Lexer.js: Added.
3961         (Lexer):
3962         (Lexer.prototype.get lineNumber):
3963         (Lexer.prototype.get origin):
3964         (Lexer.prototype.get originString):
3965         (Lexer.prototype.lineNumberForIndex):
3966         (Lexer.prototype.get state):
3967         (Lexer.prototype.set state):
3968         (Lexer.prototype.next):
3969         * ArrayLangRI/LexerToken.js: Added.
3970         (LexerToken):
3971         (LexerToken.prototype.get kind):
3972         (LexerToken.prototype.get text):
3973         (LexerToken.prototype.get origin):
3974         (LexerToken.prototype.get index):
3975         (LexerToken.prototype.get lineNumber):
3976         (LexerToken.prototype.get originString):
3977         (LexerToken.prototype.toString):
3978         * ArrayLangRI/NameContext.js: Added.
3979         (isWildcardKind):
3980         (NameContext):
3981         (NameContext.prototype.mapFor):
3982         (NameContext.prototype.add):
3983         (NameContext.get currentStatement):
3984         (NameContext.get intrinsics):
3985         (NameContext.set program):
3986         (NameContext.get program):
3987         (NameContext.prototype.get let):
3988         * ArrayLangRI/NameResolver.js: Added.
3989         (NameResolver):
3990         (NameResolver.prototype.visitProgram):
3991         (NameResolver.prototype._visitTypeParametersAndBuildNameContext):
3992         (NameResolver.prototype.visitFunc):
3993         (NameResolver.prototype.visitFuncDef):
3994         (NameResolver.prototype.visitBlock):
3995         (NameResolver.prototype.visitProtocolDecl):
3996         (NameResolver.prototype.visitTypeDef):
3997         (NameResolver.prototype.visitStructType):
3998         (NameResolver.prototype._resolveTypeArguments):
3999         (NameResolver.prototype.visitTypeRef):
4000         (NameResolver.prototype.visitReferenceType):
4001         (NameResolver.prototype.visitVariableRef):
4002         (NameResolver.prototype.visitReturn):
4003         (NameResolver.prototype.visitCallExpression):
4004         * ArrayLangRI/NativeFunc.js: Added.
4005         (NativeFunc):
4006         (NativeFunc.prototype.get origin):
4007         (NativeFunc.prototype.get isNative):
4008         (NativeFunc.prototype.toString):
4009         * ArrayLangRI/NativeType.js: Added.
4010         (NativeType):
4011         (NativeType.prototype.get origin):
4012         (NativeType.prototype.get name):
4013         (NativeType.prototype.get isPrimitive):
4014         (NativeType.prototype.get typeParameters):
4015         (NativeType.prototype.get isNative):
4016         (NativeType.prototype.instantiate):
4017         (NativeType.prototype.toString):
4018         * ArrayLangRI/NativeTypeInstance.js: Added.
4019         (NativeTypeInstance):
4020         (NativeTypeInstance.prototype.get type):
4021         (NativeTypeInstance.prototype.get typeArguments):
4022         (NativeTypeInstance.prototype.get isPrimitive):
4023         (NativeTypeInstance.prototype.get isNative):
4024         (NativeTypeInstance.prototype.unifyImpl):
4025         (NativeTypeInstance.prototype.toString):
4026         * ArrayLangRI/Node.js: Added.
4027         (Node.prototype.visit):
4028         (Node.unify):
4029         (Node.prototype.unifyImpl):
4030         (Node.prototype.typeVariableUnify):
4031         (Node.prototype.get unifyNode):
4032         (Node.prototype.get isUnifiable):
4033         (Node.prototype.get isNative):
4034         (Node.prototype.equals):
4035         (Node.prototype.substitute):
4036         (Node.prototype.substituteToUnification):
4037         (Node):
4038         * ArrayLangRI/NullType.js: Added.
4039         (NullType):
4040         * ArrayLangRI/Parse.js: Added.
4041         (genericConsume):
4042         (consume):
4043         (genericTest):
4044         (test):
4045         (tryConsumeKind):
4046         (parseProtocolRef):
4047         (consumeEndOfTypeArgs):
4048         (parseTypeParameters):
4049         (parseTerm):
4050         (parseConstexpr):
4051         (parseTypeArguments):
4052         (parseType.getAddressSpace):
4053         (parseType):
4054         (parseTypeDef):
4055         (parseNative):
4056         (genericParseLeft):
4057         (parseLeftOperatorCall):
4058         (parsePossibleSuffix):
4059         (parsePossiblePrefix):
4060         (parsePossibleProduct):
4061         (parsePossibleSum):
4062         (parsePossibleShift):
4063         (parsePossibleRelationalInequality):
4064         (parsePossibleRelationalEquality):
4065         (parsePossibleBitwiseXor):
4066         (parsePossibleBitwiseOr):
4067         (parseLeftLogicalExpression):
4068         (parsePossibleLogicalOr):
4069         (parsePossibleTernaryConditional):
4070         (parsePossibleAssignment):
4071         (parseAssignment):
4072         (parseEffectfulExpression):
4073         (genericParseCommaExpression):
4074         (parseCommaExpression):
4075         (parseExpression):
4076         (parseEffectfulStatement):
4077         (parseReturn):
4078         (parseVariableDecls):
4079         (parseStatement):
4080         (parseBlock):
4081         (parseParameter):
4082         (parseFuncName):
4083         (parseFuncDef):
4084         (parse):
4085         * ArrayLangRI/Prepare.js: Added.
4086         (prepare):
4087         * ArrayLangRI/Program.js: Added.
4088         (Program):
4089         (Program.prototype.get topLevelStatements):
4090         (Program.prototype.get functions):
4091         (Program.prototype.get types):
4092         (Program.prototype.get funcInstantiator):
4093         (Program.prototype.add):
4094         (Program.prototype.resolveFuncOverload):
4095         (Program.prototype.get nameContext):
4096         (Program.prototype.toString):
4097         * ArrayLangRI/Protocol.js: Added.
4098         (Protocol):
4099         (Protocol.prototype.get origin):
4100         (Protocol.prototype.get name):
4101         (Protocol.prototype.get kind):
4102         (Protocol.prototype.toString):
4103         * ArrayLangRI/ProtocolDecl.js: Added.
4104         (ProtocolDecl):
4105         (ProtocolDecl.prototype.addSignature):
4106         (ProtocolDecl.prototype.get signatures):
4107         (ProtocolDecl.prototype.signaturesByName):
4108         (ProtocolDecl.prototype.get typeVariable):
4109         (ProtocolDecl.prototype.signaturesByNameWithTypeVariable):
4110         (ProtocolDecl.prototype.inherits):
4111         (ProtocolDecl.prototype.hasHeir):
4112         (ProtocolDecl.prototype.toString):
4113         * ArrayLangRI/ProtocolRef.js: Added.
4114         (ProtocolRef):
4115         (ProtocolRef.prototype.inherits):
4116         (ProtocolRef.prototype.hasHeir):
4117         * ArrayLangRI/PtrType.js: Added.
4118         (PtrType.prototype.unifyImpl):
4119         (PtrType.prototype.toString):
4120         (PtrType):
4121         * ArrayLangRI/ReferenceType.js: Added.
4122         (ReferenceType):
4123         (ReferenceType.prototype.get origin):
4124         (ReferenceType.prototype.get addressSpace):
4125         (ReferenceType.prototype.get elementType):
4126         (ReferenceType.prototype.get isPrimitive):
4127         (ReferenceType.prototype.get size):
4128         * ArrayLangRI/ResolveNames.js: Added.
4129         (resolveNames):
4130         * ArrayLangRI/ResolveOverloadImpl.js: Added.
4131         (resolveOverloadImpl):
4132         * ArrayLangRI/ResolveTypeDefs.js: Added.
4133         (resolveTypeDefs):
4134         * ArrayLangRI/Return.js: Added.
4135         (Return):
4136         (Return.prototype.get origin):
4137         (Return.prototype.get value):
4138         (Return.prototype.toString):
4139         * ArrayLangRI/ReturnException.js: Added.
4140         (ReturnException):
4141         (ReturnException.prototype.get value):
4142         * ArrayLangRI/Rewriter.js: Added.
4143         (Rewriter):
4144         (Rewriter.prototype._map):
4145         (Rewriter.prototype._getMapping):
4146         (Rewriter.prototype.visitFunc):
4147         (Rewriter.prototype.visitFuncParameter):
4148         (Rewriter.prototype.visitBlock):
4149         (Rewriter.prototype.visitCommaExpression):
4150         (Rewriter.prototype.visitProtocolRef):
4151         (Rewriter.prototype.visitTypeRef):
4152         (Rewriter.prototype.visitTypeVariable):
4153         (Rewriter.prototype.visitConstexprTypeParameter):
4154         (Rewriter.prototype.visitField):
4155         (Rewriter.prototype.visitReferenceType):
4156         (Rewriter.visitPtrType):
4157         (Rewriter.prototype.visitArrayRefType):
4158         (Rewriter.prototype.visitArrayType):
4159         (Rewriter.prototype.visitAssignment):
4160         (Rewriter.prototype.visitVariableRef):
4161         (Rewriter.prototype.visitReturn):
4162         (Rewriter.prototype.visitIntLiteral):
4163         (Rewriter.prototype.visitCallExpression):
4164         (Rewriter.prototype.visitFunctionLikeBlock):
4165         * ArrayLangRI/StandardLibrary.js: Added.
4166         * ArrayLangRI/StructType.js: Added.
4167         (StructType):
4168         (StructType.prototype.add):
4169         (StructType.prototype.get name):
4170         (StructType.prototype.get typeParameters):
4171         (StructType.prototype.get fieldNames):
4172         (StructType.prototype.fieldByName):
4173         (StructType.prototype.get fields):
4174         (StructType.prototype.get fieldMap):
4175         (StructType.prototype.get isPrimitive):
4176         (StructType.prototype.instantiate):
4177         (StructType.prototype.toString):
4178         * ArrayLangRI/Substitution.js: Added.
4179         (Substitution):
4180         (Substitution.mapping):
4181         (Substitution.prototype.visitTypeRef):
4182         (Substitution.prototype.visitVariableRef):
4183         * ArrayLangRI/SuffixCallAssignment.js: Added.
4184         (SuffixCallAssignment):
4185         (SuffixCallAssignment.prototype.get name):
4186         (SuffixCallAssignment.prototype.get lhs):
4187         (SuffixCallAssignment.prototype.toString):
4188         * ArrayLangRI/Test.js: Added.
4189         (load):
4190         * ArrayLangRI/Type.js: Added.
4191         (Type.prototype.get typeParameters):
4192         (Type.prototype.get kind):
4193         (Type.prototype.inherits):
4194         (Type.prototype.get instantiatedType):
4195         (Type):
4196         * ArrayLangRI/TypeDef.js: Added.
4197         (TypeDef):
4198         (TypeDef.prototype.get origin):
4199         (TypeDef.prototype.get name):
4200         (TypeDef.prototype.get typeParameters):
4201         (TypeDef.prototype.get type):
4202         * ArrayLangRI/TypeDefResolver.js: Added.
4203         (TypeDefResolver):
4204         (TypeDefResolver.prototype.visitTypeRef):
4205         * ArrayLangRI/TypeOrVariableRef.js: Added.
4206         (TypeOrVariableRef):
4207         (TypeOrVariableRef.prototype.get origin):
4208         (TypeOrVariableRef.prototype.get name):
4209         (TypeOrVariableRef.prototype.toString):