608a6e56f054ca14baae42f085c697c48e0ee2bd
[WebKit-https.git] / Source / WebKit2 / ChangeLog
1 2011-02-18  Brian Weinstein  <bweinstein@apple.com>
2
3         Reviewed by Adam Roben.
4
5         WebResourceCacheManager should be responsible for managing the CFURLCache as well
6         as the WebCore memory cache.
7         https://bugs.webkit.org/show_bug.cgi?id=54886
8         Part of <rdar://problem/8971738>
9
10         * WebProcess/ResourceCache/WebResourceCacheManager.cpp:
11         (WebKit::WebResourceCacheManager::getCacheOrigins): Call through to cFURLCacheHostNames, and add
12             create SecurityOrigin's for them and add them to the set of SecurityOrigins with cache.
13         (WebKit::WebResourceCacheManager::clearCacheForOrigin): Call through to clear the CFURLCache for
14             the origin's hostname.
15         * WebProcess/ResourceCache/WebResourceCacheManager.h:
16
17         * WebProcess/ResourceCache/cf: Added.
18         * WebProcess/ResourceCache/cf/WebResourceCacheManagerCFNet.cpp: Added.
19         (WebKit::WebResourceCacheManager::cfURLCacheHostNames): Call through to WebKitSystemInterface.
20         (WebKit::WebResourceCacheManager::clearCFURLCacheForHostNames): Ditto.
21
22         * win/WebKit2.vcproj: Added new file.
23         * WebKit2.xcodeproj/project.pbxproj: Ditto.
24
25 2011-02-21  Adam Roben  <aroben@apple.com>
26
27         Move control of the sequence number from DrawingAreaImpl to DrawingAreaProxyImpl
28
29         DrawingAreaProxyImpl has some state that, when it changes, causes all operations performed
30         before that state change to become invalid. When painting, we need to have performed at
31         least one Update for the most recent state; otherwise, we'll be painting old/incorrect bits
32         into the view.
33
34         Currently, this state consists of a single piece of data: the view's size. Whenever the
35         state (i.e., size) changes, we tell the web process via the SetSize message, and the web
36         process lets us know that it has updated to match the new state (i.e., size) via the
37         DidSetSize message.
38
39         When it's time to paint, if we're waiting for the web process to update to match our current
40         state (i.e., size), we block for a little while hoping to receive a DidSetSize message so
41         that we can paint up-to-date bits into the window. This can cause us to receive messages
42         out-of-order; the DidSetSize message will be processed immediately, and any messages that
43         were sent before the DidSetSize message will be processed later. Since the messages from
44         before the DidSetSize message correspond to an old state (i.e., size), they are no longer
45         useful (e.g., they contain bits of the page that are drawn at the wrong size/location), so
46         we discard them.
47
48         The way we identify and discard these messages is by keeping track of a sequence number.
49         Currently, DrawingAreaImpl sends a monotonically-increasing sequence number to
50         DrawingAreaProxyImpl with every message. Whenever DrawingAreaProxyImpl receives a DidSetSize
51         message, it records the sequence number that came along with it. If we then later receive
52         any messages that have a lower sequence number, we know they correspond to an old state
53         (i.e., size) and can discard them.
54
55         This patch moves control of the sequence number to DrawingAreaProxyImpl.
56         DrawingAreaProxyImpl now sends a monotonically-increasing sequence number in the SetSize
57         message. DrawingAreaImpl records this sequence number when it receives the SetSize message,
58         and sends it back to DrawingAreaProxyImpl in every message. Otherwise the logic is the same
59         as before.
60
61         This should cause no changes in behavior, but will allow DrawingAreaProxyImpl to request a
62         full backing store update (by incrementing the sequence number) at times other than when the
63         view's size changes (e.g., after it has thrown away its backing store in order to save
64         memory).
65
66         Fixes <http://webkit.org/b/54907> DrawingAreaProxyImpl should tell DrawingAreaImpl what
67         sequence number to use
68
69         Reviewed by Anders Carlsson.
70
71         * UIProcess/DrawingAreaProxyImpl.cpp:
72         (WebKit::generateSequenceNumber): Moved here from DrawingAreaImpl.cpp.
73         (WebKit::DrawingAreaProxyImpl::sendSetSize): Changed to pass a new sequence number in the
74         SetSize message.
75         (WebKit::DrawingAreaProxyImpl::waitForAndDispatchDidSetSize): Added a FIXME about a
76         potential improvement.
77
78         * WebProcess/WebPage/DrawingArea.h:
79         (WebKit::DrawingArea::setSize): Updated to match the message's new parameters.
80
81         * WebProcess/WebPage/DrawingArea.messages.in: Added a sequenceNumber parameter to SetSize.
82
83         * WebProcess/WebPage/DrawingAreaImpl.cpp:
84         (WebKit::DrawingAreaImpl::DrawingAreaImpl): Initialize m_sequenceNumber.
85         (WebKit::DrawingAreaImpl::setSize): Record the new sequence number from the UI process.
86
87         (WebKit::DrawingAreaImpl::layerHostDidFlushLayers):
88         (WebKit::DrawingAreaImpl::exitAcceleratedCompositingMode):
89         (WebKit::DrawingAreaImpl::display):
90         Send m_sequenceNumber, instead of a new sequence number, back to the UI process.
91
92         * WebProcess/WebPage/DrawingAreaImpl.h: Added m_sequenceNumber, updated setSize function to
93         match the base class.
94
95 2011-02-21  Gavin Barraclough  <barraclough@apple.com>
96
97         Reviewed by Sam Weinig.
98
99         Bug 54894 - Make inheritance structure described by ClassInfo match C++ class hierarchy.
100
101         The ClassInfo objects describe an inheritance hierarchy, with each ClassInfo instance
102         containing a pointer to its parent class. These links should reflect the inheritance
103         hierarchy of C++ classes below JSObject. For the large part it does, but in some cases
104         entries in the C++ hierarchy are skipped over. This presently likely doesn't matter,
105         since intervening C++ classes may not have ClassInfo - but would be a potential bug
106         were ClassInfo were to be added.
107
108         * WebProcess/Plugins/Netscape/JSNPObject.cpp:
109
110 2011-02-21  Balazs Kelemen  <kbalazs@webkit.org>
111
112         Reviewed by Kenneth Rohde Christiansen.
113
114         [Qt] Implement WorkQueue::sheduleWorkAfterDelay
115         https://bugs.webkit.org/show_bug.cgi?id=54878
116
117         * Platform/qt/WorkQueueQt.cpp:
118         (WorkQueue::scheduleWorkAfterDelay):
119
120 2011-02-20  Alejandro G. Castro  <alex@igalia.com>
121
122         Reviewed by Martin Robinson.
123
124         [GTK] Add WebResourceCacheDataManager to the compilation after r78848
125         https://bugs.webkit.org/show_bug.cgi?id=54732
126
127         Added resource cache manager API to GTK+ compilation after r78848.
128
129         * GNUmakefile.am:
130
131 2011-02-20  Sam Weinig  <sam@webkit.org>
132
133         Reviewed by Dan Bernstein.
134
135         Crash in WebProcess at com.apple.WebCore: WebCore::Page::goToItem + 46
136         <rdar://problem/8942726>
137
138         * WebProcess/WebPage/WebPage.cpp:
139         (WebKit::WebPage::goForward):
140         (WebKit::WebPage::goBack):
141         (WebKit::WebPage::goToBackForwardItem):
142         Defend agains null HistoryItems.
143
144 2011-02-20  Anders Carlsson  <andersca@apple.com>
145
146         Reviewed by Maciej Stachowiak.
147
148         Crash when a plug-in requests a javascript: url that destroys the plug-in
149         https://bugs.webkit.org/show_bug.cgi?id=54837
150         <rdar://problem/9005475>
151
152         * WebProcess/Plugins/PluginProxy.cpp:
153         (WebKit::PluginProxy::destroy):
154         Null out m_pluginController.
155
156         * WebProcess/Plugins/PluginView.cpp:
157         (WebKit::PluginView::performJavaScriptURLRequest):
158         Don't access the frame through m_pluginElement since it will be nulled out
159         when the plug-in is destroyed.
160
161 2011-02-20  Anders Carlsson  <andersca@apple.com>
162
163         Reviewed by Sam Weinig.
164
165         Fix another crash when a plug-in is destroyed when evaluating JavaScript
166         https://bugs.webkit.org/show_bug.cgi?id=54834
167         <rdar://problem/9005475>
168
169         This contains three separate fixes:
170
171         - In unprotectPluginFromDestruction we can't just destroy the plug-in once
172           the count reaches zero, because the plug-in might still have code executing
173           on the stack. To fix this we use a zero-delay timer to defer destruction
174           of the plug-in.
175
176         - Trying to get the NPObject for the window using NPN_GetValue would return
177           NPERR_NO_ERROR, even if the returned NPObject was null. Fix this to return
178           NPERR_GENERIC_ERROR instead.
179
180         - Protect the plug-in from destruction anytime an NPAPI call that sends a 
181           synchronous IPC message is made.
182
183         * PluginProcess/PluginControllerProxy.cpp:
184         (WebKit::PluginControllerProxy::PluginControllerProxy):
185         (WebKit::PluginControllerProxy::destroy):
186         (WebKit::PluginControllerProxy::unprotectPluginFromDestruction):
187         * PluginProcess/PluginControllerProxy.h:
188         * WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp:
189         (WebKit::PluginDestructionProtector::PluginDestructionProtector):
190         (WebKit::NPN_GetValue):
191         (WebKit::NPN_Evaluate):
192         (WebKit::NPN_GetProperty):
193         (WebKit::NPN_SetProperty):
194         (WebKit::NPN_RemoveProperty):
195         (WebKit::NPN_HasProperty):
196         (WebKit::NPN_HasMethod):
197         (WebKit::NPN_Enumerate):
198         (WebKit::NPN_Construct):
199         (WebKit::NPN_GetValueForURL):
200         (WebKit::NPN_SetValueForURL):
201
202 2011-02-19  Sam Weinig  <sam@webkit.org>
203
204         Reviewed by Anders Carlsson.
205
206         Add phase in addition to momentumPhase to platform wheel events
207         Part of <rdar://problem/8945362>
208
209         Rename existing phase to momentumPhase.
210
211         * Shared/WebEvent.h:
212         (WebKit::WebWheelEvent::momentumPhase):
213         * Shared/WebEventConversion.cpp:
214         (WebKit::WebKit2PlatformWheelEvent::WebKit2PlatformWheelEvent):
215         * Shared/WebWheelEvent.cpp:
216         (WebKit::WebWheelEvent::WebWheelEvent):
217         (WebKit::WebWheelEvent::encode):
218         (WebKit::WebWheelEvent::decode):
219         * Shared/mac/WebEventFactory.mm:
220         (WebKit::phaseForEvent):
221         (WebKit::momentumPhaseForEvent):
222         (WebKit::WebEventFactory::createWebWheelEvent):
223
224 2011-02-19  Anders Carlsson  <andersca@apple.com>
225
226         Reviewed by Dan Bernstein.
227
228         Crash when trying to take a snapshot of an uninitialized plug-in
229         https://bugs.webkit.org/show_bug.cgi?id=54812
230
231         * WebProcess/Plugins/PluginView.cpp:
232         (WebKit::PluginView::notifyWidget):
233         Don't try to create a snapshot of the plug-in if it hasn't been initialized.
234
235 2011-02-18  Gavin Barraclough  <barraclough@apple.com>
236
237         Reviewed by Sam Weinig.
238
239         Bug 54786 - Devirtualize JSCell::classInfo()
240
241         Instead of making a virtual function call, add a pointer to the ClassInfo
242         onto Structure.
243
244         This removes a virtual function call, and paves the way towards removing all
245         the createStructure methods, and StructureFlags/AnonymousSlotCount properties
246         (these should be able to move onto ClassInfo).
247
248         Calls to Structure::create must now pass a pointer to the ClassInfo for the
249         structure. All objects now have a ClassInfo pointer, non-object cell types
250         still do not.
251
252         Changes are most mechanical, involving three steps:
253             * Remove virtual classInfo() methods.
254             * Add &s_info parameter to calls to Structure::create.
255             * Rename ClassInfo static members on classes from 'info' to 's_info',
256               for consistency.
257
258         * WebProcess/Plugins/Netscape/JSNPMethod.cpp:
259         (WebKit::JSNPMethod::JSNPMethod):
260         * WebProcess/Plugins/Netscape/JSNPMethod.h:
261         (WebKit::JSNPMethod::createStructure):
262         * WebProcess/Plugins/Netscape/JSNPObject.cpp:
263         (WebKit::JSNPObject::JSNPObject):
264         * WebProcess/Plugins/Netscape/JSNPObject.h:
265         (WebKit::JSNPObject::createStructure):
266
267 2011-02-19  Sam Weinig  <sam@webkit.org>
268
269         Reviewed by Anders Carlsson.
270
271         Rename performLookupAtCurrentMouseLocation to performDictionaryLookupAtCurrentMouseLocation
272
273         * UIProcess/API/mac/WKView.mm:
274         (-[WKView performDictionaryLookupAtCurrentMouseLocation]):
275         * UIProcess/API/mac/WKViewPrivate.h:
276
277 2011-02-19  Charlie Reis  <creis@chromium.org>
278
279         Reviewed by Mihai Parparita.
280
281         Ensure loading has stopped in HistoryController::goToItem
282         https://bugs.webkit.org/show_bug.cgi?id=54517
283
284         Add a FrameLoaderClient callback for whether to stop loading before goToItem.
285
286         Test: http/tests/navigation/forward-to-fragment-fires-onload.html
287
288         * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
289         (WebFrameLoaderClient::shouldStopLoadingForHistoryItem): Added.
290         * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
291
292 2011-02-18  Sam Weinig  <sam@webkit.org>
293
294         Reviewed by Adele Peterson.
295
296         Real fix for <rdar://problem/9025723> CrashTracer: [USER] 
297         1 crash in WebProcess at com.apple.WebKit2: 
298         WebKit::WebPage::didChangeScrollOffsetForMainFrame + 31
299
300         * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
301         (WebKit::WebFrameLoaderClient::didChangeScrollOffset):
302         Add null check for the FrameView. This function can be called when the
303         FrameView is being torn down during a transition to a new FrameView.
304
305         * WebProcess/WebPage/WebPage.cpp:
306         (WebKit::WebPage::didChangeScrollOffsetForMainFrame):
307         Revert last attempt.
308
309 2011-02-18  Anders Carlsson  <andersca@apple.com>
310
311         Reviewed by Sam Weinig.
312
313         Hang trying to load nytimes.com with Flash installed
314         <rdar://problem/9018113> 
315
316         * Platform/CoreIPC/Connection.cpp:
317         (CoreIPC::Connection::sendSyncMessage):
318         Call beginWaitForSyncReply() before sending the message. Otherwise, in some cases we could
319         have gotten back a synchronous request before calling beginWaitForSyncReply(), and then we wouldn't
320         process it correctly. (Which would lead to the hang).
321
322 2011-02-18  Simon Fraser  <simon.fraser@apple.com>
323
324         Reviewed by Kevin Decker.
325
326         <rdar://problem/9021296> Some plug-ins are the wrong size after zooming
327         
328         Use the same frame/bounds adjustment that we use for NSView-based
329         plugins in WebKit2, which allows plug-ins and their snapshots to
330         render with the correct size after scaling.
331
332         * WebProcess/Plugins/PluginView.cpp:
333         (WebKit::PluginView::setBoundsSize):
334         (WebKit::PluginView::viewGeometryDidChange):
335         (WebKit::PluginView::clipRectInWindowCoordinates):
336         * WebProcess/Plugins/PluginView.h:
337
338 2011-02-18  Beth Dakin  <bdakin@apple.com>
339
340         Rubber-stamped by Adele Peterson.
341
342         Fix for <rdar://problem/9025723> CrashTracer: [USER] 
343         1 crash in WebProcess at com.apple.WebKit2: 
344         WebKit::WebPage::didChangeScrollOffsetForMainFrame + 31
345
346         Simple null-check.
347         * WebProcess/WebPage/WebPage.cpp:
348         (WebKit::WebPage::didChangeScrollOffsetForMainFrame):
349
350 2011-02-18  Viatcheslav Ostapenko  <ostapenko.viatcheslav@nokia.com>
351
352         Reviewed by Kenneth Rohde Christiansen.
353
354         Tiled backing store area is too big.
355         Error in area calculcation causes size of backing store
356         up to 8 times bigger than viewport with default multipliers.
357         https://bugs.webkit.org/show_bug.cgi?id=54587
358
359         * UIProcess/TiledDrawingAreaProxy.cpp:
360         (WebKit::TiledDrawingAreaProxy::calculateKeepRect):
361         (WebKit::TiledDrawingAreaProxy::calculateCoverRect):
362
363 2011-02-18  John Sullivan  <sullivan@apple.com>
364
365         Reviewed by Maciej Stachowiak.
366
367         <rdar://problem/9026169>
368         https://bugs.webkit.org/show_bug.cgi?id=54780
369         pendingAPIRequestURL isn't updated for WKPageGoToBackForwardListItem
370
371         * UIProcess/WebPageProxy.cpp:
372         (WebKit::WebPageProxy::goToBackForwardItem):
373         Update the pending API URL.
374
375 2011-02-18  Anders Carlsson  <andersca@apple.com>
376
377         Reviewed by Sam Weinig.
378
379         Accelerated content fades in when using a layer backed WKView
380         <rdar://problem/9021586>
381
382         * UIProcess/API/mac/WKView.mm:
383         (-[WKView _enterAcceleratedCompositingMode:]):
384         Make a new nested CATransaction and disable animations when adding the layer 
385         hosting subview. This avoids an implicit fade animation that would otherwise occur.
386
387 2011-02-18  Simon Fraser  <simon.fraser@apple.com>
388
389         Reviewed by Dan Bernstein.
390
391         Plugin snapshot location is wrong for subframes
392         https://bugs.webkit.org/show_bug.cgi?id=54776
393         
394         Only change the CTM to the way that the plugin expects it
395         when painting the plugin, not when drawing the snapshot.
396         This fixes the snapshot location when painting flattened
397         frames.
398
399         * WebProcess/Plugins/PluginView.cpp:
400         (WebKit::PluginView::paint):
401
402 2011-02-18  Anders Carlsson  <andersca@apple.com>
403
404         Reviewed by Simon Fraser.
405
406         Implement NetscapePlugin::pluginComplexTextInputIdentifier
407         https://bugs.webkit.org/show_bug.cgi?id=54770
408
409         * WebProcess/Plugins/Netscape/mac/NetscapePluginMac.mm:
410         (WebKit::NetscapePlugin::pluginComplexTextInputIdentifier):
411
412 2011-02-18  Sam Weinig  <sam@webkit.org>
413
414         Reviewed by Maciej Stachowiak.
415
416         Add the ability to ask the WKPage if the main frame is pinned
417         to the right or left hand side.
418         Part of <rdar://problem/9017043>.
419
420         * UIProcess/API/C/WKPage.cpp:
421         (WKPageIsPinnedToLeftSide):
422         (WKPageIsPinnedToRightSide):
423         * UIProcess/API/C/WKPage.h:
424         Add new API calls.
425
426         * UIProcess/WebPageProxy.cpp:
427         (WebKit::WebPageProxy::WebPageProxy):
428         (WebKit::WebPageProxy::close):
429         (WebKit::WebPageProxy::processDidCrash):
430         (WebKit::WebPageProxy::didChangeScrollOffsetPinningForMainFrame):
431         * UIProcess/WebPageProxy.h:
432         (WebKit::WebPageProxy::isPinnedToLeftSide):
433         (WebKit::WebPageProxy::isPinnedToRightSide):
434         Initialize, reset and update the pinned state.
435
436         * UIProcess/WebPageProxy.messages.in:
437         Add message to update the pinned state.
438
439         * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
440         (WebKit::WebFrameLoaderClient::didChangeScrollOffset):
441         * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
442         * WebProcess/WebPage/WebPage.cpp:
443         (WebKit::WebPage::WebPage):
444         (WebKit::WebPage::didChangeScrollOffsetForMainFrame):
445         * WebProcess/WebPage/WebPage.h:
446         Cache the pinned state, and only update the UIProcess when it
447         changes.
448
449 2011-02-18  Anders Carlsson  <andersca@apple.com>
450
451         Reviewed by Simon Fraser.
452
453         Fix assertion in SharedMemory::create when trying to snapshot 0x0 plug-in
454         https://bugs.webkit.org/show_bug.cgi?id=54768
455
456         * PluginProcess/PluginControllerProxy.cpp:
457         (WebKit::PluginControllerProxy::snapshot):
458         Don't try to create a handle from a null ShareableBitmap.
459
460         * WebProcess/Plugins/Netscape/NetscapePlugin.cpp:
461         (WebKit::NetscapePlugin::snapshot):
462         Check for a zero sized plug-in before trying to create a snapshot.
463
464 2011-02-18  Anders Carlsson  <andersca@apple.com>
465
466         Reviewed by Simon Fraser.
467
468         WKView flashes when entering/exiting compositing mode
469         https://bugs.webkit.org/show_bug.cgi?id=54695
470         <rdar://problem/9011554>
471
472         * UIProcess/API/mac/WKView.mm:
473         (-[WKView _exitAcceleratedCompositingMode]):
474         Remove the layer hosting view before clearing out its layer, otherwise we can get
475         white flashes when exiting accelerated compositing mode.
476
477         * WebProcess/WebPage/DrawingAreaImpl.cpp:
478         When entering accelerated compositing mode, we want to defer sending the message
479         until we've actually committed the layer tree and pushed all changes over to the
480         UI process.
481
482         (WebKit::DrawingAreaImpl::layerHostDidFlushLayers):
483         Tell the layer tree host to force a repaint. This will ensure that all layer tree
484         changes are pushed over to the UI process. When that is done, send the new layer tree
485         context over to the UI process.
486
487         (WebKit::DrawingAreaImpl::setRootCompositingLayer):
488         When exiting compositing mode in response to a didSetSize, we want to exit accelerated 
489         compositing mode right away to avoid flashes. This is safe since we've laid out the page
490         already so we won't end up reentering setRootCompositingLayer.
491
492         (WebKit::DrawingAreaImpl::enterAcceleratedCompositingMode):
493         Tell the layer tree host to notify us when the next layer tree flush happened, so we can
494         let the UI process know. If we're entering accelerated compositing mode in response to a
495         SetSize message, the new layer tree context will be passed in the DidSetSize message.
496
497         * WebProcess/WebPage/DrawingAreaImpl.h:
498         Add layerHostDidFlushLayers.
499
500         * WebProcess/WebPage/LayerTreeHost.h:
501         Add setShouldNotifyAfterNextScheduledLayerFlush.
502
503         * WebProcess/WebPage/mac/LayerTreeHostMac.h:
504         Add a m_notifyAfterScheduledLayerFlush flag.
505
506         * WebProcess/WebPage/mac/LayerTreeHostMac.mm:
507         (WebKit::LayerTreeHostMac::LayerTreeHostMac):
508         Initialize m_notifyAfterScheduledLayerFlush to false.
509
510         (WebKit::LayerTreeHostMac::setShouldNotifyAfterNextScheduledLayerFlush):
511         Set m_notifyAfterScheduledLayerFlush to true.
512
513         (WebKit::LayerTreeHostMac::flushPendingLayerChangesRunLoopObserverCallback):
514         If m_notifyAfterScheduledLayerFlush is true, call DrawingAreaImpl::layerHostDidFlushLayers.
515
516 2011-02-18  Alexey Proskuryakov  <ap@apple.com>
517
518         Reviewed by Adele Peterson.
519
520         REGRESSION (WebKit2): Wrong frame printed on tivofaq.com
521         https://bugs.webkit.org/show_bug.cgi?id=54677
522         <rdar://problem/8994133>
523
524         * WebProcess/WebCoreSupport/WebChromeClient.cpp:
525         (WebKit::area): Use visible frame bounds.
526         (WebKit::findLargestFrameInFrameSet): Added a comment explaining what we're up to here.
527         WebKit2 shouldn't be making policy decisions for the client, but it gets dangerously close
528         to that. We used to expose the same as WK1 API though.
529
530 2011-02-18  Balazs Kelemen  <kbalazs@webkit.org>
531
532         Unreviwed.
533
534         Remove CleanupHandler since we do not use it anymore.
535
536         * Shared/qt/CleanupHandler.cpp: Removed.
537         * Shared/qt/CleanupHandler.h: Removed.
538
539 2011-02-18  Alejandro G. Castro  <alex@igalia.com>
540
541         Fix GTK build by fixing signature of platformPaint(), required after r78956.
542
543         * WebProcess/Plugins/Netscape/gtk/NetscapePluginGtk.cpp:
544         (WebKit::NetscapePlugin::platformPaint):
545
546 2011-02-17  Dan Bernstein  <mitz@apple.com>
547
548         LLVM Compiler build fix.
549
550         * UIProcess/WebResourceCacheManagerProxy.h:
551         * WebProcess/ResourceCache/WebResourceCacheManager.h:
552
553 2011-02-17  Simon Fraser  <simon.fraser@apple.com>
554
555         Fix Windows and Qt builds by fixing signature of platformPaint().
556
557         * WebProcess/Plugins/Netscape/qt/NetscapePluginQt.cpp:
558         (WebKit::NetscapePlugin::platformPaint):
559         * WebProcess/Plugins/Netscape/win/NetscapePluginWin.cpp:
560         (WebKit::NetscapePlugin::platformPaint):
561
562 2011-02-17  Simon Fraser  <simon.fraser@apple.com>
563
564         Reviewed by Sam Weinig.
565
566         WebKit2 snapshots don't show plug-ins
567         https://bugs.webkit.org/show_bug.cgi?id=54716
568         
569         Fix WebKit2 plug-ins to do a software paint for
570         snapshotting.
571
572         * PluginProcess/PluginControllerProxy.h:
573         * PluginProcess/PluginControllerProxy.cpp:
574         (WebKit::PluginControllerProxy::snapshot): Respond to the snapshot
575         message by getting a sharable bitmap from the plugin, and returning
576         a handle to it in the reply.
577
578         * PluginProcess/PluginControllerProxy.messages.in: Add the snapshot
579         message.
580         
581         * Shared/Plugins/PluginQuirks.h:
582         * Shared/Plugins/Netscape/mac/NetscapePluginModuleMac.mm:
583         (WebKit::NetscapePluginModule::determineQuirks): Add a quirk for the
584         ability to be snapshotted, which we only set for Flash at the moment.
585         
586         * WebProcess/Plugins/Netscape/NetscapePlugin.h:
587         * WebProcess/Plugins/Netscape/NetscapePlugin.cpp:
588         (WebKit::NetscapePlugin::snapshot): Create a shareable bitmap, and
589         paint into it.
590         (WebKit::NetscapePlugin::supportsSnapshotting): Test the quirk.
591
592         * WebProcess/Plugins/Netscape/mac/NetscapePluginMac.mm:
593         (WebKit::NetscapePlugin::platformPaint): Allow the paint to happen
594         if we're snapshotting, even when using the CoreAnimation drawing
595         model.
596         
597         * WebProcess/Plugins/Plugin.h: New snapshot method.
598         
599         * WebProcess/Plugins/PluginProxy.h:
600         * WebProcess/Plugins/PluginProxy.cpp:
601         (WebKit::PluginProxy::snapshot): Send a sync message to the plugin process,
602         asking for a snapshot in a shareble bitmap.
603         
604         * WebProcess/Plugins/PluginView.h:
605         * WebProcess/Plugins/PluginView.cpp:
606         (WebKit::PluginView::paint): Use the snapshot if we have one, to avoid
607         calling into the plugin to draw, which may run script.
608         
609         (WebKit::PluginView::notifyWidget): Generate the snapshot before
610         a flattening paint, and throw it away after.
611
612 2011-02-17  Jessie Berlin  <jberlin@apple.com>
613
614         Reviewed by Adam Roben.
615
616         WebKit2: The CFNetwork Cache should be shared between the UI Process and the Web Process on
617         Windows.
618         https://bugs.webkit.org/show_bug.cgi?id=54683
619
620         * Shared/WebProcessCreationParameters.cpp:
621         (WebKit::WebProcessCreationParameters::encode):
622         (WebKit::WebProcessCreationParameters::decode):
623         * Shared/WebProcessCreationParameters.h:
624  
625         * UIProcess/win/WebContextWin.cpp:
626         (WebKit::WebContext::platformInitializeWebProcess):
627         Make sure to remove the ending slash, as CFNetwork does not recognize the directory with
628         that slash.
629
630         * WebProcess/win/WebProcessWin.cpp:
631         (WebKit::WebProcess::platformInitializeWebProcess):
632         Create a cache using the path, disk capacity, and memory capacity and set it as default.
633
634 2011-02-17  Anders Carlsson  <andersca@apple.com>
635
636         Reviewed by Sam Weinig.
637
638         Web and/or plug-in process crashes when NPN_Evaluate destroys the plug-in
639         https://bugs.webkit.org/show_bug.cgi?id=54686
640         <rdar://problem/9013384>
641
642         This patch fixes two bugs with a plug-in calling NPN_Evaluate to destroy itself:
643
644         - The PluginProxy object would be destroyed in the middle of PluginProxy::evaluate.
645           This would cause the web process to crash.
646
647         - The PluginControllerProxy would call NPP_Destroy while the plug-in was busy running
648           code. This would cause the plug-in process to crash.
649
650         To fix this, we add protectPluginFromDestruction/unprotectPluginFromDestruction to
651         PluginControllerProxy and use it to defer calling destroy() in the plug-in process,
652         and defer actually destroying the plug-in in the web process.
653
654         https://bugs.webkit.org/show_bug.cgi?id=54171 tracks adding a test for this.
655
656         * PluginProcess/PluginControllerProxy.cpp:
657         (WebKit::PluginControllerProxy::PluginControllerProxy):
658         (WebKit::PluginControllerProxy::destroy):
659         (WebKit::PluginControllerProxy::evaluate):
660         (WebKit::PluginControllerProxy::protectPluginFromDestruction):
661         (WebKit::PluginControllerProxy::unprotectPluginFromDestruction):
662         * PluginProcess/PluginControllerProxy.h:
663         (WebKit::PluginControllerProxy::asPluginController):
664         * PluginProcess/WebProcessConnection.cpp:
665         (WebKit::WebProcessConnection::destroyPluginControllerProxy):
666         (WebKit::WebProcessConnection::didReceiveMessage):
667         (WebKit::WebProcessConnection::didReceiveSyncMessage):
668         * PluginProcess/WebProcessConnection.h:
669         (WebKit::WebProcessConnection::connection):
670         * WebProcess/Plugins/PluginController.h:
671         (WebKit::PluginController::PluginDestructionProtector::PluginDestructionProtector):
672         (WebKit::PluginController::PluginDestructionProtector::~PluginDestructionProtector):
673         * WebProcess/Plugins/PluginProxy.cpp:
674         (WebKit::PluginProxy::evaluate):
675         * WebProcess/Plugins/PluginView.cpp:
676         (WebKit::PluginView::protectPluginFromDestruction):
677         (WebKit::PluginView::unprotectPluginFromDestruction):
678         * WebProcess/Plugins/PluginView.h:
679
680 2011-02-17  Sam Weinig  <sam@webkit.org>
681
682         Build fix.
683
684         * WebProcess/WebPage/mac/WebPageMac.mm:
685         (WebKit::WebPage::performDictionaryLookupAtLocation):
686
687 2011-02-17  Sam Weinig  <sam@webkit.org>
688
689         Reviewed by Maciej Stachowiak.
690
691         WebKit2: Support Dictionary popup
692         <rdar://problem/7660670>
693
694         * Shared/TextInfo.cpp: Added.
695         (WebKit::TextInfo::encode):
696         (WebKit::TextInfo::decode):
697         * Shared/TextInfo.h: Added.
698         (WebKit::TextInfo::TextInfo):
699         Add class to represent the location and style of a run of text.
700
701         * UIProcess/PageClient.h:
702         * UIProcess/API/mac/PageClientImpl.h:
703         * UIProcess/API/mac/PageClientImpl.mm:
704         (WebKit::PageClientImpl::didPerformDictionaryLookup):
705         Invoke the dictionary popup.
706
707         * UIProcess/API/mac/WKView.mm:
708         (-[WKView performLookupAtCurrentMouseLocation]):
709         Tell the WebProcess to get get the text under the mouse and cause
710         the dictionary popup to appear.
711
712         * UIProcess/API/mac/WKViewPrivate.h:
713         Add performLookupAtCurrentMouseLocation.
714
715         * UIProcess/WebPageProxy.cpp:
716         (WebKit::WebPageProxy::performDictionaryLookupAtLocation):
717         (WebKit::WebPageProxy::didPerformDictionaryLookup):
718         * UIProcess/WebPageProxy.h:
719         * UIProcess/WebPageProxy.messages.in:
720         * WebProcess/WebPage/WebPage.cpp:
721         * WebProcess/WebPage/WebPage.h:
722         * WebProcess/WebPage/WebPage.messages.in:
723         Pipe messages through.
724
725         * WebProcess/WebPage/mac/WebPageMac.mm:
726         (WebKit::characterRangeAtPoint): Fix to return PassRefPtr
727         and not potentially stale pointers.
728
729         (WebKit::WebPage::characterIndexForPoint):
730         Change to use a RefPtr.
731
732         (WebKit::WebPage::performDictionaryLookupAtLocation):
733         Add simple heuristic to get the word at the current point (or the current selection
734         if it is at that point) and grab the style of the word to send the UIProcess.
735
736         * WebKit2.pro:
737         * WebKit2.xcodeproj/project.pbxproj:
738         * win/WebKit2.vcproj:
739         Add new files.
740
741 2011-02-17  Brian Weinstein  <bweinstein@apple.com>
742
743         Qt build fix.
744
745         * WebKit2.pro: Update after renaming of MemoryCache to ResourceCache.
746
747 2011-02-17  Brian Weinstein  <bweinstein@apple.com>
748
749         Mac build fix.
750
751         * WebKit2.xcodeproj/project.pbxproj: Use relative to group instead of absolute paths. Not everyone's home
752             directory is /Users/brian_weinstein.
753
754 2011-02-16  Brian Weinstein  <bweinstein@apple.com>
755
756         Reviewed by Brady Eidson.
757
758         WebKit2: Need a way to manage the WebCore Cache
759         https://bugs.webkit.org/show_bug.cgi?id=54501
760         
761         Implement a WebKit2 API to manage the WebCore memory cache. This API exposes three functions:
762         
763         1) A method to get a list of all security origins that have entries in the WebCore memory cache.
764         2) A method to remove all entries in the WebCore memory cache from a SecurityOrigin.
765         3) A method to remove all entries from the WebCore memory cache.
766
767         * Platform/CoreIPC/MessageID.h: Add two new MessageClasses.
768         * Shared/API/c/WKBase.h:
769         * Shared/APIObject.h: Add a CacheManager type.
770         * Shared/WebSecurityOrigin.h: Typedef WKCacheManagerRef.
771         (WebKit::WebSecurityOrigin::createFromString): Creates a WebCore::SecurityOrigin using 
772             SecurityOrigin::createFromString.
773         (WebKit::WebSecurityOrigin::toString): Calls through to SecurityOrigin::toString.
774         * UIProcess/API/C/WKAPICast.h:
775
776         * UIProcess/API/C/WKCacheManager.cpp: Added.
777         (WKCacheManagerGetTypeID): Returns the WebResourceCacheManagerProxy type.
778         (WKCacheManagerGetCacheOrigins): Calls through to WebResourceCacheManagerProxy::getCacheOrigins.
779         (callGetCacheOriginsBlockBlockAndDispose):
780         (WKCacheManagerGetCacheOrigins_b):
781         (WKCacheManagerDeleteCacheForOrigin): Calls through to WebResourceCacheManagerProxy::deleteCacheForOrigin.
782         (WKCacheManagerDeleteAllCache): Calls through to WebResourceCacheManagerProxy::deleteAllCache.
783         * UIProcess/API/C/WKCacheManager.h: Added.
784
785         * UIProcess/API/C/WKContext.cpp:
786         (WKContextGetCacheManager): Calls to get the WebResourceCacheManagerProxy.
787         * UIProcess/API/C/WKContext.h:
788
789         * UIProcess/WebResourceCacheManagerProxy.cpp: Added.
790         (WebKit::WebResourceCacheManagerProxy::create): Calls through to the constructor.
791         (WebKit::WebResourceCacheManagerProxy::WebResourceCacheManagerProxy): Initialize the m_webContext variable.
792         (WebKit::WebResourceCacheManagerProxy::~WebResourceCacheManagerProxy):
793         (WebKit::WebResourceCacheManagerProxy::invalidate): Invalidate the callback map.
794         (WebKit::WebResourceCacheManagerProxy::getCacheOrigins): Call through to the web process to get the cache
795             origins.
796         (WebKit::WebResourceCacheManagerProxy::didGetCacheOrigins): Call the callback.
797         (WebKit::WebResourceCacheManagerProxy::deleteCacheForOrigin): Call through to the web process to delete cache
798             for the given origin. 
799         (WebKit::WebResourceCacheManagerProxy::deleteAllCache): Call through to the web process to delete all of the cache.
800         * UIProcess/WebResourceCacheManagerProxy.h: Added.
801         (WebKit::WebResourceCacheManagerProxy::clearContext):
802         (WebKit::WebResourceCacheManagerProxy::type):
803         * UIProcess/WebResourceCacheManagerProxy.messages.in: Added.
804
805         * UIProcess/WebContext.cpp:
806         (WebKit::WebContext::WebContext): Initialize new member variable.
807         (WebKit::WebContext::~WebContext):  Invalidates new member variable.
808         (WebKit::WebContext::didReceiveMessage): Passes cache messages to the cache manager.
809         * UIProcess/WebContext.h:
810         (WebKit::WebContext::cacheManagerProxy):
811         * UIProcess/WebProcessProxy.cpp:
812         (WebKit::WebProcessProxy::didReceiveMessage): Add a new message class.
813
814         * WebProcess/ResourceCache/WebResourceCacheManager.cpp: Added.
815         (WebKit::WebResourceCacheManager::shared):
816         (WebKit::WebResourceCacheManager::WebResourceCacheManager):
817         (WebKit::WebResourceCacheManager::~WebResourceCacheManager):
818         (WebKit::WebResourceCacheManager::didReceiveMessage): Calls through to didReceiveWebResourceCacheManagerMessage.
819         (WebKit::WebResourceCacheManager::getCacheOrigins): Gets a list of origins with cache entries from the memory
820             cache, and puts them into a vector to send to the UI process.
821         (WebKit::WebResourceCacheManager::deleteCacheForOrigin): Calls through to ResourceCache to delete all cache entries
822             from a given origin.
823         (WebKit::WebResourceCacheManager::deleteAllCache):
824         * WebProcess/ResourceCache/WebResourceCacheManager.h: Added.
825         * WebProcess/ResourceCache/WebResourceCacheManager.messages.in: Added.
826
827         * WebProcess/WebProcess.cpp:
828         (WebKit::WebProcess::didReceiveMessage):
829         (WebKit::WebProcess::clearResourceCaches): Tell the memory cache to evict its resources. This was done on WebKit1, 
830             but not WebKit2.
831         * WebProcess/WebProcess.h:
832         
833         * WebKit2.xcodeproj/project.pbxproj: Added new files.
834         * win/WebKit2.vcproj: Ditto.
835         * win/WebKit2Common.vsprops: Added new include directory.
836         * win/WebKit2Generated.make: Added new header.
837
838 2011-02-16  David Hyatt  <hyatt@apple.com>
839
840         Reviewed by Dan Bernstein.
841
842         https://bugs.webkit.org/show_bug.cgi?id=54244
843         
844         Convert the line box tree to floating point and eliminate font rounding hacks.  This patch removes all of the rounding
845         hacks from the Font code and makes sure all Font APIs involving width measurement and width offsets use floats.
846         
847         The line box tree's x, y and logicalWidth members have all been converted to floats and all of the line box APIs have
848         been changed as well.
849         
850         In terms of pixel adjustments, overflow is using an enclosing model (so it will be enclosingIntRect of a line box's x/y/width/height).
851         
852         Background and border painting is using a rounding model, so borders and backgrounds will round to the nearest pixel when painting.
853         
854         Replaced elements still snap to integer positions on lines, and they use a rounding model as well, although their underlying line boxes
855         still have a precise floating point position.
856
857         Justification will now allow subpixel positioning to occur as well.  Platforms that don't support subpixel positioning should already
858         be rounding justification spacing in their font code.
859
860         Many layout test results change on Mac, since rounding hacks were used there and are now gone.
861
862         * WebProcess/WebCoreSupport/win/WebPopupMenuWin.cpp:
863         (WebKit::WebPopupMenu::setUpPlatformData):
864
865 2011-02-10  Luiz Agostini  <luiz.agostini@openbossa.org>
866
867         Reviewed by Adam Roben.
868
869         HTML5 <details> and <summary>: localized text
870         https://bugs.webkit.org/show_bug.cgi?id=54260
871
872         The method defaultDetailsSummaryText was added to LocalizationStrategy class. It is used to
873         provide the default label to be used by a <details> tag that has no <summary> child.
874
875         * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
876         (WebKit::WebPlatformStrategies::defaultDetailsSummaryText):
877         * WebProcess/WebCoreSupport/WebPlatformStrategies.h:
878
879 2011-02-17  Adam Roben  <aroben@apple.com>
880
881         Make sure layout is up-to-date before rendering the layer tree in DrawingAreaImpl
882
883         Fixes <http://webkit.org/b/54646> <rdar://problem/9016889> Assertion failure in
884         FrameView::paintContents when calling WKPageForceRepaint on a page that uses accelerated
885         compositing
886
887         Reviewed by Anders Carlsson.
888
889         * WebProcess/WebPage/DrawingAreaImpl.cpp:
890         (WebKit::DrawingAreaImpl::forceRepaint): Lay out before we do anything else.
891
892 2011-02-17  Alejandro G. Castro  <alex@igalia.com>
893
894         Reviewed by Martin Robinson.
895
896         [GTK] Add WKPluginSiteDataManager.cpp compilation after r78647
897         https://bugs.webkit.org/show_bug.cgi?id=54564
898
899         * GNUmakefile.am: Added files to compilation.
900         * Shared/Plugins/Netscape/NetscapePluginModule.h: used
901         npruntime_internal.h in the include to avoid problems with X
902         types.
903         * WebProcess/WebProcess.cpp:
904         (WebKit::WebProcess::setAlwaysUsesComplexTextCodePath): fixed
905         ambiguous reference to Font caused by the X headers required by
906         the plugins.
907
908 2011-02-16  Matthew Delaney  <mdelaney@apple.com>
909
910         Reviewed by Simon Fraser.
911
912         Allow acceleratesDrawing for WebKit2
913         https://bugs.webkit.org/show_bug.cgi?id=54511
914
915         Plumb through preference for accelerated drawing.
916         
917         If accelerated drawing is enabled, keep the DrawingAreaImpl in
918         accelerated compositing mode.
919
920         * Shared/WebPreferencesStore.h:
921         * UIProcess/API/C/WKPreferences.cpp:
922         (WKPreferencesSetAcceleratedDrawingEnabled):
923         (WKPreferencesGetAcceleratedDrawingEnabled):
924         * UIProcess/API/C/WKPreferencesPrivate.h:
925         * WebProcess/WebPage/DrawingAreaImpl.cpp:
926         (WebKit::DrawingAreaImpl::DrawingAreaImpl):
927         (WebKit::DrawingAreaImpl::setRootCompositingLayer):
928         (WebKit::DrawingAreaImpl::exitAcceleratedCompositingMode):
929         * WebProcess/WebPage/DrawingAreaImpl.h:
930         * WebProcess/WebPage/WebPage.cpp:
931         (WebKit::WebPage::updatePreferences):
932
933 2011-02-16  Yael Aharon  <yael.aharon@nokia.com>
934
935         Reviewed by Andreas Kling.
936
937         [Qt] White screen is displayed when tiled backing store is enabled in MiniBrowser.
938         https://bugs.webkit.org/show_bug.cgi?id=54583
939
940         Make sure to invalidate all the tiles, including the last one.
941
942         * UIProcess/TiledDrawingAreaProxy.cpp:
943         (WebKit::TiledDrawingAreaProxy::invalidate):
944
945 2011-02-16  Yael Aharon  <yael.aharon@nokia.com>
946
947         Reviewed by Andreas Kling.
948
949         [Qt] Tiles are not created for webkit2 after r77286.
950         https://bugs.webkit.org/show_bug.cgi?id=54577
951
952         When using the default tile size of 1024x1024, only one tile is created.
953         Make sure to create this tile by undoing what seems to be a typo in r77286.
954
955         * UIProcess/TiledDrawingAreaProxy.cpp:
956         (WebKit::TiledDrawingAreaProxy::paint):
957         (WebKit::TiledDrawingAreaProxy::createTiles):
958
959 == Rolled over to ChangeLog-2011-02-16 ==