Reviewed by Eric Seidel.
[WebKit-https.git] / WebCore / ChangeLog
1 2005-12-23  Alexey Proskuryakov  <ap@nypop.com>
2
3         Reviewed by Eric Seidel.
4
5         - fix http://bugzilla.opendarwin.org/show_bug.cgi?id=5924
6           Zero-length responses to XMLHTTPRequest mishandled
7
8         * khtml/ecma/xmlhttprequest.cpp (KJS::XMLHttpRequest::slotFinished):
9           Make sure to fetch response headers and set the state to Loaded, if
10           this hasn't been done already.
11
12 2005-12-23  Alexey Proskuryakov  <ap@nypop.com>
13
14         Reviewed by Eric Seidel.
15
16         - fix http://bugzilla.opendarwin.org/show_bug.cgi?id=3565
17           Posting data via XML HTTP Request doesnt work
18
19         * khtml/ecma/xmlhttprequest.cpp:
20         (KJS::XMLHttpRequest::send): Set application/xml as a default Content-Type;
21           use a proper codec for request body if a charset is specified.
22         (KJS::XMLHttpRequest::getRequestHeader): Use getSpecificHeader.
23         (KJS::XMLHttpRequest::getResponseHeader): Ditto.
24         (KJS::XMLHttpRequest::getSpecificHeader): Factored out code from getResponseHeader.
25         (KJS::XMLHttpRequestProtoFunc::callAsFunction): Removed a FIXME (this is done in send() now).
26         * khtml/ecma/xmlhttprequest.h:
27
28 2005-12-22  Alexey Proskuryakov  <ap@nypop.com>
29
30         Reviewed by Darin Adler.
31
32         - fix http://bugzilla.opendarwin.org/show_bug.cgi?id=6118
33         Investigate not using the frameset charset as a default for frames
34
35         * khtml/khtml_part.cpp (KHTMLPart::write):
36         Do not use the parent frame encoding as a default for sub-frames (revert
37         rdar://3100151). 
38
39 2005-12-22  Maciej Stachowiak  <mjs@apple.com>
40
41         Reviewed by Eric.
42
43         - made RefPtr<DOMStringImpl> usable as a hashtable key/value
44         - changed XSLTProcessorImpl to make use of this instead of a QDict.
45         - partially fixed broken param handling for xslt
46
47         See LayoutTests for updated test case.
48
49         * khtml/xml/dom_stringimpl.cpp:
50         * khtml/xml/dom_stringimpl.h:
51         (KXMLCore::): Set things up so you can use RefPtr<DOMStringImpl> as
52         a hashtable key (should already be usable as a value).
53         * khtml/xsl/xslt_processorimpl.cpp:
54         (DOM::xsltParamArrayFromParameterMap): Updated to use a HashMap of RefPtrs instead
55         of QDict. Also, fixed bugs that would have kept this from ever working at all.
56         (DOM::XSLTProcessorImpl::transformToString): ditto
57         (DOM::XSLTProcessorImpl::setParameter): ditto
58         (DOM::XSLTProcessorImpl::getParameter): ditto
59         (DOM::XSLTProcessorImpl::removeParameter): ditto
60         * khtml/xsl/xslt_processorimpl.h:
61
62 2005-12-21  Maciej Stachowiak  <mjs@apple.com>
63
64         Reviewed by Darin.
65
66         - update for new HashTranslator stuff
67
68         * khtml/xml/dom_atomicstring.cpp:
69         (DOM::CStringTranslator::hash):
70         (DOM::CStringTranslator::equal):
71         (DOM::CStringTranslator::translate):
72         (DOM::AtomicString::equal):
73         (DOM::AtomicString::add):
74         (DOM::QCharBufferTranslator::hash):
75         (DOM::QCharBufferTranslator::equal):
76         (DOM::QCharBufferTranslator::translate):
77         * khtml/xml/dom_qname.cpp:
78         (DOM::QNameComponentsTranslator::hash):
79         (DOM::QNameComponentsTranslator::equal):
80         (DOM::QNameComponentsTranslator::translate):
81         (DOM::QualifiedName::QualifiedName):
82
83 2005-12-22  Adele Peterson  <adele@apple.com>
84
85         Reviewed by Darin.
86
87         Cleaned up a previous checkin by defining global const defaultForm.
88
89         * khtml/xml/dom_docimpl.cpp:
90         (DocumentImpl::radioButtonChecked):
91         (DocumentImpl::checkedRadioButtonForGroup):
92         (DocumentImpl::removeRadioButtonGroup):
93
94 2005-12-22  Adele Peterson  <adele@apple.com>
95
96         Reviewed by Tim Hatcher.
97
98         Fixed <rdar://problem/4387433> Seed: Radio buttons behave incorrectly in Gmail settings
99
100         * khtml/html/html_formimpl.cpp:
101         (DOM::HTMLFormElementImpl::registerFormElement): update radio button hash map when moving form elements around.
102         (DOM::HTMLGenericFormElementImpl::insertedIntoTree): ditto.
103         * khtml/html/html_formimpl.h:
104         (DOM::HTMLGenericFormElementImpl::isRadioButton): Added.
105         (DOM::HTMLInputElementImpl::isRadioButton): Added.
106         * khtml/xml/dom_docimpl.cpp:
107         (DocumentImpl::radioButtonChecked): 
108         Added comment explaining that we use 1 for the default form.  We can't use a null pointer as a key for the hash map.
109         (DocumentImpl::checkedRadioButtonForGroup): Added conversion of null form pointer to 1.
110         (DocumentImpl::removeRadioButtonGroup): ditto.
111
112 2005-12-22  Anders Carlsson  <andersca@mac.com>
113
114         Reviewed by Eric.
115
116         - fix http://bugzilla.opendarwin.org/show_bug.cgi?id=6196
117         Would like to be able to define prototypes in headers
118
119         * khtml/ecma/XSLTProcessor.cpp:
120         * khtml/ecma/domparser.cpp:
121         * khtml/ecma/kjs_css.cpp:
122         * khtml/ecma/kjs_dom.cpp:
123         * khtml/ecma/kjs_events.cpp:
124         * khtml/ecma/kjs_html.cpp:
125         * khtml/ecma/kjs_range.cpp:
126         * khtml/ecma/kjs_traversal.cpp:
127         * khtml/ecma/kjs_views.cpp:
128         * khtml/ecma/xmlhttprequest.cpp:
129         * khtml/ecma/xmlserializer.cpp:
130         Update for changes to JSC.
131
132 2005-12-22  Darin Adler  <darin@apple.com>
133
134         Reviewed by Eric.
135
136         - fix http://bugzilla.opendarwin.org/show_bug.cgi?id=6193
137           remove some unused KWQ code
138
139         * kcanvas/KCanvasCreator.cpp: (KCanvasCreator::self): Don't use static deleter for
140         two reasons: (1) We don't want any globals with constructors in any of our frameworks
141         because they slow down framework load time. (2) There's no need to destroy this object at
142         process termination time -- it's extra work with no benefit. Because of both these
143         reasons, our KStaticDeleter implementation was basically a no-op.
144         * ksvg2/svg/SVGDOMImplementationImpl.cpp: (SVGDOMImplementationImpl::self): Ditto.
145         * khtml/xml/dom_docimpl.cpp: (DocumentImpl::setDocumentChanged): Ditto.
146
147         * khtml/html/html_canvasimpl.cpp: Removed include of kstringhandler.h.
148         * khtml/html/html_imageimpl.cpp: Ditto.
149
150         * khtml/khtmlpart_p.h: Removed something that was in an "APPLE_CANGES" ifdef.
151
152         * ForwardingHeaders/kstaticdeleter.h: Removed.
153         * ForwardingHeaders/kstringhandler.h: Removed.
154         * kwq/KWQKStaticDeleter.h: Removed.
155         * kwq/KWQKStringHandler.h: Removed.
156         * kwq/KWQKStringHandler.mm: Removed.
157
158         * WebCore.xcodeproj/project.pbxproj: Removed files.
159
160 2005-12-22  Darin Adler  <darin@apple.com>
161
162         Reviewed by Eric.
163
164         - fix http://bugzilla.opendarwin.org/show_bug.cgi?id=6192
165           add support for non-standard &nsup; entity (implemented in other browsers)
166
167         * khtml/html/kentities.gperf: Add "nsup" to table.
168         * khtml/html/htmltokenizer.cpp: Removed old workaround for inlining issue that no
169         longer seems to be necessary; also touches the file which is important because
170         Xcode doesn't seem to understand the dependency on kentities.gperf and the need
171         to recompile.
172
173 2005-12-22  Darin Adler  <darin@apple.com>
174
175         Reviewed by Eric.
176
177         - fix http://bugzilla.opendarwin.org/show_bug.cgi?id=6167
178           RenderStyle default constructor should initialize its members for speed
179
180         * khtml/rendering/DataRef.h: (khtml::DataRef::operator=): Eliminate an extra
181         branch by doing ref before deref instead of == check.
182
183         * khtml/rendering/render_style.cpp:
184         (khtml::initDefaultStyle): Added. Function to initialize the default style
185         for use in constructor.
186         (khtml::RenderStyle::RenderStyle): Changed constructor to initalize all the
187         members with constructor syntax instead of using assignment on all of them.
188         * khtml/rendering/render_style.h: Removed static data member _default --
189         it's now a file scope global instead.
190
191 2005-12-21  Darin Adler  <darin@apple.com>
192
193         Reviewed by Justin.
194
195         - fix http://bugzilla.opendarwin.org/show_bug.cgi?id=6142
196           intermittent failures in some paste tests
197
198         * khtml/editing/apply_style_command.cpp:
199         (khtml::ApplyStyleCommand::applyBlockStyle): Call new updateLayout member function.
200         (khtml::ApplyStyleCommand::applyInlineStyle): Ditto.
201         (khtml::ApplyStyleCommand::pushDownTextDecorationStyleAtBoundaries): Ditto.
202         * khtml/editing/composite_edit_command.cpp:
203         (khtml::CompositeEditCommand::addBlockPlaceholderIfNeeded): Ditto.
204         (khtml::CompositeEditCommand::findBlockPlaceholder): Ditto.
205         (khtml::CompositeEditCommand::moveParagraphContentsToNewBlockIfNecessary): Ditto.
206         * khtml/editing/delete_selection_command.cpp:
207         (khtml::DeleteSelectionCommand::fixupWhitespace): Ditto.
208         (khtml::DeleteSelectionCommand::moveNodesAfterNode): Ditto.
209         * khtml/editing/edit_command.cpp:
210         (khtml::EditCommand::apply): Ditto.
211         (khtml::EditCommand::unapply): Ditto.
212         (khtml::EditCommand::reapply): Ditto.
213         (khtml::EditCommand::updateLayout): Added. Calls updateLayoutIgnorePendingStylesheets
214         on the document.
215         * khtml/editing/edit_command.h: Added updateLayout member function.
216         * khtml/editing/insert_line_break_command.cpp:
217         (khtml::InsertLineBreakCommand::doApply): Call new updateLayout member function.
218         * khtml/editing/insert_paragraph_separator_command.cpp:
219         (khtml::InsertParagraphSeparatorCommand::doApply): Ditto.
220         * khtml/editing/jsediting.cpp:
221         (DOM::JSEditor::execCommand): Call updateLayoutIgnorePendingStylesheets instead of updateLayout.
222         (DOM::JSEditor::queryCommandEnabled): Ditto.
223         (DOM::JSEditor::queryCommandIndeterm): Ditto.
224         (DOM::JSEditor::queryCommandState): Ditto.
225         (DOM::JSEditor::queryCommandValue): Ditto.
226         * khtml/editing/markup.cpp: (khtml::createMarkup): Ditto.
227         * khtml/editing/replace_selection_command.cpp:
228         (khtml::ReplacementFragment::insertFragmentForTestRendering): Ditto.
229         (khtml::ReplaceSelectionCommand::fixupNodeStyles): Call new updateLayout member function.
230         (khtml::ReplacementFragment::computeStylesUsingTestRendering): Call
231         updateLayoutIgnorePendingStylesheets instead of updateLayout.
232         (khtml::ReplaceSelectionCommand::doApply): Call new updateLayout member function.
233         (khtml::ReplaceSelectionCommand::removeLinePlaceholderIfNeeded): Ditto.
234         (khtml::ReplaceSelectionCommand::completeHTMLReplacement): Ditto.
235         * khtml/editing/visible_units.cpp:
236         (khtml::previousLinePosition): Call updateLayoutIgnorePendingStylesheets instead of updateLayout.
237         (khtml::nextLinePosition): Ditto.
238         * khtml/html/html_elementimpl.cpp:
239         (HTMLElementImpl::innerText): Ditto.
240         * kwq/WebCoreBridge.mm:
241         (-[WebCoreBridge setSelectedDOMRange:affinity:closeTyping:]): Ditto.
242         (-[WebCoreBridge smartDeleteRangeForProposedRange:]): Ditto.
243
244 2005-12-21  Darin Adler  <darin@apple.com>
245
246         Reviewed by Geoff.
247
248         - fix http://bugzilla.opendarwin.org/show_bug.cgi?id=6177
249           move event code from JavaScript binding into DOM implementation
250
251         * khtml/ecma/kjs_events.cpp:
252         (KJS::DOMMouseEvent::getValueProperty): Change everything to just call through instead of doing
253         the work here.
254         (KJS::DOMWheelEvent::getValueProperty): Ditto.
255
256         * khtml/xml/dom2_eventsimpl.h:
257         (DOM::MouseRelatedEventImpl::offsetX):
258         (DOM::MouseRelatedEventImpl::offsetY):
259         * khtml/xml/dom2_eventsimpl.cpp:
260         (DOM::MouseRelatedEventImpl::MouseRelatedEventImpl): Initialize new m_pageX, m_pageY, m_layerX,
261         m_layerY, m_offsetX, and m_offsetY.
262         (DOM::MouseRelatedEventImpl::computePositions): Renamed from computeLayerPos since it handles
263         page position andoffset position too now.
264         (DOM::MouseRelatedEventImpl::pageX): Added. Not in header since it's virtual.
265         (DOM::MouseRelatedEventImpl::pageY): Ditto.
266         (DOM::MouseRelatedEventImpl::x): Added, with FIXME since it should change eventually.
267         (DOM::MouseRelatedEventImpl::y): Ditto.
268         (DOM::MouseEventImpl::initMouseEvent): Call computePositions instead of computeLayerPos.
269         (DOM::MouseEventImpl::toElement): Added.
270         (DOM::MouseEventImpl::fromElement): Added.
271
272 2005-12-21  Timothy Hatcher  <timothy@apple.com>
273
274         * WebCore.xcodeproj/project.pbxproj:
275           Set tab width to 8, indent width to 4 and uses tabs to false per file.
276
277 2005-12-21  John Sullivan  <sullivan@apple.com>
278
279         Reviewed by Tim Omernick and Darin Adler.
280         
281         - fixed HiDPI problem with forms auto-fill menu width
282
283         No test cases added; this code is used for "chrome" only.
284
285         * kwq/DOMHTML.mm:
286         (-[DOMHTMLInputElement _rectOnScreen]):
287         convert entire rect to window coordinates, not just origin
288
289 2005-12-21  David Harrison  <harrison@apple.com>
290
291         Reviewed by Justin.
292
293         <rdar://problem/4039777> Pasting particular snippet of HTML containing list items and a link creates too many list items
294         - Fixed paste crash by making calling RenderBox::deleteLineBoxWrapper() from RenderObject::remove(),
295         so that the connection is broken before the InlineBox's parent gets deleted.
296         - Fixed overzealous style changes when setting the style on a specific range of elements.  These specific
297         ranges are derived programmatically, e.g. as a part of pasting, so they must be respected exactly rather
298         than modified by converting the endpoints to VisiblePositions.
299         
300         Test cases coming soon.
301
302         * khtml/editing/apply_style_command.cpp:
303         (khtml::ApplyStyleCommand::ApplyStyleCommand):
304         (khtml::ApplyStyleCommand::updateStartEnd):
305         (khtml::ApplyStyleCommand::startPosition):
306         (khtml::ApplyStyleCommand::endPosition):
307         (khtml::ApplyStyleCommand::applyBlockStyle):
308         (khtml::ApplyStyleCommand::applyRelativeFontStyleChange):
309         (khtml::ApplyStyleCommand::applyInlineStyle):
310         (khtml::ApplyStyleCommand::removeInlineStyle):
311         (khtml::ApplyStyleCommand::splitTextAtStartIfNeeded):
312         (khtml::ApplyStyleCommand::splitTextAtEndIfNeeded):
313         (khtml::ApplyStyleCommand::splitTextElementAtStartIfNeeded):
314         (khtml::ApplyStyleCommand::splitTextElementAtEndIfNeeded):
315         (khtml::ApplyStyleCommand::mergeStartWithPreviousIfIdentical):
316         (khtml::ApplyStyleCommand::mergeEndWithNextIfIdentical):
317         (khtml::ApplyStyleCommand::joinChildTextNodes):
318         * khtml/editing/apply_style_command.h:
319         * khtml/editing/composite_edit_command.cpp:
320         (khtml::CompositeEditCommand::applyStyle):
321         * khtml/editing/composite_edit_command.h:
322         * khtml/editing/insert_line_break_command.cpp:
323         (khtml::InsertLineBreakCommand::doApply):
324         * khtml/editing/replace_selection_command.cpp:
325         (khtml::ReplaceSelectionCommand::fixupNodeStyles):
326         (khtml::ReplaceSelectionCommand::completeHTMLReplacement):
327         * khtml/rendering/render_box.cpp:
328         (RenderBox::destroy):
329         (RenderBox::deleteLineBoxWrapper):
330         * khtml/rendering/render_box.h:
331         * khtml/rendering/render_list.cpp:
332         (RenderListMarker::~RenderListMarker):
333         (RenderListMarker::setStyle):
334         * khtml/rendering/render_object.cpp:
335         (RenderObject::remove):
336         * khtml/rendering/render_object.h:
337         * khtml/rendering/render_replaced.cpp:
338         (RenderWidget::destroy):
339
340 2005-12-20  Adele Peterson  <adele@apple.com>
341
342         Reviewed by Darin.
343
344         Fixed http://bugzilla.opendarwin.org/show_bug.cgi?id=5911
345         REGRESSION: Page scroll position jumps when clicking on word in editable div
346
347         I moved the scrolling code out of setFocusNode, and consolidated some of the focus code to scroll when necessary.
348
349         * khtml/html/html_formimpl.cpp: Removed HTMLButtonElementImpl::blur, HTMLButtonElementImpl::focus, HTMLInputElementImpl::blur, HTMLInputElementImpl::focus.  
350         New code in ElementImpl::focus will now handle these cases.  This allows tabbing through the elements to go through the same code path as calling focus() on an element.  
351         Before, focus() would scroll to reveal for any form elements that had a RenderWidget, but wouldn't scroll for anchor elements, or any of the new form elements.  
352         Now the behavior will be more consistent.
353         (DOM::HTMLLabelElementImpl::focus): calls ElementImpl::focus.
354         (DOM::HTMLLegendElementImpl::focus): ditto.
355         * khtml/html/html_formimpl.h:
356         * khtml/khtml_part.cpp:
357         (KHTMLPart::selectAll): calls new function selectContentsOfNode
358         (KHTMLPart::selectContentsOfNode): factored out code to selectAll for a particular node- which is useful for contenteditable elements.
359         * khtml/khtml_part.h: added selectContentsOfNode
360         * khtml/xml/dom_docimpl.cpp:
361         (DocumentImpl::setFocusNode): removed scrolling code.
362         * khtml/xml/dom_elementimpl.cpp:
363         (ElementImpl::focus): Calls updateLayout in case focus() is called before there's a renderer.
364         Makes a selection for editable elements (right now we select all, but this will change).
365         Doesn't scroll if the renderer is a RenderWidget, since that is handled when the view becomes first responder.  This will go away when we convert the rest of our form elements.
366         * kwq/KWQKHTMLPart.mm:
367         (KWQKHTMLPart::revealSelection): Made this more like centerSelectionInVisibleArea  where we get the right rectangle if the selection is a caret.
368         (KWQKHTMLPart::nextKeyViewInFrame): call ElementImpl::focus() for the node.  This will set the selection too, which used to be done here.
369
370 2005-12-20  Alexey Proskuryakov  <ap@nypop.com>
371
372         Reviewed by justin
373         
374         <http://bugzilla.opendarwin.org/show_bug.cgi?id=4682>
375         -[WebHTMLView firstRectForCharacterRange:] is using _selectedRange instead of the given range if no marked text
376
377         Added layout tests:
378         * editing/input/firstrectforcharacterrange-styled
379         * editing/input/firstrectforcharacterrange-plain
380
381         * khtml/editing/visible_text.cpp:
382         (khtml::TextIterator::rangeFromLocationAndLength): 
383         Return null if the range isn't found, instead of a startless/endless 
384         range.  Set the end if the requested location+length is out of bounds.
385         * kwq/WebCoreBridge.mm:
386         (-[WebCoreBridge convertToDOMRange:]): Handle larged unsigned values 
387         before calling rangeWithLocationAndLength, which expects signed ints.
388
389 2005-12-20  Adele Peterson  <adele@apple.com>
390
391         Reviewed by Darin.
392
393         Fix for <rdar://problem/4387630> REGRESSION: <select> element's onClick event doesn't fire @ bugweb.apple.com
394
395         * kwq/KWQKHTMLPart.mm:
396         (KWQKHTMLPart::passSubframeEventToSubframe): only pass mouse down for khtmlviews.
397
398 2005-12-20  Justin Garcia  <justin.garcia@apple.com>
399
400         Reviewed by eric, thatcher
401         
402         <rdar://problem/4172984> KWQExceptions needs to use @try/@catch instead of relying on NSException.h internals
403         
404         Needed to undef try/catch because of 4333439.  Moved the 
405         declarations of variables that are returned from within a @try 
406         block outside the @try block (because of "might be clobbered by 
407         a longjmp or vfork" warnings).  Moved some return statements
408         inside the @try block to fix volatilization errors with gcc4.
409
410         * WebCore.xcodeproj/project.pbxproj:
411         * WebCorePrefix.h:
412         * kcanvas/device/quartz/KCanvasFilterQuartz.mm:
413         (KCanvasFEBlendQuartz::getCIFilter):
414         (KCanvasFEColorMatrixQuartz::getCIFilter):
415         (KCanvasFECompositeQuartz::getCIFilter):
416         (getPointLightVectors):
417         (getLightVectors):
418         (getNormalMap):
419         (KCanvasFEDiffuseLightingQuartz::getCIFilter):
420         (KCanvasFEFloodQuartz::getCIFilter):
421         (KCanvasFEImageQuartz::getCIFilter):
422         (KCanvasFEMergeQuartz::getCIFilter):
423         (KCanvasFESpecularLightingQuartz::getCIFilter):
424         * kwq/KWQExceptions.h:
425         * kwq/KWQExceptions.mm:
426         (KWQReportBlockedException):
427         * kwq/KWQFileButton.mm:
428         (KWQFileButton::sizeForCharacterWidth):
429         (KWQFileButton::frameGeometry):
430         * kwq/KWQKCursor.mm:
431         (+[NSCursor _WebCore_cursorWithName:hotSpot:_WebCore_cursorWithName:hotSpot:]):
432         * kwq/KWQKHTMLPart.mm:
433         (KWQKHTMLPart::createPart):
434         (KWQKHTMLPart::nextKeyView):
435         (KWQKHTMLPart::runJavaScriptPrompt):
436         (KWQKHTMLPart::keyEvent):
437         (KWQKHTMLPart::sendContextMenuEvent):
438         (KWQKHTMLPart::fileWrapperForElement):
439         (KWQKHTMLPart::attributedString):
440         (KWQKHTMLPart::imageFromRect):
441         * kwq/KWQKHTMLPartBrowserExtension.mm:
442         * kwq/KWQLineEdit.mm:
443         (QLineEdit::sizeForCharacterWidth):
444         * kwq/KWQListBox.mm:
445         (QListBox::sizeForNumberOfLines):
446         * kwq/KWQLoader.mm:
447         (KWQCheckCacheObjectStatus):
448         * kwq/KWQWidget.mm:
449         (QWidget::frameGeometry):
450         (QWidget::mapFromGlobal):
451
452 2005-12-20  David Harrison  <harrison@apple.com>
453
454         <rdar://problem/4294417> Cannot un-italicize some text after triple clicking it
455
456         Reviewed by Justin.
457
458         * khtml/editing/apply_style_command.cpp:
459         (khtml::ApplyStyleCommand::addInlineStyleIfNeeded):
460         Removed check for tab span because ApplyStyleCommand::removeCSSStyle() already makes the same check.
461
462 2005-12-20  Justin Garcia  <justin.garcia@apple.com>
463
464         <rdar://problem/4387270> editing/deleting/delete-3800834-fix failing
465         <http://bugzilla.opendarwin.org/show_bug.cgi?id=6160> REGRESSION: Crash when running editing/deleting/delete-3800834-fix.html
466         <http://bugzilla.opendarwin.org/show_bug.cgi?id=6161> REGRESSION: crash when pressing tab in editable WebHTMLView
467
468         Reviewed by darin
469     
470         Some callers call setAttribute on a floating element.  So, using 
471         a RefPtr for the element inside addAttribute can destroy
472         it.
473
474         * khtml/xml/dom_elementimpl.cpp:
475         (NamedAttrMapImpl::addAttribute):
476
477 2005-12-20  Maciej Stachowiak  <mjs@apple.com>
478
479         Reviewed by Darin.
480
481         - fixed leak in createAttributeMap
482         http://bugzilla.opendarwin.org/show_bug.cgi?id=6162
483         
484         * khtml/xml/dom_elementimpl.cpp:
485         (StyledElementImpl::createAttributeMap): the new attribute map
486         is going in a RefPtr, don't also ref it manually.
487
488 2005-12-20  Maciej Stachowiak  <mjs@apple.com>
489
490         Reviewed by Darin.
491
492         - change an assignment to a contructor declaration to build with PassRefPtr
493         leak fix changes
494
495         * ksvg2/svg/SVGTransformableImpl.cpp:
496         (SVGTransformableImpl::parseTransformAttribute):
497
498 2005-12-20  Geoffrey Garen  <ggaren@apple.com>
499
500         Reviewed by John.
501
502         Fixed <rdar://problem/4310363> JavaScript window.open: Height is 1 
503         pixel short, and related bugs.
504
505         There were a few bugs here.
506         (1) Our code took size arguments and applied them to the window's
507             content rect. That's incorrect. The Rhino book says the arguments 
508             should apply to the WebView. Other things that occupy the content 
509             rect include the tab bar, the status bar, and the 1 pixel border 
510             between brushed metal and document. All of these used to impinge 
511             on the web page's display area.
512
513             The fix is to calculate sizing based on the WebView instead of
514             the content rect. This means that the webViewContentRect and 
515             setContentRect delegate methods are obsolete and no longer called
516             by any of our code. (setContentRect was never called in the 
517             first place.)
518
519         (2) None of our sizing accounted for scaled resolutions.
520
521             The fix is to ask the WebView to scale all coordintes for us.
522
523         (3) Our code assumed that all window accoutrements were on by default.
524             Safari works that way, but other WebKit clients might not.
525
526             The fix is always to explicitly set an on/off state.
527         
528         (a) To facilitate scaling, I added a new bridge method, webView, to 
529         access the webView.
530
531         (b) For internal consistency, I changed ___Bars to ___bars in bridge 
532         methods, and ___bars to ___Bars in WinArgs data members. (Interestingly,
533         the different classes in our code are evenly divided on which format to 
534         use.)
535         
536         Added manual test:
537         * manual-tests/window-open-features.html: Added.
538         * manual-tests/resources/200x200.png: Added.
539         * manual-tests/resources/popup200x200.html: Added.
540
541         * khtml/ecma/kjs_window.cpp:
542         (KJS::showModalDialog): see (b)
543         (KJS::WindowFunc::callAsFunction): see (b)
544         * kwq/KWQKHTMLPart.mm:
545         (KWQKHTMLPart::statusbarVisible): see (b)
546         * kwq/KWQKHTMLPartBrowserExtension.mm:
547         (KHTMLPartBrowserExtension::createNewWindow):
548         At the top of this method, I just did some formatting cleanup and
549         moved the 'referrer' variable closer to where it's used.
550         The changes in the middle of the method are (3), the bottom, (2).
551         * kwq/KWQKPartsBrowserExtension.h:
552         (KParts::WindowArgs::WindowArgs): see (b)
553         * kwq/WebCoreBridge.h: see (a)
554
555 2005-12-20  Eric Seidel  <eseidel@apple.com>
556
557         Reviewed by mjs.
558
559         Leaks when running SVG tests
560         http://bugzilla.opendarwin.org/show_bug.cgi?id=6156
561         No additional tests necessary, leaks already caught by other tests.
562
563         * kcanvas/KCanvasFilters.cpp:
564         (KCanvasFEDiffuseLighting::setLightSource): takes ownership
565         (KCanvasFESpecularLighting::setLightSource): takes ownership
566         * kcanvas/KCanvasFilters.h:
567         (KCanvasFEDiffuseLighting::KCanvasFEDiffuseLighting): added
568         (KCanvasFEDiffuseLighting::~KCanvasFEDiffuseLighting): added
569         (KCanvasFEDiffuseLighting::lightSource): fixed spacing
570         (KCanvasFESpecularLighting::KCanvasFESpecularLighting): added
571         (KCanvasFESpecularLighting::~KCanvasFESpecularLighting): added
572         (KCanvasFESpecularLighting::lightSource): fixed spacing
573         * kcanvas/device/quartz/KRenderingDeviceQuartz.mm:
574         (KRenderingDeviceQuartz::stringForPath): added missing CFRelease
575
576 2005-12-20  Eric Seidel  <eseidel@apple.com>
577
578         Reviewed by darin.
579
580         Remove additional bit-rotted DEBUG* ifdefs from WebCore.
581         This removes PARSER_DEBUG, FORMS_DEBUG and CSS_STYLESHEET_DEBUG.
582         http://bugzilla.opendarwin.org/show_bug.cgi?id=5931
583         No tests possible, only removing dead code.
584
585         * khtml/css/css_stylesheetimpl.cpp:
586         (CSSStyleSheetImpl::parseString):
587         (CSSStyleSheetImpl::isLoading):
588         * khtml/html/html_formimpl.cpp:
589         (DOM::HTMLFormElementImpl::formData):
590         (DOM::HTMLFormElementImpl::submit):
591         (DOM::HTMLFormElementImpl::reset):
592         (DOM::HTMLGenericFormElementImpl::getForm):
593         * khtml/html/htmlparser.cpp:
594         (HTMLParser::processCloseTag):
595         (HTMLParser::createHead):
596
597 2005-12-20  Eric Seidel  <eseidel@apple.com>
598
599         Reviewed by darin.
600
601         Move Decoder onto Shared<T> and clients onto RefPtr.
602         http://bugzilla.opendarwin.org/show_bug.cgi?id=6107
603         No test cases possible, no functional changes.
604
605         * khtml/ecma/XSLTProcessor.cpp:
606         (KJS::XSLTProcessorProtoFunc::callAsFunction):
607         * khtml/ecma/xmlhttprequest.cpp:
608         (KJS::XMLHttpRequest::XMLHttpRequest):
609         (KJS::XMLHttpRequest::~XMLHttpRequest):
610         (KJS::XMLHttpRequest::changeState):
611         (KJS::XMLHttpRequest::abort):
612         (KJS::XMLHttpRequest::slotFinished):
613         (KJS::XMLHttpRequest::slotData):
614         * khtml/ecma/xmlhttprequest.h:
615         * khtml/khtml_part.cpp:
616         (KHTMLPart::clear):
617         (KHTMLPart::begin):
618         (KHTMLPart::write):
619         * khtml/khtmlpart_p.h:
620         (KHTMLPartPrivate::KHTMLPartPrivate):
621         * khtml/misc/decoder.cpp:
622         (Decoder::Decoder):
623         (Decoder::~Decoder):
624         * khtml/misc/decoder.h:
625         * khtml/misc/loader.h:
626         * khtml/xml/dom_docimpl.cpp:
627         (DocumentImpl::DocumentImpl):
628         (DocumentImpl::~DocumentImpl):
629         (DocumentImpl::prepareMouseEvent):
630         (DocumentImpl::setDecoder):
631         * khtml/xml/dom_docimpl.h:
632         (DOM::DocumentImpl::decoder):
633         * khtml/xsl/xslt_processorimpl.cpp:
634         (DOM::XSLTProcessorImpl::createDocumentFromSource):
635
636 2005-12-19  Darin Adler  <darin@apple.com>
637
638         Reviewed by Maciej.
639
640         - fix http://bugzilla.opendarwin.org/show_bug.cgi?id=6143
641           DOM::ElementImpl should use a RefPtr for the attribute map
642
643         * khtml/xml/dom_elementimpl.cpp:
644         (ElementImpl::ElementImpl): Remove code to initialize the pointer; not needed since
645         RefPtr gets initialized to 0.
646         (ElementImpl::~ElementImpl): Remove code to deref the pointer; RefPtr handles that.
647         (ElementImpl::attributes): Add get() call to get raw pointer.
648         (ElementImpl::setAttributeMap): Remove code to deref the old map and set the new map.
649         But added code to clear the element pointer from the old map (missing in the old
650         version). Also added a FIXME.
651         (ElementImpl::createAttributeMap): Remove ref(); RefPtr handles that.
652         (NamedAttrMapImpl::addAttribute): Use a RefPtr to guarantee the element does not go
653         away in the middle of dispatching DOM events.
654         (StyledElementImpl::attributeChanged): Clean up code by using the inline function
655         mappedAttributes() instead of doing type casts.
656         (StyledElementImpl::parseMappedAttribute): Ditto.
657         (StyledElementImpl::getClassList): Ditto.
658
659         * khtml/xml/dom_elementimpl.h: Make ElementImpl::namedAttrMap be a RefPtr instead
660         of raw pointer. Added an overload of StyledElementImpl::mappedAttributes for both
661         const and non-const.
662
663         * khtml/xml/dom_nodeimpl.cpp: (DOM::NodeImpl::addChild): Use a RefPtr to ref/deref
664         the child so that it doesn't leak.
665
666         * khtml/html/htmlparser.h: Changed isindex to use a RefPtr.
667         * khtml/html/htmlparser.cpp:
668         (HTMLParser::~HTMLParser): Removed now-unneeded ref.
669         (HTMLParser::isindexCreateErrorCheck): Remove now-unneeded deref/ref.
670         (HTMLParser::handleIsindex): Put isindex element into a RefPtr. This prevents a
671         crash that was otherwise happening during layout tests (caused indirectly by
672         the changes above).
673         (HTMLParser::startBody): Added call to get().
674
675 2005-12-19  Darin Adler  <darin@apple.com>
676
677         Reviewed by Geoff Garen and Eric Seidel.
678
679         - fix http://bugzilla.opendarwin.org/show_bug.cgi?id=4923
680           stop using <ostream> in WebCore, eliminating the <cmath> troubles it causes
681
682         * ForwardingHeaders/kxmlcore/AlwaysInline.h: Added.
683         * WebCorePrefix.h: Removed the use of <ostream>.
684
685         * kwq/KWQDef.h: Removed now-unused Q_INT64, Q_INT16, Q_UINT16, qRound, and _KWQ_IOSTREAM_.
686
687         * kwq/KWQKHTMLPart.h: Removed some unneeded headers and added forward-declarations of classes
688         instead. Corrected some incorrect member function declarations.
689         * kwq/KWQKHTMLPart.mm: Added a now-needed header.
690
691         * khtml/ecma/kjs_window.cpp: Removed the <cmath> workaround.
692         * khtml/rendering/bidi.cpp: Added include of AlwaysInline.h and removed a
693         lot of unnecessary includes.
694         * khtml/rendering/render_canvasimage.cpp: Removed the <cmath> workaround.
695         * khtml/rendering/render_image.cpp: Removed the <cmath> workaround.
696         * khtml/rendering/render_text.cpp: Added include of AlwaysInline.h and removed a
697         lot of unnecessary includes.
698
699         * ksvg2/css/SVGCSSStyleSelector.cpp: (KDOM::CSSStyleSelector::applySVGProperty):
700         * ksvg2/svg/SVGAnimateColorElementImpl.cpp: (SVGAnimateColorElementImpl::calculateColor):
701         * ksvg2/svg/SVGAnimateTransformElementImpl.cpp: (SVGAnimateTransformElementImpl::handleTimerEvent):
702         * ksvg2/svg/SVGAnimationElementImpl.cpp: (SVGAnimationElementImpl::closeRenderer):
703         * ksvg2/svg/SVGLinearGradientElementImpl.cpp: (SVGLinearGradientElementImpl::buildGradient):
704         * ksvg2/svg/SVGPatternElementImpl.cpp: (SVGPatternElementImpl::notifyAttributeChange):
705         * ksvg2/svg/SVGRadialGradientElementImpl.cpp: (SVGRadialGradientElementImpl::buildGradient):
706         Replaced use of qRound with use of lroundf or lround as appropriate.
707
708         * kwq/KWQCString.h:
709         * kwq/KWQCString.mm:
710         * kwq/KWQDateTime.h:
711         * kwq/KWQDateTime.mm:
712         * kwq/KWQMap.h:
713         * kwq/KWQMemArray.h:
714         * kwq/KWQPoint.mm:
715         * kwq/KWQPointArray.h:
716         * kwq/KWQPtrList.h:
717         * kwq/KWQPtrStack.h:
718         * kwq/KWQPtrVector.h:
719         * kwq/KWQRect.h:
720         * kwq/KWQRect.mm:
721         * kwq/KWQSize.h:
722         * kwq/KWQSize.mm:
723         * kwq/KWQValueList.h:
724         Removed _KWQ_IOSTREAM_ code that was used at one time for unit tests, but is now unneeded,
725         and requires <ostream>.
726
727 2005-12-19  Darin Adler  <darin@apple.com>
728
729         Reviewed by Geoff Garen and John Sullivan.
730
731         - fix http://bugzilla.opendarwin.org/show_bug.cgi?id=4312
732           XMLHttpRequest headers that have two CRLF sequences lead to Obj-C exception
733
734         I found this by code inspection after examining a security report about
735         vulnerabilities in other browsers' XMLHttpRequest implementations.
736
737         * kwq/KWQLoader.mm:
738         (+[NSDictionary _webcore_dictionaryWithHeaderString:_webcore_dictionaryWithHeaderString:]):
739         Check length of string before calling characterAtIndex:0 since it will fail for an empty string.
740
741 2005-12-19  Mitz Pettel  <opendarwin.org@mitzpettel.com>
742
743         Reviewed by Beth
744
745         - fix http://bugzilla.opendarwin.org/show_bug.cgi?id=6149
746           REGRESSION (WebCore-417.5): horizontal scrollbar in overflow with top
747           border doesn't receive mouse events
748
749         * khtml/rendering/render_block.cpp:
750         (khtml::RenderBlock::isPointInScrollbar):
751         Removed borderTop() from horizontal scrollbar rect computation.
752         * manual-tests/scrollbar-hittest2.html: Added.
753
754 2005-12-19  Alexey Proskuryakov  <ap@nypop.com>
755
756         Reviewed by Darin, committed by Adele.
757
758         - fix http://bugzilla.opendarwin.org/show_bug.cgi?id=5744
759           XMLHttpRequest does not apply page encoding after assigning via innerHtml
760
761         * khtml/ecma/xmlhttprequest.cpp:
762         (getMIMEType): A helper function to get MIME type from a Content-Type string.
763         (getCharset): A helper function to get charset from a Content-Type string.
764         (KJS::XMLHttpRequest::getValueProperty): Factored out responseIsXML().
765         (KJS::XMLHttpRequest::getResponseHeader): Return QString instead of JSValue
766           (to get rid of unnecessary JSLocks).
767         (KJS::XMLHttpRequest::responseIsXML): A new method that analyses Content-Type.
768         (KJS::XMLHttpRequest::slotData): Use a correct charset for responses, see bug for details.
769         (KJS::XMLHttpRequestProtoFunc::callAsFunction): Update for getResponseHeader() changes
770         * khtml/ecma/xmlhttprequest.h:
771
772 == Rolled over to ChangeLog-2005-12-19 ==