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