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