a359ad6407d3110d74006c058a428f2d836710c8
[WebKit-https.git] / WebCore / ChangeLog
1 2007-08-21  Adam Roben  <aroben@apple.com>
2
3         Made FrameView::layoutIfNeededRecursive available to all platforms
4
5         Currently it's only used on Gtk+ and Windows.
6
7         Reviewed by Darin.
8
9         * page/FrameView.cpp: Removed #ifdef.
10         * page/FrameView.h: Ditto.
11
12 2007-08-21  Adele Peterson  <adele@apple.com>
13
14         Build fix for release build.
15
16         * rendering/AutoTableLayout.cpp:
17         (WebCore::AutoTableLayout::calcEffectiveWidth):
18         (WebCore::AutoTableLayout::layout):
19
20 2007-08-21  Mitz Pettel  <mitz@webkit.org>
21
22         Reviewed by Darin.
23
24         - fix http://bugs.webkit.org/show_bug.cgi?id=15010
25           <rdar://problem/5423956> REGRESSION (r25000-r25065): Table rendering broken by a recent nightly
26
27         Test: fast/table/max-width-integer-overflow.html
28
29         Avoid integer overflows when dealing with maximum widths by
30         1) using floating point arithmetic when summing or multiplying column max widths
31         2) capping max widths at INT_MAX / 2
32
33         * rendering/AutoTableLayout.cpp:
34         (WebCore::AutoTableLayout::calcPrefWidths):
35         (WebCore::AutoTableLayout::calcEffectiveWidth):
36         (WebCore::AutoTableLayout::layout):
37
38 2007-08-20  John Sullivan  <sullivan@apple.com>
39
40         Reviewed by Adam Roben
41
42         WebCore part of fix for: 
43         <rdar://problem/5417777> WebKit focus ring color no longer matches system focus rings
44         
45         Adele wrote the first version of this patch. No test cases added because I made sure the 
46         layout tests are unaffected. Two additional bug fixes were made in passing, but neither 
47         of them had any effect on any known real-world case, and both were too difficult to write 
48         test cases for to be worthwhile.
49
50         * WebCore.exp:
51         added symbols for these new functions so WebKit can call them
52         
53         * WebCore.xcodeproj/project.pbxproj:
54         updated for new file
55         
56         * platform/graphics/mac/ColorMac.h: Added.
57         New file to hold the increasing amount of Mac-specific color stuff.
58         
59         * platform/graphics/Color.h:
60         removed #if PLATFORM(MAC) code, which is now in ColorMac.h
61         
62         * platform/graphics/mac/ColorMac.mm:
63         (WebCore::makeRGBAFromNSColor):
64         new static function to convert an NSColor object to an RGBA32 struct
65         (WebCore::colorFromNSColor):
66         new public function to convert an NSColor object to a WebCore-style Color object
67         (WebCore::focusRingColor):
68         Uses (cached) systemFocusRingColor instead of hardwired values, unless usesTestModeFocusRingColor is true,
69         in which case it uses the old hardwired color
70         (WebCore::usesTestModeFocusRingColor):
71         returns value of global var
72         (WebCore::setUsesTestModeFocusRingColor):
73         sets value of global var
74         (+[WebCoreControlTintObserver controlTintDidChange]):
75         Uses [NSColor keyboardFocusIndicatorColor] to set systemFocusRingColor; don't compile if COLORMATCH_EVERYTHING
76         is set since we don't know what it would take to satisfy this state.
77
78         * bindings/objc/DOMRGBColor.mm:
79         now includes ColorMac.h to account for moved declarations
80         * bridge/mac/WebCoreAXObject.mm:
81         ditto
82         
83         * page/mac/FrameMac.mm:
84         (WebCore::convertAttributesToUnderlines):
85         now uses new colorFromNSColor. The old code was swapping G & B, but it didn't matter in practice because
86         this function is only used to convert the color of an input manager's marked text underline, which is always black
87         
88         * page/mac/WebCoreFrameBridge.mm:
89         (-[WebCoreFrameBridge setBaseBackgroundColor:]):
90         now uses new colorFromNSColor. The old code was swapping G & B, but it didn't matter in practice because
91         this function is only called with a grayscale color perhaps containing an alpha value
92                 
93         * rendering/RenderView.cpp:
94         (WebCore::RenderView::paintBoxDecorations):
95         just updated a comment
96
97 2007-08-20  Mitz Pettel  <mitz@webkit.org>
98
99         Reviewed by Dave Hyatt.
100
101         - fix http://bugs.webkit.org/show_bug.cgi?id=15023
102           REGRESSION (r21113-r21143): JavaScript tooltip rendering bug
103
104         Test: fast/repaint/layer-visibility.html
105
106         * rendering/RenderLayer.cpp:
107         (WebCore::RenderLayer::setHasVisibleContent): Cache the layer's
108         rects when it changes to visible.
109
110 2007-08-20  Kevin Decker <kdecker@apple.com>
111
112         Reviewed by Anders.
113
114         Fixed: <rdar://problem/5325262> REGRESSION (Tiger-Leopard): PictureTalk plug-in doesn't work
115
116         The problem was that this particular plug-in handles "text/ptf", but WebCore wasn't giving the plug-in a chance to load
117         any type with "text/"
118
119         * dom/DOMImplementation.cpp:
120         (WebCore::DOMImplementation::createDocument): Allow plug-ins to once again use "text/" MIME types, but only if the MIME
121         type is not "text/plain". Disallowing plug-ins to use text/plain prevents plug-ins from hijacking a fundamental type 
122         that the browser is expected to handle, and also serves as an optimization to prevent loading the plug-in database in 
123         the common case.
124
125 2007-08-20  Adam Roben  <aroben@apple.com>
126
127         Remove workarounds for <rdar://problem/5386894> now that it's been fixed
128
129         Reviewed by Darin.
130
131         Tests: fast/loader/local-svg-parsed-as-svg.svg
132                fast/loader/local-xhtml-parsed-as-xhtml.xhtml
133
134         * platform/network/cf/ResourceResponseCFNet.cpp:
135         (WebCore::ResourceResponse::doUpdateResourceResponse): Removed hackish
136         workaround.
137
138 2007-08-20  Anders Carlsson  <andersca@apple.com>
139
140         Reviewed by Adam.
141
142         <rdar://problem/5412988>
143         Crash when visiting http://www.rockonflash.com/blog/?p=58
144         
145         * plugins/win/PluginViewWin.cpp:
146         (WebCore::PluginViewWin::updateWindow):
147         Just return if the plugin view hasn't been inserted in the hierarchy yet.
148
149 2007-08-20  Holger Hans Peter Freyther  <zecke@selfish.org>
150
151         Reviewed by Zack.
152
153         Do not define svg as ImageMIMEType if we can use ksvg2.
154
155         * platform/MIMETypeRegistry.cpp:
156         (WebCore::initialiseSupportedImageMIMETypes):
157
158 2007-08-19  Adam Roben  <aroben@apple.com>
159
160         Gtk+ build fix.
161
162         * platform/gdk/TemporaryLinkStubs.cpp: Removed const.
163
164 2007-08-19  Adam Roben  <aroben@apple.com>
165
166         Fix <rdar://5395835> REGRESSION (r24527): Context menu for edit fields is missing "Font & Writing Direction"
167
168         The problem was that ContextMenuItem::setSubMenu was just copying the
169         HMENU from the ContextMenu passed in on Windows, but that HMENU was
170         later getting destroyed when the ContextMenu went out of scope.
171
172         I added a new ContextMenu::releasePlatformDescription method that is
173         used in setSubMenu instead. I think an ultimately better design would
174         be for setSubMenu to take ownership of the ContextMenu that's passed in
175         (as should insertItem and appendItem), but I decided to be conservative
176         and just make the changes needed to fix the bug.
177
178         Reviewed by Darin.
179
180         No test possible.
181
182         * platform/ContextMenu.h: Added releasePlatformDescription.
183         * platform/gdk/TemporaryLinkStubs.cpp: Added stub implementation.
184         * platform/mac/ContextMenuMac.mm:
185         (WebCore::ContextMenu::releasePlatformDescription): Implemented, though
186         it's never called on this platform.
187         * platform/qt/ContextMenuQt.cpp:
188         (WebCore::ContextMenu::releasePlatformDescription): Ditto.
189         * platform/win/ContextMenuItemWin.cpp:
190         (WebCore::ContextMenuItem::setSubMenu): Call releasePlatformDescription
191         since we need to take ownership of the HMENU.
192         * platform/win/ContextMenuWin.cpp:
193         (WebCore::ContextMenu::releasePlatformDescription): Implemented.
194
195 2007-08-18  Maciej Stachowiak  <mjs@apple.com>
196
197         Reviewed by Darin.
198
199         - fixed <rdar://problem/5198272> REGRESSION: PLT 1.5% slower due to r21367 (change to start frames with empty documents)
200         
201         There were three main cuases of extra time due to creating the initial empty document:
202         
203         1) Creating an extra WebHTMLView and swapping it for a new one for each frame created.
204         2) Parsing the minimal markup for the initial document's contents.
205         3) Clearing the Window object an extra time and dispatching the corresponding delegate method.
206         
207         The WebCore part of the fixes addresses 2 and 3.
208         
209         * loader/FrameLoader.cpp:
210         (WebCore::FrameLoader::init): Don't parse "<html><body>" for the initial
211         empty document; it turns out not to be needed.
212         (WebCore::FrameLoader::dispatchWindowObjectAvailable): Don't 
213         dispatch the delegate if we haven't created a ScriptInterpreter yet.
214         * bindings/js/kjs_proxy.cpp:
215         (WebCore::KJSProxy::initScriptIfNeeded): Dispatch the window object
216         delegate when we first create the interpreter, since that is now done
217         lazily.
218         * loader/FrameLoader.h:
219         (WebCore::FrameLoader::committingFirstRealLoad): Helper for WebKit
220         to know when to reuse a WebHTMLView.
221
222 2007-08-19  Mitz Pettel  <mitz@webkit.org>
223
224         Reviewed by Adam Roben.
225
226         - fix http://bugs.webkit.org/show_bug.cgi?id=15008
227           ASSERTION FAILED: !firstLineBox() == !lastLineBox() setting content on image
228
229         Test: fast/images/text-content-crash-2.html
230
231         * html/HTMLImageLoader.cpp:
232         (WebCore::HTMLImageLoader::setImage): Added a check that the renderer is an
233         image.
234         (WebCore::HTMLImageLoader::updateFromElement): Ditto.
235         (WebCore::HTMLImageLoader::notifyFinished): Ditto.
236
237 2007-08-17  Maciej Stachowiak  <mjs@apple.com>
238
239         Reviewed by Darin.
240
241         - WebCore part of fix to scrollbar suppression hack for Leopard
242
243         * loader/FrameLoader.cpp:
244         (WebCore::FrameLoader::transitionToCommitted): Suppress scrollbars earlier, so it happens
245         before any potential view swap.
246
247 2007-08-17  Antti Koivisto  <antti@apple.com>
248
249         Reviewed by Hyatt.
250         
251         Fix <rdar://problem/5403773>
252         CrashTracer: [USER] 88 crashes in Safari at com.apple.WebCore: WebCore::RenderTableSection::paint + 846
253
254         * rendering/RenderBlock.cpp:
255         (WebCore::RenderBlock::removePositionedObjects):
256         
257         Fix crash in http://www.infobae.com/interior/home.html
258         Positioned objects removed from m_positionedObjects would in some cases not get added back to any 
259         positioned objects list. Adding objects happens in block layout but since layout was not invalidated 
260         correctly in removePositionedObjects() it would not get invoked. As a result some positioned objects 
261         would stay in layout dirty state leading to crashes and other bad things.
262         
263         * rendering/RenderTableSection.cpp:
264         (WebCore::RenderTableSection::paint):
265         
266         Add needLayout() guard to eliminate this class of crashes from release builds. 
267         Assert commented out for now since one existing layout test can't handle it.
268
269 2007-08-17  Kevin Decker <kdecker@apple.com>
270
271         Code change by Darin, landed and reviewed by me.
272
273         Fixed: <rdar://problem/5252836> Adobe Help Viewer: Japanese characters in the Help Tree structure are shown as garbage
274         Added fast/encoding/namespace-tolerance.html test.
275
276         * loader/TextResourceDecoder.cpp:
277         (WebCore::TextResourceDecoder::checkForHeadCharset): Slightly loosen the charset decoder heuristic by tweaking it
278         to ignore namespaces. This restores compatibility to documents which (1) use namespace prefixes on HTML elements
279         (2) specify a non-latin charset and (3) contain non-latin characters.
280         
281         Added fast/encoding/namespace-tolerance.html test.
282         
283 2007-08-17  Anders Carlsson  <andersca@apple.com>
284
285         Reviewed by Dave Hyatt.
286         
287         <rdar://problem/5379040>
288         REGRESSION (Tiger-Leopard): ADOBE: Safari calls NPP_SetWindow with bad values sometimes
289
290         Instantiate plug-ins during the first layout instead of doing so when creating the renderer.
291         This ensures that the plug-in widget will have a correct initial size.
292         
293         * html/HTMLEmbedElement.cpp:
294         (WebCore::HTMLEmbedElement::getInstance):
295         Force a layout if the plug-in doesn't have an instance.
296         
297         (WebCore::HTMLEmbedElement::attach):
298         Pass true to updateWidget, causing it to only create a widget if it won't be a plug-in.
299         
300         * html/HTMLIFrameElement.cpp:        
301         (WebCore::HTMLIFrameElement::attach):
302         Pass false to updateWidget, this will only create subframes anyway.
303         
304         * html/HTMLObjectElement.cpp:
305         (WebCore::HTMLObjectElement::getInstance):
306         Force a layout if the plug-in doesn't have an instance.
307         
308         (WebCore::HTMLObjectElement::attach):
309         Pass true to updateWidget, causing it to only create a widget if it won't be a plug-in.
310         
311         * loader/FrameLoader.cpp:
312         (WebCore::FrameLoader::loadPlugin):
313         Get the size from the renderer and pass it to the client.
314         
315         * loader/FrameLoaderClient.h:
316         * page/mac/WebCoreFrameBridge.h:
317         * platform/graphics/svg/SVGImageEmptyClients.h:
318         (WebCore::SVGEmptyFrameLoaderClient::createPlugin):
319         Update declarations.
320         
321         * rendering/RenderPart.cpp:
322         (WebCore::RenderPart::setWidget):
323         No need to mark the renderer as dirty here.
324         
325         * rendering/RenderPartObject.h:
326         * rendering/RenderPartObject.cpp:
327         (WebCore::RenderPartObject::updateWidget):
328         Add a parameter, onlyCreateNonPlugins. If this is true the widget 
329         will only be created if it's not a plug-in.
330         
331         (WebCore::RenderPartObject::layout):
332         Call updateWidget here if m_widget is 0, causing the plug-in to be instantiated.
333         
334 2007-08-17  Oliver Hunt  <oliver@apple.com>
335
336         Reviewed by Maciej.
337
338         http://bugs.webkit.org/show_bug.cgi?id=14189
339         <rdar://problem/5319511> REPRODUCIBLE CRASH: Canvas createPattern(canvas, ...) crashes on Windows (14189)
340
341         Ensure that we actually retain the CG pattern correctly.
342
343         Credit to Henry Mason <hmason@mac.com> for finding the cause of this.
344
345         * html/CanvasPattern.cpp:
346         (WebCore::CanvasPattern::~CanvasPattern):
347         (WebCore::CanvasPattern::createPattern):
348         * html/CanvasPattern.h:
349         (WebCore::CanvasPattern::platformImage):
350
351 2007-08-16  Geoffrey Garen  <ggaren@apple.com>
352
353         Build fix. (Maybe?)
354         
355         * loader/Cache.cpp:
356         (WebCore::Cache::pruneLiveResources):
357         (WebCore::Cache::pruneDeadResources):
358
359 2007-08-16  Justin Garcia  <justin.garcia@apple.com>
360
361         Reviewed by Harrison.
362
363         <rdar://problem/5378473> 
364         REGRESSION: Undoing a deletion that is part of an open typing command fails to reinsert the caret
365         
366         We recently made Undo of a series of deletes select all of the 
367         characters that were deleted, not just the most recently deleted
368         character.  But the code that did this set a new starting selection 
369         after every delete, even those that were part of an open typing 
370         command that started with character insertions or forward deletes, 
371         operations that when undone, remove the starting selection being 
372         set from the document.
373         
374         After this change we only set a new starting selection if the open typing
375         command was opened by a backward delete. The new behavior matches TextEdit.  
376         We don't do something similar or forward deletes because TextEdit opens 
377         and closes a new typing command on forward delete (added a FIXME about this).
378
379         * editing/TypingCommand.cpp:
380         (WebCore::TypingCommand::TypingCommand): Initialize 
381         m_openedByBackwardDelete.
382         (WebCore::TypingCommand::forwardDeleteKeyPressed): Added a FIXME about
383         how in TextEdit, forward deletes open and close a new typing command.
384         (WebCore::TypingCommand::doApply): Set m_openedByBackwardDelete
385         appropriately.
386         (WebCore::TypingCommand::deleteKeyPressed): Only set the starting
387         selection if this delete is the first one in an open typing command
388         or one in a series of deletes that opened the typing command.
389         * editing/TypingCommand.h: Added m_openedByBackwardDelete.
390
391 2007-08-13  Geoffrey Garen  <ggaren@apple.com>
392
393         Reviewed by Dave Hyatt.
394         
395         Tweaked the cache eviction model to better balance between live and 
396         dead resources.
397         
398         For the sake of avoiding evictions during the PLT, the old model 
399         required the sum of dead and live resources to grow to twice the cache 
400         capacity before evicting, and would then evict dead or live down to 0 
401         if necessary. This was a too-high high water mark, which would nullify 
402         much of the value of eviction, and a too-low low water mark, which 
403         would nullify much of the value of the LRU-SP strategy.
404         
405         This patch changes the model in 3 ways.
406         
407         1. The new model for dead resources is a flexible window with a fixed 
408         minimum and maximum. The dead resource window is big when live resource 
409         pressure is small, and vice versa. This has the immediate advantage of
410         cutting the high water mark by up to 50%. It also enables the following
411         tunable optimizations in future patches:
412             a. A dead resource limit of 0 for clients who want that. (Just set
413             the fixed maximum to 0.)
414             b. A much higher low water mark. (Just set the fixed minimum to, 
415             say, 25% of the cache's capacity.)
416             c. A much lower high water mark for users who browse simple pages
417             in one tab. (Just set the fixed maximum to, say, 50% of the cache's
418             capacity.)
419         
420         I plan to make the changes that actually take advantage of these 
421         tunable optimizations in another check-in.
422
423         The new model won't hurt the PLT because it will notice the PLT's low
424         live resource size, and up the dead resource capacity in response. For
425         the same reason, the new model should establish a good balance in 
426         real-world use.
427         
428         2. Live resource eviction is now based on size(), not encodedSize().
429         So, a page with lots of large, encoded images will start evicting 
430         resources, if necessary, even before all the images paint. This allows 
431         you to more accurately stipulate an exact high water mark.
432         
433         3. When pruning, prune to a small percentage below capacity, to avoid
434         just having to prune again immediately.
435
436         Layout tests pass. PLT shows no regression.
437
438         * history/PageCache.cpp:
439         (WebCore::PageCache::releaseAutoreleasedPagesNow): Updated for rename.
440
441         * loader/Cache.cpp: Implemented the algorithm explained above.
442         * loader/Cache.h: Removed explicit tracking of decoded data size, since
443         it was unused.
444
445         * loader/CachedResource.cpp: ditto on tracking of decoded data size
446
447 2007-08-16  Darin Adler  <darin@apple.com>
448
449         Reviewed by Tim Hatcher.
450
451         - fix <rdar://problem/5415029> In Mail, a crash occurs at WebCore::Node::isDescendantOf()
452           when attempting to delete a selection in a table
453
454         The bug was caused by createMarkup trying to operate on a range that
455         has an endpoint in the delete button DOM, because it removes that DOM
456         during its operation! Still working on a regression test -- it's hard
457         to make the kind of bad selection that's needed with the DOM, so I might
458         have to use the eventSender.
459
460         * editing/DeleteButtonController.h: Made some of the identifiers private.
461         We can make them public if we need to use them. Added a getter function
462         for the container element so we can figure out if a given node is inside
463         the DOM added for the delete button.
464
465         * editing/markup.cpp:
466         (WebCore::moveEndpointsBeforeNode): Added. General purpose helper function
467         that moves endpoints of a range to before a given node -- we do this before
468         removing the delete button, so the endpoint is where the delete button was,
469         rather than having an endpoint that's not in the document.
470         (WebCore::createMarkup): Always return empty string, not null string.
471         Get the document by calling ownerDocument on the range rather than getting
472         the document of the commonAncestorContainer. That's because we need to
473         get at the delete button before calling commonAncestorContainer. Call
474         moveEndpointsBeforeNode to move the range endpoints out of the delete
475         button interface before calling disable() which will remove it from the
476         DOM if it's in there. Added an early return for the case where commonAncestor
477         is non-0. If this happens, we would crash later because pastEndNode would
478         not be in the tree. This change alone would prevent the crash, but we'd get
479         bad markup, so we need the moveEndpointsBeforeNode fix. Added null checks
480         for the frame to the range version as in the single-node version so this
481         won't crash immediately on documents that are not in a frame. For the
482         single-node version, added a check if a ndoe of 0 and a node inside the
483         delete button user interface, and return the empty string for those cases.
484
485 2007-08-16  Justin Garcia  <justin.garcia@apple.com>
486
487         Reviewed by Maciej.
488         
489         <rdar://problem/5378847> After creating and removing a ToDo, the caret disappears as soon as I start to type
490         
491         * editing/InsertTextCommand.cpp:
492         (WebCore::InsertTextCommand::input): A whitespace text node inserted by Mail
493         when a ToDo is removed is completely removed by deleteInsignificantWhitespace,
494         and since it contains the text insertion position, insertion fails.
495         Save the position before the node where text insertion will occur,
496         and if that node is removed, use the saved position for insertion.
497
498 2007-08-16  Darin Adler  <darin@apple.com>
499
500         Reviewed by Adele.
501
502         - fix <rdar://problem/5413488> REGRESSION: every DOM element is about 40
503           bytes bigger because it has a Timer
504
505         Moved the timer to the document from the element.
506
507         * dom/Document.h: Made frame() inline. Added updateFocusApperanceSoon(),
508         cancelFocusAppearanceUpdate(), m_updateFocusAppearanceTimer,
509         clearXMLVersion(), and updateFocusAppearanceTimerFired(). Also made
510         everything that was previously protected be private instead.
511         * dom/Document.cpp:
512         (WebCore::Document::Document): Initialize m_updateFocusAppearanceTimer.
513         (WebCore::Document::updateFocusAppearanceSoon): Added. Starts timer.
514         (WebCore::Document::cancelFocusAppearanceUpdate): Added. Stops timer.
515         (WebCore::Document::updateFocusAppearanceTimerFired): Added. If the
516         focused node is a focusable element, then calls
517         updateFocusAppearance(false) on it.
518
519         * dom/Element.h: Removed default value of the boolean parameter to
520         updateFocusAppareance. Removed needsFocusAppearanceUpdate(),
521         setNeedsFocusAppearanceUpdate(), updateFocusAppearanceTimerFired(),
522         stopUpdateFocusAppearanceTimer(), m_updateFocusAppearanceTimer, and
523         m_needsFocusAppearanceUpdate. Added
524         updateFocusAppearanceSoonAfterAttach() and cancelFocusAppearanceUpdate().
525         * dom/Element.cpp:
526         (WebCore::ElementRareData::ElementRareData): Added initializer for
527         m_needsFocusAppearanceUpdateSoonAfterAttach.
528         (WebCore::Element::Element): Removed initializers for
529         m_updateFocusAppearanceTimer and m_needsFocusAppearanceUpdate.
530         (WebCore::Element::attach): Updated code that starts the focus
531         appearance timer to instead call updateFocusAppearanceSoon() on the
532         document.
533         (WebCore::Element::detach): Replaced call to
534         stopUpdateFocusAppearanceTimer with call to cancelFocusAppearanceUpdate.
535         (WebCore::Element::focus): Added check for node that's already focused,
536         to match the logic that's in the derived classes. This makes it safe for
537         us to remove the override in the derived classes. Also replaced the code
538         that called setNeedsFocusAppearanceUpdate(true) with code to set the
539         rare data flag m_needsFocusAppearanceUpdateSoonAfterAttach and added a
540         call to cancelFocusAppearanceUpdate() in the case where there's no focus
541         appearance update.
542         (WebCore::Element::blur): Replaced call to
543         stopUpdateFocusAppearanceTimer with call to cancelFocusAppearanceUpdate.
544         (WebCore::Element::cancelFocusAppearanceUpdate): Added. Sets
545         m_needsFocusAppearanceUpdateSoonAfterAttach to false, and then calls
546         cancelFocusAppearanceUpdate() on the document, but only if the element
547         is the focused node of the document.
548
549         * html/HTMLDocument.cpp:
550         (WebCore::HTMLDocument::HTMLDocument): Replaced code that sets
551         m_xmlVersion directly with a call to a new inline clearXMLVersion()
552         function.
553         (WebCore::HTMLDocument::setCookie): Replaced use of m_policyBaseURL with
554         policyBaseURL().
555         (WebCore::HTMLDocument::createTokenizer): Replaced uses of m_frame with
556         frame().
557         (WebCore::HTMLDocument::determineParseMode): Replaced code that sets
558         pMode and hMode directly with calls to setParseMode and setHTMLMode.
559         Replaced use of m_styleSelector with styleSelector().
560
561         * html/HTMLInputElement.h: Removed now-unneed override of focus().
562         Removed default value of the boolean parameter to updateFocusAppareance.
563         * html/HTMLInputElement.cpp: (WebCore::HTMLInputElement::updateFocusAppearance):
564         Pass the restorePreviousSelection boolean through -- while it's ignored,
565         it no longer has a default value.
566
567         * html/HTMLTextAreaElement.h: Removed now-unneed override of focus().
568         Removed default value of the boolean parameter to updateFocusAppareance.
569         * html/HTMLTextAreaElement.cpp: Ditto.
570
571         * WebCore.exp: Removed the Document::frame() symbol, since it's now inline.
572
573 2007-08-15  Antti Koivisto  <antti@apple.com>
574
575         Reviewed by Maciej.
576         
577         Fix <rdar://problem/5388936>
578         Crash while setting display:none for a table cell with selection
579         
580         Super class destroy() could (through some selection code in removeChild()) trigger section recalc 
581         in middle of RenderTableCell::destroy(), cleaning section dirty bit. This would later crash in 
582         layout since cell grid would still have refence to the dead cell.
583         
584         Ensure table sections are dirty when leaving destroy method.
585         
586         I can't figure out tests for row and section changes but they look like
587         they could crash in similar way as cell.
588
589         * rendering/RenderTableCell.cpp:
590         (WebCore::RenderTableCell::destroy):
591         * rendering/RenderTableRow.cpp:
592         (WebCore::RenderTableRow::destroy):
593         * rendering/RenderTableSection.cpp:
594         (WebCore::RenderTableSection::destroy):
595
596 2007-08-15  Maciej Stachowiak  <mjs@apple.com>
597
598         Reviewed by Geoff.
599
600         <rdar://problem/5389696> leak of 32-byte NSData object (and more?) in WebIconDatabase code path with each refresh of http://www.apple.com
601         
602         * platform/graphics/BitmapImage.h: Use RetainPtr for m_nsImage and m_tiffRep
603         * platform/graphics/mac/ImageMac.mm:
604         (WebCore::BitmapImage::initPlatformData): No need to do anything now
605         (WebCore::BitmapImage::invalidatePlatformData): Simplify
606         (WebCore::BitmapImage::getTIFFRepresentation): Use RetainPtr to avoid leaks
607         (WebCore::BitmapImage::getNSImage): Use RetainPtr to avoid leaks
608
609 2007-08-15  Darin Adler  <darin@apple.com>
610
611         Reviewed by Anders.
612
613         - fix <rdar://problem/5094895> REGRESSION (r19094): JavaScript timers don't
614           work inside showModalDialog; caret also doesn't blink
615
616         * platform/Timer.h: Added fireTimersInNestedEventLoop.
617         * platform/Timer.cpp:
618         (WebCore::TimerBase::fireTimers): Added code to exit if the timersReadyToFire
619         is cleared. This indicates that someone fired the timers in the nested event
620         loop, so we should not fire any more timers ourselves.
621         (WebCore::TimerBase::fireTimersInNestedEventLoop): Added. Sets timersReadyToFire
622         to 0 so we won't return early and do nothing if the shared timer first. Then
623         calls updateSharedTimer() so the shared timer will get scheduled as needed based
624         on any pending timers.
625
626         * page/Chrome.cpp: (WebCore::Chrome::runModal): Call
627         fireTimersInNestedEventLoop before calling runModal on the client.
628
629         * manual-tests/modal-dialog.html: Added a test that uses a timeout.
630         * manual-tests/show-modal-dialog-test.html: Fixed a typo.
631
632 2007-08-15  Justin Garcia  <justin.garcia@apple.com>
633
634         Reviewed by Darin.
635         
636         http://bugs.webkit.org/show_bug.cgi?id=14971
637         REGRESSION: cannot select reporter's e-mail in bugzilla
638
639         * page/EventHandler.cpp:
640         (WebCore::EventHandler::canMouseDragExtendSelect): Allow drag-selecting inside
641         a -webkit-user-select:ignore region.
642
643 2007-08-15  Beth Dakin  <bdakin@apple.com>
644
645         Reviewed by Hyatt.
646
647         Rolling back in. I made a silly mistake in XMLTokenizer that caused 
648         this patch to crash SVG tests. It's fixed now!
649
650         Refactor of change for <rdar://problem/5404899> REGRESSION: Mail 
651         crash in WebCore::FontFallbackList::fontDataAt() after dragging 
652         image into text multiple times
653
654         The original fix that I made last night prevents the pending style 
655         sheet count from being incremented until the element is in the 
656         document. This fix prevents the style sheet from loading at all 
657         until it is in the document.
658
659         Here is the fix.
660         * dom/StyleElement.cpp:
661         (WebCore::StyleElement::insertedIntoDocument): Call process.
662         (WebCore::StyleElement::removedFromDocument): This can be reverted 
663         to its original state before my patch last night.
664         (WebCore::StyleElement::process): childrenChanged is now called 
665         process. Return early if your not in the document.
666         (WebCore::StyleElement::createSheet): Revert change from last 
667         night. The inDocument check is now in caller childrenChanged.
668         * dom/StyleElement.h: insertedIntoDocument() must now accept an 
669         element in addition to a document.
670
671         This is an optimization to prevent calling updateStyleSelector() 
672         too frequently.
673         * dom/XMLTokenizer.cpp:
674         (WebCore::XMLTokenizer::startElementNs):
675         * html/HTMLStyleElement.cpp:
676         (WebCore::HTMLStyleElement::HTMLStyleElement):
677         (WebCore::HTMLStyleElement::finishedParsing):
678         (WebCore::HTMLStyleElement::insertedIntoDocument):
679         (WebCore::HTMLStyleElement::childrenChanged):
680         (WebCore::HTMLStyleElement::sheetLoaded):
681         * html/HTMLStyleElement.h:
682         * ksvg2/svg/SVGStyleElement.cpp:
683         (WebCore::SVGStyleElement::SVGStyleElement):
684         (WebCore::SVGStyleElement::finishedParsing):
685         (WebCore::SVGStyleElement::insertedIntoDocument):
686         (WebCore::SVGStyleElement::childrenChanged):
687         (WebCore::SVGStyleElement::sheetLoaded):
688         * ksvg2/svg/SVGStyleElement.h:
689         (WebCore::SVGStyleElement::setCreatedByParser):
690
691         This is a name change. Document::stylesheetLoaded() 
692         is now Document::removePendingSheet()
693         * dom/Document.cpp:
694         (WebCore::Document::removePendingSheet):
695         * dom/Document.h:
696         * dom/ProcessingInstruction.cpp:
697         (WebCore::ProcessingInstruction::sheetLoaded):
698         * html/HTMLLinkElement.cpp:
699         (WebCore::HTMLLinkElement::~HTMLLinkElement):
700         (WebCore::HTMLLinkElement::setDisabledState):
701         (WebCore::HTMLLinkElement::process):
702         (WebCore::HTMLLinkElement::sheetLoaded):
703         * page/Frame.cpp:
704         (WebCore::UserStyleSheetLoader::~UserStyleSheetLoader):
705         (WebCore::UserStyleSheetLoader::setCSSStyleSheet):
706
707         This is another name change. closeRenderer() is now 
708         finishedParsing()
709         * dom/Node.h:
710         (WebCore::Node::finishedParsing):
711         * dom/XMLTokenizer.cpp:
712         (WebCore::XMLTokenizer::endElementNs):
713         (WebCore::):
714         * html/HTMLAppletElement.cpp:
715         (WebCore::HTMLAppletElement::finishedParsing):
716         * html/HTMLAppletElement.h:
717         * html/HTMLGenericFormElement.cpp:
718         (WebCore::HTMLFormControlElementWithState::finishedParsing):
719         * html/HTMLGenericFormElement.h:
720         * html/HTMLObjectElement.cpp:
721         (WebCore::HTMLObjectElement::finishedParsing):
722         * html/HTMLObjectElement.h:
723         * html/HTMLParser.cpp:
724         (WebCore::HTMLParser::insertNode):
725         (WebCore::HTMLParser::popOneBlockCommon):
726         * html/HTMLScriptElement.cpp:
727         (WebCore::HTMLScriptElement::finishedParsing):
728         * html/HTMLScriptElement.h:
729         (WebCore::HTMLStyleElement::setCreatedByParser):
730         * ksvg2/svg/SVGAnimationElement.cpp:
731         (WebCore::SVGAnimationElement::finishedParsing):
732         * ksvg2/svg/SVGAnimationElement.h:
733         * ksvg2/svg/SVGElement.cpp:
734         (WebCore::SVGElement::finishedParsing):
735         * ksvg2/svg/SVGElement.h:
736
737 2007-08-15  David Harrison  <harrison@apple.com>
738
739         Reviewed by Antti Koivisto.
740
741         <rdar://problem/5411803> Bumpercar crashes when loading a partial URL (FrameLoader::receivedMainResourceError())
742
743         * loader/MainResourceLoader.cpp:
744         (WebCore::MainResourceLoader::receivedError):
745         Nil check for the FrameLoader.
746
747 2007-08-14  Steve Falkenburg  <sfalken@apple.com>
748
749         <rdar://problem/5411482> Windows user agent language always returns "en"
750         
751         Implement defaultLanguage().
752
753         Reviewed by Oliver.
754
755         * WebCore.vcproj/WebCore.vcproj: Added Language.cpp.
756         * platform/win/Language.cpp: Added.
757         (WebCore::localeInfo): Added.
758         (WebCore::defaultLanguage): Added.
759         * platform/win/TemporaryLinkStubs.cpp: Remove defaultLanguage stub.
760
761 2007-08-14  Sam Weinig  <sam@webkit.org>
762
763         Reviewed by Geoff and Oliver.
764
765         Fix for <rdar://problem/5267870>
766         Mangleme: Reproducible assertion failure in -[WebCoreFrameBridge installInFrame:]
767
768         - Change embed/plugin code path to detach the frame on willRemove instead of detach.
769           This matches what frame and iframe do.
770
771         Test: http/tests/misc/embedCrasher.html
772
773         * html/HTMLPlugInElement.cpp:
774         (WebCore::HTMLPlugInElement::willRemove):
775         * html/HTMLPlugInElement.h:
776
777 2007-08-14  Adele Peterson  <adele@apple.com>
778
779         Reviewed by Maciej.
780
781         Fix for <rdar://problem/5370059> REGRESSION: Cannot type into edit fields on a form (sccsheriff.org)
782
783         This change makes -webkit-user-select an inherited css property.  For "user-select: none" we were already 
784         acting like it was an inheritable property, where we let user-select:text on the children override its parent's user-select:none.
785         By making user-select really inherited (instead of inherited for some values), we eliminate the need for crawling up the tree to see 
786         if an ancestor has user-select ignore set.
787
788         * page/EventHandler.cpp: (WebCore::EventHandler::canMouseDownStartSelect):
789           Now that user-select is inherited, you don't need to walk up the render tree looking for ancestors with user-select:ignore set.
790
791         * css/CSSStyleSelector.cpp: Eliminate SELECT_AUTO.
792         (WebCore::CSSStyleSelector::adjustRenderStyle):
793         (WebCore::CSSStyleSelector::applyProperty):
794         * css/CSSComputedStyleDeclaration.cpp: (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue):
795
796         * rendering/RenderStyle.h:
797         (WebCore::): Eliminate SELECT_AUTO.  Make userSelect inherited.
798         (WebCore::RenderStyle::userSelect):
799         (WebCore::RenderStyle::setUserSelect):
800         (WebCore::RenderStyle::initialUserSelect):
801         * rendering/RenderStyle.cpp:
802         (WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData):
803         (WebCore::StyleRareNonInheritedData::operator==):
804         (WebCore::StyleRareInheritedData::StyleRareInheritedData):
805         (WebCore::StyleRareInheritedData::operator==):
806         (WebCore::RenderStyle::diff):
807
808 2007-08-15  Peter Kasting  <zerodpx@gmail.org>
809
810         Reviewed by Darin.
811         
812         http://bugs.webkit.org/show_bug.cgi?id=14967 part 1 - Eliminate most implicit
813         conversions of wtf::Vector<T> to T* by explicitly calling .data()
814
815         * html/HTMLSelectElement.cpp:
816         (WebCore::HTMLSelectElement::saveState):
817         * platform/KURL.cpp:
818         (WebCore::KURL::KURL):
819         (WebCore::KURL::init):
820         (WebCore::KURL::decode_string):
821         (WebCore::KURL::parse):
822         (WebCore::KURL::encode_string):
823         * platform/cf/KURLCFNet.cpp:
824         (WebCore::KURL::KURL):
825         * platform/mac/KURLMac.mm:
826         (WebCore::KURL::KURL):
827         * rendering/RenderFrameSet.cpp:
828         (WebCore::RenderFrameSet::layOutAxis):
829
830 2007-08-14  Ricci Adams  <iccir@apple.com>
831
832         Reviewed by Darin, Hyatt.
833
834         - fix <rdar://problem/5407795> -apple-line-clamp should never display less than one line
835
836         * rendering/RenderFlexibleBox.cpp:(WebCore::RenderFlexibleBox::layoutVerticalBox): Use
837         max to make sure it never computes a minimum of less than one line.
838
839 2007-08-14  Brady Eidson  <beidson@apple.com>
840
841         Reviewed by Darin, John, Maciej, Oliver, and Tim
842
843         <rdar://problem/5394708> - Crash on launch with corrupt icon database
844
845         The main part of the fix is to not disable SQLite's default level of protection - to leave the sync options at their normal,
846         mostly safe levels.  
847
848         But in case lightning strikes at the exact right moment and someone ends up with a corrupt database, add some support code to
849         detect that condition and recover from it.  
850
851         This is mainly accomplished by exposing the "PRAGMA integrity_check;" facilities of sqlite through IconDatabase SPI as well as
852         running that integrity check if a journal file is detected at launch (a strong indication that the last quit was not clean).
853         There's also a method exposed to allow clients to tell the icon database "I suspect something bad happened, please check integrity"
854
855         * loader/icon/IconDatabase.cpp:
856         (WebCore::IconDatabase::checkIntegrityBeforeOpening): Allow clients to suggest an integrity check
857         (WebCore::IconDatabase::open): Add a check to see if the journal file for the database exists.  If it does, run the integrity
858           check.  Also run the check if a client has suggested it to be necessary.
859           If the integrity-check fails, we sadly have to destroy the database and recreate from scratch.
860           Also - quite importantly - do not adjust the default sync preferences for the SQLDatabase.  They were an optimization that 
861           might have been valid at one time but no longer affects any benchmarks we care about.
862         (WebCore::IconDatabase::checkIntegrity): Perform the SQLite integrity_check pragma
863         * loader/icon/IconDatabase.h:
864
865         * loader/icon/IconDatabaseNone.cpp:
866         (WebCore::IconDatabase::checkIntegrity): Keep IconDatabaseNone users building
867         (WebCore::IconDatabase::checkIntegrityBeforeOpening): Ditto
868
869         * loader/icon/SQLDatabase.cpp:
870         (WebCore::SQLDatabase::open): Make a copy of the path string so we don't accidentally mutate anyone else's string on ::close()
871
872         * platform/FileSystem.h: Added. Begin a long-needed platform file system abstraction
873         * platform/mac/FileSystemMac.mm: Added.
874         (WebCore::fileExists): Check if a file exists
875         (WebCore::deleteFile): Delete a file
876
877         * platform/gdk/TemporaryLinkStubs.cpp:
878         (WebCore::fileExists):
879         (WebCore::deleteFile):
880         * platform/qt/TemporaryLinkStubs.cpp:
881         (WebCore::fileExists):
882         (WebCore::deleteFile):
883         * platform/win/TemporaryLinkStubs.cpp:
884         (WebCore::fileExists):
885         (WebCore::deleteFile):
886
887         * WebCore.exp:
888         * WebCore.xcodeproj/project.pbxproj:
889
890 2007-08-14  Jon Honeycutt  <jhoneycutt@apple.com>
891
892         Reviewed by Steve.
893
894         Build fix for Windows.
895
896         * html/HTMLFormElement.cpp:
897
898 2007-08-14  George Staikos  <staikos@kde.org>
899
900         Only connect the menu signal once.
901
902         * platform/qt/ContextMenuQt.cpp:
903         (WebCore::ContextMenu::ContextMenu):
904         (WebCore::ContextMenu::insertItem):
905
906 2007-08-14  Justin Garcia  <justin.garcia@apple.com>
907
908         Reviewed by Tim.
909
910         <rdar://problem/5408255> REGRESSION: In Mail, clicking the containing element's UI closebox doesn't delete element
911
912         * editing/DeleteButtonController.cpp:
913         (WebCore::DeleteButtonController::show): Use -webkit-user-select:ignore for
914         the deletion UI.
915
916 2007-08-14  Antti Koivisto  <antti@apple.com>
917
918         Reviewed by Darin.
919         
920         Fix <rdar://problem/5143183>
921         Air Mail postmark shows up wrong in Firefox due to use of CSS background-position-x/y
922         
923         Safari was using non-standard background-position-x/y properties when serializing style, both normal 
924         and computed. As a result Safari generated CSS would not render correctly in Firefox. 
925         
926         Use standard background-position property instead.
927
928         * css/CSSComputedStyleDeclaration.cpp:
929         (WebCore::):
930         * css/CSSMutableStyleDeclaration.cpp:
931         (WebCore::CSSMutableStyleDeclaration::cssText):
932
933 2007-08-14  Sam Weinig  <sam@webkit.org>
934
935         Reviewed by Brady and Dr. Harrison.
936
937         Fix typo.  'whitespace' property is spelled 'white-space'.
938
939         * page/inspector/inspector.css:
940
941 2007-08-13  Beth Dakin  <bdakin@apple.com>
942
943         Reviewed by Maciej.
944
945         Fix for <rdar://problem/5404899> REGRESSION: Mail crash in 
946         WebCore::FontFallbackList::fontDataAt() after dragging image into 
947         text multiple times
948
949         We were crashing because style information was not up-to-date. This 
950         patch fixes the problem in two ways:
951
952         Style information was not up to date at the time of the crash 
953         because the document thought there was still a pending style sheet. 
954         The pending style sheet counter was incremented when a call to 
955         cloneNode from Mail cloned a style node with an imported style 
956         sheet. Because Mail disables the cache, the style sheet did not 
957         load immediately for the cloned node, and we do not check again to 
958         see if it has loaded in time to decrement the pending style sheet 
959         counter before the crash point. The fix here is only to increment 
960         the pending style sheet counter for elements that are already in 
961         the document.
962         * dom/StyleElement.cpp:
963         (WebCore::StyleElement::insertedIntoDocument): If we have a CSS 
964         style sheet that is currently loading, increment the pending style 
965         sheet counter. This should keep the counter accurate in the case 
966         where a style node is cloned and then immediately inserted into the 
967         document.
968         (WebCore::StyleElement::removedFromDocument): If we have a CSS 
969         style sheet that is currently loading, decrement the pending style 
970         sheet count. This is required to keep the correct balance, given 
971         the change above.
972         (WebCore::StyleElement::createSheet): Only addPendingSheet() and 
973         checkLoaded() if we are in the document.
974
975         Here is Darin's original fix. It seems worth keeping this fix too. 
976         Font style information should not cause a crash if there are still 
977         pending style sheets. This is good belt-and-suspenders in case 
978         there is another way to run into this bug with a wacky timing 
979         issue.
980         * css/CSSStyleSelector.cpp:
981         (WebCore::CSSStyleSelector::styleForElement): Update the font.
982
983 2007-08-13  Alexey Proskuryakov  <ap@webkit.org>
984
985         Reviewed by Darin.
986
987         http://bugs.webkit.org/show_bug.cgi?id=14635
988         rdar://problem/5340188
989         Uploading file with non-ASCII character in path fails
990
991         File upload cannot be tested in DumpRenderTree.
992
993         * html/HTMLFormElement.cpp:
994         (WebCore::pathGetFilename): A cross-platform helper that extracts a file name from a path.
995         (WebCore::HTMLFormElement::formData): Use the above helper instead of code that doesn't
996         work on Windows.
997
998 2007-08-13  Alexey Proskuryakov  <ap@webkit.org>
999
1000         Reviewed by Darin.
1001
1002         http://bugs.webkit.org/show_bug.cgi?id=14951
1003         REGRESSION: page interpreted as UTF-8 because of stray <?xml> after <head>
1004
1005         Test: fast/encoding/misplaced-xml-declaration.html
1006
1007         * loader/TextResourceDecoder.cpp:
1008         (WebCore::TextResourceDecoder::checkForHeadCharset): Only honor XML declaration
1009         at the very beginning of the file.
1010
1011 2007-08-13  Oliver Hunt  <oliver@apple.com>
1012
1013         rs=sam
1014
1015         Correct accidentally modified code.
1016
1017         * platform/mac/FontDataMac.mm:
1018         (WebCore::FontData::platformInit):
1019
1020 2007-08-13  Adele Peterson  <adele@apple.com>
1021
1022         Reviewed by Brady.
1023
1024         Fix for http://bugs.webkit.org/show_bug.cgi?id=14746
1025         <rdar://problem/5401041> REGRESSION: Form state not saved for forms that submit via HTTPS even if they do not contain a password field
1026
1027         * loader/FrameLoader.cpp: (WebCore::FrameLoader::saveDocumentState): Restore our old behavior that will save form state for secure forms.
1028           This will also match Firefox behavior.
1029
1030         * dom/Document.cpp: Removed secureFormAdded(), secureFormRemoved(), hasSecureForm() which are no longer used.
1031         * dom/Document.h:
1032         * html/HTMLFormElement.cpp:
1033         (WebCore::HTMLFormElement::attach):
1034         (WebCore::HTMLFormElement::parseMappedAttribute):
1035
1036 2007-08-13  Oliver Hunt  <oliver@apple.com>
1037
1038         Reviewed by Maciej.
1039
1040         <rdar://problem/5386183> REGRESSION (9A504-9A508): Underline of inline hole is too thin 
1041         on Japanese DotMac page
1042         
1043         Hack the line metrics for the Hiragino font families so that they always allow space for
1044         the marked text underline.
1045         
1046         * platform/mac/FontDataMac.mm:
1047         (WebCore::FontData::platformInit):
1048
1049 2007-08-13  David Hyatt  <hyatt@apple.com>
1050
1051         Reviewed by aroben
1052  
1053         <rdar://problem/5400446> messed up content on calendar.yahoo.com and my.yahoo.com
1054
1055         Fix some more bad assumptions about <html> being the first child of the document now that we
1056         properly support HTML5's model (where a comment node preceding <html> will in fact be its sibling).
1057
1058         * html/HTMLParser.cpp:
1059         (WebCore::HTMLParser::handleError):
1060         (WebCore::HTMLParser::createHead):
1061
1062 2007-08-13  Justin Garcia  <justin.garcia@apple.com>
1063
1064         Reviewed by Darin.
1065         
1066         <rdar://problem/5333725> -webkit-user-select: none makes selection difficult
1067         
1068         Let users create selections if they mouse down in a -webkit-user-select:none
1069         region, just (continue to) disallow selection endpoints in those regions, and
1070         don't paint those regions as selected if they are fully enclosed by a selection. 
1071         For example, in xxyyyxx where x is -webkit-user-select:none, a user can mouse down
1072         between the first two xs and drag across yyy to the second two xs to create a 
1073         selection xx^yyy^xx.
1074         
1075         * editing/SelectionController.cpp:
1076         (WebCore::SelectionController::selectAll): Allow selectAll inside a root
1077         that has -webkit-user-select:none, because it may contain content that
1078         is selectable (VisiblePosition and Selection creation will keep Selection
1079         endpoints out of -webkit-user-select:none regions).
1080         * page/EventHandler.cpp:
1081         (WebCore::EventHandler::selectClosestWordFromMouseEvent): Use canMouseDownStartSelect
1082         instead of the ambiguously named shouldSelect().
1083         (WebCore::EventHandler::handleMousePressEventTripleClick): Ditto.
1084         (WebCore::EventHandler::handleMousePressEventSingleClick): Ditto.
1085         (WebCore::EventHandler::updateSelectionForMouseDrag): Use canMouseDragExtendSelect.
1086         (WebCore::EventHandler::selectCursor): Paint an ibeam in -webkit-user-select:none regions,
1087         because you can click in those regions to create a selection.
1088         (WebCore::EventHandler::canMouseDownStartSelect): Now fires the selectStart event, and
1089         returns true in -webkit-user-select: none regions.
1090         (WebCore::EventHandler::canMouseDragExtendSelect): This is identical to 
1091         canMouseDownStartSelect because of 12823, even though it seems strange that we would fire 
1092         the selectStart event here.
1093         * page/EventHandler.h:
1094         * rendering/RenderObject.cpp:
1095         (WebCore::RenderObject::draggableNode): Only -webkit-user-select:ignore regions will
1096         prevent selection creation.
1097         * rendering/RenderObject.h:
1098
1099 2007-08-13  Anders Carlsson  <andersca@apple.com>
1100
1101         Reviewed by Maciej.
1102
1103         <rdar://problem/5360748>
1104         REGRESSION (r21002-r21003): Flash widget sniffer doesn't work (affects iWeb)
1105
1106         Don't check whether the document is being parsed or not, because the node list
1107         could be accessed after the document has finished parsing.
1108         
1109         * dom/Node.cpp:
1110         (WebCore::Node::registerNodeList):
1111
1112 2007-08-13  Lars Knoll  <lars@trolltech.com>
1113
1114         Reviewed by Simon.
1115
1116         no need to update regions that are not visible on the webpage.
1117
1118         * platform/qt/ScrollViewQt.cpp:
1119         (WebCore::ScrollView::updateContents):
1120
1121 2007-08-12  Maciej Stachowiak  <mjs@apple.com>
1122
1123         Reviewed by Darin and Sam.
1124         
1125         <rdar://problem/5395213> cross-domain access to individual components of location object should be denied.
1126
1127         * bindings/js/kjs_window.cpp:
1128         (KJS::Location::put): Add the appropriate cross-domain access checks.
1129
1130 2007-08-12  Darin Adler  <darin@apple.com>
1131
1132         Reviewed by John Sullivan.
1133
1134         - fix <rdar://problem/5403724> REGRESSION: text inputs are not scrolled to make inline input visible (14912)
1135
1136         * editing/Editor.h: Made setIgnoreMarkedTextSelectionChange no longer inline.
1137         It now has a side effect of revealing the selection when you set it to false.
1138         Added private revealSelectionAfterEditingOperation helper.
1139         * editing/Editor.cpp:
1140         (WebCore::Editor::deleteRange): Calls revealSelectionAfterEditingOperation instead
1141         of calling m_frame->revealSelection directly.
1142         (WebCore::Editor::replaceSelectionWithFragment): Ditto.
1143         (WebCore::Editor::insertOrderedList): Ditto.
1144         (WebCore::Editor::insertUnorderedList): Ditto.
1145         (WebCore::Editor::increaseSelectionListLevel): Ditto.
1146         (WebCore::Editor::increaseSelectionListLevelOrdered): Ditto.
1147         (WebCore::Editor::increaseSelectionListLevelUnordered): Ditto.
1148         (WebCore::Editor::decreaseSelectionListLevel): Ditto.
1149         (WebCore::Editor::insertLineBreak): Ditto.
1150         (WebCore::Editor::insertParagraphSeparator): Ditto.
1151         (WebCore::Editor::replaceMarkedText): Ditto.
1152         (WebCore::Editor::revealSelectionAfterEditingOperation): Added. Calls revealSelection,
1153         unless we are in the ignoreMarkedTextSelectionChange state. If we are in that state,
1154         we're in the middle of a composite editing operation and we shouldn't try to scroll
1155         to reveal the selection until the operation is done.
1156         (WebCore::Editor::setIgnoreMarkedTextSelectionChange): Made no longer inline. If
1157         changing the state from true to false, then calls revealSelectionAfterEditingOperation.
1158
1159         * WebCore.exp: Add new entry point for no-longer-inline setter function.
1160
1161 2007-08-12  Geoffrey Garen  <ggaren@apple.com>
1162
1163         Reviewed by Maciej Stachowiak, Dave Hyatt.
1164         
1165         Changed the dead resource LRU-SP algorithm to measure an object's
1166         total size, not just its encoded size. This will allow us to make 
1167         better decisions about what data to evict when the cache is small. For 
1168         example, the PLT can now run with a 16MB cache without fully evicting
1169         any resources.
1170         
1171         (Previously, we had assumed that decoded size would be an OK estimate
1172         of encoded size, but that is not true of GIF, whose decoded size can be 
1173         orders of magnitude greater than its encoded size.)
1174         
1175         Subtly, destroying a resource's decoded data now increases its recency 
1176         by moving it to the head of a smaller LRU list. This is slightly odd,
1177         but, since all resources get the same treatment, it shouldn't hurt 
1178         the eviction algorithm.
1179
1180         * history/PageCache.cpp:
1181         (WebCore::PageCache::releaseAutoreleasedPagesNow): Make sure that a
1182         dead resource eviction doesn't happen until we've released all of our
1183         dead pages. Otherwise, the cache will make terrible decisions about 
1184         what to evict because all of our dead resources will seem live.
1185
1186         * loader/Cache.cpp:
1187         (WebCore::Cache::Cache):
1188         (WebCore::Cache::pruneLiveResources):
1189         (WebCore::Cache::pruneDeadResources): Removed call to 
1190         removeFromLiveDecodedResourcesList because this happens automatically
1191         now as a part of the process of changing the resource's decoded size.
1192         (WebCore::Cache::lruListFor): *** The key change. *** Compute the 
1193         appropriate LRU list based on total size, not encoded size.
1194         (WebCore::Cache::dumpLRULists): Added debug logging function to help
1195         visualize the cache.
1196
1197         * loader/Cache.h:
1198         (WebCore::Cache::setDeadResourcePruneEnabled):
1199         (WebCore::Cache::deadResourcePruneEnabled):
1200
1201         * loader/CachedImage.cpp: Moved decoded size tracking code from here
1202         up into the base class. Currently, only CachedImage has a use for that
1203         functionality, but other subclasses might need it in the future, and
1204         the base class is already responsible for similar code related to 
1205         encoded size tracking.
1206         (WebCore::CachedImage::decodedSizeChanged):
1207         * loader/CachedImage.h:
1208
1209         * loader/CachedResource.cpp:
1210         (WebCore::CachedResource::CachedResource):
1211         (WebCore::CachedResource::setDecodedSize): Move us in the LRU-SP list
1212         just like setEncodedSize does, since decoded size counts now, too.
1213         (WebCore::CachedResource::setEncodedSize): Changed slightly to match
1214         the style of setDecodedSize.
1215
1216         * loader/CachedResource.h:
1217         (WebCore::CachedResource::decodedSize):
1218
1219 2007-08-11  Mitz Pettel  <mitz@webkit.org>
1220
1221         Reviewed by Darin.
1222
1223         - fix http://bugs.webkit.org/show_bug.cgi?id=13670
1224           <rdar://problem/5399619> Table misrender when one of the TDs has width=100%
1225
1226         Tests: fast/table/100-percent-cell-width.html
1227                fast/table/percent-widths-stretch.html
1228
1229         * rendering/AutoTableLayout.cpp:
1230         (WebCore::AutoTableLayout::calcPrefWidths): Changed the value used instead of
1231         0% to avoid division by zero from 1% to less than 0.01%. Removed code that
1232         added 0.5px to non-percent widths when calculating the scaling factor. The
1233         latter change is covered by the percent-widths-stretch test, where the new
1234         results match both WinIE 7 and Firefox 3.
1235
1236 2007-08-11  Darin Adler  <darin@apple.com>
1237
1238         Reviewed by Antti.
1239
1240         - fix <rdar://problem/5266535> REGRESSION: <img> inside <map> no longer allowed in strict mode
1241           (breaks chemicalelements.com)
1242
1243         Test: fast/parser/strict-img-in-map.html
1244
1245         * html/HTMLMapElement.cpp: (WebCore::HTMLMapElement::checkDTD): Removed FIXME saying this
1246         code is strange, since this code matches the HTML 4 specification almost exactly. Made
1247         <img> elements allowed even in strict mode and added small comments to clarify what comes
1248         from the DTD and what is non-standard.
1249
1250 2007-08-11  Holger Hans Peter Freyther  <zecke@selfish.org>
1251
1252         Reviewed by Anders.
1253
1254         Implement passing events to a subframe. The code is copied from
1255         the windows port and passSubframeEventToSubframe was removed as it
1256         is not called and it is not avilable in the windows port as well.
1257
1258         * page/gdk/EventHandlerGdk.cpp:
1259         (WebCore::EventHandler::passMousePressEventToSubframe):
1260         (WebCore::EventHandler::passMouseMoveEventToSubframe):
1261         (WebCore::EventHandler::passMouseReleaseEventToSubframe):
1262
1263 2007-08-11  Holger Hans Peter Freyther  <zecke@selfish.org>
1264
1265         Reviewed by Lars.
1266
1267         GdkEventKey::string is not supposed to be used. The length
1268         of this string is zero for non ascii characters. Use the
1269         gdk_unicode_to_keyval to convert the keyval to a UChar and construct
1270         a String. This change makes it possible to input non ascii
1271         characters.
1272
1273         * platform/gdk/KeyEventGdk.cpp:
1274         (WebCore::keyIdentifierForGdkKeyCode):
1275         (WebCore::singleCharacterString):
1276         (WebCore::PlatformKeyboardEvent::PlatformKeyboardEvent):
1277
1278 2007-08-11  Andrew Wellington  <proton@wiretapped.net>
1279
1280         Reviewed by Mark Rowe.
1281         
1282         Fix http://bugs.webkit.org/show_bug.cgi?id=14645
1283         getPropertyValue should be case insensitive
1284         
1285         When we get the propertyID for a given string we convert to lowercase.
1286         
1287         This also applies to setProperty, removeProperty and others.
1288         
1289         * css/CSSStyleDeclaration.cpp:
1290         (WebCore::propertyID):
1291
1292 2007-08-11  Mark Rowe  <mrowe@apple.com>
1293
1294         Build fix.  Change "#ifdef PLATFORM(GDK)" to "#if PLATFORM(GDK)".
1295
1296         * page/FrameView.cpp:
1297         * page/FrameView.h:
1298
1299 2007-08-11  Holger Hans Peter Freyther  <zecke@selfish.org>
1300
1301         Reviewed by Adam.
1302
1303         Copy the WebFrame::layoutIfNeededRecursive method of the windows port
1304         to FrameView to be used by the Gtk+ port. Simplify the implementation due
1305         moving it to the FrameView class.
1306
1307         Implement the ScrollView::children() method for the Gtk+ port and make it
1308         available to the FrameView as children() is used within the layoutIfNeededRecursive method.
1309
1310         * page/FrameView.cpp:
1311         (WebCore::FrameView::layoutIfNeededRecursive):
1312         * page/FrameView.h:
1313         * platform/ScrollView.h:
1314         * platform/gdk/ScrollViewGdk.cpp:
1315
1316 2007-08-11  Holger Hans Peter Freyther  <zecke@selfish.org>
1317
1318         Reviewed by Adam.
1319
1320         To fix text selection make the PlatformMouseEvent set the pressed
1321         button even when moving the mouse.
1322         
1323         Add building of the WebKit::DragClient stubs as they are needed to
1324         make text selection work.
1325
1326         * WebCore.pro:
1327         * platform/gdk/MouseEventGdk.cpp:
1328         (WebCore::PlatformMouseEvent::PlatformMouseEvent):
1329
1330 2007-08-10  Anders Carlsson  <andersca@apple.com>
1331
1332         Reviewed by Darin and Maciej.
1333
1334         <rdar://problem/5360748>
1335         REGRESSION(r21002-r21003) Flash widget sniffer doesn't work
1336         
1337         Add a per-document NodeList counter. When parsing, only call notifyNodeListsChildrenChanged
1338         if the document has node lists. Also, make sure to reset the cache when the node list count has 
1339         been 0 and a new node list is registered to avoid any stale cache information.
1340         
1341         * dom/ContainerNode.cpp:
1342         (WebCore::ContainerNode::addChild):
1343         * dom/Document.cpp:
1344         (WebCore::Document::Document):
1345         * dom/Document.h:
1346         (WebCore::Document::addNodeList):
1347         (WebCore::Document::removeNodeList):
1348         (WebCore::Document::hasNodeLists):
1349         * dom/Node.cpp:
1350         (WebCore::Node::registerNodeList):
1351         (WebCore::Node::unregisterNodeList):
1352
1353 2007-08-10  Timothy Hatcher  <timothy@apple.com>
1354
1355         Reviewed by Adam.
1356
1357         <rdar://problem/5394449> Stop using some Carbon UI APIs for 64 bit
1358
1359         Disable NPObject use in 64-bit on Mac OS X.
1360
1361         * Configurations/WebCore.xcconfig: Add a framework search path to the sub-framworks of Carbon.
1362         * WebCore.xcodeproj/project.pbxproj: Filter out the Frame::windowScriptNPObject() symbol in 64-bit.
1363         * bindings/objc/DOM.mm:
1364         (-[DOMElement _NPObject]): Return null in 64-bit.
1365         * config.h: Set WTF_USE_NPOBJECT to 0 in 64-bit Mac OS X.
1366         * page/Frame.cpp:
1367         (WebCore::Frame::cleanupScriptObjects): Add more #if USE(NPOBJECT) blocks where needed.
1368         * page/Frame.h: Ditto.
1369         * page/mac/FrameMac.mm:
1370         (WebCore::Frame::createScriptInstanceForWidget): Ditto.
1371         * page/mac/WebCoreFrameBridge.h: Ditto.
1372         * page/mac/WebCoreFrameBridge.mm: Ditto.
1373
1374 2007-08-10  Mitz Pettel  <mitz@webkit.org>
1375
1376         Reviewed by Justin.
1377
1378         - fix <rdar://problem/5397344> http://bugs.webkit.org/show_bug.cgi?id=14911
1379           REGRESSION: Clicking in pasted text doesn't position the insertion point correctly
1380
1381         Test: editing/selection/inline-closest-leaf-child.html
1382
1383         * rendering/RootInlineBox.cpp:
1384         (WebCore::RootInlineBox::closestLeafChildForXPos): Return the last leaf if
1385         it's the closest match, or if no other leaf matches (for example if all
1386         leaves are list markers or non-editable where editable is required).
1387
1388 2007-08-10  Anders Carlsson  <andersca@apple.com>
1389
1390         Reviewed by Geoff.
1391
1392         <rdar://problem/5390568> 
1393         REGRESSION: –[WebFrame loadHTMLString:baseURL:] leaks the data source.
1394         
1395         Revert the fix for <rdar://problem/5133420> which caused us to not cancel 
1396         substitute data loads. It's better to remove the assertion in the WebKit layer.
1397         
1398         * loader/ResourceLoader.cpp:
1399         (WebCore::ResourceLoader::didCancel):
1400
1401 2007-08-10  Sam Weinig  <sam@webkit.org>
1402
1403         Rubber-stamped by Adam Roben.
1404
1405         Fix Windows, Qt and Gtk build.
1406
1407         * WebCore.pro:
1408         * WebCore.vcproj/WebCore.vcproj:
1409
1410 2007-08-09  Sam Weinig  <sam@webkit.org>
1411
1412         Reviewed by Maciej.
1413
1414         Fix for <rdar://problem/5395618>
1415
1416         Use checkNodeSecurity when setting the 'src' or 'location' attribute of an
1417         iframe or frame element.  
1418
1419         * WebCore.xcodeproj/project.pbxproj:
1420         * bindings/js/JSAttrCustom.cpp: Added.
1421         (WebCore::JSAttr::setValue): Call checkNodeSecurity for attributes with a current iframe or frame
1422         ownerElement when setting src to a javascript: URL.
1423         * bindings/js/JSElementCustom.cpp: Added.
1424         (WebCore::allowSettingSrcToJavascriptURL):
1425         (WebCore::JSElement::setAttribute): Call checkNodeSecurity when element is a frame or iframe and 
1426         setting he src attribute to a javascript: URL.
1427         (WebCore::JSElement::setAttributeNode): Ditto.
1428         (WebCore::JSElement::setAttributeNS): Ditto.
1429         (WebCore::JSElement::setAttributeNodeNS): Ditto.
1430         * bindings/js/JSHTMLFrameElementCustom.cpp: Added.
1431         (WebCore::allowSettingJavascriptURL):
1432         (WebCore::JSHTMLFrameElement::setSrc): Call checkNodeSecurity when setting to a javascript: URL.
1433         (WebCore::JSHTMLFrameElement::setLocation): Ditto.
1434         * bindings/js/JSHTMLIFrameElementCustom.cpp: Added.
1435         (WebCore::JSHTMLIFrameElement::setSrc): Call checkNodeSecurity when setting to a javascript: URL.
1436         * bindings/scripts/CodeGeneratorJS.pm: Add support for [CustomGetter] and [CustomSetter]
1437         * dom/Attr.idl:
1438         * dom/Element.idl:
1439         * html/HTMLFrameElement.idl:
1440         * html/HTMLIFrameElement.idl:
1441
1442 2007-08-10  Holger Hans Peter Freyther  <zecke@selfish.org>
1443
1444         Reviewed by Anders.
1445
1446         Make the containingWindow a GtkContainer and make use of the
1447         GtkWidget::window instead of the GtkLayout::bin_window.
1448
1449         * platform/Widget.h:
1450         * platform/gdk/PlatformScreenGdk.cpp:
1451         (WebCore::screenDepth):
1452         * platform/gdk/ScrollViewGdk.cpp:
1453         (WebCore::ScrollView::updateContents):
1454         (WebCore::ScrollView::update):
1455         * platform/gdk/WidgetGdk.cpp:
1456         (WebCore::Widget::setContainingWindow):
1457         (WebCore::Widget::setCursor):
1458
1459 2007-08-10  Simon Hausmann  <hausmann@kde.org>
1460
1461         Reviewed by Lars.
1462
1463         Revert r24699 as it broke timers. The precision of QTime::toTime_t() is just seconds, which is not good enough. Revert back
1464         to the old implementation and use the simple implementation of currentTime() from win/ for the Qt/Windows build (fingers crossed :)
1465
1466         * WebCore.pro:
1467         * platform/qt/SystemTimeQt.cpp:
1468         (WebCore::currentTime):
1469
1470 2007-08-10  Simon Hausmann  <hausmann@kde.org>
1471
1472         Reviewed by Lars.
1473
1474         Recognize .htm as valid extension for text/html.
1475
1476         * platform/qt/MIMETypeRegistryQt.cpp:
1477         (WebCore::):
1478
1479 2007-08-10  Lars Knoll  <lars@trolltech.com>
1480
1481         Reviewed by Simon.
1482
1483         remove an assertion that leads to crashes. The whole design of WidgetQt and ScrollViewQt needs to be reevaluated soon anyways.
1484
1485         * platform/qt/ScrollViewQt.cpp:
1486
1487 2007-08-10  Mark Rowe  <mrowe@apple.com>
1488
1489         Fix the Mac build.
1490
1491         * ForwardingHeaders/bindings/runtime_object.h: Added.
1492
1493 2007-08-10  Simon Hausmann  <hausmann@kde.org>
1494
1495         Reviewed by Lars.
1496
1497         Make sure -fno-strict-aliasing is also added for mkspecs like linux-g++-64.
1498
1499         * WebCore.pro:
1500
1501 2007-08-10  Simon Hausmann  <hausmann@kde.org>
1502
1503         Reviewed by Lars.
1504
1505         Enable JavaScript bindings for HTML Object/Applet elements in the Qt port.
1506
1507         * WebCore.pro:
1508         * bindings/js/kjs_dom.cpp:
1509         * html/HTMLAppletElement.h:
1510         * html/HTMLEmbedElement.h:
1511         * page/qt/FrameQt.cpp:
1512         (WebCore::Frame::createScriptInstanceForWidget):
1513
1514 2007-08-10  Mitz Pettel  <mitz@webkit.org>
1515
1516         Reviewed by Dave Hyatt.
1517
1518         - fix http://bugs.webkit.org/show_bug.cgi?id=14798
1519           Incorrect bidi reordering of neutrals and digits after RTL embed
1520           and other bugs in the bidi algorithm.
1521
1522         Test: fast/text/international/bidi-neutral-run.html
1523
1524         Fixed several bugs in resolving the embedding level of runs of neutral
1525         characters. Changed the logic to rely on the eor direction only for
1526         the number types, and otherwise consider the last strong type.
1527
1528         * platform/BidiContext.h:
1529         (WebCore::BidiContext::BidiContext): Added an ASSERT.
1530         * platform/BidiResolver.h:
1531         (WebCore::::embed):
1532         (WebCore::::createBidiRunsForLine):
1533         * platform/graphics/GraphicsContext.cpp:
1534         (WebCore::TextRunIterator::atEnd): Changed to return true instead of
1535         crashing when called on the empty iterator.
1536
1537 2007-08-09  Mark Rowe  <mrowe@apple.com>
1538
1539         Reviewed by Antti.
1540
1541         <rdar://problem/5400709> Versioning in debug and release builds should include minor and tiny version before +
1542
1543         * Configurations/Version.xcconfig:
1544         * WebCore.xcodeproj/project.pbxproj: Add a shell script phase to make to dependency between
1545         Version.xcconfig and Info.plist explicit to Xcode.
1546
1547 2007-08-09  Mitz Pettel  <mitz@webkit.org>
1548
1549         Reviewed by Justin Garcia.
1550
1551         - fix http://bugs.webkit.org/show_bug.cgi?id=14347
1552           REGRESSION (r21291): Initiating a drag near the edge of a selection deselects it
1553
1554         Test: editing/selection/contains-boundaries.html
1555
1556         * editing/SelectionController.cpp:
1557         (WebCore::SelectionController::contains): Changed to return true for the
1558         selection boundaries too.
1559
1560 2007-08-09  Mitz Pettel  <mitz@webkit.org>
1561
1562         Reviewed by Dave Hyatt.
1563
1564         - fix http://bugs.webkit.org/show_bug.cgi?id=14742
1565           Document::recalcStyle(Force) called for every updateStyleIgnorePendingStylesheets while waiting for stylesheets
1566           <rdar://problem/5376306>
1567
1568         updateStyleSelector() is normally called when something changes that factors
1569         into the style selector. However, updateLayoutIgnorePendingStylesheets() calls it for
1570         a different reason, namely to account for all the preceding changes that were ignored
1571         because of the early return in updateStyleSelector(). After that, the early return
1572         can no longer occur, so changes are accounted for as they happen, and
1573         updateLayoutIgnorePendingStylesheets() does not need to call updateStyleSelector()
1574         again.
1575
1576         * dom/Document.cpp:
1577         (WebCore::Document::updateLayoutIgnorePendingStylesheets): Call updateStyleSelector()
1578         only before the first layout.
1579
1580 2007-08-09  Mitz Pettel  <mitz@webkit.org>
1581
1582         Reviewed by Adam Roben.
1583
1584         - fix http://bugs.webkit.org/show_bug.cgi?id=14362
1585           Opening a select list always highlights first element in list
1586
1587         * platform/win/PopupMenuWin.cpp:
1588         (WebCore::PopupWndProc): Track the mouse only inside the popup.
1589
1590 2007-08-09  Mitz Pettel  <mitz@webkit.org>
1591
1592         Reviewed by Dave Hyatt.
1593
1594         - fix http://bugs.webkit.org/show_bug.cgi?id=14875
1595           Textarea with nowrap - left/right nav, Up/down nav both hide text
1596
1597         Test: fast/layers/scroll-rect-to-visible.html
1598
1599         * rendering/RenderLayer.cpp:
1600         (WebCore::RenderLayer::scrollRectToVisible): Account for borders and scroll bars.
1601
1602 2007-08-09  Geoffrey Garen  <ggaren@apple.com>
1603
1604         Reviewed by Dave Hyatt.
1605         
1606         Refactored live decoded resource eviction to be more modular / 
1607         encapsulated. 
1608         
1609         This fixes one known place where we forgot to hook into the live 
1610         decoded eviction mechanism -- canvas. There might be other, unknown 
1611         places. In a canvas test page, which I broke off from the Safari 
1612         pageout test, I saw an RPRVT reduction of ~10MB.
1613         
1614         A few renames:
1615         - "m_lastLiveAccessTime" => "m_lastDecodedAccessTime" because the data
1616         point we're recording is access to the resource in decoded form.
1617         
1618         - "liveResourceAccessed" => "didAccessDecodedData" for the same reason.
1619
1620         - "pruneAllResources" => "pruneDeadResources" because this function 
1621         does not prune live resources.
1622         
1623         And the fix:
1624         Instead of updating cache metadata at the call site whenver drawing an 
1625         image, just have an image notify its observer whenever it draws. The 
1626         observer, which is a CachedResource, can then update the metadata.
1627         
1628         * loader/Cache.cpp: Renames
1629         * loader/Cache.h: Removed stale declarations, updated comments
1630         * loader/CachedImage.cpp:
1631         (WebCore::CachedImage::didDraw): Implemented didDraw to update cache
1632         metadata whenever our image draws.
1633         * loader/CachedImage.h: Grouped parts of the ImageObserver interface.
1634         * loader/CachedResource.cpp:
1635         (WebCore::CachedResource::CachedResource):
1636         (WebCore::CachedResource::deref):
1637         (WebCore::CachedResource::didAccessDecodedData): Made this function
1638         slightly more modular by allowing the caller to provide a time stamp.
1639         In theory, not all CachedResources will necessarily want to use the 
1640         current paint time stamp.
1641         * platform/graphics/cg/ImageCG.cpp:
1642         (WebCore::BitmapImage::draw): Notify our observer that we drew.
1643         (WebCore::Image::drawPattern): ditto
1644         * platform/graphics/cg/PDFDocumentImage.cpp:
1645         (WebCore::PDFDocumentImage::draw): ditto
1646         * platform/graphics/svg/SVGImage.cpp:
1647         (WebCore::SVGImage::draw): ditto
1648         
1649         Removed old code at image drawing call sites:
1650         
1651         * rendering/RenderBox.cpp:
1652         (WebCore::RenderBox::paintBackgroundExtended):
1653         * rendering/RenderImage.cpp:
1654         (WebCore::RenderImage::paint):
1655         * rendering/RenderListMarker.cpp:
1656         (WebCore::RenderListMarker::paint):
1657         * rendering/RenderObject.cpp:
1658         (WebCore::RenderObject::paintBorderImage):
1659
1660 2007-08-10  Holger Hans Peter Freyther  <zecke@selfish.org>
1661
1662         Reviewed by Adam.
1663
1664         Move the various *ClientGdk.{h,cpp} away from the WebCore directory as
1665         of http://bugs.webkit.org/show_bug.cgi?id=14727.
1666
1667         * WebCore.pro:
1668         * platform/gdk/TemporaryLinkStubs.cpp:
1669
1670 2007-08-09  Anders Carlsson  <andersca@apple.com>
1671
1672         Reviewed by Maciej.
1673
1674         <rdar://problem/5400029> iframes with an image src rarely load image
1675         
1676         Don't try to shrink standalone images in subframes. The resize event is not 
1677         sent for subframes which screws up the shrink-to-fit logic.
1678         
1679         * loader/ImageDocument.cpp:
1680         (WebCore::ImageDocument::createDocumentStructure):
1681         (WebCore::ImageDocument::imageChanged):
1682         (WebCore::ImageDocument::shouldShrinkToFit):
1683         * loader/ImageDocument.h:
1684
1685 2007-08-10  Holger Hans Peter Freyther  <zecke@selfish.org>
1686
1687         Reviewed by Adam.
1688
1689         Implement FrameLoaderClientGdk::createFrame mostly by copying
1690         the windows implementation. A method similiar to WebFrame::loadURLIntoChild
1691         was not introduced instead we have a simplified version similiar to the
1692         one of the Qt port.
1693
1694         Remove building of WebKit/gtk/webkitgtkframedata.{cpp,h}.
1695
1696         * WebCore.pro:
1697         * loader/gdk/FrameLoaderClientGdk.cpp:
1698         (WebCore::FrameLoaderClientGdk::createFrame):
1699
1700 2007-08-10  Holger Hans Peter Freyther  <zecke@selfish.org>
1701
1702         Reviewed by Adam.
1703
1704         Use the ScrollView/Widget design of the Windows port to only use one
1705         native window for the whole page. This will make it possible to implement
1706         FrameLoaderClientGdk::createFrame.
1707
1708         In contrast to the windows port the ScrollBars are GtkWidgets. To paint them
1709         at the right position we need to position them correctly. To not scroll the
1710         ScrollBar's belonging to the ScrollView a ScrollViewScrollbar is introduced with
1711         a different geometryChanged method.
1712
1713         To allow the Gtk+ way of scrolling the ScrollView allows to get GtkAdjustments
1714         set. In this case no ScrollViewScrollbar will be created.
1715
1716
1717         * platform/ScrollView.h:
1718         * platform/Widget.h:
1719         * platform/gdk/PlatformScreenGdk.cpp:
1720         (WebCore::screenDepth):
1721         * platform/gdk/PlatformScrollBar.h:
1722         * platform/gdk/PlatformScrollBarGdk.cpp:
1723         (PlatformScrollbar::PlatformScrollbar):
1724         (PlatformScrollbar::~PlatformScrollbar):
1725         (PlatformScrollbar::setRect):
1726         (PlatformScrollbar::geometryChanged):
1727         * platform/gdk/ScrollViewGdk.cpp:
1728         (WebCore::ScrollView::ScrollViewPrivate::ScrollViewPrivate):
1729         (WebCore::ScrollView::ScrollViewPrivate::~ScrollViewPrivate):
1730         (WebCore::ScrollViewScrollbar::ScrollViewScrollbar):
1731         (WebCore::ScrollViewScrollbar::geometryChanged):
1732         (WebCore::ScrollView::ScrollViewPrivate::setHasHorizontalScrollbar):
1733         (WebCore::ScrollView::ScrollViewPrivate::setHasVerticalScrollbar):
1734         (WebCore::ScrollView::ScrollViewPrivate::scrollBackingStore):
1735         (WebCore::ScrollView::ScrollViewPrivate::adjustmentChanged):
1736         (WebCore::ScrollView::ScrollViewPrivate::valueChanged):
1737         (WebCore::ScrollView::ScrollViewPrivate::windowClipRect):
1738         (WebCore::ScrollView::setGtkAdjustments):
1739         (WebCore::ScrollView::updateContents):
1740         (WebCore::ScrollView::update):
1741         (WebCore::ScrollView::visibleWidth):
1742         (WebCore::ScrollView::resizeContents):
1743         (WebCore::ScrollView::contentsX):
1744         (WebCore::ScrollView::scrollOffset):
1745         (WebCore::ScrollView::maximumScroll):
1746         (WebCore::ScrollView::scrollBy):
1747         (WebCore::ScrollView::suppressScrollbars):
1748         (WebCore::ScrollView::setHScrollbarMode):
1749         (WebCore::ScrollView::setVScrollbarMode):
1750         (WebCore::ScrollView::setScrollbarsMode):
1751         (WebCore::ScrollView::setFrameGeometry):
1752         (WebCore::ScrollView::addChild):
1753         (WebCore::ScrollView::removeChild):
1754         (WebCore::ScrollView::scrollRectIntoViewRecursively):
1755         (WebCore::ScrollView::wheelEvent):
1756         (WebCore::ScrollView::updateScrollbars):
1757         (WebCore::ScrollView::windowToContents):
1758         (WebCore::ScrollView::contentsToWindow):
1759         (WebCore::ScrollView::scrollbarUnderMouse):
1760         (WebCore::ScrollView::convertChildToSelf):
1761         (WebCore::ScrollView::convertSelfToChild):
1762         (WebCore::ScrollView::paint):
1763         (WebCore::ScrollView::geometryChanged):
1764         (WebCore::ScrollView::scroll):
1765         (WebCore::ScrollView::addToDirtyRegion):
1766         (WebCore::ScrollView::scrollBackingStore):
1767         (WebCore::ScrollView::updateBackingStore):
1768         * platform/gdk/WidgetGdk.cpp:
1769         (WebCore::WidgetPrivate::gdkDrawable):
1770         (WebCore::Widget::Widget):
1771         (WebCore::Widget::setContainingWindow):
1772         (WebCore::Widget::containingWindow):
1773         (WebCore::Widget::frameGeometry):
1774         (WebCore::Widget::setFrameGeometry):
1775         (WebCore::Widget::setParent):
1776         (WebCore::Widget::parent):
1777         (WebCore::Widget::setCursor):
1778         (WebCore::Widget::show):
1779         (WebCore::Widget::hide):
1780         (WebCore::Widget::removeFromParent):
1781         (WebCore::Widget::paint):
1782         (WebCore::Widget::invalidate):
1783         (WebCore::Widget::invalidateRect):
1784         (WebCore::Widget::convertToContainingWindow):
1785         (WebCore::Widget::convertFromContainingWindow):
1786         (WebCore::Widget::convertChildToSelf):
1787         (WebCore::Widget::convertSelfToChild):
1788         (WebCore::Widget::suppressInvalidation):
1789         (WebCore::Widget::setSuppressInvalidation):
1790
1791 2007-08-09  Adele Peterson  <adele@apple.com>
1792
1793         Fix by Brady, reviewed by me.
1794
1795         Fix for <rdar://problem/5380697> connection:willSendRequest:redirectResponse: is called on every NSURLConnection
1796
1797         * platform/network/mac/ResourceHandleMac.mm: (-[WebCoreResourceHandleAsDelegate connection:willSendRequest:redirectResponse:]):
1798           Work around a behavior change in CFNetwork where willSendRequest gets called more often by returning early.
1799
1800 2007-08-09  Darin Adler  <darin@apple.com>
1801
1802         Reviewed by Antti.
1803
1804         - fix <rdar://problem/4889753> REGRESSION: Selection doesn't continue with drag selecting
1805           when autoscrolling vertically (in Notes as well as Safari)
1806
1807         The bug doesn't happen inside DumpRenderTree, so I was unable to make an automated
1808         regression test.
1809
1810         * manual-tests/autoscroll-when-outside-window.html: Added.
1811
1812         * rendering/RenderLayer.cpp: (WebCore::RenderLayer::autoscroll): Removed unneeded null
1813         check for the layer's renderer and the document, neither of which can be null. Call
1814         the new updateSelectionForMouseDrag instead of doing selection updating here.
1815
1816         * page/EventHandler.h:
1817         * page/EventHandler.cpp:
1818         (WebCore::EventHandler::handleMouseDraggedEvent): Refactored most of the logic
1819         about updating the selection into updateSelectionForMouseDrag.
1820         (WebCore::EventHandler::updateSelectionForMouseDrag): Added. The public version of
1821         this function takes no parameters, and is for use from auto-scrolling code. The
1822         private version of this function takes node and point parameters and contains the
1823         shared code, including everything from updateSelectionForMouseDragOverPosition.
1824         Aside from the code motion, variable name changes, and sharing more code, this
1825         differs from the old code in RenderLayer::autoscroll in the following ways:
1826
1827           1) The old code did hit testing only in the layer that was auto-scrolling,
1828              and the new code instead starts the hit testing at the root layer, which is
1829              better because it's the same thing we do for mouse moved events. Further,
1830              the code to do this by calling convertToLayerCoords had a bug  because the
1831              x and y variables were uninitialized.
1832           2) The old code passed false for active to HitTestRequest, which was wrong.
1833              The new code passes true. This flag needs to be true for hit testing done
1834              while the mouse is down and false for hit testing done while the mouse is up.
1835           3) The old code did not have the SVG-specific logic to match the mouse moved case.
1836           4) The old code wouldn't do any selection updating if the return value from hitTest
1837              was false, which is incorrect. The new code ignores the return value as it should.
1838
1839 2007-08-08  Beth Dakin  <bdakin@apple.com>
1840
1841         Reviewed by Geoff Garen.
1842
1843         Fx for <rdar://problem/5286443>, http://bugs.webkit.org/
1844         show_bug.cgi?id=14268 REGRESSION: Radio buttons don't stay selected 
1845         due to unclosed <label> tags
1846
1847         This patch maintains the behavior that allows <label> tags to nest. 
1848         This matches WinIE, and appears to match the spec, since the spec 
1849         does not explicitly say that they cannot nest. It fixes the bug 
1850         instead by calling setDefaultHandled() in two places it should have 
1851         been called anyway. This keeps the appropriate button checked as 
1852         the event bubbles.
1853
1854         * html/HTMLInputElement.cpp:
1855         (WebCore::HTMLInputElement::postDispatchEventHandler):
1856         * html/HTMLLabelElement.cpp:
1857         (WebCore::HTMLLabelElement::defaultEventHandler):
1858
1859 2007-08-08  Justin Garcia  <justin.garcia@apple.com>
1860
1861         Reviewed by Oliver.
1862
1863         <rdar://problem/5387578> Crash at ReplaceSelectionCommand::doApply() when pasting just after table cell content
1864         
1865         ReplaceSelectionCommand::doApply() inserts a line break before insertion
1866         to prevent block nesting.  InsertLineBreakCommand::doApply was accidently
1867         destroying a text node when it removed insignificant whitespace and then
1868         setting a nil endingSelection().
1869
1870         * editing/InsertLineBreakCommand.cpp:
1871         (WebCore::InsertLineBreakCommand::doApply): If insignificant whitespace
1872         removal removes textNode from the document, insert a text node containing
1873         the non-breaking space we were attempting to insert and then insert it
1874         at the position that the removed textNode occupied.
1875
1876 2007-08-08  Geoffrey Garen  <ggaren@apple.com>
1877
1878         Reviewed by Maciej Stachowiak.
1879
1880         Added a thrash check to live decoded resource eviction.
1881         
1882         Here's the strategy: Stamp every image with its paint time. Don't evict 
1883         a live decoded resource until another resource paints with a reasonably
1884         (1 second) larger time stamp. 
1885         
1886         If no other resource paints, or another resource paints, but very soon 
1887         after the resource in question, the resource in question is very likely 
1888         to paint again soon. In fact, it's probably still on screen. So we 
1889         leave it alone. (Previously, we evicted it on a timer, but that would 
1890         evict a resource that was still on screen, hurting speed without 
1891         helping memory use.)
1892
1893         In theory, this algorithm allows a single large resource or closely 
1894         related set of resources to linger in the live decoded cache even 
1895         though the cache is over its limit. However, that can only happen as 
1896         long as no other resource ever paints again, which guarantees an 
1897         absolute cap on cache memory usage from then on. Also, the resources 
1898         will only linger as long as they remain live. Upon going dead, they 
1899         will flush. Also, these circumstances are so rare that they are almost 
1900         impossible to encounter in the wild. So don't sweat it.
1901         
1902         Stop evicting if the next resource painted too recently:
1903         
1904         * loader/Cache.cpp:
1905         (WebCore::Cache::pruneLiveResources):
1906         * loader/CachedResource.cpp:
1907         (WebCore::CachedResource::CachedResource):
1908         (WebCore::CachedResource::liveResourceAccessed):
1909         * loader/CachedResource.h:
1910
1911         Track the paint time stamp in Frame. We do this to give a consistent
1912         stamp to all resources painted in a single paint operation (in case the
1913         operation takes a significant amount of time), and to avoid excessive 
1914         calls to system time functions, which hurt the PLT:
1915
1916         * page/Frame.cpp:
1917         (WebCore::Frame::paint):
1918         * page/Frame.h:
1919         (WebCore::Frame::currentPaintTimeStamp):
1920
1921 2007-08-08  Sam Weinig  <sam@webkit.org>
1922
1923         Reviewed by Adam Roben.
1924
1925         Update project file to reflect the moving of character-sets.txt
1926         and make-charset-table.pl to platform/mac a while ago.
1927
1928         * WebCore.xcodeproj/project.pbxproj:
1929
1930 2007-08-08  Justin Garcia  <justin.garcia@apple.com>
1931
1932         Reviewed by Harrison.
1933
1934         <rdar://problem/5390681> WebKit asserts when deleting To Do content selected with a double-click
1935         
1936         * dom/Position.cpp:
1937         (WebCore::Position::trailingWhitespacePosition): Use VisiblePosition::characterAfter
1938         to look for a trailing space.  The old code would incorrectly return a position before
1939         a non-editable space if it had a collapsed space before it.
1940
1941 2007-08-08  Sam Weinig  <sam@webkit.org>
1942
1943         Reviewed by Brady.
1944
1945         Make protocol and host compares case-insensitive.
1946
1947         * bindings/js/kjs_window.cpp:
1948         (KJS::Window::isSafeScript):
1949         * dom/Document.cpp:
1950         (WebCore::Document::initSecurityPolicyURL):
1951         * platform/DeprecatedString.cpp:
1952         (WebCore::equalIgnoringCase):
1953         * platform/DeprecatedString.h:
1954         (WebCore::equalIgnoringCase):
1955
1956 2007-08-08  Justin Garcia  <justin.garcia@apple.com>
1957
1958         Reviewed by Harrison.
1959
1960         <rdar://problem/5390681> WebKit asserts when deleting To Do content selected with a double-click
1961
1962         * dom/Position.cpp:
1963         (WebCore::Position::leadingWhitespacePosition): Added checks to prevent expansion across editable an boundary.
1964         (WebCore::Position::trailingWhitespacePosition): Ditto.
1965
1966 2007-08-08  Adele Peterson  <adele@apple.com>
1967
1968         Reviewed by John.
1969
1970         Fix for <rdar://problem/5393798> 100% reproducible crash in WebCore::Scrollbar::setValue
1971
1972         * page/EventHandler.cpp: (WebCore::EventHandler::handleMousePressEvent):
1973           If the hit testing originally determined the event was in a scrollbar, 
1974           refetch the MouseEventWithHitTestResults in case the scrollbar widget was destroyed when the mouse event was handled.
1975
1976 2007-08-08  Sam Weinig  <sam@webkit.org>
1977
1978         Reviewed by Geoff Garen.
1979
1980         Fix for <rdar://problem/5354635>
1981
1982         Match Firefox's model for data: URLs by not allowing them script access
1983         to any frames other then itself.
1984
1985         * bindings/js/kjs_window.cpp:
1986         (KJS::Window::isSafeScript):
1987         * dom/Document.cpp:
1988         (WebCore::Document::initSecurityPolicyURL):
1989
1990 2007-08-08  Darin Adler  <darin@apple.com>
1991
1992         Reviewed by Kevin Decker.
1993
1994         - fix for <rdar://problem/5390708> CrashTracer: [USER] 27 crashes in Safari at
1995           com.apple.WebCore: WTF::HashMap<etc>::set + 68, beneath pruneUnretainedIconsAtStartup
1996
1997         * loader/icon/IconDatabase.cpp: (WebCore::IconDatabase::pruneUnretainedIconsOnStartup):
1998         Eliminate an unnecessary HashMap from the implementation; we can just use the
1999         m_pageURLToRetainCount map directly. This simplifies the code and allows us to handle
2000         the empty string, which otherwise poses a problem for HashMap.
2001
2002 2007-08-08  Antti Koivisto  <antti@apple.com>
2003
2004         Reviewed by Darin.
2005         
2006         Fix for <rdar://problem/5391576>
2007         Malformed table innerHTML causes Safari to crash in HTMLParser::handleError (14894)
2008         
2009         Add null checks to protect against 
2010         
2011         e.innerHTML = "<tr>text</tr>";
2012         
2013         type cases. Normal assumptions about document tree structure don't hold when parsing 
2014         fragments. Results don't match Firefox in all cases. It seems to have some sort of 
2015         anything-goes fragment parsing mode.
2016         
2017         * html/HTMLParser.cpp:
2018         (WebCore::HTMLParser::handleError):
2019
2020 2007-08-07  Kevin McCullough  <kmccullough@apple.com>
2021
2022         Reviewed by Maciej and Hyatt.
2023
2024         - <rdar://problem/4976879> REGRESSION: Safari doesn't work with Zimbra enhanced login.
2025         - Reverting a previous change, and modifying how documents are created so that we better match other browsers behavior with respect to namespaceURIs.
2026
2027         * WebCore.xcodeproj/project.pbxproj:
2028         * dom/DOMImplementation.cpp:
2029         (WebCore::DOMImplementation::createDocument):
2030         * dom/Document.cpp:
2031         (WebCore::Document::Document):
2032         (WebCore::Document::createElement):
2033         * dom/Document.h:
2034         * html/HTMLDocument.cpp:
2035         (WebCore::HTMLDocument::createElement):
2036         * html/HTMLDocument.h:
2037
2038 2007-08-08  Cameron Zwarich  <cwzwarich@uwaterloo.ca>
2039
2040         Reviewed and landed by Brady
2041
2042         Fixes <http://bugs.webkit.org/show_bug.cgi?id=13422>
2043
2044         Bug 13422: REGRESSION: Page reload loses page position
2045
2046         * loader/FrameLoader.cpp:
2047         (WebCore::FrameLoader::updateHistoryForReload):
2048
2049 2007-08-08  Holger Hans Peter Freyther  <zecke@selfish.org>
2050
2051         Reviewed by Niko.
2052
2053         Be paranoid and disconnect from the signal before going away.
2054
2055         * platform/gdk/PlatformScrollBarGdk.cpp:
2056         (PlatformScrollbar::~PlatformScrollbar):
2057
2058 2007-08-08  Holger Hans Peter Freyther  <zecke@selfish.org>
2059
2060         Reviewed by Niko.
2061
2062         Use GraphicsContext::translatePoint in RenderThemeGdk to paint at the
2063         right position.
2064         This is needed as the Gtk+ theming code does not know about the translation
2065         of the GraphicsContext.
2066
2067         * platform/gdk/RenderThemeGdk.cpp:
2068         (WebCore::RenderThemeGdk::paintCheckbox):
2069         (WebCore::RenderThemeGdk::paintRadio):
2070         (WebCore::RenderThemeGdk::paintButton):
2071
2072 2007-08-08  Holger Hans Peter Freyther  <zecke@selfish.org>
2073
2074         Reviewed by Niko.
2075
2076         Implement Widget::paint for the Gtk port. This is needed to paint
2077         Widgets in z-order. The original GdkEventExpose is stored within the
2078         GraphicsContext and then used to draw the children. This is similiar
2079         to gtk_container_propagate_expose but we try to honor the GraphicsConntext
2080         translation.
2081
2082         * platform/gdk/WidgetGdk.cpp:
2083         (WebCore::Widget::paint):
2084         * platform/graphics/GraphicsContext.h:
2085         * platform/graphics/cairo/GraphicsContextCairo.cpp:
2086         (WebCore::GraphicsContextPlatformPrivate::GraphicsContextPlatformPrivate):
2087         (WebCore::GraphicsContext::setGdkExposeEvent):
2088         (WebCore::GraphicsContext::gdkExposeEvent):
2089         (WebCore::GraphicsContext::gdkDrawable):
2090         (WebCore::GraphicsContext::translatePoint):
2091
2092 2007-08-08  Holger Hans Peter Freyther  <zecke@selfish.org>
2093
2094         Reviewed by Oliver Hunt.
2095
2096         Implement PlatformScrollbar by calling ScrollBar::setValue from 
2097         gtkValueChange connected to the value-changed signal of the
2098         GtkAdjustment.
2099         Update 'value' of the GtkAdjustment in updateThumbPosition and
2100         set upper, page-increment, step-increment and page_size in
2101         updateThumbProportion.
2102
2103         This is from bug http://bugs.webkit.org/show_bug.cgi?id=14795.
2104
2105         * platform/gdk/PlatformScrollBar.h:
2106         * platform/gdk/PlatformScrollBarGdk.cpp:
2107         (PlatformScrollbar::PlatformScrollbar):
2108         (PlatformScrollbar::updateThumbPosition):
2109         (PlatformScrollbar::updateThumbProportion):
2110         (PlatformScrollbar::gtkValueChanged):
2111
2112 2007-08-07  Geoffrey Garen  <ggaren@apple.com>
2113
2114         Reviewed by Maciej Stachowiak. Based on earlier review from Dave Hyatt.
2115
2116         First chunk of work for <rdar://problem/5326009> Make non-browser 
2117         WebKit clients have no memory cache, or a very tiny one
2118         
2119         Layout tests pass.
2120         
2121         Removed decodedSizeWillChange mechanism because my last patch to
2122         change the live resources list to a strict LRU model made that code
2123         vestigial.
2124         
2125         Renamed "liveResourcesList" and related stuff => 
2126         "liveDecodedResourcesList" because only live resources with decoded 
2127         data are kept in the list.
2128
2129         * loader/CachedImage.cpp:
2130         (WebCore::CachedImage::decodedSizeChanged): Only add ourselves to the
2131         list if we're live, our decoded size has grown, and we're not in the 
2132         list already. (Otherwise, either we're not live, we're not decoded,
2133         or we're already in the list.)
2134
2135         * loader/CachedResource.cpp:
2136         (WebCore::CachedResource::liveResourceAccessed): Only re-insert
2137         ourselves into the list if we're already there. (In theory, this should
2138         be always, but it's a little more clear to check.)
2139
2140 2007-08-08  Holger Hans Peter Freyther  <zecke@selfish.org>
2141
2142         Reviewed by Adam.
2143
2144         Kill class FrameGdk and move the stubs to page/gdk/FrameGdk.cpp and the
2145         remainings into WebKitGtkFrame.
2146         The DRT functionality of class FrameGdk is currently lost.
2147
2148         * WebCore.pro:
2149         * loader/gdk/FrameLoaderClientGdk.cpp:
2150         * loader/gdk/FrameLoaderClientGdk.h:
2151         * page/gdk/FrameGdk.cpp: Renamed from WebCore/platform/gdk/FrameGdk.cpp.
2152         (WebCore::Frame::issueTransposeCommand):
2153         (WebCore::Frame::cleanupPlatformScriptObjects):
2154         (WebCore::Frame::dragImageForSelection):
2155         (WebCore::Frame::dashboardRegionsChanged):
2156         * platform/gdk/FrameGdk.h: Removed.
2157         * platform/gdk/TemporaryLinkStubs.cpp: Removed Frame stub, added the loadResourceIntoArray stub
2158         * platform/gdk/WidgetGdk.cpp:
2159
2160 2007-08-08  Holger Hans Peter Freyther  <zecke@selfish.org>
2161
2162         Reviewed by Adam.
2163
2164         Remove the event handling code and move it to WebKit/gtk/Api/webkitgtkpage.cpp
2165
2166         * platform/gdk/FrameGdk.cpp:
2167         * platform/gdk/FrameGdk.h:
2168
2169 2007-08-07  Holger Hans Peter Freyther  <zecke@selfish.org>
2170
2171         Reviewed by Niko.
2172
2173         Switch from the generic union GdkEvent to the specific struct GdkEvent*. This is needed
2174         to make WebKitGtkPage handle the events by reimplementing the default handlers in the near
2175         future.
2176
2177         * platform/PlatformKeyboardEvent.h:
2178         * platform/PlatformMouseEvent.h:
2179         * platform/PlatformWheelEvent.h:
2180         * platform/gdk/FrameGdk.cpp:
2181         (WebCore::FrameGdk::handleGdkEvent):
2182         * platform/gdk/KeyEventGdk.cpp:
2183         (WebCore::PlatformKeyboardEvent::PlatformKeyboardEvent):
2184         * platform/gdk/MouseEventGdk.cpp:
2185         (WebCore::PlatformMouseEvent::PlatformMouseEvent):
2186         * platform/gdk/WheelEventGdk.cpp:
2187         (WebCore::PlatformWheelEvent::PlatformWheelEvent):
2188
2189 2007-08-07  George Staikos  <staikos@kde.org>
2190
2191         Some QStyles don't handle negative maximum well (crash)
2192
2193         * platform/qt/PlatformScrollBarQt.cpp:
2194         (WebCore::PlatformScrollbar::paint):
2195
2196 2007-08-07  Antti Koivisto  <antti@apple.com>
2197
2198         Reviewed by Hyatt.
2199
2200         Fix <rdar://problem/5102553>
2201         Mail spins trying to display or edit a specific long plain text message in WebCore::TimerBase::...
2202
2203         Calling removeLeftoverAnonymousBoxes() from RenderBlock::addChildToFlow() made adding children
2204         O(n^2) in simple cases (repeated <div><div></div></div> for example).
2205         
2206         I couldn't find any limited fix so here is a more complete one. It removes iterating/recursing 
2207         removeLeftoverAnonymousBoxes() method altogether. Instead of hunting around wildly, just get 
2208         rid of anonymous boxes with block children when they occur.
2209
2210         * rendering/RenderBlock.cpp:
2211         (WebCore::RenderBlock::addChildToFlow):
2212         * rendering/RenderButton.h:
2213         (WebCore::RenderButton::removeLeftoverAnonymousBlock):
2214         * rendering/RenderContainer.cpp:
2215         (WebCore::RenderContainer::removeLeftoverAnonymousBlock):
2216         * rendering/RenderContainer.h:
2217         * rendering/RenderObject.cpp:
2218         (WebCore::RenderObject::handleDynamicFloatPositionChange):
2219         (WebCore::RenderObject::removeLeftoverAnonymousBlock):
2220         * rendering/RenderObject.h:
2221         * rendering/RenderTextControl.h:
2222         (WebCore::RenderTextControl::removeLeftoverAnonymousBlock):
2223
2224 2007-08-06  Sam Weinig  <sam@webkit.org>
2225
2226         Reviewed by Maciej.
2227
2228         Fix for <rdar://problem/5354689>
2229
2230         - Use document variable to determine permissions instead
2231           of traversing the frame tree. 
2232
2233         * bindings/js/kjs_window.cpp:
2234         (KJS::Window::isSafeScript):
2235         * dom/Document.cpp:
2236         (WebCore::Document::Document):
2237         (WebCore::Document::initSecurityPolicyURL):
2238         * dom/Document.h:
2239         (WebCore::Document::securityPolicyURL):
2240         * loader/FrameLoader.cpp:
2241         (WebCore::FrameLoader::setOpener): We must re-initialize the
2242         safeScript URL when setting the opener because the opener was
2243         not known at Document construction.
2244
2245 2007-08-06  David Hyatt  <hyatt@apple.com>
2246
2247         Make sure to clear out the parent of the ellipsis box so that it doesn't
2248         trigger the consistency check for line boxes.
2249
2250         Reviewed by darin
2251
2252         * ChangeLog:
2253         * rendering/RootInlineBox.cpp:
2254         (WebCore::RootInlineBox::detachEllipsisBox):
2255
2256 2007-08-06  David Hyatt  <hyatt@apple.com>
2257
2258         Back out fix for <rdar://problem/5366582> and replace it with the correct
2259         fix.  Make sure to delete the line box tree before splitting an inline flow
2260         into a continuation.  The added layout test for the original checkin covers
2261         the problem.
2262
2263         Reviewed by beth
2264
2265         * rendering/RenderBlock.cpp:
2266         (WebCore::RenderBlock::makeChildrenNonInline):
2267         Back out fix.
2268
2269         * rendering/RenderFlow.cpp:
2270         (WebCore::RenderFlow::destroy):
2271         Back out fix.
2272
2273         * rendering/RenderInline.cpp:
2274         (WebCore::RenderInline::splitFlow):
2275         Here's the new fix.
2276
2277 2007-08-06  Geoffrey Garen  <ggaren@apple.com>
2278
2279         Reviewed by Darin Adler.
2280         
2281         Touching a file to force a re-build.
2282
2283 2007-08-06  Darin Adler  <darin@apple.com>
2284
2285         - fix release build
2286
2287         * rendering/RenderText.h: (WebCore::RenderText::checkConsistency):
2288         Add missing const.
2289
2290 2007-08-06  Darin Adler  <darin@apple.com>
2291
2292         Reviewed by Maciej.
2293
2294         - fix <rdar://problem/5366582> crash on it.eurosport.yahoo.com page
2295
2296         Test: fast/dynamic/inline-to-block-crash.html
2297
2298         I added some consistency checks for the line box tree, which helped me figure out
2299         what was going on with this bug pretty quickly.
2300
2301         * rendering/RenderBlock.cpp: (WebCore::RenderBlock::makeChildrenNonInline):
2302         This is the actual fix. If the block needs layout, then don't try to delete the line
2303         box tree because it's going to be rebuilt as part of layout. More importantly, the
2304         child list in the tree is no good, so we will crash if we try to delete here.
2305
2306         * rendering/RenderFlow.cpp: (WebCore::RenderFlow::destroy):
2307         Here's a second fix. We have the same issue in the code that handles anonymous
2308         blocks -- if it's already running as part of layout, we can't walk through the
2309         already partly destroyed line box tree. This crashed in one of the layout tests.
2310
2311         * rendering/InlineBox.h: Made more fields private, since I wanted to do a bit more
2312         work in setters. Made setNextOnLine() and setPrevOnLine() assert that the box has a
2313         parent. Made parent() assert that the parent is good. Also removed the unused
2314         isChildOfParent() function.
2315         * rendering/InlineBox.cpp: (WebCore::InlineBox::~InlineBox): At destruction time, if
2316         we are still attached to a parent, tag that parent as having a "bad" child list.
2317
2318         * rendering/InlineFlowBox.h: Added m_reasonForBadChildList, checkConsistency(),
2319         setHasBadChildList(), and hasBadChildList(). Also changed firstChild() and lastChild() so
2320         they call checkConsistency() and made all the fields private instead of protected.
2321         * rendering/InlineFlowBox.cpp:
2322         (WebCore::InlineFlowBox::addToLine): Added consistency checks before and after adding a
2323         box to the line. Also checked that next and prev start out as 0. Changed manipulation of
2324         next and prev to use accessor functions.
2325         (WebCore::InlineFlowBox::removeChild): Added consistency checks before and after removing
2326         the box from the line.
2327         (WebCore::InlineFlowBox::deleteLine): Use firstChild() instead of getting at m_firstChild
2328         directly so we get a consistency check. Also set the parent to 0 before destroying so that
2329         the assertion in ~InlineBox will work properly.
2330         (WebCore::InlineFlowBox::extractLine): Ditto.
2331         (WebCore::InlineFlowBox::attachLine): Ditto.
2332         (WebCore::InlineFlowBox::adjustPosition): Ditto.
2333         (WebCore::InlineFlowBox::checkConsistency): Added. Checks consistency of the child list by
2334         looking at the parent, next, and prev pointers. Also asserts that we are not yet in the
2335         "bad" child list state, which happens if one of our children is destroyed without removing
2336         it from our list; that's normal, but once it happens we can't look at our child list again.
2337
2338         * rendering/InlineTextBox.h:
2339         * rendering/InlineTextBox.cpp: Remove unnneeded destroy/new/delete functions -- these are
2340         inherited from the InlineBox base class and don't need to be defined again.
2341
2342         * rendering/RenderFlow.h:
2343         * rendering/RenderFlow.cpp:
2344         (WebCore::RenderFlow::~RenderFlow): Assert that there are no children to confirm that we
2345         didn't leak something.
2346         (WebCore::RenderFlow::extractLineBox): Added consistency checks before and after removing
2347         a run of boxes from the list.
2348         (WebCore::RenderFlow::attachLineBox): Added consistency checks before and after adding
2349         a box to the list.
2350         (WebCore::RenderFlow::removeLineBox): Added consistency checks before and after removing
2351         a box from the list.
2352         (WebCore::RenderFlow::createInlineBox): Added consistency checks before and after adding
2353         a box to the list.
2354         (WebCore::RenderFlow::checkConsistency): Added.
2355
2356         * rendering/RenderText.h:
2357         * rendering/RenderText.cpp:
2358         (WebCore::RenderText::~RenderText): Assert that there are no children to confirm that we
2359         didn't leak something.
2360         (WebCore::RenderText::extractTextBox): Added consistency checks before and after removing
2361         a run of boxes from the list.
2362         (WebCore::RenderText::attachTextBox): Added consistency checks before and after adding
2363         a box to the list.
2364         (WebCore::RenderText::removeTextBox): Added consistency checks before and after removing
2365         a box from the list.
2366         (WebCore::RenderText::deleteTextBoxes): Added code to call setHasBadChildList since this
2367         destroys line boxes without informing the parent.
2368         (WebCore::RenderText::checkConsistency): Added.
2369
2370 2007-08-06  Adele Peterson  <adele@apple.com>
2371
2372         Reviewed by Darin.
2373
2374         Fix for <rdar://problem/5382483> REGRESSION: <select> element's text is clipped when a CSS line-height is specified
2375
2376         Don't honor line-height for styled popup buttons.  We already don't honor line-height for unstyled popups
2377         and since IE and FF don't honor it at all for popups, we shouldn't either.
2378
2379         * rendering/RenderThemeMac.mm: (WebCore::RenderThemeMac::adjustMenuListButtonStyle):
2380         * rendering/RenderThemeSafari.cpp: (WebCore::RenderThemeSafari::adjustMenuListButtonStyle):
2381
2382 2007-08-06  Antti  <antti@apple.com>
2383
2384         Reviewed by Darin.
2385
2386         Fix <rdar://problem/5378214>
2387         Mail crashes at RenderLayer::paintLayer() when dragging a selection over To Do text
2388         
2389         ObjC interface does not guarantee that Document::updateRendering() gets called after
2390         modification are made to document. This can lead to situation where paint()
2391         is invoked with document still dirty which can then crash in number of interesting ways.
2392         
2393         - add hasChangedChild() as needsLayout() condition. layout() will then call recalcStyle() 
2394           catching most cases and making sure document is not dirty when entering painting.
2395         - protect recalcStyle() and layout() from being executed during painting. There are some
2396           cases needsLayout() protection does not cover.
2397         
2398         No layout test, these states are very hard or impossible to reach using Javascript interface
2399         (which generally guarantees that updateRendering() is done right after execution).
2400
2401         * dom/Document.cpp:
2402         (WebCore::Document::recalcStyle):
2403         * page/Frame.cpp:
2404         (WebCore::Frame::paint):
2405         (WebCore::Frame::setPaintRestriction):
2406         (WebCore::Frame::isPainting):
2407         (WebCore::FramePrivate::FramePrivate):
2408         * page/Frame.h:
2409         * page/FramePrivate.h:
2410         * page/FrameView.cpp:
2411         (WebCore::FrameView::layout):
2412         (WebCore::FrameView::needsLayout):
2413
2414 2007-08-05  Maciej Stachowiak  <mjs@apple.com>
2415
2416         Reviewed by Darin Adler.
2417         
2418         <rdar://problem/5369110> CrashTracer: [USER] reproducible crash opening particular mail messages
2419
2420         * platform/network/mac/ResourceHandleMac.mm:
2421         (-[WebCoreResourceHandleAsDelegate connection:willSendRequest:redirectResponse:]): Make sure to retain
2422         self for the body of this method. Otherwise, the willSendRequest could trigger events which will
2423         cancel the connection, and we access ivars after this point.
2424         (-[WebCoreSynchronousLoader connection:willSendRequest:redirectResponse:]): retain and release
2425         in the right order.
2426
2427 2007-08-04  Adam Roben  <aroben@apple.com>
2428
2429         Another workaround for <rdar://problem/5386894>
2430
2431         Reviewed by Sam.
2432
2433         This fixed ~150 failing tests.
2434
2435         * platform/network/cf/ResourceResponseCFNet.cpp:
2436         (WebCore::ResourceResponse::doUpdateResourceResponse): Hardcode the
2437         MIME type for .svg files as well.
2438
2439 2007-08-04  Adam Roben  <aroben@apple.com>
2440
2441         Workaround for <rdar://problem/5386894> CFURLResponseGetMIMEType returns "text/html" for local .xhtml and .xml files
2442
2443         Reviewed by Sam.
2444
2445         This fixes ~350 failing tests.
2446
2447         * platform/network/cf/ResourceResponseCFNet.cpp:
2448         (WebCore::ResourceResponse::doUpdateResourceResponse): Use a workaround
2449         identical to the one in ResourceResponseMac.mm, but include .xml files
2450         as well.
2451
2452 2007-08-04  David Kilzer  <ddkilzer@webkit.org>
2453
2454         Reviewed by Oliver.
2455
2456         - fix for http://bugs.webkit.org/show_bug.cgi?id=14882
2457           <rdar://problem/5386550> REGRESSION (r24866): text/plain documents are always downloaded
2458
2459         The supportedNonImageMimeTypes list is used to determine which MIME types may be viewed
2460         within the web browser (e.g., plug-ins add their own MIME types to the list during
2461         initialization), so we must add "text/plain" and "text/" back to the list.  Since
2462         this change would then break DOMImplementation::isTextMIMEType(), that method was reverted
2463         to its original form and MIMETypeRegistry::shouldTreatAsText() was removed.
2464
2465         * dom/DOMImplementation.cpp:
2466         (WebCore::DOMImplementation::isTextMIMEType): Revert to previous version.
2467         * platform/MIMETypeRegistry.cpp:
2468         (WebCore::initialiseSupportedNonImageMimeTypes): Added back "text/plain" and "text/" to the list.
2469         (WebCore::MIMETypeRegistry::shouldTreatAsText): Removed.
2470         * platform/MIMETypeRegistry.h:
2471
2472 2007-08-03  Brady Eidson  <beidson@apple.com>
2473
2474         Reviewed by Oliver
2475
2476         Fix for http://bugs.webkit.org/show_bug.cgi?id=14824 and <rdar://problem/5372989>
2477
2478         Two issues - 
2479         1 - The WebCore MIMEType registry was designed assuming the list of types would never change
2480             That is false, as WebKit has API and SPI calls which directly mutate the MIMETypeRegistry
2481         2 - DOMImplementation didn't consult the registry for any MIMEType that started with "text/", 
2482             instead maintaining it's own hard coded rules
2483
2484         * dom/DOMImplementation.cpp:
2485         (WebCore::DOMImplementation::isTextMIMEType): For now, call through to the MIMETypeRegistry
2486           until we decided a different fate for this function
2487
2488         * platform/MIMETypeRegistry.cpp:
2489         (WebCore::initialiseSupportedNonImageMimeTypes):  "SupportedNonImageMIMETypes" is really a misnomer for 
2490           "MIMETypes we should show as HTML" but that line has slowly been blurred since Tiger.  In an attempt
2491           to start to unblur it, remove "text/" and "text/plain"
2492         (WebCore::MIMETypeRegistry::shouldTreatAsText):  The decision is very close to the old DOMImplementation 
2493           method, except we don't automatically hand off "text/" types as true if they are in the set of supported
2494           MIMETypes
2495         (WebCore::MIMETypeRegistry::getSupportedImageMIMETypes): Non-const (can be changed!)
2496         (WebCore::MIMETypeRegistry::getSupportedImageResourceMIMETypes): Non-const (can be changed!)
2497         (WebCore::MIMETypeRegistry::getSupportedNonImageMIMETypes): Non-const (can be changed!)
2498         * platform/MIMETypeRegistry.h:
2499
2500 2007-08-03  Adele Peterson  <adele@apple.com>
2501
2502         Reviewed by Adam.
2503
2504         Fix for <rdar://problem/5345862> CrashTracer: [USER] 4 crashes in Safari at com.apple.WebCore: WebCore::Frame::isContentEditable const + 10
2505
2506         Couldn't reproduce the problem, but a nil check for the frame should fix this.
2507
2508         * css/CSSStyleSelector.cpp: (WebCore::CSSStyleSelector::adjustRenderStyle):
2509
2510 2007-08-03  Anders Carlsson  <andersca@apple.com>
2511
2512         Reviewed by Oliver.
2513
2514         <rdar://problem/5383286>
2515         XMLHTTPRequest does not return 401 when user cancels authentication dialog (affects .Mac)
2516         
2517         * loader/ResourceLoader.h:
2518         Make receivedCancellation virtual.
2519         
2520         * loader/SubresourceLoader.cpp:
2521         (WebCore::SubresourceLoader::receivedCancellation):
2522         Call SubresourceLoaderClient::receivedCancellation.
2523         
2524         * xml/XMLHttpRequest.cpp:
2525         (WebCore::XMLHttpRequest::receivedCancellation):
2526         Save the failure response.
2527
2528 2007-08-03  Anders Carlsson  <andersca@apple.com>
2529
2530         Reviewed by Geoff.
2531
2532         <rdar://problem/5374393> 
2533         Image change on disk not noticed by WebView; -[WebCache setDisabled:] used to cause a reload every time
2534         
2535         This is essentially a better fix for the crash in <rdar://problem/5362783>.
2536         
2537         * loader/DocLoader.cpp:
2538         (WebCore::DocLoader::requestResource):
2539         If the resource already exists in the m_docResources map, remove it and disassociate it from the doc loader.
2540
2541 2007-08-03  Oliver Hunt  <oliver@apple.com>
2542
2543         Reviewed by Geoff.
2544
2545         <rdar://problem/5375190> Mail crashed in WebCore::CachedImage::imageSize() const when viewing a particular message
2546
2547         Fix the uncached load path to confirm that the type of resource being 
2548         returned actually matches the type that was requested.
2549
2550         Also make sure we never create a resource in the Cache for invalid urls.
2551
2552         * loader/Cache.cpp:
2553         (WebCore::Cache::requestResource):
2554         * loader/DocLoader.cpp:
2555         (WebCore::DocLoader::requestResource):
2556
2557 2007-08-03  Mitz Pettel  <mitz@webkit.org>
2558
2559         Reviewed by Adele.
2560
2561         - fix http://bugs.webkit.org/show_bug.cgi?id=14879
2562           REGRESSION: First item in select (pop-up menu) is displayed even if another item was selected via JavaScript
2563
2564         Test: fast/forms/menulist-deselect-update.html
2565
2566         * html/HTMLOptionElement.cpp:
2567         (WebCore::HTMLOptionElement::setSelected): Reordered to allow setSelectedIndex() to call setChanged().
2568
2569 2007-08-03  Anders Carlsson  <andersca@apple.com>
2570
2571         Reviewed by Darin.
2572
2573         <rdar://problem/5286444>
2574         http://bugs.webkit.org/show_bug.cgi?id=14269
2575         REGRESSION: Gmail links stop working after computer sleep
2576         
2577         Add a PowerNotifier object that takes care of resetting and firing the shared timer when coming
2578         back from sleep.
2579         
2580         * platform/mac/SharedTimerMac.cpp:
2581         (-[PowerNotifier init]):
2582         (-[PowerNotifier didWake:]):
2583         (WebCore::setSharedTimerFireTime):
2584
2585 2007-08-04  Mark Rowe  <mrowe@apple.com>
2586
2587         Windows build fix.
2588
2589         * rendering/RenderTextControl.cpp: Don't use the same name for two arguments.
2590
2591 2007-08-03  Mitz Pettel  <mitz@webkit.org>
2592
2593         Reviewed by Darin.
2594
2595         - fix http://bugs.webkit.org/show_bug.cgi?id=14653
2596           REGRESSION (r23994): No caret is drawn after clicking a search field's placeholder text
2597           <rdar://problem/5383841>
2598
2599         Test: fast/forms/search-click-in-placeholder.html
2600
2601         Defined a subclass of RenderBlock that never hit-tests children for use in
2602         text controls. This avoids returning placeholder text as the hit node.
2603         Since text controls cannot contain inline elements, there is no harm in
2604         doing that unconditionally, and not just in the case that the field is
2605         showing placeholder text.
2606
2607         * rendering/RenderTextControl.cpp:
2608         (WebCore::RenderTextControlInnerBlock::RenderTextControlInnerBlock):
2609         (WebCore::RenderTextControlInnerBlock::~RenderTextControlInnerBlock):
2610         (WebCore::RenderTextControlInnerBlock::nodeAtPoint):
2611         (WebCore::RenderTextControl::createSubtreeIfNeeded):
2612
2613 2007-08-02  Oliver Hunt  <oliver@apple.com>
2614
2615         Reviewed by Geoff
2616
2617         Fix for <rdar://problem/5369332> Xcode crashes while selecting a hyperlink within a AppleScript dictionary (WebCore::Font::drawGlyphBuffer)
2618
2619         There were many places where we were not correctly retaining/releasing the
2620         NSFont object stored in the C++ PlatformFontData object, this resulted in
2621         the GC incorrectly collecting the NSFont.
2622
2623         This patch fixes the problem by prevent direct modification of the PlatformFontData
2624         font pointer, allowing us to enforce correct CFRetain/Release behaviour.
2625
2626         * platform/FontData.h:
2627         (WebCore::FontData::getNSFont):
2628         * platform/mac/FontCacheMac.mm:
2629         (WebCore::FontCache::getFontDataForCharacters):
2630         (WebCore::FontCache::createFontPlatformData):
2631         * platform/mac/FontDataMac.mm:
2632         (WebCore::initFontData):
2633         (WebCore::FontData::platformInit):
2634         (WebCore::FontData::platformDestroy):
2635         (WebCore::FontData::smallCapsFontData):
2636         (WebCore::FontData::containsCharacters):
2637         (WebCore::FontData::determinePitch):
2638         (WebCore::FontData::platformWidthForGlyph):
2639         (WebCore::FontData::checkShapesArabic):
2640         * platform/mac/FontMac.mm:
2641         (WebCore::initializeATSUStyle):
2642         (WebCore::overrideLayoutOperation):
2643         (WebCore::Font::drawGlyphs):
2644         * platform/mac/FontPlatformData.h:
2645         (WebCore::FontPlatformData::FontPlatformData):
2646         (WebCore::FontPlatformData::~FontPlatformData):
2647         (WebCore::FontPlatformData::hash):
2648         (WebCore::FontPlatformData::operator==):
2649         (WebCore::FontPlatformData::font):
2650         (WebCore::FontPlatformData::setFont):
2651
2652 2007-08-03  Antti Koivisto  <antti@apple.com>
2653
2654         Oops, this change wasn't supposed to be commited.
2655
2656         * page/mac/WebCoreFrameBridge.mm:
2657         (-[WebCoreFrameBridge setBaseBackgroundColor:]):
2658
2659 2007-08-02  Antti Koivisto  <antti@apple.com>
2660
2661         Reviewed by Darin.
2662
2663         <rdar://problem/5355951>
2664         plainText() fragments TCMalloc heap badly on large pages
2665         
2666         also likely fixes some cases of
2667         <rdar://problem/5335382>
2668         CrashTracer: [REGRESSION] 73 crashes in Safari at com.apple.WebCore: WebCore::DeprecatedStringData::increaseUnicodeSize + 52
2669         
2670         If you load http://dscoder.com/test.txt with WebKit build with TCMalloc and system malloc you see that
2671         Safari RPRVT with TCMalloc is 118.8MB
2672         Safari RPRVT with system malloc is 69.7MB
2673         
2674         Difference is almost entirely caused by heap fragmentation from a full document plainText() call (for indexing purposes).
2675         
2676         The patch helps in two ways:
2677         - construct plainText string in pieces to avoid O(n^2) reallocs
2678         - allocate buffers using system malloc so they can be returned back to OS and don't fragment and grow TCMalloc heap
2679     
2680         This shrinks http://dscoder.com/test.txt RPRVT to 79.0MB and makes full document plainText() take 50ms instead of 500ms.
2681         The benefits are not limited to extreme cases, web pages above ~200kB can show substantial improvement in RPRVT.
2682
2683         * editing/TextIterator.cpp:
2684         (WebCore::plainTextToMallocAllocatedBuffer):
2685         (WebCore::plainText):
2686         * editing/TextIterator.h:
2687         * page/mac/WebCoreFrameBridge.mm:
2688         (-[WebCoreFrameBridge selectedString]):
2689         (-[WebCoreFrameBridge stringForRange:]):
2690
2691 2007-08-02  David Hyatt  <hyatt@apple.com>
2692
2693         Fix for 5374437, allow comment nodes to be the child of a document.
2694         Refine the check to always make a root element to check documentElement()
2695         rather than firstChild(), since a comment node could be present as the
2696         firstChild() now.
2697
2698         Reviewed by Tim Hatcher
2699
2700         * html/HTMLDocument.cpp:
2701         (WebCore::HTMLDocument::childAllowed):
2702         * html/HTMLParser.cpp:
2703         (WebCore::HTMLParser::finished):
2704
2705 2007-08-02  Antti Koivisto  <antti@apple.com>
2706
2707         Reviewed by Darin.
2708         
2709         <rdar://problem/5228138>
2710         REGRESSION(Leopard): test failures: tests that test Georgian numbering
2711
2712         Fix to Georgian number tables to get CSS2.1 test results right. Font has relevant characters now 
2713         which revealed that results were actually wrong. 
2714
2715         * rendering/RenderListMarker.cpp:
2716         (WebCore::toGeorgian):
2717
2718 2007-08-02  Ada Chan  <adachan@apple.com>
2719
2720         Reviewed by Steve.
2721
2722         <rdar://problem/5079175> Added parameters headerHeight and footerHeight to 
2723         computePageRectsForFrame() so we can account for the header and footer when
2724         calculating page heights for this frame.
2725
2726         * bridge/win/FrameWin.cpp:
2727         (WebCore::computePageRectsForFrame):
2728         * bridge/win/FrameWin.h:
2729
2730 2007-08-02  Alice Liu  <alice.liu@apple.com>
2731
2732         Reviewed by Kevin McCullough.
2733
2734         fixed <rdar://problem/5310312> REGRESSION: javascript is mis-escaped at http://labs.zarate.org/passwd causing bookmarklet to break
2735         
2736         * WebCore.exp:
2737         expose some calls for WebKit to call. 
2738         * manual-tests/JavaScript-bookmarklets.html: Added.
2739
2740 2007-08-01  Adam Treat  <treat@kde.org>
2741
2742         Reviewed by George Staikos.
2743
2744         Add an interface to manage global history for clients
2745
2746         * WebCore.pro:
2747         * platform/qt/TemporaryLinkStubs.cpp:
2748
2749 2007-08-01  Adam Treat  <treat@kde.org>
2750
2751         Reviewed by George Staikos.
2752
2753         Do not call update or paint from inside a paint event.
2754
2755         * platform/qt/ScrollViewQt.cpp:
2756         (WebCore::ScrollView::updateContents):
2757         * platform/qt/WidgetQt.cpp:
2758         (WebCore::Widget::invalidateRect):
2759
2760 2007-08-01  Timothy Hatcher  <timothy@apple.com>
2761
2762         Reviewed by Justin.
2763
2764         <rdar://problem/5376156> Mail crash in DeleteButtonController::hide() when dropping selected image on DIV's border
2765
2766         Add the container element back so the selection can not touch the deletion UI nodes. The container
2767         has style to prevent user selection, user drag and user modification.
2768
2769         * editing/DeleteButtonController.cpp:
2770         (WebCore::DeleteButtonController::show): Make the container node, and append the button and outline elements.
2771         (WebCore::DeleteButtonController::hide): Remove the container elements and null out the other nodes.
2772         * editing/DeleteButtonController.h:
2773
2774 2007-08-01  Steve Falkenburg  <sfalken@apple.com>
2775
2776         Build mod: Fix sln to match configs in vcproj.
2777         
2778         Reviewed by Adam.
2779
2780         * WebCore.vcproj/WebCore.make:
2781
2782 2007-07-31  David Harrison  <harrison@apple.com>
2783
2784         Reviewed by Justin.
2785
2786         <rdar://problem/5362659> CrashTracer: [USER] 11 crashes in Mail at WebCore::InsertLineBreakCommand::doApply()
2787
2788         The problem was that deleting with the X control leaves the selection inside the fragment that was deleted.
2789
2790         * editing/DeleteButtonController.cpp:
2791         (WebCore::DeleteButtonController::deleteTarget):
2792         Because the deletion UI only appears when the selection is entirely
2793         within the target, we unconditionally update the selection to be
2794         a caret where the target had been.
2795
2796 2007-07-31  Adele Peterson  <adele@apple.com>
2797
2798         Reviewed by Hyatt.
2799
2800          Fix for <rdar://problem/5339395> REGRESSION:http://sudokucraving.com does not render grid correctly
2801
2802         * rendering/RenderTextControl.h: (WebCore::RenderTextControl::hasControlClip): Clip for search fields.
2803         * rendering/RenderTextControl.cpp:
2804         (WebCore::RenderTextControl::controlClipRect): Added a control clip so the search field's cancel button and magnifier glass
2805          never draw outside the control's bounds.
2806         (WebCore::RenderTextControl::calcPrefWidths): Only include the inner box's padding when calculating the min/max width without using calcContentBoxWidth.
2807          Our old behavior was causing that inner padding to get counted twice.  Also, no need to add in the border
2808          for an inner box that can't be controlled from outside this class.
2809         * rendering/RenderMenuList.cpp: (WebCore::RenderMenuList::calcPrefWidths): ditto.
2810
2811 2007-07-31  Anders Carlsson  <andersca@apple.com>
2812
2813         Reviewed by Geoff.
2814
2815         Speculative fix for <rdar://problem/5359695> 
2816         REGRESSION (Tiger Beta): Multiple crashes in WebCore::Widget::getView() const + 6
2817                 
2818         * page/EventHandler.cpp:
2819         (WebCore::EventHandler::updateDragAndDrop):
2820         Null check the frame view.
2821
2822 2007-07-31  Timothy Hatcher  <timothy@apple.com>
2823
2824         Reviewed by Oliver and Beth.
2825
2826         <rdar://problem/5211271> ADOBE Leopard 9A410: At the first Launching InDesign after deactivate, EULA page gets blanked.
2827
2828         Rename needsAcrobatFrameReloadingQuirk to needsAdobeFrameReloadingQuirk, since this now applies to more Adobe applications.
2829
2830         * WebCore.exp:
2831         * page/Settings.cpp:
2832         (WebCore::Settings::Settings):
2833         (WebCore::Settings::setNeedsAdobeFrameReloadingQuirk):
2834         * page/Settings.h:
2835         (WebCore::Settings::needsAcrobatFrameReloadingQuirk):
2836
2837 2007-07-31  Matt Perry  <mpComplete@gmail.com>
2838
2839         Reviewed by Brady and Darin, tweaked by Brady, landed by Brady
2840
2841         Fix for http://bugs.webkit.org/show_bug.cgi?id=14757 and <rdar://problem/5364692>
2842         HTMLTokenizer::processingData implementation is incorrect
2843
2844         * html/HTMLTokenizer.cpp:
2845         (WebCore::HTMLTokenizer::processingData): Made it also return true if the HTMLTokenizer was inside the write() call.
2846         * loader/FrameLoader.cpp:
2847         (WebCore::FrameLoader::FrameLoader):
2848         (WebCore::FrameLoader::checkLoadCompleteTimerFired):
2849         (WebCore::FrameLoader::scheduleCheckLoadComplete):
2850         (WebCore::FrameLoader::stopForUserCancel): Changed a call to checkLoadComplete to be asynchronous, since
2851         stopForUserCancel can be called while parsing.
2852         * loader/FrameLoader.h:
2853
2854 2007-07-31  Anders Carlsson  <andersca@apple.com>
2855
2856         Reviewed by Geoff.
2857
2858         <rdar://problem/5371582>
2859         REGRESSION: PLT .5% slower due to r24451 (copying HTMLCollection objects)
2860         
2861         Make the hash maps store CollectionInfo pointers to reduce amount of copying when
2862         inserting/rehashing etc.
2863         
2864         * dom/Document.cpp:
2865         (WebCore::Document::~Document):
2866         (WebCore::Document::nameCollectionInfo):
2867         * dom/Document.h:
2868
2869 2007-07-31  Sam Weinig  <sam@webkit.org>
2870
2871         Reviewed by Mitz.
2872
2873         Fix for http://bugs.webkit.org/show_bug.cgi?id=14825
2874         Non-integer hsl() colours are ignored
2875
2876         * css/CSSParser.cpp:
2877         (WebCore::CSSParser::parseHSLParameters): Parse hue as a Number,
2878         not an Integer. 
2879
2880 2007-07-30  Justin Garcia  <justin.garcia@apple.com>
2881
2882         Reviewed by Darin.
2883
2884         <rdar://problem/5369009> Crash due to infinite recursion in moveParagraphs on delete
2885         
2886         After the delete, we moved content into the previous block, and a style
2887         rule turned a style span in the moved content into a block, throwing
2888         moveParagraphs into infinite recursion, as it continually tried and failed
2889         to get the style span into the same paragraph as the content just before it.
2890         
2891         Added a method to ReplaceSelectionCommand to keep inserted style spans 
2892         from turning into blocks because of style rules.  Will add code to prevent
2893         other kinds of content from changing appearance because of style rules,
2894         post-Leopard (5371536). Also added a bool to ReplaceSelectionCommand's 
2895         constructor to guard against infinite recursion.
2896
2897         * editing/CompositeEditCommand.cpp:
2898         (WebCore::CompositeEditCommand::moveParagraphs):
2899         * editing/JSEditor.cpp:
2900         * editing/ReplaceSelectionCommand.cpp:
2901         (WebCore::ReplaceSelectionCommand::ReplaceSelectionCommand):
2902         (WebCore::ReplaceSelectionCommand::negateStyleRulesThatEffectAppearance):
2903         (WebCore::ReplaceSelectionCommand::doApply):
2904         * editing/ReplaceSelectionCommand.h:
2905
2906 2007-07-30  Anders Carlsson  <andersca@apple.com>
2907
2908         Reviewed by Brady.
2909
2910         <rdar://problem/5371515>
2911         BitmapImage::getTIFFRepresentation() bug results in favicons not working at many sites
2912
2913         Don't bail out if a single frame is invalid.
2914         
2915         * platform/graphics/mac/ImageMac.mm:
2916         (WebCore::BitmapImage::getTIFFRepresentation):
2917
2918 2007-07-30  Adele Peterson  <adele@apple.com>
2919
2920         Reviewed by Darin.
2921
2922         Fix for <rdar://problem/5274937> Safari 3 breaks Missing Sync's WebKit code by crashing
2923
2924         * loader/MainResourceLoader.cpp: (WebCore::MainResourceLoader::continueAfterContentPolicy): Nil check for the FrameLoader.
2925
2926 2007-07-30  Anders Carlsson  <andersca@apple.com>
2927
2928         Reviewed by Darin.
2929
2930         <rdar://problem/5370710> 
2931         REGRESSION: After switching from Bookmark view, the Find Banner won't appear while displaying a PDF file
2932
2933         Add a hasHTMLView to FrameLoaderClient. This is only useful for clients who can show different views for different
2934         MIME types and URL schemes.
2935         
2936         * loader/FrameLoader.cpp:
2937         (WebCore::FrameLoader::transitionToCommitted):
2938         Call delegate methods here if the current view is not a HTML view.
2939         
2940         * loader/FrameLoaderClient.h:
2941         (WebCore::FrameLoaderClient::hasHTMLView):
2942
2943 2007-07-30  Sam Weinig  <sam@webkit.org>
2944
2945         Reviewed by Maciej.
2946
2947         Fix for <rdar://problem/5363896>
2948         REGRESSION: Setting document.domain does not override port-based cross-frame security checks -- breaks SAP NetWeaver
2949
2950         Updates the results for:
2951             http/tests/security/cross-frame-access-port-explicit-domain.html
2952             http/tests/security/cross-frame-access-protocol-explicit-domain.html
2953
2954         * bindings/js/kjs_window.cpp:
2955         (KJS::createWindow): Use the new setDomainInternal method.
2956         (KJS::Window::isSafeScript): Don't set check the port or protocol 
2957         if both documents have explicitly set document.domain in the DOM
2958         and the those domains are equal.
2959         * dom/Document.cpp:
2960         (WebCore::Document::Document):
2961         (WebCore::Document::setDomain): Remove force parameter and change 
2962         all calls that relied on it use the new setDomainInternal method
2963         which does the same thing.
2964         (WebCore::Document::setDomainInternal): 
2965         * dom/Document.h: Add new m_domainWasSetInDOM variable and accessor.
2966         (WebCore::Document::domainWasSetInDOM):
2967         * loader/FrameLoader.cpp:
2968         (WebCore::FrameLoader::checkCallImplicitClose): Use the new setDomainInternal method. 
2969
2970 2007-07-30  Justin Garcia  <justin.garcia@apple.com>
2971
2972         Reviewed by Tristan.
2973         
2974         <rdar://problem/5098931> Attachments are lost when they are moved into a ToDo after a delete
2975         
2976         Added an editor client method for asking whether or not it is
2977         OK to merge content after a delete.
2978
2979         * bridge/EditorClient.h:
2980         * editing/DeleteSelectionCommand.cpp:
2981         (WebCore::DeleteSelectionCommand::mergeParagraphs): Ask if the 
2982         merge is allowed.
2983         * platform/gdk/EditorClientGdk.cpp: 
2984         (WebCore::EditorClientGdk::shouldMoveRangeAfterDelete): Added a method stub.
2985         * platform/gdk/EditorClientGdk.h:
2986         * platform/graphics/svg/SVGImageEmptyClients.h: 
2987         (WebCore::SVGEmptyEditorClient::shouldMoveRangeAfterDelete): Ditto.
2988
2989 2007-07-30  Alexey Proskuryakov  <ap@webkit.org>
2990
2991         Reviewed by Anders.
2992
2993         <rdar://problem/5352526>
2994         http://bugs.webkit.org/show_bug.cgi?id=14704
2995         REGRESSION: sync XMLHttpRequest.send() raises an exception for failed authentication
2996
2997         Test: http/tests/xmlhttprequest/failed-auth.html
2998
2999         * platform/network/mac/ResourceHandleMac.mm:
3000         (WebCore::ResourceHandle::loadResourceSynchronously): Make the fake response better match the real one
3001         in case of failed authentication. Unfortunately, NSURLConnection doesn't give us the real response.
3002
3003         * xml/XMLHttpRequest.cpp:
3004         (WebCore::XMLHttpRequest::send): If the response has an HTTP code in it, then the error wasn't
3005         a network one, and an exception shouldn't be raised.
3006
3007 2007-07-30  Anders Carlsson  <andersca@apple.com>
3008
3009         Reviewed by Darin.
3010
3011         <rdar://problem/4942372> REGRESSION: Anchor links in Mail don't work anymore
3012         
3013         Make it possible for KURL to handle addig fragments to non-hierarchical URLs
3014         such as mailto: and cid:.
3015     
3016         * platform/KURL.cpp:
3017         (WebCore::KURL::init):
3018         If the base URL is not hierarchical but the relative URL is a fragment, then 
3019         allow parsing it.
3020         
3021         (WebCore::KURL::parse):
3022         If the URL is not hierarchical, set the fragment start and end positions correctly.
3023
3024 2007-07-30  Simon Hausmann  <hausmann@kde.org>
3025
3026         Reviewed by Lars.
3027
3028         On Windows make sure the dll also ends up in $$OUTPUT_DIR/bin, so that QtLauncher can find it.
3029
3030         * WebCore.pro:
3031
3032 2007-07-30  Simon Hausmann  <hausmann@kde.org>
3033
3034         Reviewed by Lars.
3035
3036         Removed the __BUILDING_QT ifdef in JSStringRef.h and changed UChar for the Qt build to use wchar_t on Windows.
3037
3038         * platform/TextEncoding.cpp:
3039         (WebCore::TextEncoding::encode):
3040
3041 2007-07-30  Simon Hausmann  <hausmann@kde.org>
3042
3043         Reviewed by Lars.
3044
3045         Don't link against libxml/libxslt unless we really need it.
3046
3047         * WebCore.pro:
3048
3049 2007-07-29  Tristan O'Tierney  <tristan@apple.com>
3050
3051         Reviewed by Oliver Hunt.
3052
3053         <rdar://problem/5369282> REGRESSION: DOMHTMLInput throwing exception due to missing _isEdited method
3054
3055         * bindings/objc/DOMHTML.mm:
3056         (-[DOMHTMLInputElement _isEdited]):
3057         (-[DOMHTMLTextAreaElement _isEdited]):
3058         * bindings/objc/DOMPrivate.h:
3059         Renamed _isUserEdited to _isEdited.
3060
3061 2007-07-29  Adam Treat  <treat@kde.org>
3062
3063         Reviewed by George Staikos.
3064
3065         Correctly set the update rect for the scrollbars when they are invalidated.
3066         Do not paint entire page for each scroll delta.  Cache the dirty regions
3067         when webkit calls ScrollView::updateContents as webkit expects the paint
3068         routine to use the dirty regions bounding rect.
3069
3070         These changes greatly reduce the cpu load as we are no longer painting the
3071         entire page for each 1px scroll :P
3072
3073         * platform/qt/ScrollViewQt.cpp:
3074         (WebCore::ScrollView::ScrollViewPrivate::scrollBackingStore):
3075         (WebCore::ScrollView::updateContents):
3076         (WebCore::ScrollView::paint):
3077         * platform/qt/WidgetQt.cpp:
3078         (WebCore::Widget::invalidateRect):
3079
3080 2007-07-29  Adele Peterson  <adele@apple.com>
3081
3082         Reviewed by John.
3083
3084         WebCore part of fix for <rdar://problem/5102522> REGRESSION: Can't tab to webview that doesn't have editable content (affects Safari, preview pane in Mail)
3085
3086         * WebCore.exp:
3087         * page/FocusController.cpp:
3088         (WebCore::FocusController::setInitialFocus): Added.
3089         (WebCore::FocusController::advanceFocus): Don't give the focus back to the chrome if this is the initial focus.
3090         * page/FocusController.h:
3091
3092 2007-07-29  Adam Treat  <treat@kde.org>
3093
3094         Reviewed by Alexey Proskuryakov.
3095
3096         WebCore::Widget::setParent should be virtual.
3097         It is reimplemented in ScrollViewQt for instance.
3098
3099         * platform/Widget.h:
3100
3101 2007-07-29  Alp Toker  <alp.toker@collabora.co.uk>
3102
3103         Reviewed by bdash.
3104
3105         http://bugs.webkit.org/show_bug.cgi?id=14711 (revisited)
3106         RenderThemeGdk's buttons are state-agnostic (pressed, hovered)
3107
3108         Generalize shadow state into a function.
3109         use a GtkHBox to work around a theme bug (thanks to Nigel Tao).
3110
3111         * platform/gdk/RenderThemeGdk.cpp:
3112         (WebCore::RenderThemeGdk::determineShadow):
3113         (WebCore::RenderThemeGdk::paintCheckbox):
3114         (WebCore::RenderThemeGdk::paintRadio):
3115         (WebCore::RenderThemeGdk::paintButton):
3116         (WebCore::RenderThemeGdk::gtkWindowContainer):
3117         * platform/gdk/RenderThemeGdk.h:
3118
3119 2007-07-27  Adele Peterson  <adele@apple.com>
3120
3121         Reviewed by Darin. 
3122
3123         Temporary fix for Windows to prevent crashing on all frame pages.  Darin
3124         is working on a more permanent fix.
3125
3126         * loader/FrameLoader.cpp:
3127
3128 2007-07-27  Adam Treat  <treat@kde.org>
3129
3130         Reviewed by David Hyatt.
3131
3132         Fix crash when using QtWebKit canvas support.
3133
3134         * ChangeLog:
3135         * html/HTMLCanvasElement.cpp:
3136         (WebCore::HTMLCanvasElement::reset):
3137
3138 2007-07-27  Darin Adler  <darin@apple.com>
3139
3140         * rendering/RenderLayer.cpp: Rolled out accidentally-checked-in code.
3141
3142 2007-07-27  Darin Adler  <darin@apple.com>
3143
3144         Reviewed by John Sullivan.
3145
3146         - fix <rdar://problem/5261393> In Mail the plain text alternatives to messages with attachments show weird little OBJ thingies
3147
3148         The "weird little thingies" are U+FFFC characters. It's good to render them as zero-width, the way we do
3149         with control characters -- helps Mail and doesn't hurt web browsing.
3150
3151         Test: fast/text/zero-width-characters.html
3152
3153         * platform/CharacterNames.h: Add names for leftToRightMark, rightToLeftMark, and objectReplacementCharacter.
3154         * platform/GlyphPageTreeNode.cpp: (WebCore::GlyphPageTreeNode::initializePage): Give objectReplacementCharacter
3155         zero width in the same way we do it for the various other characters.
3156
3157 2007-07-27  Lars Knoll <lars@trolltech.com>
3158
3159         Reviewed by Zack
3160
3161         Enable XSLT support for the gtk port.
3162
3163         * WebCore.pro:
3164
3165 2007-07-27  Zack Rusin  <zack@kde.org>
3166
3167         Reviewed by Zack and Lars.
3168
3169         Premature end after finishing parsing is a fatal error.
3170
3171         * dom/XMLTokenizer.cpp:
3172         (WebCore::XMLTokenizer::end):
3173
3174 2007-07-27  Lars Knoll  <lars@trolltech.com>
3175
3176         Reviewed by Zack and Lars.
3177
3178         Simplify conversions that go from a QStringRef to a WebCore::String to not use a temporary QString.
3179
3180         * dom/XMLTokenizer.cpp:
3181         (WebCore::):
3182
3183 2007-07-27  Zack Rusin  <zack@kde.org>
3184
3185         Reviewed by Zack and Lars.
3186
3187         Fix entity handling in the main document content (attributes still broken)
3188
3189         * dom/XMLTokenizer.cpp:
3190         (WebCore::):
3191
3192 2007-07-27  Lars Knoll  <lars@trolltech.com>
3193
3194         Reviewed by Zack and Lars.
3195
3196         Correctly convert a null QString into a null WebCore::String. Add a String(const QStringRef&) constructor so that we can avoid converting QStringRef via QString to WebCore::String.
3197
3198         * dom/XMLTokenizer.cpp:
3199         (WebCore::):
3200         * platform/PlatformString.h:
3201         * platform/qt/StringQt.cpp:
3202         (WebCore::String::String):
3203
3204 2007-07-27  Zack Rusin  <zack@kde.org>
3205
3206         Reviewed by Zack and Lars.
3207
3208         Parse version and encoding of the xml document.
3209
3210         * dom/XMLTokenizer.cpp:
3211         (WebCore::XMLTokenizer::write):
3212
3213 2007-07-27  Zack Rusin  <zack@kde.org>
3214
3215         Reviewed by Zack and Lars.
3216
3217         Correctly or semi-correctly parse the public and system id.
3218
3219         Patch from Lars.
3220
3221         * dom/XMLTokenizer.cpp:
3222         (WebCore::):
3223
3224 2007-07-27  Zack Rusin  <zack@kde.org>
3225
3226         Reviewed by Zack and Lars.
3227
3228         Fix uri parsing for attributes.
3229
3230         * dom/XMLTokenizer.cpp:
3231         (WebCore::):
3232
3233 2007-07-27  Zack Rusin  <zack@kde.org>
3234
3235         Reviewed by Zack and Lars.
3236
3237         Fixing qualified name parsing - from Lars.
3238
3239         * dom/XMLTokenizer.cpp:
3240         (WebCore::XMLTokenizer::insertErrorMessageBlock):
3241         (WebCore::):
3242
3243 2007-07-27  Zack Rusin  <zack@kde.org>
3244
3245         Reviewed by Zack and Lars.
3246
3247         Parse dtd's
3248
3249         * dom/XMLTokenizer.cpp:
3250         (WebCore::XMLTokenizer::resumeParsing):
3251         (WebCore::):
3252         * dom/XMLTokenizer.h:
3253
3254 2007-07-27  Zack Rusin  <zack@kde.org>
3255
3256         Reviewed by Zack and Lars.
3257
3258         Implement error handling.
3259
3260         Add our copyrights
3261
3262         * dom/XMLTokenizer.cpp:
3263         (WebCore::XMLTokenizer::handleError):
3264         (WebCore::XMLTokenizer::end):
3265         (WebCore::):
3266         * dom/XMLTokenizer.h:
3267
3268 2007-07-27  Zack Rusin  <zack@kde.org>
3269
3270         Reviewed by Zack and Lars.
3271
3272         Making the stylesheets work (plus everything else basically)
3273
3274         * dom/XMLTokenizer.cpp:
3275         (WebCore::XMLTokenizer::write):
3276         (WebCore::XMLTokenizer::insertErrorMessageBlock):
3277         (WebCore::):
3278         * dom/XMLTokenizer.h:
3279
3280 2007-07-27  Zack Rusin  <zack@kde.org>
3281
3282         Reviewed by Zack and Lars.
3283
3284         Remove the libxml dependency when not compiling with XSLT.
3285
3286         Just ifdefing, displaying xml doesn't work.
3287
3288         * WebCore.pro:
3289         * dom/XMLTokenizer.cpp:
3290         (WebCore::XMLTokenizer::XMLTokenizer):
3291         (WebCore::XMLTokenizer::write):
3292         (WebCore::XMLTokenizer::startElementNs):
3293         (WebCore::XMLTokenizer::enterText):
3294         (WebCore::XMLTokenizer::exitText):
3295         (WebCore::XMLTokenizer::initializeParserContext):
3296         (WebCore::XMLTokenizer::end):
3297         (WebCore::XMLTokenizer::lineNumber):
3298         (WebCore::XMLTokenizer::columnNumber):
3299         (WebCore::XMLTokenizer::stopParsing):
3300         (WebCore::XMLTokenizer::resumeParsing):
3301         (WebCore::):
3302         * dom/XMLTokenizer.h:
3303
3304 2007-07-27  Simon Hausmann  <hausmann@kde.org>
3305
3306         Reviewed by Zack.
3307
3308         Work around bug in the moc when used as preprocessor for generating the bindings. -DFOO=1 is needed instead of -DFOO
3309         to make the <hash>if FOO conditional match.
3310
3311         * WebCore.pro:
3312
3313 2007-07-27  Patrick Hanna  <phanna@email.unc.edu>
3314
3315         Reviewed by Darin Adler.
3316
3317         Change PluginBase::refresh to be static and update PluginsFunc::callAsFunction accordingly. Now we no longer
3318         allocate an instance of a JSObject subclass on the stack which could lead to a crash during garbage collection.
3319
3320         * bindings/js/kjs_navigator.cpp:
3321         (KJS::PluginsFunc::callAsFunction):
3322
3323 2007-07-27  Simon Hausmann  <hausmann@kde.org>
3324
3325         Done with and reviewed by Lars and Zack.
3326
3327         Fix snprintf hack for the Qt/Windows build with mingw-gcc. MingW has snprintf, so we don't need this helper function.
3328
3329         * page/FrameTree.cpp:
3330         * platform/DeprecatedString.cpp:
3331         (WebCore::DeprecatedString::format):
3332         * platform/String.cpp:
3333         (WebCore::String::format):
3334
3335 2007-07-27  Simon Hausmann  <hausmann@kde.org>
3336
3337         Done with and reviewed by Lars and Zack.
3338
3339         Make the DocTypeStrings.cpp generation work with MingW. Cleaned it up to be a regular extra compiler at the same time.
3340
3341         * WebCore.pro:
3342
3343 2007-07-27  Simon Hausmann  <hausmann@kde.org>
3344
3345         Done with and reviewed by Lars and Zack.
3346
3347         MingW build fixes: Do the "OBJECTS_TRAILING_SLASH" trick not only for win32-msvc but for all win32 mkspecs. Added LIB/INCLUDE hack from Qt to make us pick up 3rdparty libraries such as libxml from these environment variables.
3348
3349         * WebCore.pro:
3350
3351 2007-07-27  Simon Hausmann  <hausmann@kde.org>
3352
3353         Done with and reviewed by Lars and Zack.
3354
3355         Use $(MOVE) instead of mv to eliminated the shell dependency and replaced the long shell line to call bison and modify the css grammar file with a few lines of portable perl code.
3356
3357         * WebCore.pro:
3358         * css/makegrammar.pl: Added.
3359
3360 2007-07-27  Simon Hausmann  <hausmann@kde.org>
3361
3362         Done with and reviewed by Lars and Zack.
3363
3364         On make install on Windows copy the dll into the bin dir.
3365
3366         * WebCore.pro:
3367
3368 2007-07-27  Simon Hausmann  <hausmann@kde.org>
3369
3370         Done with and reviewed by Lars and Zack.
3371
3372         Link in libxml and libxslt on Windows.
3373
3374         * WebCore.pro:
3375
3376 2007-07-27  Simon Hausmann  <hausmann@kde.org>
3377
3378         Done with and reviewed by Lars and Zack.
3379
3380         Temporarily disable the ICO support for the Qt build on Windows.
3381
3382         * WebCore.pro:
3383         * platform/graphics/qt/ImageDecoderQt.cpp:
3384
3385 2007-07-27  Simon Hausmann  <hausmann@kde.org>
3386
3387         Done with and reviewed by Lars and Zack.
3388
3389         Fix evaluation with ActiveState Perl 5.6. Somehow it tried to treat nameEntries as array.
3390
3391         * bindings/scripts/CodeGeneratorJS.pm:
3392
3393 2007-07-27  Simon Hausmann  <hausmann@kde.org>
3394
3395         Done with and reviewed by Lars and Zack.
3396
3397         Fix compilation with MSVC in the Qt build (missing header files).
3398
3399         * loader/icon/IconDatabaseNone.cpp:
3400         * platform/graphics/svg/SVGImage.cpp:
3401
3402 2007-07-27  Simon Hausmann  <hausmann@kde.org>
3403
3404         Done with and reviewed by Lars and Zack.
3405
3406         Disable the favicon database on Windows for now, to eliminate the sqlite dependency.
3407
3408         * WebCore.pro:
3409
3410 2007-07-27  Simon Hausmann  <hausmann@kde.org>
3411
3412         Done with and reviewed by Lars and Zack.
3413
3414         Added custom preprocessor support to make_names.pl and use the moc for it in the Qt build.
3415
3416         * WebCore.pro:
3417         * ksvg2/scripts/make_names.pl:
3418
3419 2007-07-27  Simon Hausmann  <hausmann@kde.org>
3420
3421         Done with and reviewed by Lars and Zack.
3422
3423         Disable the batch mode for nmake to work around the clash of Node.c and Node.cpp both mapping to Node.obj
3424
3425         * WebCore.pro:
3426
3427 2007-07-27  Simon Hausmann  <hausmann@kde.org>
3428
3429         Done with and reviewed by Lars and Zack.
3430
3431         Fix compilation under Windows (removed sys/time.h dependency, use Qt instead).
3432
3433         * platform/qt/SystemTimeQt.cpp:
3434
3435 2007-07-27  Simon Hausmann  <hausmann@kde.org>
3436
3437         Done with and reviewed by Lars and Zack.
3438
3439         Fix compilation on Windows.
3440
3441         * platform/graphics/qt/PathQt.cpp:
3442
3443 2007-07-27  Simon Hausmann  <hausmann@kde.org>
3444
3445         Done with and reviewed by Lars and Zack.
3446
3447         Fix generation of ColorData.c on Windows.
3448
3449         * WebCore.pro:
3450
3451 2007-07-27  Simon Hausmann  <hausmann@kde.org>
3452
3453         Done with and reviewed by Lars and Zack.
3454
3455         Fix compilation under Qt/Windows.
3456
3457         * loader/icon/IconDatabase.cpp:
3458         (WebCore::IconDatabase::open):
3459
3460 2007-07-27  Simon Hausmann  <hausmann@kde.org>
3461
3462         Done with and reviewed by Lars and Zack.
3463
3464         Changed extendedAttributes to be a variable instead of a hash directly. Required to work with ActiveState perl.
3465
3466         * bindings/scripts/IDLStructure.pm:
3467
3468 2007-07-27  Simon Hausmann  <hausmann@kde.org>
3469
3470         Done with and reviewed by Lars and Zack.
3471
3472         Fix header guard generation for CSSGrammar.h under Windows
3473
3474         * WebCore.pro:
3475
3476 2007-07-27  Simon Hausmann  <hausmann@kde.org>
3477
3478         Done with and reviewed by Lars and Zack.
3479
3480         Fix build with moc as preprocessor. Don't rely the preprocessor preserving whitespace at the beginning of lines.
3481
3482         * bindings/scripts/IDLParser.pm:
3483
3484 2007-07-27  Simon Hausmann  <hausmann@kde.org>
3485
3486         Done with and reviewed by Lars and Zack.
3487
3488         Make make-css-file-arrays.pl work on Windows by not calling /usr/bin/gcc as preprocessor for the Qt build.
3489
3490         * WebCore.pro:
3491         * css/make-css-file-arrays.pl:
3492
3493 2007-07-27  Simon Hausmann  <hausmann@kde.org>
3494
3495         Done with and reviewed by Lars and Zack.
3496
3497         More gperf commandline fixes for Windows.
3498
3499         * WebCore.pro:
3500
3501 2007-07-27  Simon Hausmann  <hausmann@kde.org>
3502
3503         Done with and reviewed by Lars and Zack.
3504
3505         More quoting fixes for perl under Windows.
3506
3507         * WebCore.pro:
3508
3509 2007-07-27  Simon Hausmann  <hausmann@kde.org>
3510
3511         Done with and reviewed by Lars and Zack.
3512
3513         Fix command quoting under Windows
3514
3515         * WebCore.pro:
3516
3517 2007-07-27  Simon Hausmann  <hausmann@kde.org>
3518
3519         Done with and reviewed by Lars and Zack.
3520
3521         Fix cssmakeprops and cssmakevalue scripts to work on Windows without cygwin perl. Avoid inplace substitutions and direct invocation of /bin/sh. Also call gperf with arguments that GnuWin32's gperf understands.
3522
3523         * ksvg2/scripts/cssmakeprops:
3524         * ksvg2/scripts/cssmakevalues:
3525
3526 2007-07-27  Simon Hausmann  <hausmann@kde.org>
3527
3528         Done with and reviewed by Lars and Zack.
3529
3530         Beautiful hacks to make more of the extra compiler magic work under Windows outside of cygwin.
3531
3532         * WebCore.pro:
3533
3534 2007-07-27  Simon Hausmann  <hausmann@kde.org>
3535
3536         Done with and reviewed by Lars and Zack.
3537
3538         Correctly propagate the custom preprocessor option through the idl parser and the codegenerator.
3539
3540         * bindings/scripts/CodeGenerator.pm:
3541         * bindings/scripts/generate-bindings.pl:
3542
3543 2007-07-27  Simon Hausmann  <hausmann@kde.org>
3544
3545         Done with and reviewed by Lars and Zack.