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