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