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