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