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