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