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