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