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