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