d3bdf092bc6c0a8e21ac0a3cd2e3c45a61fe1789
[WebKit-https.git] / WebCore / ChangeLog
1 2007-05-20  Adam Treat  <adam@staikos.net.
2
3         Add missing include for auto_ptr
4
5         Reviewed by George Staikos.
6
7         * platform/graphics/ImageBuffer.h:
8
9 2007-05-19  David Hyatt  <hyatt@apple.com>
10
11         Fix for bug 13785, O(n^2) counter creation.
12
13         Reviewed by darin
14
15         * rendering/RenderCounter.cpp:
16         (WebCore::findPlaceForCounter):
17         (WebCore::RenderCounter::originalText):
18
19 2007-05-19  Mitz Pettel  <mitz@webkit.org>
20
21         Reviewed by Dave Hyatt.
22
23         - fix http://bugs.webkit.org/show_bug.cgi?id=12729
24           box-shadow disappears when scrolling a div that it falls on/under
25
26         Tests: fast/repaint/box-shadow-dynamic.html
27                fast/repaint/box-shadow-h.html
28                fast/repaint/box-shadow-v.html
29
30         * rendering/InlineFlowBox.cpp:
31         (WebCore::InlineFlowBox::placeBoxesHorizontally): Factor in box shadow.
32         (WebCore::InlineFlowBox::placeBoxesVertically): Ditto.
33         (WebCore::InlineFlowBox::paint): Account for box shadow when checking if
34         the damage rect intersects.
35         * rendering/RenderBlock.cpp:
36         (WebCore::RenderBlock::overflowHeight): For overflow areas, when asked
37         for the "exterior" overflow, add box shadow overflow.
38         (WebCore::RenderBlock::overflowWidth): Ditto.
39         (WebCore::RenderBlock::overflowLeft): Ditto.
40         (WebCore::RenderBlock::overflowTop): Ditto.
41         (WebCore::RenderBlock::overflowRect): Ditto.
42         (WebCore::RenderBlock::layoutBlock): Factor box shadow into visual overflow.
43         * rendering/RenderFlexibleBox.cpp:
44         (WebCore::RenderFlexibleBox::layoutBlock): Ditto.
45         * rendering/RenderFlow.cpp:
46         (WebCore::RenderFlow::lowestPosition): For overflow areas, when asked for
47         the "exterior" extreme position, add box shadow.
48         (WebCore::RenderFlow::rightmostPosition): Ditto.
49         (WebCore::RenderFlow::leftmostPosition): Ditto.
50         * rendering/RenderLayer.cpp:
51         (WebCore::RenderLayer::calculateRects): Avoid clipping out box shadow.
52         * rendering/RenderObject.cpp:
53         (WebCore::RenderObject::repaintAfterLayoutIfNeeded): Make sure to paint
54         the box shadow when an edge with a shadow moves.
55         (WebCore::RenderObject::adjustRectForOutlineAndShadow): Helper function
56         that expands a given rectangle to encompass outline and box shadow.
57         (WebCore::RenderObject::absoluteOutlineBox): Changed to include box shadow.
58         * rendering/RenderObject.h:
59
60 2007-05-19  Mitz Pettel  <mitz@webkit.org>
61
62         Reviewed by Dave Hyatt.
63
64         - fix http://bugs.webkit.org/show_bug.cgi?id=13783
65           REGRESSION (r21120): Frame resizers not repainted properly when dragged
66
67         * rendering/RenderFrameSet.cpp:
68         (WebCore::RenderFrameSet::layout):
69
70 2007-05-19  Mitz Pettel  <mitz@webkit.org>
71
72         Reviewed by Darin.
73
74         - fix http://bugs.webkit.org/show_bug.cgi?id=13774
75           REGRESSION: Crash emailing blog entry using Google Reader
76
77         Test: fast/table/stale-grid-crash.html
78
79         * rendering/RenderTable.cpp:
80         (WebCore::RenderTable::recalcSections): Made const and replaced
81         setNeedsLayout(true) with an assertion that the table is already
82         marked for layout.
83         (WebCore::RenderTable::sectionAbove): Added call to recalcSectionsIfNeeded().
84         (WebCore::RenderTable::sectionBelow): Ditto.
85         (WebCore::RenderTable::cellAbove): Ditto.
86         (WebCore::RenderTable::cellBelow): Ditto.
87         (WebCore::RenderTable::cellBefore): Ditto.
88         (WebCore::RenderTable::cellAfter): Ditto.
89         * rendering/RenderTable.h:
90         Made some private member variables which are used in section recalc mutable.
91         (WebCore::RenderTable::setNeedsSectionRecalc): Moved the call to
92         setNeedsLayout() from recalcSections() into here, because I made
93         recalcSections() const.
94         (WebCore::RenderTable::recalcSectionsIfNeeded): Made const.
95
96 2007-05-19  Mitz Pettel  <mitz@webkit.org>
97
98         Reviewed by Darin.
99
100         - http://bugs.webkit.org/show_bug.cgi?id=13320
101           rounded corners with drop shadows are really slow
102
103         Test for a rendering bug fixed by this patch:
104             fast/box-shadow/border-radius-big.html
105
106         No test for the performance ingredient.
107
108         * platform/graphics/GraphicsContext.cpp:
109         (WebCore::GraphicsContext::addRoundedRectClip): Made cross-platform.
110         Changed to use a single clipping path. If all the radii cannot be
111         accommodated, clips to a rect.
112         (WebCore::GraphicsContext::clipOutRoundedRect): Changed to use a single
113         clipping path. If all the radii cannot be accommodated, clips out a rect.
114         * platform/graphics/GraphicsContext.h: Added clipOut(const Path&).
115         * platform/graphics/Path.cpp:
116         (WebCore::Path::createRoundedRectangle): Added. Returns a rounded rectangle
117         with the specified radii. If all the radii cannot be accommodated, returns
118         a rectangular path.
119         * platform/graphics/Path.h:
120         * platform/graphics/cairo/GraphicsContextCairo.cpp:
121         (WebCore::GraphicsContext::clipOut): Added.
122         * platform/graphics/cg/GraphicsContextCG.cpp:
123         (WebCore::GraphicsContext::fillRoundedRect): Changed to use a single path.
124         (WebCore::GraphicsContext::clipOut): Added.
125         * platform/graphics/qt/GraphicsContextQt.cpp:
126         (WebCore::GraphicsContext::clipOut): Added.
127
128 2007-05-19  Anders Carlsson  <andersca@apple.com>
129
130         Reviewed by Mitz.
131
132         Test: fast/frames/inline-object-inside-frameset.html
133         
134         http://bugs.webkit.org/show_bug.cgi?id=13771
135         Assertion failure ASSERT(m_layer) when running Hamachi fuzz tester
136
137         Don't paint inline objects.
138         
139         * rendering/RenderFrameSet.cpp:
140         (WebCore::RenderFrameSet::paint):
141
142 2007-05-19  David Hyatt  <hyatt@apple.com>
143
144         Add support for plain text MIME types (CSS/JS/TXT) to view source mode.
145         CSS/JS will eventually tokenize via their own special tokenizers so that
146         they can also be syntax-highlighted, but for now just treat them as
147         plain text.
148
149         Reviewed by aroben
150
151         * dom/DOMImplementation.cpp:
152         (WebCore::DOMImplementation::createDocument):
153         * html/HTMLViewSourceDocument.cpp:
154         (WebCore::HTMLViewSourceDocument::HTMLViewSourceDocument):
155         (WebCore::HTMLViewSourceDocument::createTokenizer):
156         (WebCore::HTMLViewSourceDocument::createContainingTable):
157         (WebCore::HTMLViewSourceDocument::addViewSourceText):
158         (WebCore::HTMLViewSourceDocument::addViewSourceToken):
159         * html/HTMLViewSourceDocument.h:
160         * loader/TextDocument.cpp:
161         (WebCore::TextTokenizer::TextTokenizer):
162         (WebCore::TextTokenizer::write):
163         * loader/TextDocument.h:
164         (WebCore::TextTokenizer::checkBuffer):
165
166 2007-05-18  David Hyatt  <hyatt@apple.com>
167
168         Fix a glitch in view source mode attribute names.
169
170         * html/HTMLViewSourceDocument.cpp:
171         (WebCore::HTMLViewSourceDocument::addViewSourceToken):
172
173 2007-05-18  David Hyatt  <hyatt@apple.com>
174
175         "Linkify" view source mode links.
176
177         Reviewed by andersca
178
179         * css/view-source.css:
180         * html/HTMLViewSourceDocument.cpp:
181         (WebCore::HTMLViewSourceDocument::addViewSourceToken):
182         (WebCore::HTMLViewSourceDocument::addSpanWithClassName):
183         (WebCore::HTMLViewSourceDocument::addLink):
184         * html/HTMLViewSourceDocument.h:
185
186 2007-05-18  Oliver Hunt  <oliver@apple.com>
187
188         Reviewed by Sam
189
190         No longer need to pass HTMLImageElement and HTMLImageLoader on to WebKit
191         Need to expose CachedResourceClient constructor
192
193         * WebCore.exp:
194         * WebCore.xcodeproj/project.pbxproj:
195
196 2007-05-18  David Hyatt  <hyatt@apple.com>
197
198         Fix for <rdar://problem/5214338> REGRESSION: / mishandled in 
199         HTML tokenization (13780).
200
201         Reviewed by ggaren
202
203         * html/HTMLTokenizer.cpp:
204         (WebCore::Token::addAttribute):
205         (WebCore::HTMLTokenizer::parseTag):
206
207 2007-05-18  Brady Eidson  <beidson@apple.com>
208
209         Reviewed by Maciej
210
211         http://bugs.webkit.org/show_bug.cgi?id=12681 and
212         <rdar://problem/5166149> - window.open() causes server to be hit twice
213
214         This regressed in http://trac.webkit.org/projects/webkit/changeset/14637
215         That patch was to fix broken behavior when opening an already existant window.
216         The unfortunate side effect was to cause the server to be hit twice.  
217         Once during the call to frame->loader()->createWindow(), and again via a 
218         scheduled redirection.
219
220         I decided to restore the original de-facto behavior by making the new window
221         open via a scheduled redirection - there is a FIXME that was already here that
222         explains the reason why we have to do it this way for now.
223
224         Additionally, there were two distinct places that had their own logic to open
225         a new window - the logic for window.open() and the logic for 
226         window.showModalDialog().  The logic was almost identical so I condensed them
227         into one utility function that takes a flag to handle the slight difference.
228
229         A layout test is not possible at this time since it would involve capturing 
230         server logs (the 1st connection does not exist long enough to result in any
231         delegate callbacks).  That task is documented in 
232         http://bugs.webkit.org/show_bug.cgi?id=13769
233
234         * bindings/js/kjs_window.cpp:
235         (KJS::createWindow): Merged the two slightly different versions of "creating a window" 
236           logic here.  For the modal dialog case the load is an immediate call to changeLocation(),
237           which is triggered by the "immediate" flag, and the other cases load via scheduleLocationChange()
238         (KJS::showModalDialog): Call createWindow()
239         (KJS::WindowFunc::callAsFunction): Handle frame targets of _top or _parent immediately and call 
240           createWindow() for all others
241
242 2007-05-18  Sam Weinig  <sam@webkit.org>
243
244         Reviewed by Geoff.
245
246         Autogenerate the JS bindings for the HTMLTableElement, HTMLTableCaptionElement,
247         HTMLTableCellElement, HTMLTableColElement, HTMLTableRowElement, HTMLTableSectionElement.
248
249         * DerivedSources.make:
250         * WebCore.pro:
251         * WebCore.xcodeproj/project.pbxproj:
252         * bindings/js/JSHTMLElementWrapperFactory.cpp:
253         (WebCore::createJSHTMLWrapper):
254         * bindings/js/kjs_html.cpp:
255         (KJS::):
256         (KJS::JSHTMLElement::classInfo):
257         (KJS::JSHTMLElement::accessors):
258         (KJS::HTMLElementFunction::callAsFunction):
259         * bindings/js/kjs_html.h:
260         (KJS::JSHTMLElement::):
261         * html/HTMLTableCaptionElement.idl:
262         * html/HTMLTableCellElement.idl:
263         * html/HTMLTableColElement.idl:
264         * html/HTMLTableElement.idl:
265         * html/HTMLTableRowElement.idl:
266         * html/HTMLTableSectionElement.idl:
267         * page/DOMWindow.idl:
268
269 2007-05-18  Oliver Hunt  <oliver@apple.com>
270
271         Reviewed by Sam.
272
273         Fix for <rdar://problem/5211122> DRT crash below
274         SVGTimer::applyAnimations when page cache is enabled 
275         (SVG animation timers do not properly cancel themselves)
276
277         There were still a few paths in the SVG Animation code
278         that could cause timers to be created and used.  This 
279         patch inserts addition SVG_EXPERIMENTAL blocks to prevent
280         these timers from being used.
281
282         * ksvg2/misc/SVGDocumentExtensions.cpp:
283         (WebCore::SVGDocumentExtensions::startAnimations):
284         * ksvg2/misc/SVGTimer.cpp:
285         (WebCore::SVGTimer::animationsByElement):
286         (WebCore::SVGTimer::applyAnimations):
287         (WebCore::SVGTimer::notifyAll):
288         (WebCore::SVGTimer::addNotify):
289         (WebCore::SVGTimer::removeNotify):
290         * ksvg2/misc/TimeScheduler.cpp:
291         (WebCore::TimeScheduler::addTimer):
292         (WebCore::TimeScheduler::connectIntervalTimer):
293         (WebCore::TimeScheduler::disconnectIntervalTimer):
294         (WebCore::TimeScheduler::startAnimations):
295         (WebCore::TimeScheduler::toggleAnimations):
296         (WebCore::TimeScheduler::timerFired):
297         * ksvg2/svg/SVGAnimationElement.h:
298
299 2007-05-18  Marius Bugge Monsen <mbm@trolltech.com>
300
301         Reviewed by Zack Rusin. 
302
303         Return a valid pointer to a Clipboard object
304         from newGeneralClipboard. 
305
306         * editing/qt/EditorQt.cpp:
307         (WebCore::Editor::newGeneralClipboard):
308
309 2007-05-18  Mark Rowe  <mrowe@apple.com>
310
311         Attempt to fix the Gdk build after r21562.
312
313         * platform/gdk/TemporaryLinkStubs.cpp:
314         (Widget::isEnabled):
315         * platform/gdk/WidgetGdk.cpp:
316
317 2007-05-18  Adam Treat <treat@kde.org>
318
319         Reviewed by Lars
320
321         Remove dead code.
322
323         * platform/Widget.h:
324         * platform/mac/WidgetMac.mm:
325         * platform/qt/WidgetQt.cpp:
326
327 2007-05-18  Holger Freyther  <zecke@selfish.org>
328
329         Reviewed by Maciej.
330
331         Return true to make loading of pages working again
332
333         * loader/gdk/FrameLoaderClientGdk.cpp:
334         (WebCore::FrameLoaderClientGdk::canHandleRequest):
335
336 2007-05-18  Holger Freyther  <zecke@selfish.org>
337
338         Reviewed by Maciej.
339
340         Make WebCore::Widget use GtkWidget to fix focus handling.
341
342         * WebCore.pro: Add PlatformScrollBar
343         * platform/ScrollView.h: Gtk stuff
344         * platform/Widget.h: Take a GtkWidget
345         * platform/gdk/PlatformScrollBarGdk.cpp: Added.
346         (PlatformScrollbar::PlatformScrollbar):
347         (PlatformScrollbar::~PlatformScrollbar):
348         (PlatformScrollbar::width):
349         (PlatformScrollbar::height):
350         (PlatformScrollbar::setEnabled):
351         (PlatformScrollbar::paint):
352         (PlatformScrollbar::updateThumbPosition):
353         (PlatformScrollbar::updateThumbProportion):
354         (PlatformScrollbar::setRect):
355         * platform/gdk/ScreenGdk.cpp: Implement depth handling
356         (WebCore::screenDepth):
357         * platform/gdk/ScrollViewGdk.cpp: use setGtkWidget, not setDrawable
358         (WebCore::ScrollView::setGtkWidget):
359         * platform/gdk/TemporaryLinkStubs.cpp:
360         * platform/gdk/WidgetGdk.cpp:
361         (WebCore::Widget::Widget):
362         (WebCore::Widget::gtkWidget):
363         (WebCore::Widget::setGtkWidget):
364         (WebCore::Widget::hasFocus):
365         (WebCore::Widget::setFocus):
366
367 2007-05-18  Lars Knoll  <lars@trolltech.com>
368
369         Reviewed by Zack
370
371         Correctly implement initialiseSupportedImageMIMETypes.
372
373         * platform/MimeTypeRegistry.cpp:
374         (WebCore::initialiseSupportedImageMIMETypes):
375         * platform/qt/MimeTypeRegistryQt.cpp:
376         (WebCore::):
377
378 2007-05-18  Holger Hans Peter Freyther  <zecke@selfish.org>
379
380         Reviewed by Maciej.
381
382         Build fix for non-Qt and non-Mac ports.
383
384         * html/HTMLCanvasElement.h:
385
386 2007-05-18  Holger Hans Peter Freyther  <zecke@selfish.org>
387
388         Reviewed by Mark Rowe.
389
390         No test added as this is hard to time.
391
392         * platform/gdk/FrameGdk.cpp: Use needsLayout() to decide if layout()
393         is needed.
394
395         (WebCore::FrameGdk::dumpRenderTree):
396         (WebCore::FrameGdk::handleGdkEvent):
397
398 2007-05-18  Simon Hausmann  <hausmann@kde.org>
399
400         Reviewed by Lars.
401
402         * WebCore.pro: Create a pkg-config file to make it easier to locate
403         and use WebKitQt.
404
405 2007-05-18  Lars Knoll <lars@trolltech.com>
406
407         Reviewed by Hyatt.
408
409         Remove unused handleMouseEvent methods in the Widget
410         and derived classes.
411
412         * page/EventHandler.cpp:
413         (WebCore::EventHandler::handleMouseMoveEvent):
414         * page/FrameView.cpp:
415         * page/FrameView.h:
416         * page/mac/EventHandlerMac.mm:
417         (WebCore::EventHandler::mouseDragged):
418         (WebCore::EventHandler::mouseMoved):
419         * platform/ScrollBar.h:
420         * platform/Widget.h:
421         * platform/win/PlatformScrollBar.h:
422         * platform/win/TemporaryLinkStubs.cpp:
423         (WebCore::PlatformScrollbar::setRect):
424         * platform/wx/PlatformScrollBar.h:
425
426 2007-05-18  George Staikos  <staikos@kde.org>
427
428         Reviewed by Lars.
429
430         Use the proper clipping algorithm.  Might be a bit slow but we
431         can optimize it later.
432
433         * platform/graphics/qt/GraphicsContextQt.cpp:
434         (WebCore::GraphicsContext::clip):
435
436 2007-05-17  Sam Weinig  <sam@webkit.org>
437
438         Reviewed by George Staikos.
439
440         Fix Qt build after adding JSHTMLAnchorElementCustom.cpp. 
441
442         * WebCore.pro:
443
444 2007-05-17  George Staikos  <staikos@kde.org>
445
446         Reviewed by hyatt.
447
448         Fix preprocessor logic for CG/QT
449
450         * html/HTMLCanvasElement.cpp:
451         (WebCore::HTMLCanvasElement::reset):
452
453 2007-05-17  David Hyatt  <hyatt@apple.com>
454
455         Add a line gutter to view source mode.  The gutter uses counters, and this exposed the fact
456         that pseudoStyleForElement was not walking all UA rules properly.
457
458         Reviewed by aroben
459
460         * css/cssstyleselector.cpp:
461         (WebCore::CSSStyleSelector::pseudoStyleForElement):
462         * css/view-source.css:
463         * html/HTMLViewSourceDocument.cpp:
464         (WebCore::HTMLViewSourceDocument::HTMLViewSourceDocument):
465         (WebCore::HTMLViewSourceDocument::addViewSourceToken):
466         (WebCore::HTMLViewSourceDocument::addSpanWithClassName):
467         (WebCore::HTMLViewSourceDocument::addLine):
468         (WebCore::HTMLViewSourceDocument::addText):
469         * html/HTMLViewSourceDocument.h:
470
471 2007-05-17  Justin Garcia  <justin.garcia@apple.com>
472
473         Reviewed by ggaren
474
475         <rdar://problem/5209984> REGRESSION: Crash on click after clearing Facebook status
476         
477         comparePositions() expects non-null positions.  It's 
478         given a null position by contains() if the current 
479         selection is a range selection but contains only invisible 
480         content *and* visible positions cannot be created from its 
481         end points.  This can happen when there is a range selection 
482         inside shadow content (like that inside text fields) that 
483         is made invisible.
484
485         * editing/SelectionController.cpp:
486         (WebCore::SelectionController::contains): Check for
487         invisible end points.
488
489 2007-05-17  Sam Weinig  <sam@webkit.org>
490
491         Reviewed by Adam.
492
493         Fix for <rdar://problem/5201423> REGRESSION: Links in 
494         sidebar don't work on Honda website
495
496         Anchor elements need to have the same behavior for implicit and 
497         explicit toString() calls.
498
499         Test: fast/dom/anchor-toString.html
500
501         * WebCore.xcodeproj/project.pbxproj:
502         * bindings/js/JSHTMLAnchorElementCustom.cpp: Added.
503         (WebCore::JSHTMLAnchorElement::toString):
504         * html/HTMLAnchorElement.idl:
505
506 2007-05-17  Geoffrey Garen  <ggaren@apple.com>
507         
508         Build fix.
509
510 2007-05-17  Adele Peterson  <adele@apple.com>
511
512         Reviewed by Hyatt.
513
514         Update RenderMenuList PopupClient methods to consider style of inner block.
515
516         * rendering/RenderMenuList.cpp:
517         (WebCore::RenderMenuList::itemStyle):
518         (WebCore::RenderMenuList::clientStyle):
519
520 2007-05-17  Maciej Stachowiak  <mjs@apple.com>
521
522         Not reviewed, emergency test fix.
523
524         - avoid crash on layout tests.
525         
526         Patched up my last change so that  widgets don't crash.
527
528         * loader/FrameLoader.cpp:
529         (WebCore::FrameLoader::mainReceivedCompleteError):
530
531 2007-05-17  Antti Koivisto  <antti@apple.com>
532
533         Reviewed by Darin.
534
535         Fix for http://bugs.webkit.org/show_bug.cgi?id=13727
536         REGRESSION: Reproducible hang setting the selection's extent offset to -1
537         <rdar://problem/5206890>
538         
539         Rise INDEX_SIZE_ERR if used selection index is negative. This matches HTML5 for
540         getRangeAt() and collapse() which are part of the spec (FF throws NS_ERROR_FAILURE). 
541         
542         Not throwing exceptions yet for too high offsets (except getRangeAt()) as it is
543         unclear if WebCore's definition of offsets is the same as other browsers.
544
545         * bindings/js/kjs_window.cpp:
546         * WebCore/editing/SelectionController.cpp:
547         * WebCore/editing/SelectionController.h:
548         * WebCore/editing/VisiblePosition.cpp:
549         
550 2007-05-17  Adele Peterson  <adele@apple.com>
551
552         Reviewed by Mitz.
553
554         Fix for <rdar://problem/5096035> REGRESSION: rtl text should be left-aligned in <select>s
555
556         Test: fast/text/international/bidi-menulist.html
557
558         * rendering/RenderMenuList.cpp:
559         (WebCore::RenderMenuList::adjustInnerStyle): Set the inner block style to direction: ltr, and text-align: left.  This means that
560          we will ignore those settings in the button to match the way the text is displayed in the popup menu.
561         (WebCore::RenderMenuList::createInnerBlock): Call adjustInnerStyle.
562         (WebCore::RenderMenuList::setStyle): ditto.
563         * rendering/RenderMenuList.h: Added adjustInnerStyle.
564
565 2007-05-17  Justin Garcia  <justin.garcia@apple.com>
566
567         Reviewed by harrison
568
569         <rdar://problem/4924441> List becomes nested when changing its type
570         <rdar://problem/5210032> Content before a list is placed at the end of the list when its made into a list item
571         <rdar://problem/5207369> Crash when removing ordering from a nested list
572
573         * editing/InsertListCommand.cpp:
574         (WebCore::InsertListCommand::doApply):
575         The outermostEnclosingList of the position before the start isn't
576         the previousList if it contains the start.
577         Ditto for the position after the end and the nextList.
578         If we're putting the newly created list item into the next list,
579         insert it at the start of that list, not the end (don't append).
580         Avoid nesting newly created lists inside list items.
581         
582 2007-05-17  Patti Hoa  <patti@apple.com>
583
584         Reviewed by Darin.
585         
586         <rdar://problem/4775672> AXTextMarkerRangeForUnorderedTextMarkers returns incorrect order
587         
588         * bridge/mac/WebCoreAXObject.mm:
589         (-[WebCoreAXObject doAXTextMarkerRangeForUnorderedTextMarkers:]):
590         A selection's m_start is not guranteed to equal m_base since m_start can actually be m_base's downstream().
591         A more accurate way to determine the order from selection is to ask directly for isBaseFirst().
592         In addition, if the two visible positions given are the same position but different affinity, we need to 
593         handle it here rather than depend on the selection. This is because selection does not retain the
594         affinity of both selection start/end visible positions as part of the selection validation. 
595
596 2007-05-17  Mitz Pettel  <mitz@webkit.org>
597
598         Reviewed by Brady
599
600         - fix http://bugs.webkit.org/show_bug.cgi?id=13759
601           REGRESSION (r20182-r20184): Incorrect rendering of multipart images
602
603         Test: http/tests/multipart/invalid-image-data.html
604
605         * loader/loader.cpp:
606         (WebCore::Loader::didReceiveData): Make a copy of the current part's data
607         instead of using the resource data, because the latter is going to be
608         overwritten by the new part being received.
609
610 2007-05-17  Oliver Hunt  <oliver@apple.com>
611
612         Reviewed by Justin.
613
614         Fix for <rdar://problem/4244861> Safari fails to create image file
615         after releasing dragged image that has changed on source page
616
617         Tell xcode to copy HTMLImageElement.h and HTMLImageLoader.h headers
618         across to WebKit as private headers.
619
620         * WebCore.xcodeproj/project.pbxproj:
621
622 2007-05-17  Justin Garcia  <justin.garcia@apple.com>
623
624         Reviewed by harrison
625
626         <rdar://problem/5190926> 
627         Gmail Editor: Crash when removing list style from underlined, multi-item list
628         
629         The user underlined some text, then created a list.
630         The list was placed inside the inline element carrying 
631         the underline style, so, that element surrounded the 
632         list instead of being at the lowest level (just above 
633         text nodes). This kind of markup is more difficult to 
634         edit. Filed 5192089 and added a workaround so that we 
635         don't produce this kind of markup.
636
637         * editing/InsertListCommand.cpp:
638         (WebCore::InsertListCommand::doApply): Avoid inline
639         elements when inserting the new list.
640
641 2007-05-17  David Hyatt  <hyatt@apple.com>
642
643         Allow redundant attributes with the same name in view source mode.
644
645         Reviewed by aroben
646
647         * dom/NamedAttrMap.h:
648         (WebCore::NamedAttrMap::insertAttribute):
649         * html/HTMLTokenizer.cpp:
650         (WebCore::Token::addAttribute):
651
652 2007-05-17  George Staikos  <staikos@kde.org>
653
654         - Back out last patch based on discussion with Zack.
655
656         * platform/qt/WidgetQt.cpp:
657         (WebCore::Widget::paint):
658
659 2007-05-16  Anders Carlsson  <andersca@apple.com>
660
661         Reviewed by Darin.
662
663         <rdar://problem/5207156> Hamachi test tool causes assertion in FormCompletionController in Safari
664
665         This happens because the form delegate gets passed the wrong source frame during the second submit().
666         If a frame with the given name is found, FrameLoader::load is called with the same parameters on the found frame.
667         This causes the found frame to be used as the source frame, which is wrong.
668         
669         The fix is to create the form state object before checking what frame to load the new request in. 
670         
671         * WebCore.exp:
672         * loader/FrameLoader.cpp:
673         (WebCore::FrameLoader::load):
674         (WebCore::FrameLoader::checkNavigationPolicy):
675         (WebCore::FrameLoader::continueAfterNavigationPolicy):
676         * loader/FrameLoader.h:
677         * manual-tests/submit-form-with-target-twice.html: Added.
678
679 2007-05-16  Maciej Stachowiak  <mjs@apple.com>
680
681         Reviewed by Oliver.
682
683         <rdar://problem/5205914> REGRESSION: PLT stops after loading first page due to r21479
684         
685         * loader/FrameLoader.cpp:
686         (WebCore::FrameLoader::frameHasLoaded):
687
688 2007-05-16  David Hyatt  <hyatt@apple.com>
689
690         Improve the syntax-highlighted view source mode.  It now preserves all whitespace properly
691         and highlights doctypes and comments (in addition to all the stuff it could highlight before).
692
693         Reviewed by aroben
694
695         * html/HTMLTokenizer.cpp:
696         (WebCore::Token::addAttribute):
697         (WebCore::HTMLTokenizer::parseTag):
698         * html/HTMLTokenizer.h:
699         (WebCore::Token::Token):
700         (WebCore::Token::~Token):
701         (WebCore::Token::reset):
702         (WebCore::Token::addViewSourceChar):
703         * html/HTMLViewSourceDocument.cpp:
704         (WebCore::HTMLViewSourceDocument::addViewSourceToken):
705         * html/HTMLViewSourceDocument.h:
706
707 2007-05-16  Maciej Stachowiak  <mjs@apple.com>
708
709         Reviewed by Adam.
710
711         <rdar://problem/5191024> Page never loads completely (emonome.vodpod.com)
712         <rdar://problem/5205162> REGRESSION (r21367): In the Address URL field, typing a site name doesn't redirect to site after pressing return
713         http://bugs.webkit.org/show_bug.cgi?id=13683
714         <rdar://problem/5208951> REGRESSION: Progress bar never completes on link click that downloads (13694)
715         http://bugs.webkit.org/show_bug.cgi?id=13694
716         <rdar://problem/5201598> REGRESSION: After uploading file to iDisk at mac.com, "loading" status remains and file does not appear in the list
717         
718         * loader/FrameLoader.cpp:
719         (WebCore::FrameLoader::mainReceivedCompleteError): Make sure to always check whether the overall
720         load completed, even if we think the current frame load is already complete.
721
722 2007-05-16  dethbakin  <bdakin@apple.com>
723
724         Reviewed by Hyatt.
725
726         Fix for <rdar://problem/5204107> REGRESSION: CSS web forum site 
727         layout not displaying properly in latest WebKit
728
729         Hyatt's http://trac.webkit.org/projects/webkit/changeset/21428 
730         exposed this bug. We were not handling error cases with <caption> 
731         correctly. This patch makes them do the same thing as colgroup.
732
733         * html/HTMLParser.cpp:
734         (WebCore::HTMLParser::handleError):
735         * html/HTMLParserErrorCodes.cpp: No need any more for caption-
736         specific errors.
737         (WebCore::htmlParserErrorMessageTemplate):
738         * html/HTMLParserErrorCodes.h:
739         (WebCore::):
740
741 2007-05-16  Kevin McCullough  <kmccullough@apple.com>
742
743         Reviewed by Darin and Geoff.
744
745         - rdar://problem/4981886
746         - Now windows opened by the DOM can be closed by JS.
747
748         * bindings/js/kjs_window.cpp:
749         (KJS::createNewWindow):
750         (KJS::WindowFunc::callAsFunction):
751         * loader/FrameLoader.cpp:
752         (WebCore::FrameLoader::FrameLoader):
753         (WebCore::FrameLoader::openedByDOM):
754         (WebCore::FrameLoader::setOpenedByDOM):
755         (WebCore::FrameLoader::continueLoadAfterNewWindowPolicy):
756         * loader/FrameLoader.h:
757
758 2007-05-16  Darin Adler  <darin@apple.com>
759
760         Reviewed by Hyatt.
761
762         - fix <rdar://problem/4928671> Crash due to runaway recursion when fieldset has display: table-row (12066)
763
764         Test: fast/css/fieldset-display-row.html
765
766         * rendering/RenderContainer.cpp: (WebCore::RenderContainer::addChild):
767         Change all decision making about special handling for new children to use
768         the class of the render object instead of the style, except for the cases
769         where the style is the only way to tell (TABLE_COLUMN_GROUP and TABLE_CAPTION).
770         Thus a RenderFieldset with table-row style won't get handled as if it was
771         a table row.
772
773         * rendering/RenderTable.cpp: (WebCore::RenderTable::addChild): Same thing.
774         Except that here the styles that we ahave to look at are TABLE_CAPTION,
775         TABLE_HEADER_GROUP, TABLE_FOOTER_GROUP, and TABLE_ROW_GROUP.
776
777 2007-05-16  Zack Rusin  <zrusin@trolltech.com>
778
779         Reviewed by Lars.
780
781         Implement bigger parts of the Canvas element in the
782         Qt port. Gradients and patterns are missing.
783
784         * WebCore/html/CanvasRenderingContext2D.cpp:
785         * WebCore/html/CanvasStyle.cpp:
786         * WebCore/html/HTMLCanvasElement.cpp:
787         * WebCore/html/HTMLCanvasElement:
788
789 2007-05-16  Zack Rusin  <zrusin@trolltech.com>
790
791         Reviewed by Lars
792
793         Fix shared timers, make them use miliseconds. Based
794         on a patch from George.
795
796         * WebCore/platform/qt/SharedTimerQt.cpp:
797        (WebCore::setSharedTimerFireTime):
798
799 2007-05-16  David Hyatt  <hyatt@apple.com>
800
801         Add rudimentary error reporting to the HTML parser.  This is disabled
802         for now until it gets beefed up a bit more (and until we work out how
803         best to pass the messages up without hurting perf).
804
805         Clean up and remove dead error handling code and incorrect error handling
806         code as well.
807
808         Reviewed by mjs
809
810         * WebCore.xcodeproj/project.pbxproj:
811         * html/HTMLParser.cpp:
812         (WebCore::HTMLParser::HTMLParser):
813         (WebCore::HTMLParser::handleError):
814         (WebCore::HTMLParser::headCreateErrorCheck):
815         (WebCore::HTMLParser::reportErrorToConsole):
816         * html/HTMLParser.h:
817         (WebCore::HTMLParser::reportError):
818         * html/HTMLParserErrorCodes.cpp: Added.
819         (WebCore::htmlParserErrorMessageTemplate):
820         * html/HTMLParserErrorCodes.h: Added.
821         (WebCore::):
822         * html/HTMLTokenizer.h:
823         (WebCore::HTMLTokenizer::tagStartLineNumber):
824
825 2007-05-15  David Hyatt  <hyatt@apple.com>
826
827         Make FrameLoader write "<html><body>" instead of just "<body>".
828
829         Reviewed by aroben
830
831         * loader/FrameLoader.cpp:
832         (WebCore::FrameLoader::init):
833
834 2007-05-15  George Staikos  <staikos@kde.org>
835
836         Reviewed by Adam Roben.
837
838         - Pass cookies through from the loader.
839
840         * platform/network/qt/ResourceHandleManagerQt.cpp:
841         (WebCore::ResourceHandleManager::receivedResponse):
842
843 2007-05-15  Adam Treat  <adam@staikos.net>
844
845         Reviewed by George Staikos.
846
847         - Implement drawArc with proper units.
848
849         * platform/graphics/qt/GraphicsContextQt.cpp:
850         (WebCore::GraphicsContext::strokeArc):
851
852 2007-05-15  Adam Treat  <adam@staikos.net>
853
854         Reviewed by George Staikos.
855
856         - Add missing paint for nested subframes.
857
858         * platform/qt/WidgetQt.cpp:
859         (WebCore::Widget::paint):
860
861 2007-05-15  Sam Weinig  <sam@webkit.org>
862
863         Reviewed by Oliver.
864
865         - Patch for http://bugs.webkit.org/show_bug.cgi?id=13722
866           Finish testing and fixing the setting of DOM attributes to JS null
867
868           Convert JS null to null string for SVG attributes.
869
870         Test: fast/dom/svg-element-attribute-js-null.xhtml
871
872         * ksvg2/svg/SVGAngle.idl:
873         * ksvg2/svg/SVGElement.idl:
874         * ksvg2/svg/SVGLength.idl:
875         * ksvg2/svg/SVGScriptElement.idl:
876
877 2007-05-15  Sam Weinig  <sam@webkit.org>
878
879         Reviewed by Oliver.
880
881         - Patch for http://bugs.webkit.org/show_bug.cgi?id=13722
882           Finish testing and fixing the setting of DOM attributes to JS null
883
884           Convert JS null to null string for CanvasRenderingContext2D attributes.
885
886         Test: fast/dom/canvasContext2d-element-attribute-js-null.html
887
888         * html/CanvasRenderingContext2D.idl:
889
890 2007-05-15  Oliver Hunt  <oliver@apple.com>
891
892         Reviewed by Sam and Geoff.
893
894         Removing dead code left behind from drag and drop refactoring.
895
896         * page/mac/WebCoreFrameBridge.h:
897
898 2007-05-15  Sam Weinig  <sam@webkit.org>
899
900         Reviewed by Oliver.
901
902         - Second Patch for http://bugs.webkit.org/show_bug.cgi?id=13722
903           Finish testing and fixing the setting of DOM attributes to JS null
904
905           Convert JS null to null string for remaining CSSOM attributes.
906
907         Test: fast/dom/css-element-attribute-js-null.html
908
909         * bindings/js/kjs_css.cpp:
910         (KJS::DOMCSSStyleDeclaration::put):
911         (KJS::DOMMediaList::put):
912         (KJS::DOMCSSRule::putValueProperty):
913         (KJS::DOMCSSValue::put):
914         * css/CSSPageRule.idl:
915         * css/CSSRule.idl:
916         * css/CSSStyleDeclaration.idl:
917         * css/CSSStyleRule.idl:
918         * css/CSSValue.idl:
919         * css/MediaList.idl:
920
921 2007-05-15  Darin Adler  <darin@apple.com>
922
923         Reviewed by Hyatt.
924
925         * css/html4.css: Remove wbr style rule -- not needed any more.
926
927 2007-05-15  Mitz Pettel  <mitz@webkit.org>
928
929         Reviewed by Brady
930
931         - fix http://bugs.webkit.org/show_bug.cgi?id=13360
932           REGRESSION: Crash closing live web cam viewer page
933
934         Test: http/tests/misc/multipart.html
935
936         * loader/ResourceLoader.cpp:
937         (WebCore::ResourceLoader::didFail): Avoid calling didFailToLoad() if
938         didFinishLoad() has already been called (when the first part of a
939         multipart resource arrived).
940         (WebCore::ResourceLoader::didCancel): Ditto.
941
942 2007-05-15  Sam Weinig  <sam@webkit.org>
943
944         Reviewed by Darin.
945
946         - Patch for http://bugs.webkit.org/show_bug.cgi?id=13722
947           Finish testing and fixing the setting of DOM attributes to JS null
948
949           Convert JS null to null string for remaining Core DOM attributes.
950
951         Test: fast/dom/coreDOM-element-attribute-js-null.xhtml
952
953         * dom/Attr.cpp:
954         (WebCore::Attr::setValue): Don't throw an expection for null values as this
955         is not in the spec and Firefox does not do it either.
956         * dom/Attr.idl:
957         * dom/CharacterData.idl:
958         * dom/ProcessingInstruction.idl:
959
960 2007-05-15  Mitz Pettel  <mitz@webkit.org>
961
962         Reviewed by Hyatt.
963
964         - fix http://bugs.webkit.org/show_bug.cgi?id=13718
965           REGRESSION (r21093): editing/execCommand/5136770.html failing pixel test
966
967         * rendering/RenderContainer.cpp:
968         (WebCore::RenderContainer::removeChildNode): Moved the code that clears the
969         selection when moving a selection border into the fast path.
970
971 2007-05-15  Rob Buis  <buis@kde.org>
972
973         Reviewed by Hyatt.
974
975         http://bugs.webkit.org/show_bug.cgi?id=6487
976         "Make Text Bigger/Smaller" affects SVGs when it probably shouldn't
977
978         Ignore Make Text Bigger/Smaller for SVG text.
979
980         * css/svg.css:
981
982 2007-05-15  Anders Carlsson  <andersca@apple.com>
983
984         Reviewed by Maciej.
985
986         <rdar://problem/5183685>
987         http://bugs.webkit.org/show_bug.cgi?id=13301
988         ASSERT or null value when trying to use a getter defined on a window object
989
990         Handle the case where the value returned is a getter/setter object.
991         
992         * bindings/js/kjs_window.cpp:
993         (KJS::Window::getOverridePropertySlot):
994
995 2007-05-14  Anders Carlsson  <andersca@apple.com>
996
997         Reviewed by Geoff.
998
999         <rdar://problem/5200816>
1000         REGRESSION: With Shiira 1.2.2 , I can't open embedded link in flash object by clicking (http:/www.adobe.com )
1001         
1002         Shiira under some circumstances passes nil as the request to -[WebFrame loadRequest:]. ToT WebKit doesn't call any policy
1003         delegate methods in this case, which means that the page is actually being loaded. 
1004         
1005         This patch makes ToT WebKit behave in the same way as Tiger WebKit when the request is nil.
1006         
1007         * loader/FrameLoader.cpp:
1008         (WebCore::FrameLoader::checkNavigationPolicy):
1009         Don't continue without calling the navigation policy method if the request is null.
1010         
1011         (WebCore::FrameLoader::continueAfterNavigationPolicy):
1012         If the request can't be handled, don't continue the load.
1013         
1014         * platform/network/mac/ResourceRequestMac.mm:
1015         (WebCore::ResourceRequest::doUpdatePlatformRequest):
1016         Don't create an NSURLRequest object if the request is null.
1017
1018 2007-05-15  Maciej Stachowiak  <mjs@apple.com>
1019
1020         Reviewed by Hyatt and Lars.
1021
1022         - fixed <rdar://problem/5201758> REGRESSION: Stop button enabled and other problems caused by [WebView currentURL] returning non-nil for empty window
1023
1024         * WebCore.exp: export new symbol
1025         * loader/FrameLoader.cpp:
1026         (WebCore::FrameLoader::begin): move marker that we committed a real doc load from here...
1027         (WebCore::FrameLoader::transitionToCommitted): ...to here
1028         (WebCore::FrameLoader::frameHasLoaded): check that we have at least started loading something
1029         besides the initial empty doc.
1030         * loader/FrameLoader.h:
1031
1032 2007-05-14  Justin Garcia  <justin.garcia@apple.com>
1033
1034         Reviewed by ggaren
1035         
1036         <http://bugs.webkit.org/show_bug.cgi?id=13716>
1037         REGRESSION: Three new layout test failures
1038         
1039         Two failures are correct.  Updated their expected results.
1040         
1041         In fast/events/frame-tab-focus.html, as we advance
1042         through focusable nodes, we descend into a subframe
1043         to focus a node and then ascend out of it into the
1044         main frame to focus the next.  When we focus the main 
1045         frame, the node in that frame that was previously 
1046         focused and contains an inactive selection is focused 
1047         momentarily because setCaretVisible tries to focus the 
1048         node containing the caret.
1049
1050         * page/Frame.cpp:
1051         (WebCore::Frame::setCaretVisible): Don't focus the
1052         node containing the caret. FocusController will focus
1053         the previously focused node (which will contain the
1054         caret) if necessary when the frame gains focus.
1055         
1056 2007-05-14  Maciej Stachowiak  <mjs@apple.com>
1057
1058         Reviewed by Brady.
1059
1060         - fixed <rdar://problem/5203036> REGRESSION: Assertion failure in WebCore::FrameLoader::restoreScrollPositionAndViewState() going back from fark.com Photoshop contest (13684)
1061
1062         Test: http/tests/navigation/back-to-slow-frame.html
1063         
1064         * loader/FrameLoader.cpp:
1065         (WebCore::FrameLoader::restoreScrollPositionAndViewState): Add needed early return.
1066
1067 2007-05-14  Mitz Pettel  <mitz@webkit.org>
1068
1069         Reviewed by Dave Hyatt.
1070
1071         - fix http://bugs.webkit.org/show_bug.cgi?id=13603
1072           style leaks in washingtonpost.com
1073           also known as http://bugs.webkit.org/show_bug.cgi?id=8750
1074           w3c.org: incorrect recovery from unclosed <a> elements
1075           also known as http://bugs.webkit.org/show_bug.cgi?id=12808
1076           Handling of misnested tags results in entire page appearing as link
1077           also known as http://bugs.webkit.org/show_bug.cgi?id=12861
1078           Post text renders as link
1079
1080         Test: fast/parser/residual-style-close-across-n-blocks.html
1081
1082         * html/HTMLParser.cpp:
1083         (WebCore::HTMLParser::handleResidualStyleCloseTagAcrossBlocks): Changed to
1084         deal with multiple block crossings instead of bailing out, by doing multiple
1085         reparenting passes, starting from the outermost block.
1086
1087 2007-05-14  Mitz Pettel  <mitz@webkit.org>
1088
1089         Reviewed by Darin.
1090
1091         - fix http://bugs.webkit.org/show_bug.cgi?id=13711
1092           REGRESSION - Bookmark Bar text rendering changed
1093
1094         No test possible since this patch affects only Safari chrome.
1095
1096         * platform/Font.cpp:
1097         (WebCore::Font::Font): Initialize m_isPlatformFont according to whether
1098         the Font object is derived from a FontPlatformData or not.
1099         * platform/Font.h:
1100         (WebCore::Font::isPlatformFont): Added. Returns whether this Font was
1101         derived from a platform font.
1102         * platform/mac/FontCacheMac.mm:
1103         (WebCore::FontCache::getFontDataForCharacters): Changed to not enable
1104         synthetic bold and italic in the fallback fonts if the original font
1105         was derived from a platform font.
1106
1107 2007-05-14  Sam Weinig  <sam@webkit.org>
1108
1109         Reviewed by Alice!
1110
1111         - Patch for http://bugs.webkit.org/show_bug.cgi?id=13541
1112           REGRESSION: Setting a DOMString attribute to JS null in the 
1113           JS bindings should default to converting to the empty string
1114
1115           Convert JS null to the empty string when passing it to an attribute that takes
1116           a DOMString.
1117
1118         Test: fast/dom/document-attribute-js-null.html
1119         Test: fast/dom/element-attribute-js-null.html
1120
1121         * bindings/js/kjs_dom.cpp:
1122         (KJS::DOMNode::putValueProperty):
1123         * bindings/js/kjs_html.cpp:
1124         (KJS::JSHTMLDocument::putValueProperty):
1125         (KJS::JSHTMLElement::objectSetter):
1126         (KJS::JSHTMLElement::embedSetter):
1127         (KJS::JSHTMLElement::tableSetter):
1128         (KJS::JSHTMLElement::tableCaptionSetter):
1129         (KJS::JSHTMLElement::tableColSetter):
1130         (KJS::JSHTMLElement::tableSectionSetter):
1131         (KJS::JSHTMLElement::tableRowSetter):
1132         (KJS::JSHTMLElement::tableCellSetter):
1133         (KJS::JSHTMLElement::frameSetSetter):
1134         (KJS::JSHTMLElement::frameSetter):
1135         (KJS::JSHTMLElement::iFrameSetter):
1136         (KJS::JSHTMLElement::marqueeSetter):
1137         (KJS::JSHTMLElement::putValueProperty):
1138         * bindings/js/kjs_html.h:
1139         * dom/Document.idl:
1140         * dom/Node.idl:
1141         * html/HTMLAnchorElement.idl:
1142         * html/HTMLAppletElement.idl:
1143         * html/HTMLAreaElement.idl:
1144         * html/HTMLBRElement.idl:
1145         * html/HTMLBaseElement.idl:
1146         * html/HTMLBaseFontElement.idl:
1147         * html/HTMLBlockquoteElement.idl:
1148         * html/HTMLBodyElement.idl:
1149         * html/HTMLButtonElement.idl:
1150         * html/HTMLDivElement.idl:
1151         * html/HTMLDocument.idl:
1152         * html/HTMLElement.idl:
1153         * html/HTMLEmbedElement.idl:
1154         * html/HTMLFontElement.idl:
1155         * html/HTMLFormElement.idl:
1156         * html/HTMLFrameElement.idl:
1157         * html/HTMLFrameSetElement.idl:
1158         * html/HTMLHRElement.idl:
1159         * html/HTMLHeadElement.idl:
1160         * html/HTMLHeadingElement.idl:
1161         * html/HTMLHtmlElement.idl:
1162         * html/HTMLIFrameElement.idl:
1163         * html/HTMLImageElement.idl:
1164         * html/HTMLInputElement.idl:
1165         * html/HTMLIsIndexElement.idl:
1166         * html/HTMLLIElement.idl:
1167         * html/HTMLLabelElement.idl:
1168         * html/HTMLLegendElement.idl:
1169         * html/HTMLLinkElement.idl:
1170         * html/HTMLMapElement.idl:
1171         * html/HTMLMetaElement.idl:
1172         * html/HTMLModElement.idl:
1173         * html/HTMLOListElement.idl:
1174         * html/HTMLObjectElement.idl:
1175         * html/HTMLOptGroupElement.idl:
1176         * html/HTMLOptionElement.idl:
1177         * html/HTMLParagraphElement.idl:
1178         * html/HTMLParamElement.idl:
1179         * html/HTMLQuoteElement.idl:
1180         * html/HTMLScriptElement.idl:
1181         * html/HTMLSelectElement.idl:
1182         * html/HTMLStyleElement.idl:
1183         * html/HTMLTableCaptionElement.idl:
1184         * html/HTMLTableCellElement.idl:
1185         * html/HTMLTableColElement.idl:
1186         * html/HTMLTableElement.idl:
1187         * html/HTMLTableRowElement.idl:
1188         * html/HTMLTableSectionElement.idl:
1189         * html/HTMLTextAreaElement.idl:
1190         * html/HTMLTitleElement.idl:
1191         * html/HTMLUListElement.idl:
1192
1193 2007-05-14  Geoffrey Garen  <ggaren@apple.com>
1194
1195         Trying to fix the Qt build.
1196
1197         * WebCore.pro:
1198
1199 2007-05-14  Geoffrey Garen  <ggaren@apple.com>
1200
1201         Reviewed by Oliver Hunt.
1202         
1203         Some improvements on my last patch, suggested by Darin.
1204
1205         * history/PageCache.cpp:
1206         (WebCore::PageCache::autoreleaseNow): Swap with an empty set instead of 
1207         building up an array and then calling clear(). This is slightly more 
1208         efficient and the code is cleaner.
1209
1210 2007-05-14  Justin Garcia  <justin.garcia@apple.com>
1211
1212         Reviewed by darin
1213         
1214         <rdar://problem/5136696> Selection is removed when focusing a node in another frame
1215         <rdar://problem/5192388> WordPress: Can't insert links/images
1216         
1217         Don't clear a selection when changing focus if the new
1218         focus node is in a different frame than the old selection.
1219
1220         * dom/Document.cpp:
1221         (WebCore::Document::setFocusedNode): Moved code to clear 
1222         selections to the FocusController, since it is Page level 
1223         and will know about the frame/document that contained the 
1224         old selection. Moved code to call shouldEndEditing to the 
1225         FocusController because selections are now cleared before
1226         calling Document::setFocusedNode and shouldEndEditing must
1227         be called before selections are cleared.
1228         * dom/Element.cpp:
1229         (WebCore::Element::blur): Call FocusController::setFocusNode
1230         instead of Document::setFocusNode, if possible.
1231         * page/EventHandler.cpp:
1232         (WebCore::EventHandler::dispatchMouseEvent): Ditto.
1233         * page/FocusController.cpp:
1234         (WebCore::relinquishesEditingFocus): Moved from Document.cpp.
1235         (WebCore::clearSelectionIfNeeded): Ditto.  Don't clear if
1236         the old selection is in a frame that's different than the 
1237         one that contains the new focus node.
1238         (WebCore::FocusController::setFocusedNode): Moved code
1239         here from Document::setFocusedNode.
1240         * page/Frame.cpp:
1241         (WebCore::Frame::setFocusedNodeIfNeeded): Call
1242         FocusController::setFocusNode.
1243
1244 2007-05-14  Geoffrey Garen  <ggaren@apple.com>
1245
1246         Reviewed by Darin Adler.
1247         
1248         Next step toward fixing <rdar://problem/5055182> The back cache has no 
1249         global cap.
1250         
1251         Created a PageCache singleton. Right now, it only handles the timer-based
1252         deallocation of cached pages. I plan to add HistoryItem->CachedPage tracking
1253         and eviction logic in later patches.
1254
1255         Updated for renames and file changes:
1256
1257         * WebCore.exp:
1258         * WebCore.xcodeproj/project.pbxproj:
1259         * history/BackForwardList.cpp:
1260         (WebCore::BackForwardList::setPageCacheSize):
1261         (WebCore::BackForwardList::clearPageCache):
1262
1263         Removed global timed release code, moved into new PageCache class, since
1264         it's eventually going to be in charge of deciding when things are released:
1265         
1266         * history/HistoryItem.cpp:
1267         (WebCore::HistoryItem::setCachedPage):
1268         * history/HistoryItem.h:
1269
1270         Folded into PageCache:
1271         
1272         * history/HistoryItemTimer.cpp: Removed.
1273         * history/HistoryItemTimer.h: Removed.
1274
1275         New singleton. Right now, it just handles timed release of cached pages:
1276         
1277         * history/PageCache.cpp: Added.
1278         (WebCore::pageCache):
1279         (WebCore::PageCache::PageCache):
1280         (WebCore::PageCache::autoreleaseNowOrReschedule):
1281         (WebCore::PageCache::autoreleaseNow):
1282         (WebCore::PageCache::autorelease):
1283         * history/PageCache.h: Added.
1284
1285 2007-05-14  Adele Peterson  <adele@apple.com>
1286
1287         Reviewed by Darin.
1288
1289         Fix for <rdar://problem/5200081> Repro crash in PopupMenu::show clicking popup menu button after reload
1290
1291         * platform/mac/PopupMenuMac.mm: (WebCore::PopupMenu::show): Added call to dismissPopup so the cell gets unattached properly.
1292
1293 2007-05-14  Adele Peterson  <adele@apple.com>
1294
1295         Reviewed by Darin.
1296
1297         Remove incorrect assertion.
1298
1299         * page/FrameView.cpp: (WebCore::FrameView::setContentsPos):
1300
1301 2007-05-14  Anders Carlsson  <andersca@apple.com>
1302
1303         Reviewed by Geoff.
1304
1305         <rdar://problem/5172056> Regression: cannot open txt file, get broken image
1306
1307         Never let plug-ins override text/plain.
1308         
1309         * dom/DOMImplementation.cpp:
1310         (WebCore::DOMImplementation::createDocument):
1311
1312 2007-05-14  Zack Rusin  <zrusin@trolltech.com>
1313
1314         Reviewed by Simon.
1315
1316         Do some magic to get better dependency tracking for header
1317         files in the qmake project files.
1318
1319         * ChangeLog:
1320
1321 2007-05-14  Lars Knoll <lars@trolltech.com>
1322
1323         Reviewed by Zack
1324
1325         Required updates after Maciej's frame change.
1326
1327         * loader/FrameLoader.cpp:
1328         (WebCore::FrameLoader::mainReceivedCompleteError):
1329               Call checkLoadCompleted() at the end of the method. Without it
1330               we never get the loadDone() signal on the Qt port.
1331         * platform/network/qt/ResourceHandleManagerQt.cpp:
1332         (WebCore::ResourceHandleManager::receivedFinished):
1333               Don't pass a null error to didFail().
1334
1335 2007-05-14  Darin Adler  <darin@apple.com>
1336
1337         Reviewed by Antti.
1338
1339         - fix <rdar://problem/3109180> VIP: after go back, page jumps after loading even if I scrolled while loading
1340
1341         * history/CachedPage.cpp: (WebCore::CachedPage::clear): Call clearFrame rather than
1342         clearPart -- the "part" term was leftover prehistoric terminology.
1343
1344         * loader/FrameLoader.cpp:
1345         (WebCore::FrameLoader::open): Call setWasScrolledByUser(false) on the page, so that we
1346         can detect any user scrolling that happens during the "go back" process.
1347         (WebCore::FrameLoader::restoreScrollPositionAndViewState): Don't scroll if the view's
1348         wasScrolledByUser flag is set.
1349         (WebCore::FrameLoader::loadItem): Call setWasScrolledByUser(false) false when we do
1350         a new "load" (actually just a scroll) using the same frame. Also moved the line of code that
1351         sets m_currentHistoryItem to make this code path mroe similar to recursiveGoToItem.
1352         (WebCore::FrameLoader::recursiveGoToItem): Ditto.
1353
1354         * page/Frame.cpp:
1355         (WebCore::Frame::~Frame): Call clearFrame rather than stting m_frame directly.
1356         (WebCore::Frame::sendScrollEvent): Call setWasScrolledByUser(true) on FrameView. The FrameView
1357         itself knows to ignore this if the scrolling is being done programmatically instead of by the user.
1358
1359         * page/FrameView.h: Added wasScrolledByUser and setWasScrolledByUser. Also removed unneeded
1360         include and class forward declarations, renamed clearPart to clearFrame, removed uneeded function
1361         haveDelayedLayoutScheduled, and removed unneeded friend declarations.
1362         * page/FrameView.cpp:
1363         (WebCore::FrameViewPrivate::FrameViewPrivate): Added m_inProgrammaticScroll and m_wasScrolledByUser.
1364         (WebCore::FrameViewPrivate::reset): Set m_wasScrolledByUser to false.
1365         (WebCore::FrameView::clearFrame): Renamed from clearPart.
1366         (WebCore::FrameView::scrollRectIntoViewRecursively): Added code to set the m_inProgrammaticScroll flag.
1367         (WebCore::FrameView::setContentsPos): Ditto.
1368         (WebCore::FrameView::wasScrolledByUser): Added.
1369         (WebCore::FrameView::setWasScrolledByUser): Added. Does nothing if called when m_inProgrammaticScroll
1370         is true.
1371
1372 2007-05-14  Darin Adler  <darin@apple.com>
1373
1374         Reviewed by Antti.
1375
1376         - <rdar://problem/4865655> REGRESSION: find function does not work for the character ß
1377
1378         The trick was to fold case consistently in the CircularSearchBuffer class.
1379
1380         The problem was that we were folding the search target string with full case folding and
1381         the characters of the text we were searching with simple case folding. We now use full
1382         case folding in both cases.
1383
1384         * editing/TextIterator.cpp:
1385         (WebCore::CircularSearchBuffer::CircularSearchBuffer): Changed the buffer to be a
1386         Vector<UChar>. Added a Vector<bool> to record which characters were starts of characters
1387         in the text we are searching. Changed the cursor to be an int rather than a pointer.
1388         (WebCore::CircularSearchBuffer::append): New function that knows how to append multiple
1389         characters when folding case turns one character into many -- uses the full foldCase
1390         rather than the simplified single-character foldCase. Also removed the append function
1391         that did multiple characters at once; that was part of an optimization we don't need.
1392         (WebCore::CircularSearchBuffer::isMatch): Instead of asserting that the buffer is full,
1393         changed this to return false if it's not full, which lets us fill up the buffer with
1394         the normal loop. Also return false if the start of the buffer is half-way through a
1395         case-folded character and updated this since m_cursor is now an integer.
1396         (WebCore::CircularSearchBuffer::length): This returns the length in non-case-folded
1397         characters of the characters that were appended, which may not be the same as the length
1398         of the original target string. To do that we have to total up the character start
1399         booleans for the current state of the circular buffer.
1400         (WebCore::findPlainText): Streamlined the logic in a few ways: 1) Moved more of the
1401         return value setup to the top of the function so it could be shared with the early
1402         error exit. 2) Removed the separate "fill the buffer" logic, which allowed me to
1403         remove some of the functions from CircularSearchBuffer and eliminated the need for
1404         two nested loops. 3) Replaced the CharacterIterator and bool that were used to record
1405         the location we found with integers matchStart and matchLength. 4) Got rid of the use
1406         of goto since we don't have two nested loops any more.
1407
1408 2007-05-14  Andrew Wellington  <proton@wiretapped.net>
1409
1410         Reviewed by Darin.
1411
1412         Fix http://bugs.webkit.org/show_bug.cgi?id=13275
1413         Safari crashed when trying to login using the windows live contact control
1414
1415         Check for cleared windowObj in JSAbstractEventListener::handleEvent
1416
1417         * bindings/js/kjs_events.cpp:
1418         (KJS::JSAbstractEventListener::handleEvent):
1419
1420 2007-05-13  Alexey Proskuryakov  <ap@webkit.org>
1421
1422         Reviewed by Darin.
1423
1424         http://bugs.webkit.org/show_bug.cgi?id=13690
1425         JavaScript Form Validation issue on Banco do Brasil site
1426
1427         Test: fast/forms/input-setvalue-selection.html
1428
1429         * html/HTMLInputElement.cpp:
1430         (WebCore::HTMLInputElement::setValue): In other browsers, changing textInput.value
1431         always moves the insertion point past the text. In 10.4.9 WebKit, this only worked
1432         for inactive controls, and it never worked in ToT.
1433
1434 2007-05-13  Brady Eidson  <beidson@apple.com>
1435
1436         Reviewed by Mitz
1437
1438         http://bugs.webkit.org/show_bug.cgi?id=13701
1439
1440         Since HTMLInputElements register themselves with their Document for special handling, if their document
1441         ever changes then bad things can happen.
1442
1443         Unfortunately, with adoptNode, the document can change.  This has been a long standing crasher with all 
1444         input fields but was given recent high visibility by r21430
1445
1446         The solution is to add functionality for a Node to react to its owner document changing via a pair of 
1447         virtual callbacks.  Then we can tap into those callbacks in HTMLInputElement.
1448
1449         No layout test possible until http://bugs.webkit.org/show_bug.cgi?id=13672 is resolved
1450
1451         * dom/Node.cpp:
1452         (WebCore::Node::setDocument): Call willMoveToNewOwnerDocument and didMoveToNewOwnerDocument
1453
1454         * dom/Node.h:
1455         (WebCore::Node::willMoveToNewOwnerDocument): Virtual callback to a node for before an owner document change
1456         (WebCore::Node::didMoveToNewOwnerDocument): Virtual callback to a node for after an owner document change
1457
1458         * html/HTMLInputElement.cpp:
1459         (WebCore::HTMLInputElement::~HTMLInputElement): Unconditionally unregister both for both form state
1460           and the cache restoration callback
1461         (WebCore::HTMLInputElement::setInputType): Change registration with the document only if we're in one
1462         (WebCore::HTMLInputElement::attach): Don't bother registering for the callback here - that will be
1463           handled by setInputType() or by a change in owner document
1464         (WebCore::HTMLInputElement::willMoveToNewOwnerDocument): Unregister with the old owner document
1465         (WebCore::HTMLInputElement::didMoveToNewOwnerDocument): Register with the new owner document
1466         * html/HTMLInputElement.h:
1467
1468 2007-05-13  Darin Adler  <darin@apple.com>
1469
1470         * platform/mac/TextBreakIteratorInternalICUMac.mm: Fix comment typo.
1471
1472 2007-05-13  Rob Buis  <buis@kde.org>
1473
1474         Reviewed by Darin.
1475
1476         http://bugs.webkit.org/show_bug.cgi?id=13529
1477         DOM3 keyIdentifier text is incorrect
1478
1479         Use 4 digits for the Unicode based key identifiers.
1480
1481         * html/HTMLButtonElement.cpp:
1482         (WebCore::HTMLButtonElement::defaultEventHandler):
1483         * html/HTMLInputElement.cpp:
1484         (WebCore::HTMLInputElement::defaultEventHandler):
1485         * html/HTMLSelectElement.cpp:
1486         (WebCore::HTMLSelectElement::menuListDefaultEventHandler):
1487         * page/EventHandler.cpp:
1488         (WebCore::EventHandler::defaultKeyboardEventHandler):
1489         * page/gdk/EventHandlerGdk.cpp:
1490         (WebCore::isKeyboardOptionTab):
1491         * page/mac/EventHandlerMac.mm:
1492         (WebCore::isKeyboardOptionTab):
1493         * page/qt/EventHandlerQt.cpp:
1494         (WebCore::isKeyboardOptionTab):
1495         * platform/gdk/KeyEventGdk.cpp:
1496         (WebCore::keyIdentifierForGdkKeyCode):
1497         * platform/mac/KeyEventMac.mm:
1498         (WebCore::keyIdentifierForKeyEvent):
1499         * platform/qt/PlatformKeyboardEventQt.cpp:
1500         (WebCore::keyIdentifierForQtKeyCode):
1501         * platform/win/KeyEventWin.cpp:
1502         (WebCore::keyIdentifierForWindowsKeyCode):
1503         * platform/wx/KeyEventWin.cpp:
1504         (WebCore::keyIdentifierForWindowsKeyCode):
1505         * platform/wx/KeyboardEventWx.cpp:
1506         (WebCore::keyIdentifierForWxKeyCode):
1507
1508 2007-05-12  Darin Adler  <darin@apple.com>
1509
1510         Reviewed by Antti.
1511
1512         - fix <rdar://problem/5174903> Safari crashes opening the attached webarchive (made by OmniWeb)
1513
1514         * loader/icon/IconLoader.cpp:
1515         (WebCore::IconLoader::didReceiveResponse): Check ResourceHandle for nil before calling url() on it.
1516         (WebCore::IconLoader::didFail): Ditto.
1517         (WebCore::IconLoader::didFinishLoading): Ditto.
1518
1519 2007-05-12  Rob Buis  <buis@kde.org>
1520
1521         Reviewed by Oliver.
1522
1523         Cleanup, get rid of the SVGStyledElement::view() call.
1524
1525         * ksvg2/svg/SVGClipPathElement.cpp:
1526         (WebCore::SVGClipPathElement::canvasResource):
1527         * ksvg2/svg/SVGFEFloodElement.cpp:
1528         (WebCore::SVGFEFloodElement::filterEffect):
1529         * ksvg2/svg/SVGGradientElement.cpp:
1530         (WebCore::SVGGradientElement::buildStops):
1531         * ksvg2/svg/SVGStyledElement.cpp:
1532         * ksvg2/svg/SVGStyledElement.h:
1533
1534 2007-05-12  Mitz Pettel  <mitz@webkit.org>
1535
1536         Reviewed by Hyatt.
1537
1538         - fix http://bugs.webkit.org/show_bug.cgi?id=13680
1539           Incomplete repaint of focus ring around continuation
1540
1541         Test: fast/repaint/continuation-after-outline.html
1542
1543         * rendering/RenderFlow.cpp:
1544         (WebCore::RenderFlow::absoluteClippedOverflowRect):
1545
1546 2007-05-12  Oliver Hunt  <oliver@apple.com>
1547
1548         Reviewed by Hyatt.
1549
1550         <rdar://problem/4728842> Can't drag-and-drop files onto <input type="file">
1551         
1552         This patch allows a file to be dropped on to a file input field.  There
1553         are a few changes for data handling and a  few to allow the data to be
1554         threaded to the appropriate places.
1555
1556         * page/DragController.cpp:
1557         (WebCore::asFileInput):
1558            When dropping a file onto a file input we may mouse over either 
1559            the element itself, or the contained button element.  This method
1560            returns the base element for the file input in either of these
1561            cases.
1562         (WebCore::DragController::tryDocumentDrag):
1563            Don't try to set the drag caret to a file input.
1564         (WebCore::DragController::concludeDrag):
1565            Handle dropping onto a file input element.
1566         (WebCore::DragController::canProcessDrag):
1567            We can now process a file being dragged onto a file input element.
1568            
1569         * platform/DragData.h:
1570            New accessors
1571            
1572         * platform/gdk/DragDataGdk.cpp:
1573         (WebCore::DragData::containsFiles):
1574         (WebCore::DragData::asFilenames):
1575            Link stubs.
1576            
1577         * platform/mac/DragDataMac.mm:
1578         (WebCore::DragData::containsFiles):
1579         (WebCore::DragData::asFilenames):
1580            Implement new accessors
1581         (WebCore::DragData::containsCompatibleContent):
1582            Update containsCompatibleContent to allow standalone files.
1583           
1584         * platform/qt/DragDataQt.cpp:
1585         (WebCore::DragData::containsFiles):
1586         (WebCore::DragData::asFilenames):
1587            Link stubs
1588                       
1589         * rendering/RenderFileUploadControl.cpp:
1590         (WebCore::RenderFileUploadControl::receiveDroppedFile):
1591         * rendering/RenderFileUploadControl.h:
1592            For security reasons we don't have an api to allow us to set 
1593            a value directly on a file input -- attempts to do so are
1594            blocked.  By adding a method to set the target through the 
1595            render we bypass such restrictions, and ensure the renderer
1596            is updated correctly.
1597
1598 2007-05-12  Mitz Pettel  <mitz@webkit.org>
1599
1600         Reviewed by Hyatt.
1601
1602         - fix http://bugs.webkit.org/show_bug.cgi?id=13695
1603           REGRESSION (r21387): Replaced elements' highlight rects are wrongly positioned
1604
1605         Test: fast/replaced/selection-rect.html
1606
1607         Also fixes the same problem with list markers, covered by existing test
1608         fast/lists/markers-in-selection.html.
1609
1610         * rendering/RenderListMarker.cpp:
1611         (WebCore::RenderListMarker::selectionRect):
1612         * rendering/RenderReplaced.cpp:
1613         (WebCore::RenderReplaced::selectionRect):
1614
1615 2007-05-12  Mitz Pettel  <mitz@webkit.org>
1616
1617         Reviewed by Darin.
1618
1619         - fix http://bugs.webkit.org/show_bug.cgi?id=13685
1620           REGRESSION (r21368-r21388): Highlighting text in scrolled textareas behaves oddly
1621
1622         Test: fast/repaint/text-selection-rect-in-overflow.html
1623
1624         * rendering/RenderText.cpp:
1625         (WebCore::RenderText::selectionRect):
1626
1627 2007-05-12  Brady Eidson  <beidson@apple.com>
1628
1629         Rubber stamped by Mitz
1630
1631         * html/HTMLInputElement.cpp:
1632         (WebCore::HTMLInputElement::attach): unregister->register - I screwed this one up in last minute renaming
1633           before committing  :(
1634
1635 2007-05-11  Brady Eidson  <beidson@apple.com>
1636
1637         Reviewed by Darin and Geoff
1638
1639         Fix for http://bugs.webkit.org/show_bug.cgi?id=13630
1640         and
1641         <rdar://problem/4873628>
1642
1643         Back/Forward cache should work with pages with login fields.
1644
1645         First change is to relocate the "useSecureKeyboardEntry" flag to the document.  This lets
1646         it persist through page cache transitions and it is truly a per-document concept more than
1647         per-frame anyways since its the document that has a password field, not the frame.
1648
1649         Second change is to introduce the concept of an Element getting a "didRestoreFromCache()" callback.
1650         The idea is for elements to register with the document if they need work to be done when the
1651         page comes out of the back/forward cache.  Currently the only client of this service is 
1652         HTMLInputElements that are input type == PASSWORD.  Such an element's implementation for this
1653         method is to call reset()
1654
1655         Finally, after a page is restored from the cache we have the document send the didRestoreFromCache()
1656         callback to its registered Elements.  The whole design is to clear the password fields after 
1657         restoring the page instead of when caching the page because we want to defer work for the common
1658         case - there shouldn't be extra work here just to navigate away from a page when the common case
1659         is that you'll never go back!
1660
1661         No layout tests possible until http://bugs.webkit.org/show_bug.cgi?id=13672 is resolved
1662
1663         * dom/Document.cpp:
1664         (WebCore::Document::Document):
1665         (WebCore::Document::registerForDidRestoreFromCacheCallback): Add an Element to the special page-restoration callback list
1666         (WebCore::Document::unregisterForDidRestoreFromCacheCallback): Remove such an element
1667         (WebCore::Document::didRestoreFromCache): Called by FrameLoader - dispatch to all the registered elements
1668         (WebCore::Document::setUseSecureKeyboardEntryWhenActive): Set the local flag and call updateSecureKeyboardEntryIfActive
1669           on the Frame
1670         (WebCore::Document::useSecureKeyboardEntryWhenActive): Return the flag
1671
1672         * dom/Document.h:
1673         (WebCore::Document::unregisterFormElementWithState): Renamed
1674
1675         * dom/Element.h:
1676         (WebCore::Element::didRestoreFromCache): Added virtual base method
1677
1678         * html/HTMLInputElement.cpp:
1679         (WebCore::HTMLInputElement::~HTMLInputElement): Deregister from the document if inputType == PASSWORD
1680         (WebCore::HTMLInputElement::dispatchFocusEvent): Set the flag on the document, not the frame
1681         (WebCore::HTMLInputElement::dispatchBlurEvent): Ditto
1682         (WebCore::HTMLInputElement::setInputType): If changing to/from PASSWORD, register/deregister in the document accordingly
1683         (WebCore::HTMLInputElement::attach): Call registerForDidRestoreFromCacheCallback(this) instead of passwordFieldAdded()
1684         (WebCore::HTMLInputElement::didRestoreFromCache): Call reset();
1685         * html/HTMLInputElement.h:
1686
1687         * html/HTMLSelectElement.cpp:
1688         (WebCore::HTMLSelectElement::~HTMLSelectElement): Renamed deregisterFormElementWithState to unregisterFormElementWithState
1689         * html/HTMLTextAreaElement.cpp:
1690         (WebCore::HTMLTextAreaElement::~HTMLTextAreaElement): Ditto
1691
1692         * loader/FrameLoader.cpp:
1693         (WebCore::FrameLoader::canCachePage): Remove the check for password fields - they're allowed now!
1694         (WebCore::FrameLoader::opened): Tell the document to dispatch to the registered elements
1695         (WebCore::FrameLoader::saveDocumentState): Remove the check for password fields.  Turns out that when we grab a copy a the
1696           form state we're only copying the state of form elements that are registered with the Document - and that set 
1697           explicitly excludes Password elements
1698
1699         * page/Frame.cpp:
1700         (WebCore::Frame::setDocument): If the frame is active, set the setUseSecureKeyboardEntry based on the setting contained
1701           in the new document
1702         (WebCore::Frame::updateSecureKeyboardEntryIfActive): Notification for the secure entry flag changing - if the Frame is
1703           active, then update to the new setting from the document
1704         (WebCore::Frame::setIsActive): Grab the useSecureKeyboardEntry flag from the document instead of FramePrivate
1705         (WebCore::FramePrivate::FramePrivate):
1706         * page/Frame.h:
1707         * page/FramePrivate.h:
1708
1709 2007-05-12  David Hyatt  <hyatt@apple.com>
1710
1711         FIx for 13696.  Rework residual style to be much more aggressive about reopening.  Added
1712         a comprehensive test case of HTML tags to guarantee we match Firefox.  We now have an exclusion
1713         set rather than an inclusion set, so unknown future tags will also participate in residual style.
1714
1715         Reviewed by olliej
1716
1717         fast/invalid/residual-style.html
1718
1719 2007-05-12  David Hyatt  <hyatt@apple.com>
1720
1721         Fix for bug 12740, bmw.com doesn't work.  We were missing a rule that is covered by the HTML5
1722         parsing spec.  A <table> encountered while inside stray table content should close up the
1723         table responsible for the stray content and start the new table as a sibling of the first.
1724
1725         Reviewed by mjs
1726
1727         fast/invalid/table-inside-stray-table-content.html
1728
1729 2007-05-12  Eric Seidel  <eric@webkit.org>
1730
1731         Reviewed by mjs.
1732
1733         Crash starting Safari with JavaScript disabled.
1734         http://bugs.webkit.org/show_bug.cgi?id=13691
1735         
1736         Test: none possible.
1737
1738         * page/mac/FrameMac.mm:
1739         (WebCore::Frame::cleanupPlatformScriptObjects): NULL check d->m_script
1740
1741 2007-05-11  David Hyatt  <hyatt@apple.com>
1742
1743         Fix for http://bugs.webkit.org/show_bug.cgi?id=13688, Colloquy is broken!
1744
1745         Make sure to adjust the baseline of a percentage height table cell's row if the
1746         cell flexes (and lowers the baseline).
1747
1748         Reviewed by olliej
1749
1750         fast/tables/vertical-align-baseline-readjust.html
1751
1752         (WebCore::RenderTableSection::calcRowHeight):
1753         (WebCore::RenderTableSection::layoutRows):
1754         * rendering/RenderTableSection.h:
1755         (WebCore::RenderTableSection::getBaseline):
1756         
1757 2007-05-11  David Hyatt  <hyatt@apple.com>
1758
1759         Make sure focus rings are always using the exterior style, regardless
1760         of what the OS default is.
1761
1762         Reviewed by beth
1763
1764         * rendering/RenderThemeMac.mm:
1765         (WebCore::RenderThemeMac::checkbox):
1766         (WebCore::RenderThemeMac::radio):
1767         (WebCore::RenderThemeMac::popupButton):
1768         (WebCore::RenderThemeMac::search):
1769         (WebCore::RenderThemeMac::sliderThumbHorizontal):
1770         (WebCore::RenderThemeMac::sliderThumbVertical):
1771
1772 2007-05-11  Oliver Hunt  <oliver@apple.com>
1773
1774         Reviewed by Hyatt.
1775         
1776         <rdar://problem/5195473> REGRESSION: "Curly quote" fails to 
1777         be displayed correctly even when META tag specifies charset=x-mac-roman
1778
1779
1780         * platform/TextCodecICU.cpp:
1781         (WebCore::TextCodecICU::registerExtendedEncodingNames):
1782         Register the xmacroman encoding
1783
1784 2007-05-11  Maciej Stachowiak  <mjs@apple.com>
1785
1786         Reviewed by Hyatt.
1787
1788         REGRESSION (r21367): Crash due to null document deref when closing bookmarks
1789         http://bugs.webkit.org/show_bug.cgi?id=13662
1790
1791         * loader/FrameLoader.cpp:
1792         (WebCore::FrameLoader::provisionalLoadStarted): Remove some useless and now harmful
1793         code - there's no need to clear in this case.
1794
1795 2007-05-11  Oliver Hunt  <oliver@apple.com>
1796
1797         GDK Build fix
1798
1799         * ChangeLog:
1800         * dom/Document.cpp:
1801         (WebCore::Document::importNode):
1802
1803 2007-05-11  Maciej Stachowiak  <mjs@apple.com>
1804
1805         Reviewed by Geoff.
1806         
1807         - fixed <rdar://problem/5197621> closing second window crashed webkit (13660)
1808         http://bugs.webkit.org/show_bug.cgi?id=13660
1809
1810         No test case; not testable.
1811
1812         * page/mac/FrameMac.mm:
1813         (WebCore::Frame::cleanupPlatformScriptObjects): Check if the interpreter is null;
1814         if so, we don't want to do work that may lazily create it while the Frame is being
1815         destroyed.
1816
1817 2007-05-11  Oliver Hunt  <oliver@apple.com>
1818
1819         Reviewed by Brady.
1820         
1821         <rdar://problem/5017375> WebKit should disable SVG in Dashboard
1822         
1823         Prevents an SVG document or element from being created when in
1824         dashboard compatibility mode.
1825         
1826         Manually parsing, or using XHR to created a document removes our 
1827         ability to detect Dashboard compatibility mode, so we also perform
1828         the check when importing nodes from one document into another.
1829
1830         * dom/DOMImplementation.cpp:
1831         (WebCore::DOMImplementation::createDocument):
1832           Don't create an SVGDocument if we're in dashboard compatibility mode
1833           
1834         * dom/Document.cpp:
1835         (WebCore::Document::importNode):
1836           Don't import SVG nodes if we're in dashboard compatibility mode
1837           
1838         * ksvg2/scripts/make_names.pl:
1839           Don't create SVG elements for documents that are in dashboard
1840           compatibility mode
1841
1842 2007-05-11  Holger Hans Peter Freyther  <zecke@selfish.org>
1843
1844         Reviewed by Maciej.
1845
1846         Bug 13676: [cairo/gdk] Provide implementation for ImageBufferCairo
1847         http://bugs.webkit.org/show_bug.cgi?id=13676
1848
1849         There are no test cases that explicitly cover platform/graphics at present.
1850
1851         * platform/graphics/ImageBuffer.h: Add cairo bits
1852         * platform/graphics/cairo/ImageBufferCairo.cpp: Untested implementation of the ImagerBuffer using the image_surface
1853         (WebCore::ImageBuffer::create): Create a reasonable sized surface
1854         (WebCore::ImageBuffer::ImageBuffer): Use a cairo_surface and create a GraphicsContext. GraphicsContext takes the cairo_t ownership
1855         (WebCore::ImageBuffer::~ImageBuffer): Unref the surface
1856         (WebCore::ImageBuffer::context): simply return the GraphicsContext, it should be possible to directly draw on it.
1857
1858 2007-05-11  Mitz Pettel  <mitz@webkit.org>
1859
1860         Release build fix.
1861
1862         * platform/mac/ShapeArabic.c:
1863         (shapeArabic):
1864
1865 2007-05-11  Geoffrey Garen  <ggaren@apple.com>
1866
1867         Reviewed by Darin Adler.
1868
1869         Removed +[WebScriptObject scriptObjectForJSObject:frame:] because the
1870         WebScriptObject API has some serious limitations that make it not ready
1871         to be used everywhere the C API is used. Hopefully we can add a good
1872         ObjC API in the future that doesn't suffer from this problem.
1873         
1874         Preliminary notes about these limitations are in <rdar://problem/4876466>.
1875
1876         * bindings/objc/WebScriptObject.mm:
1877         * bindings/objc/WebScriptObjectPendingPublic.h:
1878
1879 2007-05-11  Mitz Pettel  <mitz@webkit.org>
1880
1881         Reviewed by Darin.
1882
1883         - fix http://bugs.webkit.org/show_bug.cgi?id=13635
1884           REGRESSION: Cannot log in to webmail.co.za account
1885
1886         Test: fast/dom/HTMLOptionElement/option-text.html
1887
1888         Despite the specification that the 'text' attribute of HTMLOptionElement
1889         is "the text contained within the option element", other browsers return
1890         the text as displayed in the list box or popup, which is without leading,
1891         trailing and collapsible whitespace.
1892
1893         * html/HTMLOptionElement.cpp:
1894         (WebCore::HTMLOptionElement::text): Moved the code to trim and collapse
1895         whitespace and replace backslashes with the currency symbol into this
1896         function.
1897         (WebCore::HTMLOptionElement::optionText): Left only the code that adds
1898         the leading spaces for grouped options. Removed code that, in quirks mode,
1899         displayed the label if the option element contained no text. That behavior
1900         did not match WinIE and the description of the expected behavior in
1901         fast/forms/HTMLOptionElement_label06.html.
1902
1903 2007-05-11  Mitz Pettel  <mitz@webkit.org>
1904
1905         Reviewed by Darin.
1906
1907         - fix http://bugs.webkit.org/show_bug.cgi?id=13572
1908           Arabic characters are not correctly joined when using Arial
1909
1910         No tests added because standard fonts do not use the character-based shaping
1911         code path.
1912
1913         Added shapeArabic(), a private version of u_shapeArabic() from ICU,
1914         patched to shape Arabic characters used in Persian, Urdu, Sindhi, etc.
1915         (whose contextual forms belong to the Arabic Presentation Forms-A block).
1916
1917         * WebCore.xcodeproj/project.pbxproj: Added ShapeArabic.{c,h}.
1918         * platform/mac/FontMac.mm:
1919         (WebCore::shapeArabic): Changed to call shapeArabic() instead of u_shapeArabic().
1920         * platform/mac/ShapeArabic.c: Added. Based on ushape.c from ICU, with
1921         additional shaping data and logic for Arabic Presentation Forms-A. Removed
1922         many options that are not used in WebKit and code that malloc()ed a temporary
1923         buffer and reversed the string.
1924         (changeLamAlef):
1925         (specialChar):
1926         (getLink):
1927         (isTashkeelChar):
1928         (shapeUnicode):
1929         (shapeArabic):
1930         * platform/mac/ShapeArabic.h: Added.
1931
1932 2007-05-11  Darin Adler  <darin@apple.com>
1933
1934         Reviewed by Mitz.
1935
1936         - fix http://bugs.webkit.org/show_bug.cgi?id=7452
1937           <rdar://problem/3211749> line breaks ignored after <wbr> in <pre> block (affects livejournal.com)
1938
1939         - fix http://bugs.webkit.org/show_bug.cgi?id=10657
1940           <rdar://problem/4274588> <wbr> tags are ignored
1941
1942         - fix http://bugs.webkit.org/show_bug.cgi?id=12689
1943           <wbr> :before/:after content causes line break
1944
1945         - fix <rdar://problem/5127366> DOM tree isn't correct when parsing with <wbr>
1946
1947         Test: fast/text/wbr-pre.html
1948         Test: fast/text/wbr.html
1949         Test: fast/css-generated-content/wbr-with-before-content.html
1950         Test: fast/parser/parse-wbr.html
1951
1952         * html/HTMLElement.h:
1953         * html/HTMLElement.cpp:
1954         (WebCore::HTMLElement::endTagRequirement): Use the same end tag requirement for a <wbr>
1955         element as for a <br> element, TagStatusForbidden.
1956         (WebCore::HTMLElement::tagPriority): Use the same priority for a <wbr> element as for a
1957         <br> element, 0.
1958         (WebCore::HTMLElement::createRenderer): Added. Create a RenderWordBreak to trigger the
1959         new rendering code paths.
1960
1961         * rendering/RenderFlow.h: Add a virtual isWordBreak so we can detect RenderWordBreak.
1962
1963         * rendering/RenderWordBreak.h: Added.
1964         * rendering/RenderWordBreak.cpp: Added.
1965
1966         * WebCore.pro: Added new files.
1967         * WebCore.xcodeproj/project.pbxproj: Added new files.
1968         * WebCoreSources.bkl: Added new files.
1969
1970         * rendering/RenderBlock.cpp: (WebCore::RenderBlock::calcInlinePrefWidths): Reset the
1971         line when we hit a <wbr>.
1972         * rendering/bidi.cpp: (WebCore::RenderBlock::findNextLineBreak): Add a line break when
1973         we hit a <wbr>.
1974
1975         * dom/Node.cpp: (Node::createRendererIfNeeded): Fix a null check for the case where
1976         createRenderer returns 0 even though rendererIsNeeded returned true. I can't reproduce
1977         it on demand, but while running layout tests I hit this once. Since there was already
1978         a null check here, I rearranged it so it guards all the code that uses the renderer.
1979         Later we might want to figure out under exactly what circumstances rendererIsNeeded
1980         will return true but createRenderer return 0 and consider eliminating them.
1981
1982 2007-05-11  David Hyatt  <hyatt@apple.com>
1983
1984         Fix for bug 13675, focus rings don't repaint properly on editable
1985         continuations.
1986
1987         Reviewed by olliej
1988
1989         (WebCore::InlineFlowBox::paint):
1990         * rendering/RenderBlock.cpp:
1991         (WebCore::RenderBlock::paintObject):
1992         (WebCore::continuationOutlineTable):
1993         (WebCore::RenderBlock::addContinuationWithOutline):
1994         (WebCore::RenderBlock::paintContinuationOutlines):
1995         * rendering/RenderBlock.h:
1996         * rendering/RenderBox.cpp:
1997         (WebCore::RenderBox::absoluteClippedOverflowRect):
1998         * rendering/RenderObject.cpp:
1999         (WebCore::RenderObject::repaintAfterLayoutIfNeeded):
2000         (WebCore::RenderObject::absoluteOutlineBox):
2001
2002 2007-05-11  Rob Buis  <buis@kde.org>
2003
2004         Reviewed by Oliver.
2005
2006         Cleanups mostly inspired by Coverage results.
2007
2008         * ksvg2/css/SVGCSSParser.cpp:
2009         (WebCore::CSSParser::parseSVGValue):
2010         (WebCore::CSSParser::parseSVGStrokeDasharray):
2011         * ksvg2/css/SVGRenderStyleDefs.cpp:
2012         (StyleFillData::operator==):
2013         * ksvg2/svg/SVGColor.cpp:
2014         (WebCore::SVGColor::colorFromRGBColorString):
2015
2016 2007-05-11  Holger Freyther <freyther@kde.org>
2017
2018         Reviewed by Mark Rowe.
2019
2020         Move libcurl configuration into WebKit.pri so it will be used by GdkLauncher.
2021
2022         * WebCore.pro:
2023
2024 2007-05-10  David Hyatt  <hyatt@apple.com>
2025
2026         <rdar://problem/5015522> Bounds rectangle of unloaded images is 
2027         drawn briefly while loading
2028         
2029         When the image is null and has no size, don't draw the grey
2030         rectangles or alt text any more.  Wait for an actual error to
2031         occur with the image before we start showing alt text and borders.
2032
2033         (Images with no source set at all will continue to show alt text and
2034         borders immediately.)
2035
2036         Reviewed by bradee-oh
2037
2038         * rendering/RenderImage.cpp:
2039         (WebCore::RenderImage::paint):
2040
2041 2007-05-10  Mitz Pettel  <mitz@webkit.org>
2042
2043         Reviewed by Darin.
2044
2045         - fix http://bugs.webkit.org/show_bug.cgi?id=13655
2046           Incomplete repaint when text-shadow is used in a render layer with explicit height
2047
2048         Test: fast/repaint/layer-full-repaint.html
2049
2050         Removed custom repaint logic from RenderLayer. repaintAfterLayoutIfNeeded()
2051         knows how to do everything we need now. The only catch is that we cannot
2052         rely on its "do a full repaint if the object needs layout" behavior, since
2053         by the time we call it, the needs layout flag has been reset. The solution
2054         is to cache the need for a full repaint in the layer.
2055
2056         * page/FrameView.cpp:
2057         (WebCore::FrameView::layout): Removed call to checkForRepaintOnResize().
2058         * rendering/RenderLayer.cpp:
2059         (WebCore::RenderLayer::checkForRepaintOnResize): Removed.
2060         (WebCore::RenderLayer::RenderLayer): Replaced the m_repaintOverflowOnResize
2061         flag with a m_needsFullRepaint flag, which indicates that the layer needs
2062         to do a full repaint in the next call to updateLayerPositions().
2063         (WebCore::RenderLayer::updateLayerPositions): Simplified the repaint logic.
2064         Either call repaintAfterLayoutIfNeeded() or do a full repaint, depending on
2065         m_needsFullRepaint.
2066         * rendering/RenderLayer.h:
2067         (WebCore::RenderLayer::setNeedsFullRepaint):
2068         * rendering/RenderObject.cpp:
2069         (WebCore::RenderObject::setNeedsLayout): Mark the layer for full repaint.
2070
2071 2007-05-10  Justin Garcia  <justin.garcia@apple.com>
2072
2073         Reviewed by ggaren
2074
2075         <rdar://problem/5195166> Incorrect proposedRange DOMRange passed to WebViewEditing delegate
2076         
2077         In setModifyBias, we must cache the start and the end 
2078         because the calls to setBase and setExtent can modify 
2079         them (added a testcase).
2080         The temporary SelectionController that we use in modify() to
2081         produce the proposed range that will be passed to 
2082         shouldChangeSelectedDOMRange must have the same m_modifyBias
2083         as the original SelectionController, or else when the 
2084         modification is performed, setModifyBias can swap the base 
2085         and the extent incorrectly (added a testcase).
2086         Renamed m_modifyBias to m_lastChangeWasHorizontalExtension.
2087         Renamed setModifyBias to willBeModified.
2088
2089         * editing/SelectionController.cpp:
2090         (WebCore::SelectionController::SelectionController):
2091         (WebCore::SelectionController::setSelection):
2092         (WebCore::SelectionController::willBeModified):
2093         (WebCore::SelectionController::modify):
2094         * editing/SelectionController.h:
2095         (WebCore::SelectionController::setLastChangeWasHorizontalExtension):
2096         * page/EventHandler.cpp:
2097         (WebCore::EventHandler::handleMousePressEventSingleClick):
2098         (WebCore::EventHandler::updateSelectionForMouseDragOverPosition):
2099
2100 2007-05-10  Geoffrey Garen  <ggaren@apple.com>
2101
2102         Reviewed by Darin Adler.
2103
2104         "IconDatabase::sharedIconDatabase()" => "iconDatabase()" for terseness,
2105         in the style of WebCore::cache().
2106
2107         * WebCore.exp:
2108         * history/HistoryItem.cpp: Removed retainIconInDatabase because calling
2109         "retain" in order to release something is really confusing and, now that
2110         iconDatabase() is more terse, we don't need this helper to shorten the
2111         syntax. (The isEmpty() check is also done by the database, so we don't 
2112         need it either.)
2113
2114         (WebCore::IconDatabase::~IconDatabase): ASSERT that our destructor isn't
2115         called. We're a singleton, so it's confusing to have tear-down code.
2116
2117 2007-05-10  Adele Peterson  <adele@apple.com>
2118
2119         Reviewed by Hyatt.
2120
2121         WebCore part of fix for <rdar://problem/4100616> Doing a "find" in RSS doesn't scroll to result
2122
2123         Test: fast/overflow/scroll-nested-positioned-layer-in-overflow.html
2124
2125         Merged visibleSelectionRect into selectionRect.  selectionRect() now takes an argument to determine
2126         whether or not to return a rect that clips to the visible content.  This change makes all of the implementations of selectionRect
2127         consistent by having them all consider the repaint rect when clipping to visible content.
2128
2129         * page/Frame.cpp:
2130         (WebCore::Frame::revealSelection): Call selectionRect with clipToVisibleContent = false, so we can get a rect that's not visible to reveal.
2131         (WebCore::Frame::selectionRect): Added clipToVisibleContent argument, and merged visibleSelectionRect into this method.
2132         (WebCore::Frame::setIsActive): Use selectionRect instead of visibleSelectionRect.
2133         * page/Frame.h:
2134         * page/mac/FrameMac.mm: (WebCore::Frame::selectionImage): Update layout before creating the image.  Use selectionRect instead of visibleSelectionRect.
2135         * page/DragController.cpp: (WebCore::dragLocForSelectionDrag): Use selectionRect instead of visibleSelectionRect.
2136
2137         * rendering/RenderBR.h: (WebCore::RenderBR::selectionRect): Updated argument.
2138         * rendering/RenderBlock.h: (WebCore::RenderBlock::selectionRect): ditto.
2139         * rendering/RenderSVGInlineText.cpp: (WebCore::RenderSVGInlineText::selectionRect): ditto.
2140         * rendering/RenderSVGInlineText.h: ditto.
2141         * rendering/RenderObject.h: 
2142         (WebCore::RenderObject::selectionRect): ditto.
2143         (WebCore::RenderObject::SelectionInfo::SelectionInfo): ditto.
2144         * rendering/RenderView.cpp:
2145         (WebCore::RenderView::selectionRect): ditto.
2146         (WebCore::RenderView::setSelection): ditto.
2147         * rendering/RenderView.h:
2148
2149         * rendering/RenderText.h:
2150         * rendering/RenderText.cpp: (WebCore::RenderText::selectionRect): Only call computeAbsoluteRepaintRect when clipping to visible content.
2151         Otherwise, just adjust the rect to the correct position.
2152         * rendering/RenderListMarker.h:
2153         * rendering/RenderListMarker.cpp: (WebCore::RenderListMarker::selectionRect):
2154           To match what we do in RenderText, if we're trying to clip to visible content, just call computeAbsoluteRepaintRect.
2155         * rendering/RenderReplaced.h:
2156         * rendering/RenderReplaced.cpp: (WebCore::RenderReplaced::selectionRect): ditto.
2157
2158         * rendering/RenderLayer.cpp: (WebCore::RenderLayer::scrollRectToVisible): Check for a parent layer at the beginning, so we can try to scroll all of our parent layers 
2159           first, before trying to scroll the top level view.  Also, don't try to scroll overflow layers that have -webkit-line-clamp restricting the height.
2160           This will prevent us from revealing text hidden by the slider in Safari RSS.
2161
2162         * WebCore.exp: Update symbols for WebKit.
2163
2164 2007-05-10  David Hyatt  <hyatt@apple.com>
2165
2166         Fix for:
2167
2168         <rdar://problem/5195272> REGRESSION: broke outline rings for continuations 
2169         with empty inline containers
2170         
2171         http://bugs.webkit.org/show_bug.cgi?id=13667
2172
2173         Make sure to only include collapsed top/bottom margins of the block portion
2174         of the continuation if we know for sure that we have inline line boxes before
2175         and after that would prevent the collapse from going further.
2176
2177         In plain English: the focus rings were too tall. :)
2178
2179         Reviewed by beth
2180
2181         * rendering/RenderFlow.cpp:
2182         (WebCore::RenderFlow::addFocusRingRects):
2183
2184 2007-05-10  David Hyatt  <hyatt@apple.com>
2185
2186         Fix for:
2187
2188         <rdar://problem/5067235> REGRESSION: Excessively wide table, impossible to resize
2189
2190         The table used white-space: pre-wrap, which is supported only by WebKit.  There
2191         was a bug with the computation of min pref width for pre-wrap text.
2192
2193         Reviewed by mitzpettel
2194
2195         fast/text/white-space/pre-wrap-line-test.html
2196
2197         * rendering/RenderText.cpp:
2198         (WebCore::RenderText::calcPrefWidths):
2199
2200 2007-05-10  Brady Eidson  <beidson@apple.com>
2201
2202         Reviewed by Oliver
2203
2204         Cleanup from my earlier Java Applet patch.  We should keep a central location to query if 
2205         a mime type counts as a Java Applet
2206
2207         * html/HTMLObjectElement.cpp:
2208         (WebCore::HTMLObjectElement::containsJavaApplet): Query MimeTypeRegistry on the type
2209
2210         * platform/MimeTypeRegistry.cpp:
2211         (WebCore::MimeTypeRegistry::isSupportedImageMIMEType): Update style
2212         (WebCore::MimeTypeRegistry::isSupportedImageResourceMIMEType): Ditto
2213         (WebCore::MimeTypeRegistry::isSupportedNonImageMIMEType): Ditto
2214         (WebCore::MimeTypeRegistry::isJavaAppletMIMEType): Perform the Java Applet check
2215         * platform/MimeTypeRegistry.h:
2216
2217         * rendering/RenderPartObject.cpp:
2218         (WebCore::RenderPartObject::updateWidget): Query MimeTypeRegistry on the type
2219
2220 2007-05-10  Patti Hoa  <patti@apple.com>
2221
2222         Reviewed by Darin.
2223         
2224         <rdar://problem/4720109> Sentence textMarker methods do not work well with empty lines
2225         
2226         * bridge/mac/WebCoreAXObject.mm:
2227         (-[WebCoreAXObject doAXNextSentenceEndTextMarkerForTextMarker:]):
2228         (-[WebCoreAXObject doAXPreviousSentenceStartTextMarkerForTextMarker:]):
2229         When a marker position is given, the sentence ax methods automatically shift position by one to make sure
2230         not to ask for the current sentence again.  This is generally fine except when the position
2231         shift over an empty line break, which is should be considered a separate sentence. In this case, 
2232         if we used the shifted position to ask for sentence boundary, ICU parser is not given the text data
2233         containing the newline to correctly determine the sentence boundary.  Since the ax sentence method is 
2234         explicitly shifting the position to ask for sentence boundary, it should make sure not to skip over important
2235         character that can be a standalone sentence.
2236         * editing/visible_units.cpp:
2237         (WebCore::nextBoundary):
2238         When determining boundary, don't stop on a collapsed range, such as newline.  
2239         Just pick the next valid position to use as boundary.
2240
2241 2007-05-10  Maciej Stachowiak  <mjs@apple.com>
2242
2243         Reviewed by Oliver.
2244
2245         - WebCore part of fix for:
2246         <rdar://problem/5063277> blank screen after login to Citibank Online (accessing document before frame starts loading cancels load)
2247         <rdar://problem/5159541> REGRESSION (r20972): Wall Street Journal pages replaced by advertisements (13465)
2248
2249         The basic approach is to have Frames start out containing an empty document instead of absolutely nothing,
2250         so there is no need to initialize them on demand. Various side effects of that cause both of these bugs.
2251         
2252         However, this caused many regressions so I had to fix the fallout.
2253         
2254         * WebCore.exp: fix symbol exports
2255         * bindings/js/kjs_window.cpp:
2256         (KJS::createNewWindow): useless "created" bool (we don't need it here)
2257         (KJS::WindowFunc::callAsFunction): detect if we created a new frame, because if so,
2258         we need to initialize the domain (can't count on it not having a document), also
2259         don't try to make a new document for it.
2260         Also, stop properly.
2261         * css/cssstyleselector.cpp:
2262         (WebCore::CSSStyleSelector::CSSStyleSelector): don't count on document having a view here
2263         * html/HTMLObjectElement.cpp:
2264         (WebCore::HTMLObjectElement::isImageType): Ask client, to match how other <object> renderer
2265         decisions are made.
2266         * loader/FrameLoader.cpp:
2267         (WebCore::FrameLoader::FrameLoader): Initialize new data members
2268         (WebCore::FrameLoader::init): Do the slightly tricky sequence of steps to properly make
2269         an empty document with everything hooked up.
2270         (WebCore::FrameLoader::createWindow): Added "created" bool.
2271         (WebCore::FrameLoader::stopLoading): (whitespace change)
2272         (WebCore::FrameLoader::begin): Don't try to create an empty document.
2273         (WebCore::FrameLoader::finishedParsing): If creating an initial empty document, don't
2274         do any of this work.
2275         (WebCore::FrameLoader::checkCompleted): Do checkLoadComplete() as well.
2276         (WebCore::FrameLoader::baseURL): don't check for null document
2277         (WebCore::FrameLoader::baseTarget): ditto
2278         (WebCore::FrameLoader::completeURL): ditto
2279         (WebCore::FrameLoader::didTellBridgeAboutLoad): ditto
2280         (WebCore::FrameLoader::scheduleLocationChange): determine duringLoad differently; doc won't
2281         be null.
2282         (WebCore::FrameLoader::gotoAnchor): don't check for null document
2283         (WebCore::FrameLoader::canTarget): don't check for null document
2284         (WebCore::FrameLoader::stopForUserCancel): new method for explicit stops like window.stop().
2285         (WebCore::FrameLoader::transitionToCommitted): check for pre-loaded state properly
2286         (WebCore::FrameLoader::createEmptyDocument): removed
2287         (WebCore::FrameLoader::checkLoadCompleteForThisFrame): don't send delegate callbacks when making initial
2288         doc.
2289         (WebCore::FrameLoader::tokenizerProcessedData): Assume document; just checkCompleted now that it
2290         does checkLoadComplete.
2291         (WebCore::FrameLoader::receivedMainResourceError): assume document
2292         (WebCore::FrameLoader::saveDocumentState): Assume there's a document except during initial load
2293         (WebCore::FrameLoader::mainReceivedCompleteError): do checkCompleted, not checkLoadComplete
2294         (WebCore::FrameLoader::continueLoadWithData): assume document
2295         * loader/FrameLoader.h:
2296         * loader/MainResourceLoader.cpp:
2297         (WebCore::MainResourceLoader::receivedError): Add more ref protection and do things in a slightly
2298         different order.
2299         * page/DOMWindow.cpp:
2300         (WebCore::DOMWindow::document): don't force document creation, just assert there is one.
2301         * page/Frame.cpp:
2302         (WebCore::Frame::init): Added init method.
2303         (WebCore::Frame::pageDestroyed): when a frame is removed, make sure to check if the parent is
2304         done loading.
2305         * page/Frame.h:
2306         * page/mac/WebCoreFrameBridge.mm:
2307         (-[WebCoreFrameBridge stringByEvaluatingJavaScriptFromString:forceUserGesture:]): No need to force
2308         document.
2309         (-[WebCoreFrameBridge aeDescByEvaluatingJavaScriptFromString:]): ditto
2310         * platform/graphics/svg/SVGImage.cpp:
2311         (WebCore::SVGImage::dataChanged): init the frame
2312         * rendering/RenderPart.cpp:
2313         (WebCore::RenderPart::updateWidgetPosition): If a subframe needs layout, then lay it out even
2314         if the bounds did not change; the content size might be wrong.
2315         * rendering/RenderTreeAsText.cpp:
2316         (WebCore::externalRepresentation): Don't crash if the frame lacks a view.
2317
2318 2007-05-10  David Hyatt  <hyatt@apple.com>
2319
2320         Fix for:
2321
2322         <rdar://problem/5146757> REGRESSION: div that wrapped to screen width in 
2323         tiger no longer wraps
2324         
2325         http://bugs.webkit.org/show_bug.cgi?id=13654
2326
2327         Reviewed by mitz
2328
2329         fast/text/whitespace/normal-after-nowrap-breaking.html
2330
2331         * rendering/RenderBlock.cpp:
2332         (WebCore::RenderBlock::calcInlinePrefWidths):
2333
2334 2007-05-10  David Hyatt  <hyatt@apple.com>
2335
2336         Fix for:
2337
2338         <rdar://problem/4778099> Links with nested continuations fail to 
2339         paint their outlines (11255)
2340         
2341         http://bugs.webkit.org/show_bug.cgi?id=11255
2342
2343         Fix multiple bugs with outline painting of continuations to ensure that
2344         all combos work (empty/full inline - block with/without margins - 
2345         empty/full inline).
2346
2347         Reviewed by mitz
2348
2349         fast/inline/continuation-outlines.html
2350
2351         * rendering/RenderBlock.cpp:
2352         (WebCore::RenderBlock::paintObject):
2353         * rendering/RenderFlow.cpp:
2354         (WebCore::RenderFlow::addFocusRingRects):
2355
2356 2007-05-10  David Hyatt  <hyatt@apple.com>
2357
2358         Fix for:
2359
2360         <rdar://problem/5193529> REGRESSION: RTL Overflows scrollbar not showing 
2361         when they should be
2362         
2363         Fallout from fix for bug 11926.  Make sure to restrict the fix to the
2364         RenderView for now, since the full-blown overflow case is pretty involved.
2365
2366         Reviewed by mitzpettel
2367
2368         fast/overflow/unreachable-content-bug-rtl.html
2369
2370         * rendering/RenderBlock.cpp:
2371         (WebCore::RenderBlock::lowestPosition):
2372         (WebCore::RenderBlock::rightmostPosition):
2373         (WebCore::RenderBlock::leftmostPosition):
2374
2375 2007-05-10  Brady Eidson <beidson@apple.com>
2376
2377         Reviewed by Oliver
2378
2379         Fix for http://bugs.webkit.org/show_bug.cgi?id=13636 and <rdar://problem/5190816>
2380
2381         When creating the applets collection, be sure to only count Objects if they contain
2382         a java applet
2383
2384         * html/HTMLCollection.cpp:
2385         (WebCore::HTMLCollection::traverseNextItem): Add the qualifier for Objects that 
2386           containsJavaApplet() must be true
2387
2388         * html/HTMLObjectElement.cpp:
2389         (WebCore::HTMLObjectElement::containsJavaApplet): Check this Object element and inner
2390           nodes for any Java applets
2391         * html/HTMLObjectElement.h: 
2392
2393 2007-05-10  David Hyatt  <hyatt@apple.com>
2394
2395         Fix for:
2396
2397         <rdar://problem/4694859> SAP: HTML tags with overflow:hidden consume
2398         space on page, do not consume space in Firefox (11926)
2399
2400         http://bugs.webkit.org/show_bug.cgi?id=11926
2401
2402         Make sure that unreachable objects along one axis (e.g., top/left) do not
2403         contribute to the scrollable area in the opposite axis (e.g., right/bottom).
2404
2405         Reviewed by olliej
2406
2407         fast/overflow/unreachable-content-test.html
2408
2409         * rendering/RenderBlock.cpp:
2410         (WebCore::RenderBlock::lowestPosition):
2411         (WebCore::RenderBlock::rightmostPosition):
2412         (WebCore::RenderBlock::leftmostPosition):
2413
2414 2007-05-10  David Hyatt  <hyatt@apple.com>
2415
2416         Fix for:
2417
2418         <rdar://problem/4656825> REGRESSION: Japanese TV time table widget:
2419         part of the number in background has been cut off.
2420
2421         Now that opacity uses a tight bounding box to clip, we need to make sure
2422         to factor spillout caused by negative letter spacing into our right
2423         overflow.  Latch on to the code that does this already for text-stroke
2424         and text-shadow.
2425
2426         Reviewed by olliej
2427
2428         fast/text/letter-spacing-negative-opacity.html
2429
2430        * rendering/InlineFlowBox.cpp:
2431         (WebCore::InlineFlowBox::placeBoxesHorizontally):
2432
2433 2007-05-10  Geoffrey Garen  <ggaren@apple.com>
2434
2435         Reviewed by Maciej Stachowiak.
2436         
2437         More fix-ups to the WebScriptObject/WebScripting APIs, related to
2438         <rdar://problem/5140447> API for fetching JSGlobalContextRef from WebView 
2439         or WebFrame
2440
2441         * bindings/objc/WebScriptObject.h: Fully specified the surprising rules for
2442         type conversion between JavaScript and ObjC.
2443         * bindings/objc/WebScriptObject.mm: Added up-call accessor to WebFrame.
2444         This is kind of stinky, but I'm OK with it because eventually all of this
2445         code should move up into WebKit.
2446         (+[WebScriptObject scriptObjectForJSObject:frame:]):
2447         (-[WebScriptObject valueForKey:]):
2448         (-[WebScriptObject JSObject]): 
2449             - Added _rootObject check because if _rootObject returns NULL it means 
2450             that _imp is no longer GC protected, so it's not safe to use. 
2451             - Added _isSafeScript check because that's what WebScriptObject methods
2452             typically do, even though the value of doing so isn't clear to me.
2453         * bindings/objc/WebScriptObjectPendingPublic.h: Added WebFrame* parameter
2454         to -scriptObjectForJSObject:. This is required to wrap JS objects that
2455         are not already in the wrapper cache. It would be nice to remove this
2456         limitation of WebScriptObject some day.
2457         * page/mac/FrameMac.mm:
2458         (WebCore::Frame::cleanupPlatformScriptObjects): Force removal of m_windowScriptObject
2459         from the cache, to avoid retrieving the m_windowScriptObject from the previous
2460         page on a new page load. (It would be non-functional in that case.)
2461
2462 2007-05-10  David Hyatt  <hyatt@apple.com>
2463
2464         Fix for <rdar://problem/5183697>.
2465
2466         http://bugs.webkit.org/show_bug.cgi?id=13576
2467
2468         Make sure verticalPositionHint is not called on an inline-block from
2469         content inside the inline-block (like text).
2470
2471         Reviewed by olliej
2472
2473         fast/inline-block/inline-block-vertical-align.html
2474
2475         * rendering/RenderObject.cpp:
2476         (WebCore::RenderObject::verticalPositionHint):
2477         * rendering/RenderText.cpp:
2478         (WebCore::RenderText::verticalPositionHint):
2479         * rendering/RenderThemeMac.mm:
2480         (WebCore::RenderThemeMac::setFontFromControlSize):
2481
2482 2007-05-09  Holger Freyther <zecke@selfish.org>
2483
2484         Reviewed by Mark Rowe.
2485
2486         Gdk build fix with SVG enabled.  Stub out ImageBufferCairo.
2487
2488         * WebCore.pro: Build ImageBufferCairo.cpp
2489         * platform/graphics/cairo/ImageBufferCairo.cpp: Added.
2490         (WebCore::ImageBuffer::create):
2491         (WebCore::ImageBuffer::~ImageBuffer):
2492         (WebCore::ImageBuffer::context):
2493
2494 2007-05-08  Justin Garcia  <justin.garcia@apple.com>
2495
2496         Reviewed by darin
2497         
2498         <rdar://problem/5017613> Style changes don't effect fully selected ToDo content
2499
2500         * editing/ApplyStyleCommand.cpp:
2501         (WebCore::ApplyStyleCommand::applyInlineStyle):
2502         Use a for loop instead of while(1).
2503         Simplify loop termination using Range::pastEndNode.
2504         Don't handle the start.node() == end.node() case 
2505         specially, it's unnecessary.
2506         Apply the style change to fully selected plaintext-only
2507         regions, not with wrapper spans inside the region, but 
2508         by changing the element's inline style declaration.
2509         Don't descend into nodes whose children we should ignore.
2510
2511 2007-05-09  Adele Peterson  <adele@apple.com>
2512
2513         Reviewed by Hyatt.
2514
2515         Fix for <rdar://problem/5113578> REGRESSION: textfields that set the height but not the font 
2516         look different from IE & FF because the font is small
2517
2518         For plain text fields, don't stretch the inner text box.  Center it vertically in the field.
2519
2520         * rendering/RenderTextControl.cpp: (WebCore::RenderTextControl::layout):
2521
2522 2007-05-09  Atul Mehrotra  <atul.mehrotra@celunite.com>
2523
2524         Gdk build fix.
2525
2526         * platform/gdk/TemporaryLinkStubs.cpp:
2527         (Editor::newGeneralClipboard):
2528
2529 2007-05-09  Mitz Pettel  <mitz@webkit.org>
2530
2531         Reviewed by Dave Hyatt.
2532
2533         - fix http://bugs.webkit.org/show_bug.cgi?id=13037
2534           REGRESSION: Copy-on-scroll not reset properly after back/forward navigation
2535
2536         * page/FrameView.cpp:
2537         (WebCore::FrameViewPrivate::FrameViewPrivate): Moved initialization of
2538         m_slowRepaintObjectCount here.
2539         (WebCore::FrameViewPrivate::reset): Do not reset the slow repaint object
2540         count here.
2541         (WebCore::FrameView::useSlowRepaints):
2542         (WebCore::FrameView::addSlowRepaintObject):
2543         (WebCore::FrameView::removeSlowRepaintObject): Added an assertion that the
2544         object count is positive.
2545         * rendering/RenderObject.cpp:
2546         (WebCore::RenderObject::setStyle): Corrected a mix up between old and new
2547         style, which caused the object count to be decremented when it was supposed
2548         to be incremented and vice versa.
2549
2550 2007-05-09  Peter Müller <pm@one.com>
2551
2552         Reviewed by Dave Hyatt.
2553
2554         Changed the hardcoded colors that are used for CSS 2.1 system colors.
2555         Previous colors had numerous conflicts in semantic pairs, which
2556         made text invisible in highlight, info and menu colored areas.
2557         The new hardcoded colors are inspired by Aqua.
2558
2559         Ideally these colors should be fetched through AppKit instead,
2560         though I am not sure if it is possible to make a 1:1 mapping
2561         between CSS2.1 system colors and Mac OS X.
2562
2563         * css/cssstyleselector.cpp:
2564         (WebCore::):
2565
2566 2007-05-09  Lars Knoll <lars@trolltech.com>
2567
2568         Fix the Qt build.
2569
2570         * editing/qt/EditorQt.cpp:
2571
2572 2007-05-08  Geoffrey Garen  <ggaren@apple.com>
2573
2574         Reviewed by Darin Adler.
2575         
2576         More fix-ups to the WebScriptObject/WebScripting APIs, related to
2577         <rdar://problem/5140447> API for fetching JSGlobalContextRef from WebView 
2578         or WebFrame
2579         
2580         1. Added -scriptObjectForJSObject: SPI so you can bridge back from JavaScriptCore
2581         to WebScriptObject.
2582         
2583         2. Fixed WebScriptObject bridging so that you always get the same WebScriptObject
2584         for a JSObject (like in the DOM). This makes -scriptObjectForJSObject: a
2585         lot more coherent as an API.
2586
2587         * bindings/objc/DOMInternal.mm: Renamed wrapperCache to DOMWrapperCache
2588         to distinguish from the JSWrapperCache. Added typedef for readability.
2589         (WebCore::getDOMWrapper):
2590         (WebCore::addDOMWrapper):
2591         (WebCore::removeDOMWrapper):
2592         * bindings/objc/WebScriptObject.mm: Added JSWrapperCache, which works just
2593         like the DOMWrapperCache.
2594         (WebCore::getJSWrapper):
2595         (WebCore::addJSWrapper):
2596         (WebCore::removeJSWrapper):
2597         (WebCore::createJSWrapper):
2598         (+[WebScriptObject scriptObjectForJSObject:]): This is the new API. It attempts
2599         to return a specific DOM wrapper object, or, barring that, it returns a 
2600         generic WebScriptObject.
2601         (+[WebScriptObject scriptObjectForJSObject:originRootObject:rootObject:]):
2602         Added this method to support our old WebScriptObject security and leak 
2603         checking model, even though it doesn't work very well. 
2604         (-[WebScriptObject _setImp:originRootObject:rootObject:]):
2605         (-[WebScriptObject dealloc]):
2606         (-[WebScriptObject finalize]):
2607         (+[WebScriptObject _convertValueToObjcValue:originRootObject:rootObject:]):
2608         * bindings/objc/WebScriptObjectPendingPublic.h:
2609         * bindings/objc/WebScriptObjectPrivate.h:
2610         * page/mac/FrameMac.mm:
2611         (WebCore::Frame::windowScriptObject): Changed to use the new API. This
2612         fixes a bug where the object sent to -windowScriptObjectAvailable: and returned
2613         from -windowScriptObject could not be round-tripped.
2614
2615 2007-05-09  Mark Rowe  <mrowe@apple.com>
2616
2617         Build fix.
2618
2619         * editing/Editor.cpp:
2620         (WebCore::findFirstGrammarDetailInRange): Use unsigned rather than int.
2621         (WebCore::findFirstBadGrammarInRange): Cast to unsigned in assertion.
2622         (WebCore::isRangeUngrammatical): Remove unused variables.
2623
2624 2007-05-08  Oliver Hunt  <oliver@apple.com>
2625
2626         Reviewed by Darin.
2627         
2628         Fix <rdar://problem/5188938> arc method on Canvas causes hang or crash
2629         
2630         Workaround bad behaviour of CGPathAddArc when passed inf as start or
2631         end angles.
2632
2633         * platform/graphics/cg/PathCG.cpp:
2634         (WebCore::Path::addArc):
2635
2636 2007-05-08  Darin Adler  <darin@apple.com>
2637
2638         Reviewed by Hyatt and Hatcher.
2639
2640         - fix auto-activation code path so Tiger and Leopard aren't different
2641
2642         * platform/mac/WebFontCache.mm: (+[WebFontCache fontWithFamily:traits:size:]):
2643         Do the auto-activation dance first before doing anything else, and ignore the
2644         font that it returns.
2645
2646 2007-05-08  Steve Falkenburg  <sfalken@apple.com>
2647
2648         Reviewed by Darin.
2649
2650         Moved most spelling/grammar logic to C++.  Now calls through to
2651         WebKit to actually invoke NSSpellChecker.
2652
2653         * editing/Editor.cpp:
2654         (WebCore::Editor::ignoreSpelling): Added (ported from EditorMac).
2655         (WebCore::Editor::learnSpelling): Added (ported from EditorMac).
2656         (WebCore::findFirstMisspellingInRange): Added (ported from EditorMac).
2657         (WebCore::paragraphAlignedRangeForRange): Added (ported from EditorMac).
2658         (WebCore::findFirstGrammarDetailInRange): Added (ported from EditorMac).
2659         (WebCore::findFirstBadGrammarInRange): Added (ported from EditorMac).
2660         (WebCore::Editor::advanceToNextMisspelling): Added (ported from EditorMac).
2661         (WebCore::Editor::isSelectionMisspelled): Added (ported from EditorMac).
2662         (WebCore::isRangeUngrammatical): Added (ported from EditorMac).
2663         (WebCore::Editor::isSelectionUngrammatical): Added (ported from EditorMac).
2664         (WebCore::Editor::guessesForUngrammaticalSelection): Added (ported from EditorMac).
2665         (WebCore::Editor::guessesForMisspelledSelection): Added (ported from EditorMac).
2666         (WebCore::Editor::showSpellingGuessPanel): Added (ported from EditorMac).
2667         (WebCore::Editor::spellingPanelIsShowing): Added (ported from EditorMac).
2668         (WebCore::Editor::markMisspellingsAfterTypingToPosition): Added (ported from EditorMac).
2669         (WebCore::markAllMisspellingsInRange): Added (ported from EditorMac).
2670         (WebCore::markAllBadGrammarInRange): Added (ported from EditorMac).
2671         (WebCore::markMisspellingsOrBadGrammar): Added (ported from EditorMac).
2672         (WebCore::Editor::markMisspellings): Added (ported from EditorMac).
2673         (WebCore::Editor::markBadGrammar): Added (ported from EditorMac).
2674         * editing/mac/EditorMac.mm: Removed Objective C version of spelling/grammar calls.
2675
2676 2007-05-08  Steve Falkenburg  <sfalken@apple.com>
2677
2678         Reviewed by Ada.
2679
2680         Slight modification to last editor method fix.
2681
2682         * bridge/EditorClient.h:
2683         * platform/gdk/EditorClientGdk.cpp:
2684         (WebCore::EditorClientGdk::updateSpellingUIWithGrammarString):
2685         * platform/gdk/EditorClientGdk.h:
2686         * platform/graphics/svg/SVGImageEmptyClients.h:
2687         (WebCore::SVGEmptyEditorClient::updateSpellingUIWithGrammarString):
2688
2689 2007-05-08  Alexey Proskuryakov  <ap@webkit.org>
2690
2691         Reviewed by Hyatt.
2692
2693         http://bugs.webkit.org/show_bug.cgi?id=13480
2694         window.Attr is undefined
2695
2696         Test: fast/dom/Window/attr-constructor.html
2697
2698         * dom/Attr.idl:
2699         * dom/CDATASection.idl:
2700         * dom/CharacterData.idl:
2701         * dom/Comment.idl:
2702         * dom/DOMImplementation.idl:
2703         * dom/DocumentType.idl:
2704         * dom/Entity.idl:
2705         * dom/EntityReference.idl:
2706         * dom/Notation.idl:
2707         * dom/ProcessingInstruction.idl:
2708         * dom/Text.idl:
2709         Added GenerateConstructor.
2710
2711         * page/DOMWindow.idl: Added constructor properties for DOM interfaces.
2712
2713 2007-05-07  Geoffrey Garen  <ggaren@apple.com>
2714
2715         Reviewed by Maciej Stachowiak.
2716
2717         Fixed <rdar://problem/5140447> API for fetching JSGlobalContextRef from 
2718         WebView or WebFrame
2719         
2720         Added support for new -[WebScriptObject JSObject] and -[WebFrame globalContext]
2721         APIs.
2722         
2723         Also fixed some more cases of <rdar://problem/4395622> API: 
2724         WebScriptObject.h incorrectly reports that -isSelectorExcludedFromWebScript 
2725         returns NO by default, and generally cleaned up that documentation.
2726
2727         * WebCore.exp: A lot of the diff here is from sorting.
2728         * WebCore.xcodeproj/project.pbxproj:
2729         * bindings/objc/WebScriptObject.h:
2730         * bindings/objc/WebScriptObject.mm:
2731         (-[WebScriptObject JSObject]):
2732         * bindings/objc/WebScriptObjectPendingPublic.h: Added.
2733
2734 2007-05-08  Lars Knoll <lars@trolltech.com>
2735
2736         Reviewed by Hyatt.
2737
2738         Fix valgrind reported uninitialized memory read.
2739
2740         * rendering/RenderText.cpp:
2741         (WebCore::RenderText::RenderText):
2742
2743 2007-05-07  Justin Garcia  <justin.garcia@apple.com>
2744
2745         Reviewed by oliver
2746
2747         <rdar://problem/4895428> Can't drag selected ToDo
2748         
2749         The user tries to drag a selection by mousing down
2750         on the editable part of a ToDo, which is focusable,
2751         since it is an editable node within non-editable 
2752         content.  But we focus focusable elements on mouse 
2753         down, and focusing the editable piece blows away 
2754         the selection and prevents the drag. This is how 
2755         IE behaves, but content seems generally difficult 
2756         to drag in IE, so this doesn't make it any worse.
2757         
2758         Since focus doesn't appear to be cancelable, either
2759         with a DOM event or an editing delegate, I fixed this
2760         by delaying the focus of focusable nodes that are 
2761         selected and inside an already focused node.  The 
2762         node will be focused if the user mouses up without 
2763         doing any dragging because the mouse up sets a
2764         selection, which calls setFocusNodeIfNeeded.
2765
2766         * page/EventHandler.cpp:
2767         (WebCore::EventHandler::dispatchMouseEvent):
2768
2769 2007-05-07  Atul Mehrotra <atul.mehrotra@celunite.com>
2770
2771         Reviewed by Maciej.
2772
2773         GDK Build fix
2774
2775         * platform/gdk/TemporaryLinkStubs.cpp:
2776
2777 2007-05-07  Oliver Hunt  <oliver@apple.com>
2778
2779         Reviewed by Maciej.
2780
2781         Correcting comparisons to handle NaN in the same manner
2782         as other Canvas methods.
2783
2784         * html/CanvasRenderingContext2D.cpp:
2785         (WebCore::CanvasRenderingContext2D::arcTo):
2786         (WebCore::CanvasRenderingContext2D::arc):
2787           Correcting arc/arcTo to match the WHAT WG draft.
2788         (WebCore::CanvasRenderingContext2D::rect):
2789         (WebCore::CanvasRenderingContext2D::clearRect):
2790         (WebCore::CanvasRenderingContext2D::fillRect):
2791         (WebCore::CanvasRenderingContext2D::strokeRect):
2792
2793 2007-05-07  David Hyatt  <hyatt@apple.com>
2794
2795         Add some comments to the glyph/font code (patch from MarvinD, tweaked by
2796         me to correct a few bits and to make it forward-compatible with the work
2797         going on in 3315.
2798
2799         Reviewed by me
2800
2801         * ChangeLog:
2802         * platform/Font.cpp:
2803         (WebCore::Font::glyphDataForCharacter):
2804         * platform/GlyphPageTreeNode.cpp:
2805         (WebCore::GlyphPageTreeNode::initializePage):
2806         * platform/GlyphPageTreeNode.h:
2807
2808 2007-05-07  Justin Garcia  <justin.garcia@apple.com>
2809
2810         Fix layout test failures.
2811
2812         * editing/SelectionController.cpp:
2813         (WebCore::SelectionController::contains): Use comparePositions
2814         instead of Range::comparePoint, because comparePositions can
2815         handle positions inside shadow trees.
2816
2817 2007-05-07  Justin Garcia  <justin.garcia@apple.com>
2818
2819         Reviewed by darin
2820         
2821         <rdar://problem/4895428> Can't drag selected To Do if it is not showing a due date
2822         
2823         The code in SelectionController::contains returned false 
2824         incorrectly if the selection end just after a table 
2825         and the position was inside that table.
2826
2827         * editing/SelectionController.cpp:
2828         (WebCore::SelectionController::contains): Compare the position with the
2829         ends of the selection and then use Range::comparePoint.
2830
2831 2007-05-07  Darin Adler  <darin@apple.com>
2832
2833         - rolling out setInnerHTML optimization until I can figure out why tests are failing
2834
2835 2007-05-07  Darin Adler  <darin@apple.com>
2836
2837         Reviewed by Hyatt.
2838
2839         - fix http://bugs.webkit.org/show_bug.cgi?id=13602
2840           Amazon product pages keep repainting over and over again
2841
2842         Optimize setInnerHTML, setOuterHTML, and setInnerText so they don't change the DOM at all
2843         if they don't need to.
2844
2845         Test: fast/dom/HTMLElement/set-inner-outer-optimization.html
2846
2847         * html/HTMLElement.cpp:
2848         (WebCore::equal): Added. Helper function that compares two Text nodes or two NamedAttrMap
2849         attribute maps.
2850         (WebCore::shallowEqual): Added. Helper function that compares two Element nodes or two
2851         arbitrary nodes.
2852         (WebCore::replaceChildrenWithFragment): Added. Helper function used by setInnerHTML and
2853         setInnerText. Optimizes the cases where all the nodes are the same, where both the current
2854         and the new content are single text nodes, and where the current content is a single node
2855         that can be replaced with replaceChild.
2856         (WebCore::replaceChildrenWithText): Added. Helper function used by setInnerText. Optimizes
2857         the case where the current content is a single text node or a single node that can be
2858         replaced with replaceChild.
2859         (WebCore::HTMLElement::setInnerHTML): Changed to call replaceChildrenWithFragment.
2860         (WebCore::HTMLElement::setOuterHTML): Added special case to optimize when the new content
2861         exactly matches the current node.
2862         (WebCore::HTMLElement::setInnerText): Changed to call replaceChildrenWithText in a few
2863         cases instead of doing removeChildren/appendChild. Changed code that was using
2864         DeprecatedString to instead use String. Changed general case to use a document fragment
2865         and replaceChildrenWithFragment.
2866
2867         * dom/CharacterData.cpp: (WebCore::CharacterData::dispatchModifiedEvent):
2868         Fixed bug where we would not dispatch the DOMSubtreeModified event unless someone
2869         was registered for the DOMCharacterDataModified event. Caused trouble in the test.
2870
2871 2007-05-06  Darin Adler  <darin@apple.com>
2872
2873         - blind try at fixing the Qt build
2874
2875         * platform/qt/TextBreakIteratorQt.cpp: (WebCore::sentenceBreakIterator):
2876         Added a placeholder.
2877
2878 2007-05-06  Darin Adler  <darin@apple.com>
2879
2880         Reviewed by Hyatt.
2881
2882         - fix http://bugs.webkit.org/show_bug.cgi?id=13537
2883           Canvex example starts rendering strangely after a while
2884
2885         * html/CanvasRenderingContext2D.cpp: (WebCore::CanvasRenderingContext2D::drawImage):
2886         Don't raise an exception if the source or destination rectangle is empty.
2887
2888 2007-05-06  Darin Adler  <darin@apple.com>
2889
2890         Reviewed by Hyatt.
2891
2892         - fix <rdar://problem/4585593> REGRESSION: Some 2-byte characters in printed page
2893           header are drawn with too-large font and clipped
2894
2895         Doesn't affect text within web pages, so no layout test.
2896
2897         * platform/mac/FontCacheMac.mm: (WebCore::FontCache::getFontDataForCharacters):
2898         Base the substitute font on the FontPlatformData rather than the FontDescription.
2899         Before, it was a mix of both. This works properly for fonts where we have no
2900         FontDescription and is also more internally consistent.
2901
2902 2007-05-06  Darin Adler  <darin@apple.com>
2903
2904         Reviewed by Hyatt.
2905
2906         - http://bugs.webkit.org/show_bug.cgi?id=13606
2907           some functions are virtual that don't need to be
2908
2909         * dom/Node.h: Made first/lastChild be inline functions that call virtual functions.
2910         This lets us hide the functions with another inline function in a derived class,
2911         yet still override the behavior here in the base class by overriding the virtual
2912         functions too.
2913         * dom/Node.cpp:
2914         (WebCore::Node::virtualFirstChild): Renamed virtual functions. There are now
2915         non-virtual inline functions that call these virtual functions.
2916         (WebCore::Node::virtualLastChild): Ditto.
2917
2918         * dom/ContainerNode.h: Added non-virtual first/lastChild functions that hide the ones
2919         inherited from the Node class; these also replace the fastFirst/LastChild functions,
2920         and transparently give callers the faster form if they have a pointer of the right
2921         type. But still override the virtual functions named virtualFirst/LastChild, because
2922         those can still be called through a Node*. Removed the "fast" from the names of
2923         fastSetFirst/LastChild.
2924         * dom/ContainerNode.cpp:
2925         (WebCore::ContainerNode::virtualFirstChild): Renamed virtual functions. There are now
2926         also non-virtual inline versions.
2927         (WebCore::ContainerNode::virtualLastChild): Ditto.
2928
2929         * dom/CharacterData.cpp: Removed implementations of data and length functons.
2930         * dom/CharacterData.h: Made data, setData, length, substringData, appendData,
2931         insertData, deleteData, and replaceData all non-virtual, and made data and length
2932         both be inline.
2933
2934         * dom/NamedAttrMap.h: (WebCore::NamedAttrMap::attributeItem): Removed a null check
2935         from this function. If the length of the map is known to be greater than 0, then
2936         the null check isn't needed. But if the length of the map hasn't been checked at all,
2937         then it's unsafe to call this function since it doesn't range check the array
2938         index. Thus the null check is never needed. I also looked at all callers.
2939
2940         * dom/Attr.cpp: (WebCore::Attr::createTextChild):
2941         * dom/Document.cpp: (WebCore::Document::recalcStyle):
2942         * dom/Element.cpp: (WebCore::Element::recalcStyle):
2943         * ksvg2/svg/SVGElement.cpp:
2944         (WebCore::SVGElement::haveLoadedRequiredResources):
2945         Removed "fast" prefix from calls to fastFirst/LastChild and fastSetFirst/LastChlld.
2946         It's not needed any more -- you still get fast behavior if the pointer has a type
2947         that's ContainerNode or derived from it.
2948
2949 2007-05-06  Mitz Pettel  <mitz@webkit.org>
2950
2951         Reviewed by Hyatt.
2952
2953         - fix http://bugs.webkit.org/show_bug.cgi?id=13557
2954           Crash when dragging selection over absolutely positioned generated content on block element
2955
2956         Test: fast/css-generated-content/positioned-background-hit-test-crash.html
2957
2958         * rendering/RenderLayer.cpp:
2959         (WebCore::RenderLayer::enclosingElement): Added. Factored out of hitTestLayer().
2960         (WebCore::RenderLayer::hitTestLayer): Implemented the fix for <rdar://problem/3552346>
2961         from r6106 to the self hit test as well, namely: return the enclosing element
2962         for generated positioned content.
2963         * rendering/RenderLayer.h:
2964
2965 2007-05-06  Alexey Proskuryakov  <ap@webkit.org>
2966
2967         Reviewed by Darin.
2968
2969         http://bugs.webkit.org/show_bug.cgi?id=13584
2970         <script> code wrongly assumes requests can't fail
2971
2972         Test: fast/loader/unloadable-script.html
2973
2974         * html/HTMLScriptElement.cpp:
2975         (WebCore::HTMLScriptElement::parseMappedAttribute):
2976         (WebCore::HTMLScriptElement::insertedIntoDocument):
2977         Check the return value of requestScript().
2978
2979 2007-05-06  Alexey Proskuryakov  <ap@webkit.org>
2980
2981         Reviewed by Darin.
2982
2983         http://bugs.webkit.org/show_bug.cgi?id=13304
2984         REGRESSION(14784): WebKit doesn't dynamically reflect changes to the highlight color in System Preferences
2985
2986         Implemented a notification observer that invalidates cached system colors.
2987
2988         No automated test possible.
2989
2990         * rendering/RenderTheme.cpp:
2991         (WebCore::RenderTheme::activeSelectionBackgroundColor):
2992         (WebCore::RenderTheme::inactiveSelectionBackgroundColor):
2993         (WebCore::RenderTheme::platformColorsDidChange):
2994         * rendering/RenderTheme.h:
2995         * rendering/RenderThemeMac.h:
2996         * rendering/RenderThemeMac.mm:
2997         (-[WebCoreRenderThemeNotificationObserver initWithTheme:WebCore::]):
2998         (-[WebCoreRenderThemeNotificationObserver systemColorsDidChange:]):
2999         (WebCore::theme):
3000         (WebCore::RenderThemeMac::RenderThemeMac):
3001         (WebCore::RenderThemeMac::~RenderThemeMac):
3002         (WebCore::RenderThemeMac::checkbox):
3003         (WebCore::RenderThemeMac::radio):
3004         (WebCore::RenderThemeMac::button):
3005         (WebCore::RenderThemeMac::popupButton):
3006         (WebCore::RenderThemeMac::search):
3007         (WebCore::RenderThemeMac::sliderThumbHorizontal):
3008         (WebCore::RenderThemeMac::sliderThumbVertical):
3009
3010 2007-05-05  Rob Buis  <buis@kde.org>
3011
3012         Reviewed by Oliver.
3013
3014         http://bugs.webkit.org/show_bug.cgi?id=13592
3015         parseMappedAttribute inconsistency
3016
3017         Do not use local vars in parseMappedAttribute for attr name and value.
3018
3019         * ksvg2/svg/SVGAnimateMotionElement.cpp:
3020         (WebCore::SVGAnimateMotionElement::parseMappedAttribute):
3021         * ksvg2/svg/SVGAnimateTransformElement.cpp:
3022         (WebCore::SVGAnimateTransformElement::parseMappedAttribute):
3023         * ksvg2/svg/SVGAnimationElement.cpp:
3024         (WebCore::SVGAnimationElement::parseMappedAttribute):
3025         * ksvg2/svg/SVGCircleElement.cpp:
3026         (WebCore::SVGCircleElement::parseMappedAttribute):
3027         * ksvg2/svg/SVGClipPathElement.cpp:
3028         (WebCore::SVGClipPathElement::parseMappedAttribute):
3029         * ksvg2/svg/SVGCursorElement.cpp:
3030         (WebCore::SVGCursorElement::parseMappedAttribute):
3031         * ksvg2/svg/SVGEllipseElement.cpp:
3032         (WebCore::SVGEllipseElement::parseMappedAttribute):
3033         * ksvg2/svg/SVGExternalResourcesRequired.cpp:
3034         (WebCore::SVGExternalResourcesRequired::parseMappedAttribute):
3035         * ksvg2/svg/SVGGradientElement.cpp:
3036         (WebCore::SVGGradientElement::parseMappedAttribute):
3037         * ksvg2/svg/SVGImageElement.cpp:
3038         (WebCore::SVGImageElement::parseMappedAttribute):
3039         * ksvg2/svg/SVGLineElement.cpp:
3040         (WebCore::SVGLineElement::parseMappedAttribute):
3041         * ksvg2/svg/SVGLinearGradientElement.cpp:
3042         (WebCore::SVGLinearGradientElement::parseMappedAttribute):
3043         * ksvg2/svg/SVGMarkerElement.cpp:
3044         (WebCore::SVGMarkerElement::parseMappedAttribute):
3045         * ksvg2/svg/SVGMaskElement.cpp:
3046         (WebCore::SVGMaskElement::parseMappedAttribute):
3047         * ksvg2/svg/SVGPathElement.cpp:
3048         (WebCore::SVGPathElement::parseMappedAttribute):
3049         * ksvg2/svg/SVGPatternElement.cpp:
3050         (WebCore::SVGPatternElement::parseMappedAttribute):
3051         * ksvg2/svg/SVGRadialGradientElement.cpp:
3052         (WebCore::SVGRadialGradientElement::parseMappedAttribute):
3053         * ksvg2/svg/SVGRectElement.cpp:
3054         (WebCore::SVGRectElement::parseMappedAttribute):
3055         * ksvg2/svg/SVGSVGElement.cpp:
3056         (WebCore::SVGSVGElement::parseMappedAttribute):
3057         * ksvg2/svg/SVGScriptElement.cpp:
3058         (WebCore::SVGScriptElement::parseMappedAttribute):
3059         * ksvg2/svg/SVGStopElement.cpp:
3060         (WebCore::SVGStopElement::parseMappedAttribute):
3061         * ksvg2/svg/SVGTests.cpp:
3062         (WebCore::SVGTests::parseMappedAttribute):
3063         * ksvg2/svg/SVGTextContentElement.cpp:
3064         (WebCore::SVGTextContentElement::parseMappedAttribute):
3065         * ksvg2/svg/SVGTextPositioningElement.cpp:
3066         (WebCore::SVGTextPositioningElement::parseMappedAttribute):
3067         * ksvg2/svg/SVGUseElement.cpp:
3068         (WebCore::SVGUseElement::parseMappedAttribute):
3069         * ksvg2/svg/SVGViewElement.cpp:
3070         (WebCore::SVGViewElement::parseMappedAttribute):
3071         * ksvg2/svg/SVGZoomAndPan.cpp:
3072         (WebCore::SVGZoomAndPan::parseMappedAttribute):
3073
3074 2007-05-05  Oliver Hunt  <oliver@apple.com>
3075
3076         Reviewed by Hyatt.
3077
3078         Initialise default fill with Color::black rather than parsing
3079         the string "black"
3080
3081         * ksvg2/svg/SVGPaint.cpp:
3082         (WebCore::SVGPaint::defaultFill):
3083
3084 2007-05-04  Steve Falkenburg  <sfalken@apple.com>
3085
3086         Reviewed by Oliver.
3087
3088         Use TextBreakIterator for sentence breaking instead of TextBoundaries.
3089
3090         * WebCore.xcodeproj/project.pbxproj: Added TextBreakIeratorInternalICUMac.mm
3091         * editing/visible_units.cpp:
3092         (WebCore::startSentenceBoundary): Call TextBreakIterator instead of TextBoundaries.
3093         (WebCore::endSentenceBoundary): Call TextBreakIterator instead of TextBoundaries.
3094         (WebCore::previousSentencePositionBoundary): Call TextBreakIterator instead of TextBoundaries.
3095         (WebCore::nextSentencePositionBoundary): Call TextBreakIterator instead of TextBoundaries.
3096         * platform/TextBoundaries.h: Removed findSentenceBoundary, findNextSentenceFromIndex.
3097         * platform/TextBreakIterator.h: Added sentenceBreakIterator.
3098         * platform/TextBreakIteratorICU.cpp:
3099         (WebCore::setUpIterator): Add locale parameter (needed to maintain functionality that TextBoundaries code had).
3100         (WebCore::characterBreakIterator): Pass en_us for locale (same as old code).
3101         (WebCore::wordBreakIterator): Pass en_us for locale (same as old code).
3102         (WebCore::lineBreakIterator): Pass en_us for locale (same as old code).
3103         (WebCore::sentenceBreakIterator): Added.
3104         * platform/TextBreakIteratorInternalICU.h: Added.
3105         * platform/gdk/TemporaryLinkStubs.cpp: Removed findNextSentenceFromIndex, findSentenceBoundary.
3106         (WebCore::currentTextBreakLocaleID): Added stub.
3107         * platform/mac/TextBoundaries.mm: Removed currentTextBreakLocaleID, findSentenceBoundary, findNextSentenceFromIndex.
3108         * platform/mac/TextBreakIteratorInternalICUMac.mm: Added.
3109         (WebCore::currentTextBreakLocaleID): Moved from TextBoundaries.mm
3110         * platform/qt/TextBoundaries.cpp: Removed findNextSentenceFromIndex, findSentenceBoundary.
3111
3112 2007-05-04  Adele Peterson  <adele@apple.com>
3113
3114         Reviewed by Hyatt.
3115
3116         Fix for <rdar://problem/5116871> REGRESSION: Can't select options in widget's listbox
3117
3118         Don't use user-select to determine whether or not options can be selected in listboxes.
3119         This will match Firefox behavior for -moz-user-select.
3120
3121         * html/HTMLSelectElement.cpp:
3122         (WebCore::HTMLSelectElement::canSelectAll):
3123         (WebCore::HTMLSelectElement::listBoxDefaultEventHandler):
3124
3125 2007-05-04  Geoffrey Garen  <ggaren@apple.com>
3126
3127         Reviewed by Tim Hatcher.
3128
3129         First step in fixing <rdar://problem/5055182> The back cache has no global cap
3130
3131         Stop giving SnapBack infinite cache-ability. Instead, make SnapBack rely
3132         on the underlying back cache.
3133
3134         * WebCore.exp:
3135         * history/HistoryItem.cpp:
3136         (WebCore::HistoryItem::HistoryItem):
3137         * history/HistoryItem.h:
3138         * loader/FrameLoader.cpp:
3139         (WebCore::FrameLoader::purgePageCache):
3140
3141 2007-05-04  Geoffrey Garen  <ggaren@apple.com>
3142
3143         Reviewed by Brady Eidson.
3144         
3145         Removed export of clearPageCache(), since it was unused externally. I plan
3146         to remove its use from WebCore eventually, too.
3147
3148         Removed usesPageCache(), since it was unused and it duplicated pageCacheSize().
3149
3150         * WebCore.exp:
3151         * history/BackForwardList.cpp:
3152         * history/BackForwardList.h: Moved statics to the top of the class definition.
3153         * loader/FrameLoader.cpp:
3154         (WebCore::FrameLoader::canCachePage):
3155
3156 2007-05-04  Anders Carlsson  <andersca@apple.com>
3157
3158         Reviewed by Antti.
3159
3160         <rdar://problem/5179977> Use the correct URLs when dispatching delegate methods for data loads.
3161
3162         Restore behavior to matching release WebKit by adding a response URL to SubstituteData. If a nil base URL is
3163         passed, set the _request_ URL to "about:blank", but the response URL to a generated "applewebdata" URL.
3164
3165         * loader/FrameLoader.cpp:
3166         (WebCore::FrameLoader::commitProvisionalLoad):
3167         First, check for the SubstituteData's response URL.
3168
3169         (WebCore::FrameLoader::continueAfterNavigationPolicy):
3170         No need to special case applewebdata URLs here, they're only used in the response.
3171
3172         * loader/MainResourceLoader.cpp:
3173         (WebCore::MainResourceLoader::handleDataLoadNow):
3174         If the substitute data has a response URL, use it.
3175
3176         (WebCore::MainResourceLoader::loadNow):
3177         Only load "about:blank" as an empty document if there's no substitute data.
3178
3179         * loader/SubstituteData.h:
3180         (WebCore::SubstituteData::SubstituteData):
3181         (WebCore::SubstituteData::responseURL):
3182         Add responseURL member to SubstituteData.
3183
3184 2007-05-03  Steve Falkenburg  <sfalken@apple.com>
3185
3186         Reviewed by Oliver.
3187
3188         Add missing user description parameter to spelling-related editor client method.
3189
3190         * bridge/EditorClient.h:
3191         * platform/gdk/EditorClientGdk.cpp:
3192         (WebCore::EditorClientGdk::updateSpellingUIWithGrammarString):
3193         * platform/gdk/EditorClientGdk.h:
3194         * platform/graphics/svg/SVGImageEmptyClients.h:
3195         (WebCore::SVGEmptyEditorClient::updateSpellingUIWithGrammarString):
3196
3197 2007-05-03  Brady Eidson  <beidson@apple.com>
3198
3199         Reviewed by Oliver
3200
3201         Resolve an outstanding FIXME in Loader::numRequests()
3202
3203         Before, numRequests() would iterate through the list of requests pending load and the list of currently
3204         loading requests and tally up a count matching the current DocLoader.
3205
3206         I noticed while studying and cleaning up the loader code that numRequests() is potentially very hot!
3207         Indeed load a complex site with many resources and multiple frames, and this method gets called very often,
3208         tallying up this number every time.
3209
3210         The FIXME was to keep a collection of Requests mapped to each DocLoader.  In reality, since this map would
3211         simply be used for retrieving a count, that was overkill.  Keeping a request count in the DocLoader itself
3212         along with maintaining that count in Loader as requests come and go is a much better way to do this.
3213
3214         * loader/DocLoader.cpp:
3215         (WebCore::DocLoader::DocLoader):
3216         (WebCore::DocLoader::incrementRequestCount):
3217         (WebCore::DocLoader::decrementRequestCount):
3218         (WebCore::DocLoader::requestCount): Emulate the defunct Loader::numRequests()
3219         * loader/DocLoader.h:
3220
3221         * loader/FrameLoader.cpp:
3222         (WebCore::numRequests): Call DocLoader::requestCount() directly
3223         (WebCore::FrameLoader::checkCompleted): Use numRequests()
3224
3225         * loader/loader.cpp:
3226         (WebCore::Loader::load): Increment the DocLoader's request count
3227         (WebCore::Loader::servePendingRequests): If the SubresourceLoader failed to create, decrement the count
3228         (WebCore::Loader::didFinishLoading): If the Request is not Multipart, decrement the count
3229         (WebCore::Loader::didFail): If the Request is not Multipart, decrement the count
3230         (WebCore::Loader::didReceiveResponse): If the Request becomes Multipart, decrement the count
3231         (WebCore::Loader::cancelRequests): Decrement the count for the pending requests being tossed, and ASSERT the
3232           count is zero after all requests have been cancelled
3233         * loader/loader.h:
3234
3235 2007-05-03  Geoffrey Garen  <ggaren@apple.com>
3236
3237         Reviewed by Brady Eidson.
3238         
3239         Some cleanup in preparation for fixing <rdar://problem/5055182> The 
3240         back/forward cache has no global cap
3241
3242         * loader/FrameLoader.cpp:
3243         (WebCore::FrameLoader::provisionalLoadStarted): Moved "Can I cache this
3244         page?" logic to canCachePage(). Moved "I am caching this page" logic to
3245         cachePageToHistoryItem().
3246         (WebCore::FrameLoader::canCachePage): Moved above logic here.
3247         (WebCore::FrameLoader::cachePageToHistoryItem): Removed bogus NULL check
3248         and failure return value. Moved above logic here. Don't call setCachedPage()
3249         until the CachedPage is fully constructed.
3250         (WebCore::FrameLoader::purgePageCache): Removed comment that duplicated
3251         the function name.
3252         * loader/FrameLoader.h:
3253
3254 2007-05-03  Justin Garcia  <justin.garcia@apple.com>
3255
3256         Reviewed by harrison.
3257
3258         <rdar://problem/5120281> CrashTracer: [USER] 1 crash in Mail at WebCore::CSSComputedStyleDeclaration::copyInheritableProperties() const
3259
3260         Problem is that checkAncestor and lastClosed can be nil when createMarkup is called unrendered nodes, and that was not checked for.
3261         
3262         * editing/markup.cpp:
3263         (WebCore::createMarkup):
3264         Nil-check checkAncestor and lastClosed.
3265
3266 2007-05-03  Timothy Hatcher  <timothy@apple.com>
3267
3268         Reviewed by Kevin.
3269
3270         <rdar://problem/5016318> Contextual menu item for opening links is missing in compose windows but present in viewer
3271
3272         Add the Open Link, Open Link in New Window, Download Linked File and Copy Link menu
3273         items to the content editable context menu.
3274
3275         * platform/ContextMenu.cpp:
3276         (WebCore::ContextMenu::populate):
3277
3278 2007-05-03  Holger Freyther <freyther@kde.org>
3279
3280         Reviewed by Zack, landed by Simon.
3281         This is bugzilla bug 13499.
3282
3283         * WebCore.pro: Place the Qt port into the qt-port scope, add the Gdk port
3284
3285 2007-05-03  Adele Peterson  <adele@apple.com>
3286
3287         Use BUILDING_ON_TIGER.
3288
3289         * page/mac/FrameMac.mm: (WebCore::Frame::setUseSecureKeyboardEntry):
3290
3291 2007-05-03  Brady Eidson  <beidson@apple.com>
3292
3293         Reviewed by Darin
3294
3295         Some more minor cleanup that resolves a FIXME and ditches another pointless method
3296
3297         No change in functionality == no layout test
3298
3299         * loader/FrameLoader.cpp:
3300         (WebCore::FrameLoader::commitProvisionalLoad):  Updated a comment
3301         (WebCore::FrameLoader::continueLoadAfterWillSubmitForm): Folded startLoading() into this method
3302         (WebCore::FrameLoader::continueLoadAfterNavigationPolicy): continueAfterWillSubmitForm becomes continueLoadAfterWillSubmitForm
3303         * loader/FrameLoader.h: Removed startLoading()
3304
3305 2007-05-03  Adele Peterson  <adele@apple.com>
3306
3307         Reviewed by Tim Hatcher.
3308
3309         Fix for <rdar://problem/4727607> REGRESSION: KeyScript is deprecated, need a new solution for forcing Roman input for password fields on Leopard
3310
3311         * page/mac/FrameMac.mm: (WebCore::Frame::setUseSecureKeyboardEntry):
3312         Use TSMSetDocumentProperty and TSMRemoveDocumentProperty on Leopard disable and enable non-ascii input sources.
3313
3314 2007-05-03  Brady Eidson  <beidson@apple.com>
3315
3316         Reviewed by Anders
3317
3318         commitProvisionalLoad() was the name of two methods.
3319         One of them was private and only called from one other private place.
3320         This was driving me crazy.  I had to change that.
3321
3322         No change in functionality == no layout test
3323
3324         * loader/FrameLoader.cpp:
3325         (WebCore::FrameLoader::transitionToCommitted): roll commitProvisionalLoad() into this method
3326         * loader/FrameLoader.h: Removed commitProvisionalLoad()
3327
3328 2007-05-03  Darin Adler  <darin@apple.com>
3329
3330         Reviewed by Anders.
3331
3332         - make ICU initialization lazy to speed up application start-up time
3333           (when it includes an initial webpage load)
3334
3335         * platform/TextCodecICU.h: Replaced registerEncodingNames and
3336         registerCodecs with registerBaseEncodingNames, registerBaseCodecs,
3337         registerExtendedEncodingNames, and registerExtendedCodecs.
3338         * platform/TextCodecICU.cpp:
3339         (WebCore::newTextCodecICU): Moved up to the top of the file.
3340         (WebCore::TextCodecICU::registerBaseEncodingNames): Added. Registers
3341         just UTF-8.
3342         (WebCore::TextCodecICU::registerBaseCodecs): Ditto.
3343         (WebCore::TextCodecICU::registerExtendedEncodingNames): Renamed.
3344         (WebCore::TextCodecICU::registerExtendedCodecs): Ditto.
3345         (WebCore::TextCodecICU::createICUConverter): Compare with the name
3346         "GBK" in a way that does not require extending the maps.
3347
3348         * platform/TextEncoding.cpp:
3349         (WebCore::TextEncoding::usesVisualOrdering): Added code so this will
3350         just return false if we haven't used any extended encoding names yet.
3351         The result will be correct, and we won't ask for an encoding name that
3352         will require registering the extended encoding names.
3353         (WebCore::TextEncoding::isJapanese): Ditto.
3354         (WebCore::TextEncoding::backslashAsCurrencySymbol): Ditto, but return
3355         a backslash instead of false.
3356
3357         * platform/TextEncodingRegistry.h: Added a new function named
3358          noExtendedTextEncodingNameUsed.
3359         * platform/TextEncodingRegistry.cpp:
3360         (WebCore::buildBaseTextCodecMaps): Added. Registers the base encodings,
3361         including Latin-1 because it's the default, and the UTF encodings.
3362         (WebCore::extendTextCodecMaps): Added. Registers all the other encodings.
3363         (WebCore::newTextCodec): Removed the all to buildTextCodecMap because
3364         we always build the map when making the canonical encoding name.
3365         (WebCore::atomicCanonicalTextEncodingName): Changed code to build only
3366         the base maps at first, then extend the maps the first time we run into
3367         a name we don't know.
3368         (WebCore::noExtendedTextEncodingNameUsed): Added.
3369
3370 2007-05-03  Mark Rowe  <mrowe@apple.com>
3371
3372         Qt build fix.  In r21185 the Qt version of WebCore::scaleDragImage was
3373         updated to have the incorrect signature.
3374
3375         * platform/qt/DragImageQt.cpp:
3376         (WebCore::scaleDragImage):
3377
3378 2007-05-02  Beth Dakin  <bdakin@apple.com>
3379
3380         * dom/Node.h: Just fixing a variable name because it's driving me 
3381         mad.
3382
3383 2007-05-02  Beth Dakin  <bdakin@apple.com>
3384
3385         Reviewed by Hyatt.
3386
3387         Fix for <rdar://problem/4513966> Never-ending identical repaint @ 
3388         orbitz.com (Safari eating 85% CPU)
3389
3390         We need to be a little bit more savvy about when we do a FULL style 
3391         recalc since it can be unnecessary and expensive.
3392
3393         * css/CSSMutableStyleDeclaration.cpp:
3394         (WebCore::CSSMutableStyleDeclaration::setChanged): Now takes a 
3395         StyleChangeType as a parameter.
3396         (WebCore::CSSMutableStyleDeclaration::setProperty): Send 
3397         InlineStyleChange as the paramter. This is the optimization!
3398         * css/CSSMutableStyleDeclaration.h: setChanged takes a 
3399         StyleChangeType as a parameter.
3400         * dom/Document.cpp: setChanged now takes a StyleChangeType instead 
3401         of a bool.
3402         (WebCore::Document::recalcStyle): Same.
3403         * dom/Element.cpp: 
3404         (WebCore::Element::recalcStyle): This is the fix!! Only set change 
3405         to Force is we use descendant rules AND it's a FullStyleChange.
3406         * dom/Node.cpp: m_hasStyle was an unused bit on Node, so this patch 
3407         gets rid of it and uses that extra bit for m_changed to be a 
3408         StyleChangeType instead of a bool.
3409         (WebCore::Node::Node):
3410         (WebCore::Node::setChanged):
3411         (WebCore::Node::dump):
3412         * dom/Node.h: Same.
3413         (WebCore::): Define the StyleChangeType enum.
3414         (WebCore::Node::hasClass):
3415         (WebCore::Node::changed):
3416         (WebCore::Node::styleChangeType):
3417         (WebCore::Node::setHasClass):
3418         * dom/StyledElement.cpp:
3419         (WebCore::StyledElement::parseMappedAttribute): Don't bother 
3420         calling setHasStyle() since m_hasStyle is gone now. It was never 
3421         used, and this was the only place it was set.
3422         * dom/Text.cpp:
3423         (WebCore::Text::recalcStyle): setChanged now takes a 
3424         StyleChangeType instead of a bool.
3425         * html/HTMLFrameSetElement.cpp:
3426         (WebCore::HTMLFrameSetElement::recalcStyle): Same.
3427         * html/HTMLSelectElement.cpp:
3428         (WebCore::HTMLSelectElement::restoreState): Same.
3429         (WebCore::HTMLSelectElement::reset): Same.
3430         * html/HTMLTextAreaElement.cpp:
3431         (WebCore::HTMLTextAreaElement::setValue): Same.
3432         * ksvg2/misc/SVGTimer.cpp:
3433         (WebCore::SVGTimer::applyAnimations): Same.
3434         * ksvg2/svg/SVGUseElement.cpp:
3435         (WebCore::SVGUseElement::recalcStyle): Same.
3436         * platform/graphics/svg/SVGResource.cpp:
3437         (WebCore::SVGResource::repaintClients): Same.
3438
3439 2007-05-02  David Harrison  <harrison@apple.com>
3440
3441         Reviewed by Antti.
3442
3443         <rdar://problem/4859132> Grammar must always be checked in entire-sentence chunks, and shouldn't show markers for current sentence
3444
3445         Restore the remainder of the original fix now that blocking bug rdar://5174862 is addressed.
3446
3447         John made the original patch on 2007-04-10, but this fell prey to rdar://5157329.
3448         Justin backed out the whole patch on 2007-04-30 to avoid the crash.
3449         Justin then restored most of the original patch, but used word granularity instead, to keep the build working.
3450         I just addressed the root cause of rdar://5157329 in rdar://5174862.
3451         This patch switches the temp uses of word granularity back to sentence granularity.
3452         
3453         * editing/mac/EditorMac.mm:
3454         (WebCore::Editor::markMisspellingsAfterTypingToPosition):
3455         * page/Frame.cpp:
3456         (WebCore::Frame::respondToChangedSelection):
3457
3458 2007-05-02  David Harrison  <harrison@apple.com>
3459
3460         Reviewed by Antti.
3461
3462         <rdar://problem/5174862> Crash resulting from DeprecatedString::insert()
3463         
3464         Test added: editing/selection/move-by-sentence-001.html
3465
3466         * editing/visible_units.cpp:
3467         (WebCore::previousBoundary):
3468         (WebCore::nextBoundary):
3469         Use a UChar Vector instead of DeprecatedString.
3470         Avoid creating an extra string for secure bullet replacement unless it is actually needed.
3471         
3472         * platform/DeprecatedString.cpp:
3473         (WebCore::DeprecatedString::insert):
3474         Call forceUnicode() before setLength(), so that only the unicode buffer is resized.
3475
3476        (WebCore::DeprecatedString::setLength):
3477         Adjust the unicode buffer even if the ascii buffer is valid.
3478         
3479 2007-05-02  Mitz Pettel  <mitz@webkit.org>
3480
3481         Reviewed by Brady.
3482
3483         - http://bugs.webkit.org/show_bug.cgi?id=13564
3484           Remove friend class FrameLoader from Frame
3485
3486         No test added since there is no change in functionality.
3487
3488         * loader/FrameLoader.cpp:
3489         (WebCore::FrameLoader::didOpenURL):
3490         (WebCore::FrameLoader::begin):
3491         (WebCore::FrameLoader::open):
3492         * loader/FrameLoader.h: Made clear() private.
3493         * page/Frame.cpp:
3494         (WebCore::Frame::setDocument): Changed the argument into a PassRefPtr.
3495         * page/Frame.h:
3496         * xml/XSLTProcessor.cpp:
3497         (WebCore::XSLTProcessor::createDocumentFromSource):
3498
3499 2007-05-02  Mitz Pettel  <mitz@webkit.org>
3500
3501         Reviewed by Dave Hyatt.
3502
3503         - fix http://bugs.webkit.org/show_bug.cgi?id=9276
3504           Quirksmode: Image swap resize bug
3505
3506         Test: fast/replaced/image-resize-width.html
3507
3508         * rendering/RenderImage.cpp:
3509         (WebCore::RenderImage::imageChanged): Moved the call to dirtyPrefWidths()
3510         before the call to calcWidth().
3511
3512 2007-05-02  David Hyatt  <hyatt@apple.com>
3513
3514         Fix for bug 13566, broken Dashboard widgets.  setPrefWidthsDirty did
3515         the wrong thing for text children of a positioned element.
3516
3517         Reviewed by mitz
3518
3519         fast/block/positioning/pref-width-change.html
3520
3521         * rendering/RenderObject.cpp:
3522         (WebCore::RenderObject::setPrefWidthsDirty):
3523
3524 2007-05-01  Darin Adler  <darin@apple.com>
3525
3526         * rendering/RenderReplaced.cpp: Fix typo in a comment.
3527
3528 2007-05-01  David Hyatt  <hyatt@apple.com>
3529
3530         Fix for 13558, crash when using absolutely positioned generated content
3531         inside an inline.
3532
3533         Reviewed by darin
3534
3535         fast/css-generated-content/absolute-position-inside-inline.html
3536
3537         * rendering/RenderContainer.cpp:
3538         (WebCore::RenderContainer::updateBeforeAfterContentForContainer):
3539
3540 2007-05-01  Justin Garcia  <justin.garcia@apple.com>
3541
3542         Reviewed by darin
3543
3544         <rdar://problem/5002441> 
3545         Pressing space key does nothing above quoted content or a signature
3546         
3547         Inserting a space under these circumstances inserts a single 
3548         text node containing a regular space and then does a layout. 
3549         That space isn't rendered (which is correct).  Whitespace 
3550         rebalancing is supposed to correct it but failed.  It replaces 
3551         the space with a non-breaking space, but that change doesn't 
3552         dirty line boxes (9441) and so the space isn't rendered.
3553         
3554         This workaround turns all incoming spaces into non-breaking 
3555         spaces before they're inserted (they're rebalanced after 
3556         insertion and turned back into regular spaces if possible).
3557
3558         * editing/InsertTextCommand.cpp:
3559         (WebCore::InsertTextCommand::prepareForTextInsertion): Removed
3560         an old irrelevant FIXME.
3561         (WebCore::InsertTextCommand::input): Turn incoming spaces into
3562         non breaking spaces before inserting them.
3563         
3564 2007-05-01  Darin Adler  <darin@apple.com>
3565
3566         Reviewed by Hyatt.
3567
3568         - fix http://bugs.webkit.org/show_bug.cgi?id=13559
3569           REGRESSION: Canvas aspect ratio is incorrect
3570
3571         - remove intrinsicWidth/Height functions from RenderObject
3572
3573         Test: fast/canvas/canvas-size-change-after-layout.html
3574
3575         * html/HTMLCanvasElement.cpp:
3576         (WebCore::HTMLCanvasElement::createRenderer): Removed code to set
3577         the intrinsic size, because the renderer now takes care of this
3578         in its constructor.
3579         (WebCore::HTMLCanvasElement::reset): Instead of calling the
3580         setIntrinsicWidth/Height functions, call canvasSizeChanged, which
3581         takes care of layout, but only if the size actually changed. Also
3582         call repaint if the contents of the canvas changed.
3583
3584         * rendering/RenderApplet.h:
3585         * rendering/RenderApplet.cpp: (WebCore::RenderApplet::intrinsicSize):
3586         Override the new intrinsicSize function. This override still doesn't
3587         make sense, so left a FIXME in here.
3588
3589         * rendering/RenderBox.h: Added an intrinsicSize function here to replace
3590         the intrinsicWidth/Height functions removed from RenderObject.
3591         * rendering/RenderBox.cpp:
3592         (WebCore::RenderBox::calcReplacedWidthUsing): Use intrinsicSize instead
3593         of intrinsicWidth.
3594         (WebCore::RenderBox::calcReplacedHeightUsing): Ditto, but for height.
3595
3596         * rendering/RenderHTMLCanvas.h: Changed the constructor parameter to be
3597         an HTMLCanvasElement* instead of Node*. Also added a canvasSizeChanged
3598         function.
3599         * rendering/RenderHTMLCanvas.cpp:
3600         (WebCore::RenderHTMLCanvas::RenderHTMLCanvas): Pass an initial intrinsic
3601         size based on the current size of the canvas element. This is now the
3602         responsibility of the renderer and the DOM element calls the canvasSizeChanged
3603         function when the size changes.
3604         (WebCore::RenderHTMLCanvas::paint): Removed checks of the type of the element,
3605         and used the node() function because we don't have to worry about the anonymous
3606         case in this class.
3607         (WebCore::RenderHTMLCanvas::canvasSizeChanged): Added. Changes the size and
3608         then calls setNeedsLayout and setPrefWidthsDirty as needed. I based the logic
3609         here on careful reading of RenderImage::imageChanged.
3610
3611         * rendering/RenderImage.cpp:
3612         (WebCore::RenderImage::RenderImage): Pass a default intrinsic size of 0,0
3613         instead of calling setIntrinsicWidth/Height.
3614         (WebCore::RenderImage::setImageSizeForAltText): Call the new intrinsic size
3615         functions instead of the width/height ones. Simplifies the logic since we
3616         handle both dimensions at once.
3617         (WebCore::RenderImage::imageChanged): Ditto.
3618         (WebCore::RenderImage::layout): Ditto.
3619         (WebCore::RenderImage::calcAspectRatioWidth): Ditto.
3620         (WebCore::RenderImage::calcAspectRatioHeight): Ditto.
3621
3622         * rendering/RenderObject.h: Removed intrinsicWidth/Height virtual functions.
3623
3624         * rendering/RenderReplaced.h: Replaced intrinsicWidth, intrinsicHeight,
3625         setIntrinsicWidth, setIntrinsicHeight, m_intrinsicWidth, and m_intrinsicHeight
3626         with intrinsicSize, setIntrinsicSize, and m_intrinsicSize.
3627         * rendering/RenderReplaced.cpp:
3628         (WebCore::RenderReplaced::RenderReplaced): Added a second contructor that takes
3629         an intrinsic size parameter. Also updated constructor since the intrinsic size
3630         is now an IntSize instead of two integers.
3631         (WebCore::RenderReplaced::intrinsicSize): Added. No point in making this inline
3632         because it's a virtual function.
3633         (WebCore::RenderReplaced::setIntrinsicSize): Added. Didn't make this inline,
3634         partly because in the future we might want this to be more than just a simple
3635         setter function, factoring in common code used in both RenderImage and
3636         RenderHTMLCanvas.
3637
3638         * rendering/RenderWidget.h: Removed a stray using declaration that wasn't needed.
3639
3640 2007-05-01  David Hyatt  <hyatt@apple.com>
3641
3642         Fix for hang when incorrectly trying to add before/after content to
3643         a <select>.  Disallow generated content in all selects and also turn it
3644         off for <input> buttons.
3645
3646         Reviewed by aroben
3647
3648         * rendering/RenderBlock.cpp:
3649         (WebCore::RenderBlock::setStyle):
3650         * rendering/RenderButton.cpp:
3651         (WebCore::RenderButton::canHaveChildren):
3652         * rendering/RenderButton.h:
3653
3654 2007-05-01  Darin Adler  <darin@apple.com>
3655
3656         Reviewed by Hyatt.
3657
3658         - removed the m_implicit bit from Node, freeing up a bit
3659
3660         - fixed <rdar://problem/5172607> XML parser is creating implicit tbody elements
3661         - fixed <rdar://problem/5172596> HTML-parser-created tbody elements are being
3662           ignored when processing CSS child rules
3663
3664         Test: fast/css/child-selector-implicit-tbody.html
3665
3666         * css/cssstyleselector.cpp: (WebCore::CSSStyleSelector::checkSelector):
3667         Removed code that used to look at implicitNode(), which no longer exists.
3668
3669         * css/html4.css: Added a style rule to handle cases where we have a tr
3670         inside a table with no intervening table section.
3671
3672         * dom/Node.h: Removed the bit.
3673         * dom/Node.cpp:
3674         (WebCore::Node::Node): Don't initialize the bit.
3675         (WebCore::Node::dump): Don't dump the bit.
3676
3677         * dom/XMLTokenizer.cpp:
3678         (WebCore::XMLTokenizer::startElementNs): Remove the code that made a
3679         table body element. This is handled in the render tree, the DOM tree
3680         should not be mangled.
3681         (WebCore::XMLTokenizer::endElementNs): Removed code that used to look at
3682         implicitNode(), which no longer exists.
3683
3684         * html/HTMLElementFactory.cpp: (WebCore::tableSectionConstructor):
3685         Removed boolean parameter that was passed to the HTMLTableSectionElement
3686         constructor.
3687         * html/HTMLParser.cpp: (WebCore::HTMLParser::handleError): Ditto.
3688         * html/HTMLTableElement.cpp:
3689         (WebCore::HTMLTableElement::createTHead): Ditto.
3690         (WebCore::HTMLTableElement::createTFoot): Ditto.
3691         (WebCore::HTMLTableElement::insertRow): Changed to return a PassRefPtr,
3692         because it's possible the row could be removed from the table by JavaScript
3693         code responding to DOM mutation events before the function returns. Just
3694         something I noticed by code inspection.
3695
3696         * html/HTMLTableSectionElement.cpp:
3697         (WebCore::HTMLTableSectionElement::HTMLTableSectionElement): Removed
3698         boolean "implicit" parameter to the constructor.
3699         (WebCore::HTMLTableSectionElement::insertRow): Changed to return a
3700         PassRefPtr for the same reason cited above.
3701
3702         * html/HTMLTableElement.h: Changed the return value of insertRow to be
3703         a PassRefPtr.
3704         * html/HTMLTableSectionElement.h: Ditto.
3705
3706 2007-04-30  David Hyatt  <hyatt@apple.com>
3707
3708         Fix for bug 12691, generated content and display: table-cell duplicates
3709         content on a size change.  Make sure that the code to update before/after
3710         content is smart enough to drill into anonymous containers to find the
3711         old child.
3712
3713         Reviewed by olliej
3714
3715         Added fast/css-generated-content/table-cell-before-content.html
3716
3717         * rendering/RenderBlock.cpp:
3718         (WebCore::RenderBlock::setStyle):
3719         * rendering/RenderButton.cpp:
3720         (WebCore::RenderButton::updateBeforeAfterContent):
3721         * rendering/RenderButton.h:
3722         * rendering/RenderContainer.cpp:
3723         (WebCore::RenderContainer::beforeAfterContainer):
3724         (WebCore::RenderContainer::updateBeforeAfterContent):
3725         (WebCore::RenderContainer::updateBeforeAfterContentForObject):
3726         * rendering/RenderContainer.h:
3727         * rendering/RenderInline.cpp:
3728         (WebCore::RenderInline::setStyle):
3729         (WebCore::RenderInline::addChildToFlow):
3730         (WebCore::RenderInline::splitInlines):
3731
3732 2007-04-30  Jungshik Shin <jungshik.shin@gmail.com>
3733
3734         Reviewed by justin
3735         
3736         <http://bugs.webkit.org/show_bug.cgi?id=13552>
3737         comment to Range::comparePoint in dom/Range.cpp has 
3738         '0xD0' in place of '-': leading to a compiler warning
3739
3740         * dom/Range.cpp:
3741         (WebCore::Range::comparePoint):
3742
3743 2007-04-30  Justin Garcia  <justin.garcia@apple.com>
3744
3745         Reviewed by darin
3746
3747         <rdar://problem/4875189> List gets deleted when replacing contents
3748
3749         * editing/ReplaceSelectionCommand.cpp:
3750         (WebCore::ReplaceSelectionCommand::doApply): Don't expand
3751         to include elements, like lists, when deleting a selection 
3752         to replace it.
3753
3754 2007-04-30  Justin Garcia  <justin.garcia@apple.com>
3755
3756         Reviewed by ggaren
3757         
3758         Buildfix.  Leave in grammar checking machinery to 
3759         keep WebKit building on other platforms but don't
3760         operate on sentence sized chunks so that we don't
3761         re-introduce 5157329.
3762
3763         * editing/Editor.h:
3764         * editing/mac/EditorMac.mm:
3765         (WebCore::Editor::markMisspellingsAfterTypingToPosition):
3766         (WebCore::markMisspellingsOrBadGrammar):
3767         (WebCore::Editor::markMisspellings):
3768         (WebCore::Editor::markBadGrammar):
3769         * page/Frame.cpp:
3770         (WebCore::Frame::respondToChangedSelection):
3771
3772 2007-04-30  Justin Garcia  <justin.garcia@apple.com>
3773
3774         Reviewed by darin
3775
3776         <rdar://problem/5168598> 
3777         Crash when deleting a link inside an input field
3778         
3779         Deletion code tries to update one of its positions to keep 
3780         it valid and nullifies it.  Later in mergeParagraphs we try 
3781         to find out if it's valid by checking to see if it's still in 
3782         the document and crash.
3783         
3784         The fix is just to not bother keeping the position, 
3785         m_upstreamStart, valid, since after the point in the code 
3786         under examination, it doesn't need to be valid anymore.  
3787         Besides, code to update DeleteSelectionCommand's positions 
3788         should go in the functions that handle the content removal 
3789         that might invalid them (there are already FIXMEs about this).
3790         
3791         Also, users shouldn't be able to insert links (or any rich content)
3792         into plaintext-only regions like text fields, even if those
3793         text fields are inside richly editable regions.  This is a 
3794         separate bug and is filed as 5171552.
3795
3796         * editing/DeleteSelectionCommand.cpp:
3797         (WebCore::DeleteSelectionCommand::handleGeneralDelete): Don't
3798         bother updating m_upstreamStart.
3799
3800 2007-04-30  Patti Hoa  <patti@apple.com>
3801
3802         Reviewed by Dave Hyatt.
3803         
3804         <rdar://problem/5108546> REGRESSION: Zoom follows keyboard focus does not work
3805
3806         * WebCore.xcodeproj/project.pbxproj:
3807         Add new file SelectionControllerMac.mm
3808         * dom/Document.cpp:
3809         (WebCore::Document::updateSelection):
3810         Move the code to fire off AXSelectedTextChanged notification to a new method notifyAccessibilityForSelectionChange in SelectionControllerMac.mm
3811         * editing/SelectionController.cpp:
3812         (WebCore::SelectionController::setSelection):
3813         call notifyAccessibilityForSelectionChange to handle firing of accessibility notification and zoomFocusChange
3814         * editing/SelectionController.h:
3815         Add notifyAccessibilityForSelectionChange method for Mac platform
3816         * platform/Widget.h:
3817         * platform/mac/WidgetMac.mm:
3818         (WebCore::Widget::convertToScreenCoordinate):
3819         Add a helper routine that takes IntPoint in local coordinate and convert that to screen coordinate
3820
3821 2007-04-30  Justin Garcia  <justin.garcia@apple.com>
3822
3823         Reviewed by harrison
3824
3825         <rdar://problem/5157329> 
3826         REGRESSION: Crash at WTF::fastFree() when arrowing or deleting backward through editable text (13493)
3827         
3828         Backing out the changes for 4859132.
3829
3830         * editing/Editor.h:
3831         * editing/mac/EditorMac.mm:
3832         (WebCore::Editor::markMisspellingsAfterTypingToPosition):
3833         (WebCore::Editor::markMisspellings):
3834         * page/Frame.cpp:
3835         (WebCore::Frame::respondToChangedSelection):
3836
3837 2007-04-29  Antti Koivisto  <antti@apple.com>
3838
3839         Reviewed by Oliver.
3840
3841         Fix <rdar://problem/5169261>
3842         REGRESSION: Google Maps zooming too sensitive when using two fingers on trackpad
3843         
3844         Use line based delta values when generating DOM wheel events, use pixel deltas
3845         for scrolling only.
3846         
3847         No test case, requires user interaction and specific hardware.
3848
3849         * page/EventHandler.cpp:
3850         (WebCore::EventHandler::handleWheelEvent):
3851         * platform/PlatformWheelEvent.h:
3852         (WebCore::PlatformWheelEvent::continuousDeltaX):
3853         (WebCore::PlatformWheelEvent::continuousDeltaY):
3854         * platform/mac/WheelEventMac.mm:
3855         (WebCore::PlatformWheelEvent::PlatformWheelEvent):
3856
3857 2007-04-29  Oliver Hunt  <oliver@apple.com>
3858
3859         Reviewed by Brady.
3860
3861         Build fix for experimental features build
3862
3863         * rendering/RenderForeignObject.cpp:
3864
3865 2007-04-29  Mitz Pettel  <mitz@webkit.org>
3866
3867         Reviewed by Dave Hyatt.
3868
3869         - fix http://bugs.webkit.org/show_bug.cgi?id=13544
3870           REGRESSION (r21120): Member profile frame not erased at Yahoo! Answers
3871
3872         Test: fast/repaint/layer-hide-when-needs-layout.html
3873
3874         * rendering/RenderObject.cpp:
3875         (WebCore::RenderObject::setStyle): If we get a layout hint, we count on
3876         layout() or updateLayerPositions() to repaint. In the case of a layer
3877         going invisible, however, we need to repaint here since neither of the
3878         above will do it.
3879
3880 2007-04-29  Oliver Hunt  <oliver@apple.com>
3881
3882         Reviewed by Steve.
3883
3884         Fix for <rdar://problem/5126393> REGRESSION (r19672-19697): Safari drag image drags at original size (13261)
3885
3886         Added logic to ensure that when we create the drag image
3887         we're looking at the rendered image size.
3888
3889         * page/DragController.cpp:
3890         (WebCore::DragController::doImageDrag):
3891           Pass the rendered image size to fitDragImageToMaxSize
3892
3893         * platform/DragImage.cpp:
3894         (WebCore::fitDragImageToMaxSize):
3895            Need to do scaling relative to rendered image size
3896
3897         * platform/DragImage.h:
3898            scaleDragImage needs x and y scales to allow for them to be
3899            scaled seperately on a page
3900
3901         * platform/gdk/DragImageGdk.cpp:
3902         (WebCore::scaleDragImage):
3903            Prevent build bustage
3904
3905         * platform/mac/DragImageMac.mm:
3906         (WebCore::scaleDragImage):
3907            scale width and height independently
3908
3909         * platform/qt/DragImageQt.cpp:
3910         (WebCore::scaleDragImage):
3911            Prevent build bustage
3912
3913 2007-04-29  Darin Adler  <darin@apple.com>
3914
3915         Reviewed by Adele.
3916
3917         - fix the Gmail part of http://bugs.webkit.org/show_bug.cgi?id=12798
3918           and <rdar://problem/4118559>
3919
3920         This patch changes things so that resizing can make things larger than their
3921         initial size, but not smaller. I believe this resolves the problem for Gmail,
3922         but you can still get strange behavior if you have a small right-aligned <textarea>.
3923
3924         * rendering/RenderLayer.cpp:
3925         (WebCore::RenderLayer::resize): Rewrote to use more IntPoint and IntSize and add
3926         in a new minimum-size algorithm. This function now has the side effect of storing
3927         a new minimumSizeForResizing in the element being resized, and respects any existing
3928         minimum as well.
3929         (WebCore::RenderLayer::offsetFromResizeCorner): Reversed this so it converts the
3930         point into coordinates relative to the resize corner, hence negative numbers mean
3931         the point is above and to the left. This is used only in the algorithm above.
3932
3933         * dom/Element.h: Removed unneeded include of Attr.h, and added forward declarations
3934         as needed. Removed all friend declarations; there was no need for any of them.
3935         Tweaked formatting of various declarations and removed unneeded parameter names.
3936         Made as much as possible private, and a couple things public to avoid the need for
3937         friend classes. Added minimumSizeForResizing, setMinimumSizeForResizing, rareData,
3938         and createRareData functions.
3939
3940         * dom/Element.cpp:
3941         (WebCore::rareDataMap): Added. Function to return the single global map.
3942         (WebCore::rareDataFromMap): Added. For use by inlined functions to get the
3943         data from the map in the case where it's present.
3944         (WebCore::ElementRareData::ElementRareData): Added.
3945         (WebCore::Element::~Element): Added code to delete the element from the rare
3946         data map when appropriate.
3947         (WebCore::Element::rareData): Added.
3948         (WebCore::Element::createRareData): Added.
3949         (WebCore::Element::setAttributeNodeNS): Got rid of the old inline version of this,
3950         since it was the sole reason we had to include Attr.h in Element.h.
3951         (WebCore::Element::minimumSizeForResizing): Added. Accesses rare data.
3952         (WebCore::Element::setMinimumSizeForResizing): Ditto.
3953
3954         * dom/Node.h: Renamed the m_specified bit since it's now used for two purposes.
3955         Its new long name is m_attrWasSpecifiedOrElementHasRareData.
3956
3957         * dom/Attr.cpp: (WebCore::Attr::Attr): Updated for bit name change.
3958         * dom/Attr.h:
3959         (WebCore::Attr::specified): Ditto.
3960         (WebCore::Attr::setSpecified): Added, since setting the bit directly is pretty ugly now.
3961         * dom/Document.cpp: (WebCore::Document::adoptNode): Updated for bit name change.
3962         * dom/Node.cpp:
3963         (WebCore::Node::Node): Ditto.
3964         (WebCore::Node::dump): Ditto.
3965
3966         * dom/NamedAttrMap.cpp: (WebCore::NamedAttrMap::isReadOnlyNode): Moved out of line,
3967         since this was the sole reason we had to include Element.h in NamedAttrMap.h.
3968
3969         * html/HTMLElement.cpp:
3970         (WebCore::HTMLElement::nodeName): Changed to use tagQName() since that's a public
3971         way to do something that's now private.
3972         (WebCore::HTMLElement::cloneNode): Ditto.
3973
3974         * dom/Attribute.cpp:
3975         * dom/NamedAttrMap.h:
3976         * dom/NamedMappedAttrMap.cpp:
3977         * dom/StyledElement.h:
3978         * html/HTMLTokenizer.h:
3979         * xml/XPathFunctions.cpp:
3980         * xml/XPathStep.cpp:
3981         Updated includes, and other administrivia.
3982
3983 2007-04-29  Mitz Pettel  <mitz@webkit.org>
3984
3985         Reviewed by Darin and Hyatt.
3986
3987         - http://bugs.webkit.org/show_bug.cgi?id=13487
3988           Implement O(1) absoluteClippedOverflowRect and absoluteOutlineBox during layout for a possible speed gain
3989
3990         Test for a bug fixed by this patch: fast/repaint/intermediate-layout-position-clip.html
3991
3992         By keeping track of the total translation and clip during layout, absolutePosition and
3993         computeAbsoluteRepaintRect become O(1).
3994
3995         * WebCore.pro: Added LayoutState.cpp
3996         * WebCore.vcproj/WebCore/WebCore.vcproj: Added LayoutState.{cpp,h}
3997         * WebCore.xcodeproj/project.pbxproj: Added LayoutState.{cpp,h}
3998         * WebCoreSources.bkl: Added LayoutState.cpp
3999         * page/FrameView.cpp:
4000         (WebCore::FrameView::layout): When doing subtree layout, push an initial layout state for the
4001         layout root.
4002         * rendering/LayoutState.cpp: Added. A LayoutState corresponding to a box consists of the origin of
4003         its coordinate system in view coordinates and possibly the clip rect, in view coordinates, which
4004         applies to its children.
4005         (WebCore::LayoutState::LayoutState):
4006         (WebCore::LayoutState::destroy):
4007         (WebCore::throw):
4008         (WebCore::LayoutState::operator delete):
4009         * rendering/LayoutState.h: Added.
4010         (WebCore::LayoutState::LayoutState):
4011         * rendering/RenderBlock.cpp:
4012         (WebCore::RenderBlock::layoutBlock): Factored out the "only positioned objects" case into
4013         layoutOnlyPositionedObjects(). Added code to push/pop LayoutState, unless we have columns, in
4014         which case we disable/enable LayoutState. Removed the translation by the layout delta
4015         of the old absolute rects, since that is now integral to absoluteClippedOverflowRect() and
4016         absoluteOutlineBox().
4017         (WebCore::RenderBlock::layoutOnlyPositionedObjects): Added this helper function that checks for
4018         and handles the case where only positioned objects need layout. Returns true in that case.
4019         (WebCore::RenderBlock::repaintOverhangingFloats): Disabled LayoutState when repainting floats, since
4020         they may belong to other containers.
4021         (WebCore::RenderBlock::updateFirstLetter): Disabled LayoutState when adding and removing from the
4022         first letter container, since it may be different than ourselves.
4023         * rendering/RenderBlock.h:
4024         * rendering/RenderBox.cpp:
4025         (WebCore::RenderBox::setStyle): Minor cleanup: changed element()->document() to the equivalent document().
4026         (WebCore::RenderBox::offsetForPositionedInContainer): Added. Factored out common code from
4027         absolutePosition, computeAbsoluteRepaintRect and RenderLayer::updateLayerPosition into this function.
4028         (WebCore::RenderBox::absolutePosition): Added an O(1) code path when this function is called during
4029         layout (and LayoutState has not been disabled). Factored out some code into
4030         offsetForPositionedInContainer.
4031         (WebCore::RenderBox::absoluteClippedOverflowRect): Added the layout delta here, so callers don't need
4032         to.
4033         (WebCore::RenderBox::computeAbsoluteRepaintRect): Added an O(1) code path when this function is called
4034         during layout (and LayoutState has not been disabled). Factored out some code into
4035         offsetForPositionedInContainer.
4036         * rendering/RenderContainer.cpp:
4037         (WebCore::RenderContainer::layout): Added LayoutState push/pop.
4038         * rendering/RenderFlexibleBox.cpp:
4039         (WebCore::RenderFlexibleBox::layoutBlock): Factored out the "only positioned objects" case into
4040         layoutOnlyPositionedObjects(). Added LayoutState push/pop. Removed the translation by the layout delta
4041         of the old absolute rects, since that is now integral to absoluteClippedOverflowRect() and
4042         absoluteOutlineBox().
4043         * rendering/RenderFlow.cpp:
4044         (WebCore::RenderFlow::absoluteClippedOverflowRect): Added an ASSERT.
4045         * rendering/RenderForeignObject.cpp:
4046         (WebCore::RenderForeignObject::layout): Disabled LayoutState because it is incompatible with arbitrary
4047         affine transforms.
4048         * rendering/RenderHTMLCanvas.cpp:
4049         (WebCore::RenderHTMLCanvas::layout): Removed the translation by the layout delta of the old absolute
4050         rects, since that is now integral to absoluteClippedOverflowRect() and absoluteOutlineBox().
4051         * rendering/RenderImage.cpp:
4052         (WebCore::RenderImage::layout): Ditto.
4053         * rendering/RenderLayer.cpp:
4054         (WebCore::RenderLayer::updateLayerPositions): Added ASSERTs. Factored out some code into
4055         RenderBox::offsetForPositionedInContainer.
4056         (WebCore::RenderLayer::updateScrollInfoAfterLayout): Disabled LayoutState around the call to
4057         scrollToOffset.
4058         * rendering/RenderListItem.cpp:
4059         (WebCore::RenderListItem::updateMarkerLocation): Disabled LayoutState when moving the list marker, since
4060         it can trigger repainting in other containers.
4061         * rendering/RenderObject.cpp:
4062         (WebCore::RenderObject::isRoot): Minor cleanup: changed element()->document() to the equivalent
4063         document().
4064         (WebCore::RenderObject::computeAbsoluteRepaintRect): Removed 'return' at the end of the function.
4065         (WebCore::RenderObject::container): Reordered to avoid calling isText() twice.
4066         (WebCore::RenderObject::absoluteOutlineBox): Added the layout delta here, so callers don't need to.
4067         * rendering/RenderSVGContainer.cpp:
4068         (WebCore::RenderSVGContainer::layout): Disabled LayoutState because it is incompatible with arbitrary
4069         affine transforms.
4070         * rendering/RenderTable.cpp:
4071         (WebCore::RenderTable::layout):  Factored out the "only positioned objects" case into
4072         layoutOnlyPositionedObjects(). Added LayoutState push/pop. Removed the translation by the layout delta
4073         of the old absolute rects, since that is now integral to absoluteClippedOverflowRect() and
4074         absoluteOutlineBox().
4075         * rendering/RenderTableCell.cpp:
4076         (WebCore::RenderTableCell::absoluteClippedOverflowRect): Added the layout delta here, so callers
4077         don't need to.
4078         (WebCore::RenderTableCell::computeAbsoluteRepaintRect): For the O(1) code path, skipped the correction
4079         for the parent row, because RenderTableRow doesn't push a translation into LayoutState.
4080         (WebCore::RenderTableCell::absolutePosition): Ditto.
4081         * rendering/RenderTableRow.cpp:
4082         (WebCore::RenderTableRow::layout): Added LayoutState push/pop.
4083         * rendering/RenderTableSection.cpp:
4084         (WebCore::RenderTableSection::setCellWidths): Added LayoutState push/pop if cells are repainted or
4085         receive layout.
4086         (WebCore::RenderTableSection::calcRowHeight): Ditto.
4087         (WebCore::RenderTableSection::layoutRows): Added LayoutState push/pop.
4088         * rendering/RenderView.cpp:
4089         (WebCore::RenderView::RenderView):
4090         (WebCore::RenderView::layout): Added initial LayoutState setup for the layout.
4091         (WebCore::RenderView::paintBoxDecorations): Minor cleanup: changed element()->document() to the
4092         equivalent document().
4093         (WebCore::RenderView::repaintViewRectangle): Ditto.
4094         (WebCore::RenderView::pushLayoutState): Added. Pushes initial layout state for subtree layout.
4095         * rendering/RenderView.h:
4096         (WebCore::RenderView::pushLayoutState):
4097         (WebCore::RenderView::popLayoutState):
4098         (WebCore::RenderView::layoutState):
4099         (WebCore::RenderView::disableLayoutState):
4100         (WebCore::RenderView::enableLayoutState):
4101
4102 2007-04-29  David Hyatt  <hyatt@apple.com>
4103
4104         Fix for bugzilla 13535, regression from positioning cleanup a while
4105         back.  Some code got added to compute available width for a relpositioned
4106         inline, only the code meant to be used for inline flows and not inline blocks.
4107
4108         Reviewed by mjs
4109
4110         fast/block/positioning/inline-block-relposition.html
4111
4112         * rendering/RenderBox.cpp:
4113         (WebCore::RenderBox::containingBlockWidthForPositioned):
4114
4115 2007-04-29  Oliver Hunt  <oliver@apple.com>
4116
4117         Reviewed by Zack.
4118
4119         Implement basic drag and drop support for qt
4120         this allows content and link dragging but does not
4121         provide the DOM data access methods.
4122
4123         * platform/DragData.h:
4124         * platform/qt/ClipboardQt.cpp:
4125         (WebCore::ClipboardQt::ClipboardQt):
4126         (WebCore::ClipboardQt::~ClipboardQt):
4127         (WebCore::ClipboardQt::clearData):
4128         (WebCore::ClipboardQt::clearAllData):
4129         (WebCore::ClipboardQt::setData):
4130         (WebCore::ClipboardQt::declareAndWriteDragImage):
4131         (WebCore::ClipboardQt::writeURL):
4132         (WebCore::ClipboardQt::writeRange):
4133         (WebCore::ClipboardQt::hasData):
4134         * platform/qt/ClipboardQt.h:
4135         (WebCore::ClipboardQt::clipboardData):
4136         (WebCore::ClipboardQt::invalidateWritableData):
4137         * platform/qt/DragDataQt.cpp:
4138         (WebCore::DragData::canSmartReplace):
4139         (WebCore::DragData::containsPlainText):
4140         (WebCore::DragData::asPlainText):
4141         (WebCore::DragData::createClipboard):
4142         (WebCore::DragData::containsCompatibleContent):
4143         (WebCore::DragData::containsURL):
4144         (WebCore::DragData::asURL):
4145         (WebCore::DragData::asFragment):
4146
4147 2007-04-28  Maciej Stachowiak  <mjs@apple.com>