/
ChangeLog
4021 lines (3076 loc) · 165 KB
/
ChangeLog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
2012-06-21 Mario Sanchez Prada <msanchez@igalia.com>
[GTK] Add support for window.showModalDialog in WebKit2GTK+
https://bugs.webkit.org/show_bug.cgi?id=79500
Reviewed by Carlos Garcia Campos.
Implement runModal in WebKitUIClient to make the WebKitWebView
emit a 'run-as-modal' signal when requested, creating a new
mainloop there to block user interaction with the original window
while the modal dialog is showing.
* UIProcess/API/gtk/WebKitUIClient.cpp:
(runModal): Call to the new webkitWebViewRunAsModalPage function.
(attachUIClientToView): Add runModal.
* UIProcess/API/gtk/WebKitWebView.cpp:
(_WebKitWebViewPrivate): Add an atribute for a new main loop.
(webkitWebViewFinalize): Make sure the main loop for main dialogs,
if any, is stopped if it was still running.
(webkit_web_view_class_init): Declare new signal 'run-as-modal'.
(webkitWebViewRunAsModal): Emit the 'run-as-modal' signal and, if
handled, create and run a new main loop.
* UIProcess/API/gtk/WebKitWebView.h:
(_WebKitWebViewClass): New handler for the 'run-as-modal' signal.
* UIProcess/API/gtk/WebKitWebViewPrivate.h: Add webkitWebViewRunAsModalPage.
Allow setting and getting the value of WebPage's canRunModal
attribute in the WebProcess from the UIProcess after the creation
of a WebPage, to allow using it from WebKitWebView to allow the
client application to decide whether to allow create modal
dialogs, which would result in launching an additional nested
event loop in the web process, after creating the dialog.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::WebPageProxy): Initialize the new
m_canRunModal attribute, to cache the current status of the
WebPage in the WebProcess.
(WebKit::WebPageProxy::initializeUIClient): Call the new function
setCanRunModal, instead of manually sending the SetCanRunModal message.
(WebKit::WebPageProxy::creationParameters): Use m_canRunModal
instead of m_uiClient.canRunModal when preparing the parameters.
(WebKit::WebPageProxy::setCanRunModal): New public function, it
sets the value of m_canRunModal and sends a message to the Web
process for updating the WebPage, whenever possible.
(WebKit::WebPageProxy::canRunModal): New public function, returns
the value of the m_canRunModal attribute.
* UIProcess/WebPageProxy.h:
(WebPageProxy): Added new public functions and private attribute.
New property in WebKitSettings to be able to decide whether it is
allowed to create and run new child webviews as modal dialogs.
* UIProcess/API/gtk/WebKitSettings.cpp:
(_WebKitSettingsPrivate): New attribute allowModalDialogs.
(webKitSettingsSetProperty): Handle the new property.
(webKitSettingsGetProperty): Ditto.
(webkit_settings_class_init): Install the new property.
(webkitSettingsAttachSettingsToPage): Make sure the WebPage is
initialized with the value of the new property.
(webkit_settings_set_allow_modal_dialogs): New setter.
(webkit_settings_get_allow_modal_dialogs): New getter.
* UIProcess/API/gtk/WebKitSettings.h:
* UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Added new accessors.
Connect to the 'notify::allow-modal-dialogs' signal from
WebKitSettings to ensure that canRunModal property of the WebPage
is kept up to date. Ensure that signal handlers for monitoring
settings are disconnected when the webview is finalized.
* UIProcess/API/gtk/WebKitWebView.cpp:
(webkitWebViewSetSettings): Connect to the new signal
'notify::allow-modal-dialogs', from WebKitSettings.
(allowModalDialogsChanged): Callback to update WebPage's
canRunModal property when updated through WebKitSettings.
(webkitWebViewDisconnectSettingsSignalHandlers): Disconnect signal
handlers for monitoring WebKitSettings properties.
(webkitWebViewFinalize): Ensure signal handlers are disconnected.
(webkit_web_view_set_settings): Ditto.
* UIProcess/API/gtk/WebKitWebView.h:
Add new unit tests to check the 'run-as-modal' signal is emitted
only when the new property in WebKitSettings is set to TRUE.
* UIProcess/API/gtk/tests/TestWebKitWebView.cpp:
(testWebViewAllowModalDialogs): New unit test to check that modal
dialogs are properly created from JavaScript when allowed.
(testWebViewDisallowModalDialogs): New unit test to check that
it's not possible to create modal dialogs when not allowed.
(beforeAll): Add the new unit test.
2012-06-20 Thiago Marcos P. Santos <thiago.santos@intel.com>
[WK2] Color chooser API missing
https://bugs.webkit.org/show_bug.cgi?id=87495
Reviewed by Andreas Kling.
Added ColorChooser API to WebKit2. This API allows the
embedder to define a custom color picker for <input type="color">.
Only one ColorChooser can be active for a page at a time. Although
the implementation doesn't not assume a modal dialog, no other
color chooser will be created until the active one is closed.
Also added stubs for all platforms, so it wont break the build when
enabling color chooser, even though they don't have the backend
implemented yet.
* CMakeLists.txt:
* GNUmakefile.list.am:
* Target.pri:
* UIProcess/API/efl/PageClientImpl.cpp:
(WebKit):
(WebKit::PageClientImpl::createColorChooserProxy):
* UIProcess/API/efl/PageClientImpl.h:
(PageClientImpl):
* UIProcess/API/gtk/PageClientImpl.cpp:
(WebKit):
(WebKit::PageClientImpl::createColorChooserProxy):
* UIProcess/API/gtk/PageClientImpl.h:
(PageClientImpl):
* UIProcess/API/mac/PageClientImpl.h:
(PageClientImpl):
* UIProcess/API/mac/PageClientImpl.mm:
(WebKit):
(WebKit::PageClientImpl::createColorChooserProxy):
* UIProcess/PageClient.h:
(WebKit):
(PageClient):
* UIProcess/WebColorChooserProxy.h: Added.
(WebCore):
(WebKit):
(WebColorChooserProxy):
(Client):
(WebKit::WebColorChooserProxy::Client::~Client):
(WebKit::WebColorChooserProxy::~WebColorChooserProxy):
(WebKit::WebColorChooserProxy::invalidate):
(WebKit::WebColorChooserProxy::WebColorChooserProxy):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::close):
(WebKit):
(WebKit::WebPageProxy::showColorChooser):
(WebKit::WebPageProxy::setColorChooserColor):
(WebKit::WebPageProxy::endColorChooser):
(WebKit::WebPageProxy::didChooseColor):
(WebKit::WebPageProxy::didEndColorChooser):
(WebKit::WebPageProxy::processDidCrash):
* UIProcess/WebPageProxy.h:
(WebPageProxy):
* UIProcess/WebPageProxy.messages.in:
* UIProcess/qt/QtPageClient.cpp:
(WebKit):
(WebKit::QtPageClient::createColorChooserProxy):
* UIProcess/qt/QtPageClient.h:
(QtPageClient):
* UIProcess/win/WebView.cpp:
(WebKit):
(WebKit::WebView::createColorChooserProxy):
* UIProcess/win/WebView.h:
(WebView):
* WebKit2.xcodeproj/project.pbxproj:
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::createColorChooser):
* WebProcess/WebCoreSupport/WebColorChooser.cpp: Added.
(WebKit):
(WebKit::WebColorChooser::WebColorChooser):
(WebKit::WebColorChooser::~WebColorChooser):
(WebKit::WebColorChooser::didChooseColor):
(WebKit::WebColorChooser::didEndChooser):
(WebKit::WebColorChooser::disconnectFromPage):
(WebKit::WebColorChooser::setSelectedColor):
(WebKit::WebColorChooser::endChooser):
* WebProcess/WebCoreSupport/WebColorChooser.h: Added.
(WebCore):
(WebKit):
(WebColorChooser):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::WebPage):
(WebKit::WebPage::close):
(WebKit):
(WebKit::WebPage::setActiveColorChooser):
(WebKit::WebPage::didEndColorChooser):
(WebKit::WebPage::didChooseColor):
* WebProcess/WebPage/WebPage.h:
(WebKit):
(WebPage):
(WebKit::WebPage::activeColorChooser):
* WebProcess/WebPage/WebPage.messages.in:
* win/WebKit2.vcproj:
2012-06-20 Brady Eidson <beidson@apple.com>
<rdar://problem/11653784> and https://bugs.webkit.org/show_bug.cgi?id=89590
showModalDialog message handling is flaky in WebKit2
Because RunLoop::performWork() swaps the function queue to a temporary Vector before calling
the functions an inner run-loop - such as we see with running a modal dialog - does not have
a change to handle any of the functions that were queued after the WebPageProxy::RunModal message.
By servicing the functions in the queue one at a time we can give the RunLoop a chance to pick up
where it left off if RunLoop::performWork is re-entered.
To guarantee RunLoop::performWork is re-entered to handle those functions we also need to signal
its source before entering the modal run loop so our RunLoop is woken up.
Reviewed by Darin Adler.
* Platform/CoreIPC/Connection.cpp:
(CoreIPC::Connection::wakeUpRunLoop): Added so the WebPageProxy can signal the runloop to be woken up
before it enters the modal dialog run loop.
* Platform/CoreIPC/Connection.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::runModal): Call wakeUpRunLoop() before entering the modal dialog run loop.
2012-06-20 Julien Chaffraix <jchaffraix@webkit.org>
Use IntSize in RenderLayer to represent scroll offsets
https://bugs.webkit.org/show_bug.cgi?id=89154
Reviewed by Eric Seidel.
* WebProcess/WebPage/win/WebPageWin.cpp:
(WebKit::WebPage::gestureDidScroll):
Updated to pass an IntSize to scrollByRecursively.
2012-06-20 Christophe Dumez <christophe.dumez@intel.com>
[WK2] Implement Web Intent delivery
https://bugs.webkit.org/show_bug.cgi?id=88989
Reviewed by Anders Carlsson.
Add a deliverIntent() method to the WebFrame so that
Web intents can be delivered once matched to a
specific service.
* UIProcess/WebFrameProxy.cpp:
(WebKit):
(WebKit::WebFrameProxy::deliverIntent):
* UIProcess/WebFrameProxy.h:
(WebKit):
(WebFrameProxy):
* UIProcess/WebIntentData.h:
(WebKit::WebIntentData::store):
* WebProcess/WebPage/WebFrame.cpp:
(WebKit):
(WebKit::WebFrame::deliverIntent):
* WebProcess/WebPage/WebFrame.h:
(WebKit):
(WebFrame):
* WebProcess/WebPage/WebPage.cpp:
(WebKit):
(WebKit::WebPage::deliverIntentToFrame):
* WebProcess/WebPage/WebPage.h:
(WebKit):
(WebPage):
* WebProcess/WebPage/WebPage.messages.in:
2012-06-20 Alexis Menard <alexis.menard@openbossa.org>
REGRESSION (120705) : LayerTreeHostQt asserts in debug.
https://bugs.webkit.org/show_bug.cgi?id=89487
Reviewed by Noam Rosenthal.
We try to call createHandle twice on the same handle when the
first matching atlas is full. This patch solved the problem by
moving the createHandle call inside UpdateAtlas and call createHandle
only when the atlas is not full. We can also remove the surface()
getter as it is not used anymore.
* WebProcess/WebPage/UpdateAtlas.cpp:
(WebKit::UpdateAtlas::beginPaintingOnAvailableBuffer):
* WebProcess/WebPage/UpdateAtlas.h:
(UpdateAtlas):
* WebProcess/WebPage/qt/LayerTreeHostQt.cpp:
(WebKit::LayerTreeHostQt::beginContentUpdate):
2012-06-19 Ryuan Choi <ryuan.choi@samsung.com>
[EFL][Regression] Build break after r120786
https://bugs.webkit.org/show_bug.cgi?id=89549
Unreviewed build fix for Efl port.
* CMakeLists.txt: Added disassembler in includes.
2012-06-19 Dan Bernstein <mitz@apple.com>
WebKit2 part of: Paginated display API doesn’t allow setting the page progression direction
https://bugs.webkit.org/show_bug.cgi?id=89394
Reviewed by Darin Adler.
* UIProcess/API/C/WKPage.cpp:
(WKPageSetPaginationMode): Changed to map new WKPaginationMode values to new
Pagination::Mode values.
(WKPageGetPaginationMode): Similarly, in the opposite direction.
* UIProcess/API/C/WKPagePrivate.h: Replaced WKPaginationMode values with ones that specify
an axis and a direction along that axis.
* UIProcess/API/mac/WKBrowsingContextController.mm:
(-[WKBrowsingContextController setPaginationMode:]): Changed to handle new values.
(-[WKBrowsingContextController paginationMode]): Ditto.
* UIProcess/API/mac/WKBrowsingContextControllerPrivate.h: Replaced
WKBrowsingContextPaginationMode values with ones that specify an axis and a direction along
that axis.
2012-06-19 Alexis Menard <alexis.menard@openbossa.org>
[Qt] Create an extra atlas when there is no available buffer space.
https://bugs.webkit.org/show_bug.cgi?id=89012
Reviewed by Noam Rosenthal.
In case of the desktop mode when we scroll the view all the tiles
are updated. It can happen that there no available buffer space for
the currently used atlas(especially when scrolling fast). In that case
we can create a new one. One future improvement could be to make a timer and
delete this extra atlas when it is not used.
* WebProcess/WebPage/qt/LayerTreeHostQt.cpp:
(WebKit::beginContentUpdateInAtlas):
(WebKit::LayerTreeHostQt::beginContentUpdate):
* WebProcess/WebPage/qt/LayerTreeHostQt.h:
(LayerTreeHostQt):
2012-06-19 Csaba Osztrogonác <ossy@webkit.org>
[Qt] Buildfix for newer Qt5, use QPointer instead of the deprecated QWeakPointer.
https://bugs.webkit.org/show_bug.cgi?id=89449
Reviewed by Simon Hausmann.
* UIProcess/API/qt/qquicknetworkreply_p.h:
2012-06-19 Mike West <mkwst@chromium.org>
Introduce ENABLE_CSP_NEXT configuration flag.
https://bugs.webkit.org/show_bug.cgi?id=89300
Reviewed by Adam Barth.
The 1.0 draft of the Content Security Policy spec is just about to
move to Last Call. We'll hide work on the upcoming 1.1 spec behind
this ENABLE flag, disabled by default.
Spec: https://dvcs.w3.org/hg/content-security-policy/raw-file/tip/csp-specification.dev.html
* Configurations/FeatureDefines.xcconfig:
2012-06-19 Mike West <mkwst@chromium.org>
Add a scheme registry for bypassing Content Security Policy.
https://bugs.webkit.org/show_bug.cgi?id=89373
Reviewed by Adam Barth.
* win/WebKit2.def:
* win/WebKit2CFLite.def:
2012-06-16 Adam Barth <abarth@webkit.org>
Settings::devicePixelRatio doesn't do anything and is confusing
https://bugs.webkit.org/show_bug.cgi?id=89272
Reviewed by James Robinson.
* Shared/WebPreferencesStore.h:
(WebKit):
- Remove boilerplate code for the setting.
* UIProcess/API/qt/qquickwebview.cpp:
(QQuickWebViewExperimental::devicePixelRatio):
(QQuickWebViewExperimental::setDevicePixelRatio):
- Change these functions to get and set the real device scale factor.
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::sendViewportAttributesChanged):
- Use the real device scale factor for the viewport calculation.
(WebKit::WebPage::updatePreferences):
- Remove boilerplate code for the setting.
2012-06-15 Christophe Dumez <christophe.dumez@intel.com>
[WK2] Add support for explicit intents
https://bugs.webkit.org/show_bug.cgi?id=89206
Reviewed by Kenneth Rohde Christiansen.
Expose the service URL of a Web Intent. This URL
is set for explicit intents.
* Shared/IntentData.h:
(IntentData):
* UIProcess/WebIntentData.h:
(WebKit::WebIntentData::service):
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchIntent):
2012-06-15 Christophe Dumez <christophe.dumez@intel.com>
[EFL][WK2] Add title support to Ewk_View
https://bugs.webkit.org/show_bug.cgi?id=89095
Reviewed by Kenneth Rohde Christiansen.
Add a method to get the title of the main frame in
an Ewk_View. A "title,changed" signal is now emitted
on the view to notify clients that the main frame
title was changed.
* PlatformEfl.cmake:
* UIProcess/API/efl/ewk_view.cpp:
(_Ewk_View_Private_Data):
(_ewk_view_priv_del):
(ewk_view_base_add):
(ewk_view_title_get):
(ewk_view_title_changed):
* UIProcess/API/efl/ewk_view.h:
* UIProcess/API/efl/ewk_view_loader_client.cpp: Added.
(didReceiveTitleForFrame):
(ewk_view_loader_client_attach):
* UIProcess/API/efl/ewk_view_loader_client_private.h: Added.
* UIProcess/API/efl/ewk_view_private.h:
2012-06-15 Christophe Dumez <christophe.dumez@intel.com>
[WK2][EFL] Implement navigation back/forward in Ewk_View
https://bugs.webkit.org/show_bug.cgi?id=89173
Reviewed by Kenneth Rohde Christiansen.
Add API for Ewk_View to ask the main frame to navigate backwards
or forwards in history. Also add API to query if such navigation
is possible.
* UIProcess/API/efl/ewk_view.cpp:
(ewk_view_back):
(ewk_view_forward):
(ewk_view_back_possible):
(ewk_view_forward_possible):
* UIProcess/API/efl/ewk_view.h:
2012-06-15 Christophe Dumez <christophe.dumez@intel.com>
[EFL][WK2] Implement reload / stop in Ewk_View
https://bugs.webkit.org/show_bug.cgi?id=89168
Reviewed by Kenneth Rohde Christiansen.
Add API on the Ewk_View to reload the main frame
and to stop the current load.
* UIProcess/API/efl/ewk_view.cpp:
(ewk_view_reload):
(ewk_view_stop):
* UIProcess/API/efl/ewk_view.h:
2012-06-14 Kent Tamura <tkent@chromium.org>
Validate form state strings in FormController::setStateForNewFormElements()
https://bugs.webkit.org/show_bug.cgi?id=88768
Reviewed by Hajime Morita.
* win/WebKit2.def: Expose some symbols used by Internals.cpp.
* win/WebKit2CFLite.def: ditto.
2012-06-14 Tim Horton <timothy_horton@apple.com>
DrawingArea: Painting is being resumed while the view is not visible
https://bugs.webkit.org/show_bug.cgi?id=88940
<rdar://problem/11652545>
Reviewed by Dean Jackson.
Using requestAnimationFrame and the fullscreen API on a DrawingArea-backed window would cause
rAF to permanently suspend animations after entering full-screen mode, because of the following:
0. JavaScript causes fullscreen transition to start.
1. Painting (and rAF) are suspended.
2. The page changes size.
a. DrawingAreaProxyImpl::sizeDidChange() calls DrawingAreaImpl::updateBackingStoreState, which calls DrawingAreaImpl::resumePainting.
b. DrawingAreaImpl::resumePainting resumes painting, but does *not* resume rAF, because windowIsVisible is (legitimately) false.
3. The view becomes visible, windowIsVisible is updated to true.
4. visibilityDidChange() calls resumePainting again, but this time it early exits because painting is not suspended.
Notice that because of the early exit in 4, rAF is never resumed.
To solve this and prevent any further bugs caused by these unnecessary calls to resume/suspendPainting,
temporarily stop sending SuspendPainting/ResumePainting messages from DrawingAreaProxyImpl::visibilityDidChange
during the window animations that occur while entering and exiting full-screen.
* UIProcess/API/mac/WKViewInternal.h:
* UIProcess/API/mac/WKView.mm:
(-[WKView setAutomaticallySuspendAndResumePainting:]):
(-[WKView automaticallySuspendAndResumePainting]):
* UIProcess/DrawingAreaProxyImpl.cpp:
(WebKit::DrawingAreaProxyImpl::visibilityDidChange):
* UIProcess/WebPageProxy.h:
(WebKit::WebPageProxy::setShouldSuspendAndResumePainting):
(WebKit::WebPageProxy::shouldSuspendAndResumePainting):
* UIProcess/mac/WKFullScreenWindowController.mm:
(-[WKFullScreenWindowController enterFullScreen:]):
(-[WKFullScreenWindowController _startEnterFullScreenAnimationWithDuration:]):
2012-06-14 Jia Pu <jpu@apple.com>
Mark text with text alternative with blue underline.
https://bugs.webkit.org/show_bug.cgi?id=83047
Reviewed by Enrica Casucci.
Changes in WebKit2 include implementation of new functions declared in AlternativeTextClient,
and logic for calling Editor::insertDictatedText() instead of Editor::insertText() when there's
alternatives attached to the input string.
* Shared/API/c/WKContextMenuItemTypes.h:
* Shared/API/c/WKSharedAPICast.h:
* Shared/WebCoreArgumentCoders.cpp:
* Shared/WebCoreArgumentCoders.h:
* UIProcess/API/mac/PageClientImpl.h:
* UIProcess/API/mac/PageClientImpl.mm:
(WebKit::PageClientImpl::PageClientImpl):
(WebKit::PageClientImpl::pageClosed):
(WebKit::PageClientImpl::addDictationAlternatives):
(WebKit::PageClientImpl::removeDictationAlternatives):
(WebKit::PageClientImpl::showDictationAlternativeUI):
(WebKit::PageClientImpl::dictationAlternatives):
(WebKit::PageClientImpl::dismissDictationAlternativeUI):
* UIProcess/API/mac/WKView.mm:
(-[WKView insertText:replacementRange:]):
(-[WKView validAttributesForMarkedText]):
(-[WKView handleAcceptedAlternativeText:]):
* UIProcess/API/mac/WKViewInternal.h:
* UIProcess/PageClient.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::showDictationAlternativeUI):
(WebKit::WebPageProxy::dismissDictationAlternativeUI):
(WebKit::WebPageProxy::removeDictationAlternatives):
(WebKit::WebPageProxy::dictationAlternatives):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* UIProcess/mac/CorrectionPanel.mm:
(correctionIndicatorType):
(WebKit::CorrectionPanel::handleAcceptedReplacement):
* UIProcess/mac/WebPageProxyMac.mm:
(WebKit::WebPageProxy::insertDictatedText):
* WebProcess/WebCoreSupport/WebAlternativeTextClient.h:
(WebAlternativeTextClient):
* WebProcess/WebCoreSupport/mac/WebAlternativeTextClient.cpp:
(WebKit::WebAlternativeTextClient::showCorrectionAlternative):
(WebKit::WebAlternativeTextClient::dismissAlternative):
(WebKit::WebAlternativeTextClient::dismissAlternativeSoon):
(WebKit::WebAlternativeTextClient::recordAutocorrectionResponse):
(WebKit::WebAlternativeTextClient::removeDictationAlternatives):
(WebKit::WebAlternativeTextClient::showDictationAlternativeUI):
(WebKit::WebAlternativeTextClient::dismissDictationAlternativeUI):
(WebKit::WebAlternativeTextClient::dictationAlternatives):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
* WebProcess/WebPage/mac/WebPageMac.mm:
(WebKit::WebPage::insertDictatedText):
2012-06-13 Andreas Kling <kling@webkit.org>
Chinese IM receives incorrect/duplicated key events in text fields in webpages in Safari.
<http://webkit.org/b/89048>
<rdar://problem/11449702>
Reviewed by Darin Adler.
Send the DidReceiveEvent message with the DispatchMessageEvenWhenWaitingForSyncReply flag
for keyboard events. This ensures that it always arrives before the corresponding synchronous
InterpretQueuedKeyEvent message.
The problem was that we relied on DidReceiveEvent / InterpretQueuedKeyEvent always arriving in
the same order they were sent. This was not always true, since DidReceiveEvent (async) would
get deferred during an unrelated waitForSyncReply() whereas InterpretQueuedKeyEvent (sync)
gets dispatched right away.
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::keyEvent):
2012-06-14 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] Add input methods submenu item to the default context menu for editable content
https://bugs.webkit.org/show_bug.cgi?id=80600
Reviewed by Martin Robinson.
* GNUmakefile.am: Add new files to compilation.
* UIProcess/API/gtk/WebKitContextMenuClient.cpp: Added.
(getContextMenuFromProposedMenu): Call webkitWebViewContextMenu().
(attachContextMenuClientToView): Add implementation for
getContextMenuFromProposedMenu callback.
* UIProcess/API/gtk/WebKitContextMenuClient.h: Added.
* UIProcess/API/gtk/WebKitWebView.cpp:
(webkitWebViewConstructed): Attach context menu client to view.
(webkitWebViewCreateAndAppendDefaultMenuItems): Helper function to
add default context menu items to the new context menu items vector.
(webkitWebViewShouldShowInputMethodsMenu): Helper function to
check whether to show the input methods submenu according to the
gtk-show-input-method-menu GTK+ setting.
(webkitWebViewCreateAndAppendInputMethodsMenuItem): Helper
function to add input methods submenu to the new context menu
items vector.
(webkitWebViewContextMenu): Create a new context menu items vector
containing default items and input methods submenu in case of
editable content. The active content menu is populated using that
new vector.
* UIProcess/API/gtk/WebKitWebViewBase.cpp:
(webkitWebViewBaseSetActiveContextMenu): Set the active context menu.
(webkitWebViewBaseGetActiveContextMenu): Get the active context menu.
* UIProcess/API/gtk/WebKitWebViewBasePrivate.h:
* UIProcess/API/gtk/WebKitWebViewPrivate.h:
* UIProcess/gtk/WebContextMenuProxyGtk.cpp:
(WebKit::WebContextMenuProxyGtk::append): Helper method to add a
new item to the context menu.
(WebKit::WebContextMenuProxyGtk::populate): Add items to the
context menu.
(WebKit::WebContextMenuProxyGtk::showContextMenu): Populate the
menu with the given items and popup the menu if it's not empty.
(WebKit::WebContextMenuProxyGtk::hideContextMenu): Get the GtkMenu
from the WebCore ContextMenu to popdown it.
(WebKit::WebContextMenuProxyGtk::WebContextMenuProxyGtk): Call
webkitWebViewBaseSetActiveContextMenu() to set the menu as the current
active one for the view.
(WebKit::WebContextMenuProxyGtk::~WebContextMenuProxyGtk): Call
webkitWebViewBaseSetActiveContextMenu() with NULL to reset the
current active context of the view. GtkMenu is destroyed by
WebCore ContextMenu in its destructor.
* UIProcess/gtk/WebContextMenuProxyGtk.h:
2012-06-14 Christophe Dumez <christophe.dumez@intel.com>
[WK2] Add implementation for registerIntentService in WebFrameLoaderClient
https://bugs.webkit.org/show_bug.cgi?id=88399
Reviewed by Kenneth Rohde Christiansen.
Add implementation for registerIntentService() in
WebFrameLoaderClient.
* CMakeLists.txt:
* GNUmakefile.list.am:
* Shared/API/c/WKBase.h:
* Shared/APIClientTraits.h:
* Shared/APIObject.h:
* Shared/IntentServiceInfo.cpp: Added.
(WebKit):
(WebKit::IntentServiceInfo::encode):
(WebKit::IntentServiceInfo::decode):
* Shared/IntentServiceInfo.h: Added.
(CoreIPC):
(WebKit):
(IntentServiceInfo):
* Target.pri:
* UIProcess/API/C/WKAPICast.h:
(WebKit):
* UIProcess/API/C/WKPage.h:
* UIProcess/API/gtk/WebKitLoaderClient.cpp:
(attachLoaderClientToView):
* UIProcess/WebIntentServiceInfo.cpp: Added.
(WebKit):
(WebKit::WebIntentServiceInfo::WebIntentServiceInfo):
* UIProcess/WebIntentServiceInfo.h: Added.
(WebKit):
(WebIntentServiceInfo):
(WebKit::WebIntentServiceInfo::create):
(WebKit::WebIntentServiceInfo::~WebIntentServiceInfo):
(WebKit::WebIntentServiceInfo::action):
(WebKit::WebIntentServiceInfo::payloadType):
(WebKit::WebIntentServiceInfo::href):
(WebKit::WebIntentServiceInfo::title):
(WebKit::WebIntentServiceInfo::disposition):
(WebKit::WebIntentServiceInfo::type):
* UIProcess/WebLoaderClient.cpp:
(WebKit):
(WebKit::WebLoaderClient::registerIntentServiceForFrame):
* UIProcess/WebLoaderClient.h:
(WebKit):
(WebLoaderClient):
* UIProcess/WebPageProxy.cpp:
(WebKit):
(WebKit::WebPageProxy::registerIntentServiceForFrame):
* UIProcess/WebPageProxy.h:
(WebKit):
(WebPageProxy):
* UIProcess/WebPageProxy.messages.in:
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit):
(WebKit::WebFrameLoaderClient::registerIntentService):
* WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
(WebFrameLoaderClient):
2012-06-14 Carlos Garcia Campos <cgarcia@igalia.com>
[WK2] Add WKHitTestResultIsContentEditable()
https://bugs.webkit.org/show_bug.cgi?id=80597
Reviewed by Martin Robinson.
* Shared/WebHitTestResult.cpp:
(WebKit::WebHitTestResult::Data::encode): Encode isContentEditable.
(WebKit::WebHitTestResult::Data::decode): Decode isContentEditable.
* Shared/WebHitTestResult.h:
(Data): Add isContentEditable.
(WebKit::WebHitTestResult::Data::Data): Initialize
isContentEditable.
(WebKit::WebHitTestResult::isContentEditable): Returns whether
hit test result target is editable content.
* UIProcess/API/C/WKHitTestResult.cpp:
(WKHitTestResultIsContentEditable): C API to get whether hit test
result target is editable content.
* UIProcess/API/C/WKHitTestResult.h:
* UIProcess/API/gtk/WebKitHitTestResult.cpp:
(webkitHitTestResultCreate): Add
WEBKIT_HIT_TEST_RESULT_CONTEXT_EDITABLE flags to the context if
hit test result target is editable content.
(webkit_hit_test_result_context_is_editable): Returns TRUE if
WEBKIT_HIT_TEST_RESULT_CONTEXT_EDITABLE flags is present in
context.
* UIProcess/API/gtk/WebKitHitTestResult.h:
* UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Add new symbols.
* UIProcess/API/gtk/tests/TestWebKitWebView.cpp:
(testWebViewMouseTarget): Add tests for
WEBKIT_HIT_TEST_RESULT_CONTEXT_EDITABLE.
2012-06-14 Grzegorz Czajkowski <g.czajkowski@samsung.com>
[WK2] Fix client interface size for WKPageLoaderClient.
https://bugs.webkit.org/show_bug.cgi?id=88764
Reviewed by Anders Carlsson.
Fixes offset of WKPageLoaderClient for version 0 by adding didDetectXSSForFrame.
The offset should be off the first new callback that was added in the new version.
* Shared/APIClientTraits.cpp:
(WebKit):
2012-06-13 Christophe Dumez <christophe.dumez@intel.com>
[WK2] Add implementation for dispatchIntent in WebFrameLoaderClient
https://bugs.webkit.org/show_bug.cgi?id=88340
Reviewed by Kenneth Rohde Christiansen.
Add implementation for dispatchIntent() in WebFrameLoaderClient.
* CMakeLists.txt:
* GNUmakefile.list.am:
* Shared/API/c/WKBase.h:
* Shared/APIClientTraits.h:
* Shared/APIObject.h:
* Shared/IntentData.cpp: Added.
(WebKit):
(WebKit::IntentData::encode):
(WebKit::IntentData::decode):
* Shared/IntentData.h: Added.
(CoreIPC):
(WebKit):
(IntentData):
* Target.pri:
* UIProcess/API/C/WKAPICast.h:
(WebKit):
* UIProcess/API/C/WKPage.h:
* UIProcess/API/gtk/WebKitLoaderClient.cpp:
(attachLoaderClientToView):
* UIProcess/WebIntentData.cpp: Added.
(WebKit):
(WebKit::WebIntentData::WebIntentData):
(WebKit::WebIntentData::data):
* UIProcess/WebIntentData.h: Added.
(WebKit):
(WebIntentData):
(WebKit::WebIntentData::create):
(WebKit::WebIntentData::~WebIntentData):
(WebKit::WebIntentData::action):
(WebKit::WebIntentData::payloadType):
(WebKit::WebIntentData::extras):
(WebKit::WebIntentData::suggestions):
(WebKit::WebIntentData::type):
* UIProcess/WebLoaderClient.cpp:
(WebKit):
(WebKit::WebLoaderClient::didReceiveIntentForFrame):
* UIProcess/WebLoaderClient.h:
(WebKit):
(WebLoaderClient):
* UIProcess/WebPageProxy.cpp:
(WebKit):
(WebKit::WebPageProxy::didReceiveIntentForFrame):
* UIProcess/WebPageProxy.h:
(WebKit):
(WebPageProxy):
* UIProcess/WebPageProxy.messages.in:
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchIntent):
2012-06-13 Tim Horton <timothy_horton@apple.com>
Rename _swapView:with: to _replaceView:with:
https://bugs.webkit.org/show_bug.cgi?id=89037
Reviewed by Darin Adler.
_swapView:with: is a misnomer - after calling it, the first view is no longer
contained within the view hierarchy. "Replace" is a more accurate term.
* UIProcess/mac/WKFullScreenWindowController.mm:
(-[WKFullScreenWindowController enterFullScreen:]):
(-[WKFullScreenWindowController finishedExitFullScreenAnimation:]):
(-[WKFullScreenWindowController _replaceView:with:]):
2012-06-13 Martin Robinson <mrobinson@igalia.com>
[GTK] Add an accelerated compositing implementation for WebKit2
https://bugs.webkit.org/show_bug.cgi?id=86037
Reviewed by Alejandro G. Castro.
Add an implementation of LayerTreeHost for GTK+ that uses TextureMapperGL.
Later this implementation will fall back to using the ImageBuffer TextureMapper.
* GNUmakefile.am: Add new files to the compilation.
* Shared/LayerTreeContext.h:
(LayerTreeContext): The GTK+ version of the LayerTreeContext just holds window handle.
* Shared/gtk/LayerTreeContextGtk.cpp: Copied from Source/WebKit2/WebProcess/WebPage/LayerTreeHost.cpp.
* WebProcess/WebPage/gtk/LayerTreeHostGtk.h: Added.
* WebProcess/WebPage/gtk/LayerTreeHostGtk.cpp: Added.
Add this LayerTreeHost implementation that just creates a GL context from the widget X11 window ID.
Later implementations might find a more cross-platform solution.
* WebProcess/WebPage/gtk/WebPageGtk.cpp:
(WebKit::WebPage::platformInitialize): Initialize the native window handle to be zero.
(WebKit::WebPage::widgetMapped): When mapping the widget, try to get the native window
handle and send it to the WebProcess.
2012-06-13 Andras Becsi <andras.becsi@nokia.com>
[Qt][WK2] ASSERT(m_rawAttributes.initialScale > 0) in QtViewportHandler::initialRect()
https://bugs.webkit.org/show_bug.cgi?id=89026
Reviewed by Csaba Osztrogonác.
Only act on viewport attribute changes if the layout size is valid.
* UIProcess/qt/QtViewportHandler.cpp:
(WebKit::QtViewportHandler::setInitialScaleIfNeeded):
(WebKit::QtViewportHandler::viewportAttributesChanged):
2012-06-13 Brent Fulgham <bfulgham@webkit.org>
[WinCairo] Build fix after Windows export definition file change.
* win/WebKit2CFLite.def: Add missing symbol exports.
2012-06-13 Allan Sandfeld Jensen <allan.jensen@nokia.com>
[Qt] Fixed visible content rect lost during page-load
https://bugs.webkit.org/show_bug.cgi?id=88991
Reviewed by Kenneth Rohde Christiansen.
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::transitionToCommittedForNewPage):
2012-06-13 Sheriff Bot <webkit.review.bot@gmail.com>
Unreviewed, rolling out r120209.
http://trac.webkit.org/changeset/120209
https://bugs.webkit.org/show_bug.cgi?id=89007
Broke the WebKit2 mac build. (Requested by andersca on
#webkit).
* CMakeLists.txt:
* GNUmakefile.list.am:
* Shared/API/c/WKBase.h:
* Shared/APIClientTraits.h:
* Shared/APIObject.h:
* Shared/IntentData.cpp: Removed.
* Shared/IntentData.h: Removed.
* Target.pri:
* UIProcess/API/C/WKAPICast.h:
(WebKit):
* UIProcess/API/C/WKPage.h:
* UIProcess/API/gtk/WebKitLoaderClient.cpp:
(attachLoaderClientToView):
* UIProcess/WebIntentData.cpp: Removed.
* UIProcess/WebIntentData.h: Removed.
* UIProcess/WebLoaderClient.cpp:
* UIProcess/WebLoaderClient.h:
(WebKit):
(WebLoaderClient):
* UIProcess/WebPageProxy.cpp:
* UIProcess/WebPageProxy.h:
(WebKit):
(WebPageProxy):
* UIProcess/WebPageProxy.messages.in:
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchIntent):
2012-06-13 Alexis Menard <alexis.menard@openbossa.org>
Web Inspector: add a way to get the remote inspector url for a given page.
https://bugs.webkit.org/show_bug.cgi?id=88902
Reviewed by Jocelyn Turcotte.
Expose the remote inspector url for a given page in the API. If you want
to create a web view and load directly the inspector for the page you want to inspect,
it helps to get the url as it is impossible to figure it out from the API layer.
* UIProcess/API/qt/qquickwebview.cpp:
(QQuickWebViewExperimental::remoteInspectorUrl):
* UIProcess/API/qt/qquickwebview_p.h:
* UIProcess/InspectorServer/WebInspectorServer.cpp:
(WebKit):
(WebKit::WebInspectorServer::inspectorUrlForPageID):
* UIProcess/InspectorServer/WebInspectorServer.h:
(WebInspectorServer):
* UIProcess/InspectorServer/WebSocketServer.cpp:
(WebKit::WebSocketServer::WebSocketServer):
(WebKit::WebSocketServer::listen):
(WebKit::WebSocketServer::close):
* UIProcess/InspectorServer/WebSocketServer.h:
(WebKit::WebSocketServer::bindAddress):
(WebKit::WebSocketServer::port):
(WebKit::WebSocketServer::serverState):
(WebSocketServer):
* UIProcess/InspectorServer/qt/WebInspectorServerQt.cpp:
(WebKit::remoteInspectorPagePath):
(WebKit):
(WebKit::WebInspectorServer::inspectorUrlForPageID):
(WebKit::WebInspectorServer::buildPageList):
* UIProcess/WebInspectorProxy.h:
(WebKit::WebInspectorProxy::remoteInspectionPageID):
2012-06-13 Christophe Dumez <christophe.dumez@intel.com>
[WK2] Add implementation for dispatchIntent in WebFrameLoaderClient
https://bugs.webkit.org/show_bug.cgi?id=88340
Reviewed by Kenneth Rohde Christiansen.
Add implementation for dispatchIntent() in WebFrameLoaderClient.
* CMakeLists.txt:
* GNUmakefile.list.am:
* Shared/API/c/WKBase.h:
* Shared/APIClientTraits.h:
* Shared/APIObject.h:
* Shared/IntentData.cpp: Added.
(WebKit):
(WebKit::IntentData::encode):
(WebKit::IntentData::decode):
* Shared/IntentData.h: Added.
(CoreIPC):
(WebKit):
(IntentData):
* Target.pri:
* UIProcess/API/C/WKAPICast.h:
(WebKit):
* UIProcess/API/C/WKPage.h:
* UIProcess/API/gtk/WebKitLoaderClient.cpp:
(attachLoaderClientToView):
* UIProcess/WebIntentData.cpp: Added.
(WebKit):
(WebKit::WebIntentData::WebIntentData):
(WebKit::WebIntentData::data):
* UIProcess/WebIntentData.h: Added.
(WebKit):
(WebIntentData):
(WebKit::WebIntentData::create):
(WebKit::WebIntentData::~WebIntentData):
(WebKit::WebIntentData::action):
(WebKit::WebIntentData::payloadType):
(WebKit::WebIntentData::extras):
(WebKit::WebIntentData::suggestions):
(WebKit::WebIntentData::type):
* UIProcess/WebLoaderClient.cpp:
(WebKit):
(WebKit::WebLoaderClient::didReceiveIntentForFrame):
* UIProcess/WebLoaderClient.h:
(WebKit):
(WebLoaderClient):
* UIProcess/WebPageProxy.cpp:
(WebKit):
(WebKit::WebPageProxy::didReceiveIntentForFrame):
* UIProcess/WebPageProxy.h:
(WebKit):
(WebPageProxy):
* UIProcess/WebPageProxy.messages.in:
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchIntent):
2012-06-13 Balazs Kelemen <kbalazs@webkit.org>
[Qt][WK2] Scanning plugins blocks the UI for a long time
https://bugs.webkit.org/show_bug.cgi?id=88535