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