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