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