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