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