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