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