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