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