Reviewed by Ken and John.
[WebKit-https.git] / WebCore / ChangeLog-2005-08-23
1 05-02-07  Maciej Stachowiak  <mjs@apple.com>
2
3         Reviewed by Ken and John.
4
5         Re-fixed a specific case of the following:
6
7         <rdar://problem/3790449> REGRESSION (Mail): underline behavior is flaky because of how CSS handles text-decoration
8
9         Oddly, Cmd-B, Cmd-U, type some text, return, Cmd-U, Cmd-B, type
10         some text, worked fine. But hitting the second Cmd-B before the
11         second Cmd-U still failed to remove underlining. The reason for
12         this is that our code to compute the style of the current position
13         did not work when you had a typing style and were positioned right
14         at a <br> element. For various reasons, this did not show up for
15         bold and italic, since those are handled through the font manager.
16
17         The following change fixes this - for elements that can't have
18         children, we add the dummy span after the element of interest,
19         rather than as a child of it.
20         
21         * khtml/khtml_part.cpp:
22         (KHTMLPart::selectionComputedStyle): 
23
24 2005-02-11  David Harrison  <harrison@apple.com>
25
26         Reviewed by Darin.
27
28         <rdar://problem/3978980> Double Clicking on a line in Mail selected the entire body
29
30         * khtml/editing/visible_units.cpp:
31         (khtml::startOfWord):
32         (khtml::endOfWord):
33         Pay attention to being at the end of a paragraph.
34         
35         (khtml::previousLinePosition):
36         (khtml::nextLinePosition):
37         (khtml::endOfParagraph):
38         Use DOWNSTREAM per recent affinity changes.
39
40 2005-02-11  Richard Williamson   <rjw@apple.com>
41
42         Fixed <rdar://problem/3985118> DOM objects not being marshaled on JS->native calls
43
44         Re-factored how 'native' wrappers for JS objects are created.  The interpreter now
45         creates these wrappers.  The WebCore subclass of the interpreter now overrides
46         createLanguageInstanceForValue() and creates a DOM ObjC wrapper for DOM objects.
47
48         * WebCore.pbproj/project.pbxproj:
49         * khtml/ecma/kjs_binding.cpp:
50         (ScriptInterpreter::createLanguageInstanceForValue):
51         * khtml/ecma/kjs_binding.h:
52         * kwq/DOMUtility.mm: Added.
53         (KJS::ScriptInterpreter::createObjcInstanceForValue):
54         * kwq/KWQKHTMLPart.mm:
55         (KWQKHTMLPart::getAppletInstanceForView):
56         (getInstanceForView):
57         (KWQKHTMLPart::getEmbedInstanceForView):
58         (KWQKHTMLPart::getObjectInstanceForView):
59
60 2005-02-11  Chris Blumenberg  <cblu@apple.com>
61
62         Fixed: <rdar://problem/3937352> Quote level not maintained when copied and pasted within a Mail message
63
64         Reviewed by harrison.
65
66         * khtml/editing/markup.cpp:
67         (khtml::isMailBlockquote): new 
68         (khtml::createMarkup): retain the Mail quote level by including all ancestor mail block quotes
69         * khtml/rendering/render_block.cpp:
70         (khtml::RenderBlock::positionForCoordinates): default to downstream for the affinity since the affinity is only upstream when the cursor is clicked to the right of a wrapped line
71         * khtml/rendering/render_text.cpp:
72         (RenderText::positionForCoordinates): ditto
73
74 2005-02-11  Adele Amchan  <adele@apple.com>
75
76         Reviewed by Darin.
77
78         fix for <rdar://problem/4004004> no need to add body element for xml documents
79
80         In the fix for <rdar://problem/3758785> we decided to add a body element when closing a document 
81         to ensure that the onload handler would fire.  This is unnecessary for xml documents, 
82         so now we also check to see if we're dealing with an html document before adding the body element.
83
84         * khtml/xml/dom_docimpl.cpp: (DocumentImpl::close): 
85
86 2005-02-11  Adele Amchan  <adele@apple.com>
87
88         Reviewed by Darin.
89
90         * layout-tests/apple-only/base/www.excite.com/index-expected.txt: updates tests because of custom tag change.
91         * layout-tests/apple-only/base/www.msnbc.com/index-expected.txt:
92         * layout-tests/apple-only/base/www.time.com/index-expected.txt:
93         * layout-tests/apple-only/base/www.travelocity.com/index-expected.txt:
94         * layout-tests/apple-only/base/www.zdnet.com/index-expected.txt:
95         * layout-tests/fast/overflow/003-expected.txt:
96
97         * layout-tests/fast/js/window-object-cross-frame-calls-expected.txt: updated test because of added Body (see rdar://problem/3758785)
98
99 === Safari-186 ===
100
101 2005-02-11  Darin Adler  <darin@apple.com>
102
103         Reviewed by John.
104
105         - fixed <rdar://problem/3915449> paths are relative to the old src URL after document.open, which is supposed to clear the document, including the URL
106
107         * khtml/xml/dom_docimpl.h: Added a new openInternal function for use by KHTMLPart.
108         * khtml/xml/dom_docimpl.cpp:
109         (DocumentImpl::open): Changed to do everything we did before, but also clear the URL and set the
110         base URL based on the enclosing document. This is the basic JavaScript/DOM operation of opening a
111         document, which is supposed to clear the document, including the URL. In the long run we might want
112         to do even more document "resetting and clearing" in here, but this URL clearing is what's needed
113         now to fix the most important problem.
114         (DocumentImpl::openInternal): Moved the old open code in here, except for the "parsing" check, which
115         is unnecessary and inappropriate in the one place we call this.
116
117         * khtml/khtml_part.cpp: (KHTMLPart::begin): Call openInternal instead of open.
118
119 2005-02-10  Ken Kocienda  <kocienda@apple.com>
120
121         Reviewed by Hyatt
122
123         Fix for this bug:
124         
125         <rdar://problem/3992092> 8A374: Mail crash while pasting - RemoveNodeCommand
126
127         * khtml/editing/htmlediting.cpp:
128         (khtml::ReplaceSelectionCommand::doApply): Code tried to remove a node that was no longer in 
129         the document. We try to do a good job of detecting all these cases, and generally do. This
130         one was missed. Fixed.
131
132 2005-02-10  Darin Adler  <darin@apple.com>
133
134         Reviewed by Harrison.
135
136         - added support needed to fix <rdar://problem/3991225> Format->Style->Underline menu item does not get checked when selected text is underlined
137
138         * kwq/WebCoreBridge.h: Added selectionHasStyle: method.
139         * kwq/WebCoreBridge.mm: (-[WebCoreBridge selectionHasStyle:]): Added. Calls selectionHasStyle on the part.
140
141 2005-02-10  Darin Adler  <darin@apple.com>
142
143         Reviewed by Harrison.
144
145         - fixed <rdar://problem/3990484> cursor changes to I-beam when moving over text in widgets, even when selection off via CSS
146
147         * khtml/khtmlview.cpp: (KHTMLView::viewportMouseMoveEvent): Changed code to check canSelect when deciding
148         whether to show an I-beam cursor.
149
150         * khtml/rendering/render_object.h: Added canSelect.
151         * khtml/rendering/render_object.cpp:
152         (selectStartNode): Added. Helper function with the guts of shouldSelect.
153         (RenderObject::canSelect): Added. Like shouldSelect, but does not call the "start selecting" event handler.
154         (RenderObject::shouldSelect): Refactored to use selectStartNode.
155
156         * khtml/css/cssvalues.c: Regnerated with newer gperf.
157
158 2005-02-10  David Hyatt  <hyatt@apple.com>
159
160         Fix for 3867759, .mac regression where scrollers don't show up.  Make sure you can set the .width and
161         .height properties on the Image object.
162         
163         Reviewed by John Sullivan
164
165         * khtml/ecma/kjs_html.cpp:
166         (ImageConstructorImp::construct):
167         (Image::getValueProperty):
168         (Image::putValue):
169         (Image::Image):
170         * khtml/ecma/kjs_html.h:
171
172 2005-02-10  Ken Kocienda  <kocienda@apple.com>
173
174         Reviewed by Chris
175
176         Fix for this bug:
177         
178         <rdar://problem/3965158> Drag-n-drop within a rich text message sometimes changes the color of the dragged text
179         
180         This change fixes the bug....and much more. Now, for the first time, the paste code can do "smart merging"
181         or "smooshing" of styles during its operation. Since this new code is actively, rather than passively
182         working with styles, it fixes the bug, and lays the groundwork for similar work we need to do to
183         preserve quote levels in Mail.
184
185         * khtml/css/css_valueimpl.cpp:
186         (DOM::CSSMutableStyleDeclarationImpl::clear): New method.
187         (DOM::CSSMutableStyleDeclarationImpl::removeBlockProperties): Ditto.
188         (DOM::CSSMutableStyleDeclarationImpl::removePropertiesInSet): Ditto.
189         (DOM::operator==): Add operator for CSSProperty.
190         * khtml/css/css_valueimpl.h: Declare new functions.
191         * khtml/editing/htmlediting.cpp:
192         (khtml::isEmptyStyleSpan): Improved the test in this function, rolling together the old implementation
193         with some code that did this work inline elsewhere. Sum of the parts is better than either test was by itself.
194         (khtml::isStyleSpan): Check for ID_SPAN.
195         (khtml::ApplyStyleCommand::removeCSSStyle): Call isEmptyStyleSpan. This was the place with an inline implementation before.
196         (khtml::ReplacementFragment::ReplacementFragment): Now takes a DocumentImpl argument. No longer does a "default style"
197         check, but rather calls functions which do a similar check to that, and much more.
198         (khtml::ReplacementFragment::~ReplacementFragment): Deref document, and computed styles.
199         (khtml::ReplacementFragment::styleForNode): New helper. Looks up and returns computed style for a node.
200         (khtml::ReplacementFragment::removeNodePreservingChildren): New helper.
201         (khtml::ReplacementFragment::computeStylesForNodes): New function which computes the "desired" style for
202         every node in the fragment. This information is used later after paste is done as a reference for testing
203         what styles need to be added, and which can be removed as redundant, from all the nodes inserted by the
204         replacement code.
205         (khtml::ReplacementFragment::removeStyleNodes): Clears out all style nodes from the fragment. They are
206         no longer needed after the call to computeStylesForNodes(),
207         (khtml::ReplaceSelectionCommand::ReplaceSelectionCommand): Add a document to the call to initialize the
208         command's ReplacementFragment.
209         (khtml::ReplaceSelectionCommand::doApply): Call applyStyleToInsertedNodes() after inserting nodes to make
210         styles come out right.
211         (khtml::ReplaceSelectionCommand::applyStyleToInsertedNodes): This is the "style smooshing" function. It 
212         computes the styles that need to be added to each node inserted, comparing the style it gets from just
213         being inserted into its correct destination with the computed "desired style" done in the 
214         ReplacementFragment constructor. It then adds in all the necessary styles, and will also remove redundant styles.
215         * khtml/editing/htmlediting.h: Update declarations and member variables as needed.
216         * khtml/editing/markup.cpp:
217         (khtml::startMarkup): Add additional style annotations to the markup we generate, so that paste code can preserve it.
218         (khtml::markup): Ditto.
219         (khtml::createMarkup): Ditto.
220         
221         These test results are subtly better with this change. They no longer have an unneeded empty span.
222         Visually the same as before.
223         
224         * layout-tests/editing/style/remove-underline-across-paragraph-expected.txt
225         * layout-tests/editing/style/remove-underline-across-paragraph-in-bold-expected.txt
226         * layout-tests/editing/style/remove-underline-expected.txt
227         * layout-tests/editing/style/remove-underline-from-stylesheet-expected.txt
228
229         New tests:
230
231         * layout-tests/editing/style/smoosh-styles-001-expected.txt
232         * layout-tests/editing/style/smoosh-styles-002-expected.txt
233         * layout-tests/editing/style/smoosh-styles-001.html
234         * layout-tests/editing/style/smoosh-styles-002.html
235
236 2005-02-10  Darin Adler  <darin@apple.com>
237
238         Reviewed by Adele.
239
240         - fixed <rdar://problem/3974988> WebHTMLView drops scroll wheel events when deltas are 0
241
242         * kwq/WebCoreScrollView.m: (-[WebCoreScrollView autoforwardsScrollWheelEvents]): Added, for Tiger only.
243         For Tiger, removed the override of scrollWheel:, which doesn't work quite right because of how the
244         delta attributes return all 0 for newfangled scrolling events from the new trackpads.
245
246 2005-02-10  David Harrison  <harrison@apple.com>
247
248         Reviewed by Darin.
249
250         <rdar://problem/3991532> REGRESSION (Mail): Triple-click on trailing blank line should select previous line but doesn't
251
252         * khtml/css/cssvalues.c:
253         (hash_val):
254         (findValue):
255         * khtml/editing/selection.cpp:
256         (khtml::Selection::validate):
257         Do moral equiavalent of LeftWordIfOnBoundary for PARAGRAPH.
258
259 2005-02-10  David Harrison  <harrison@apple.com>
260
261         Reviewed by Darin.
262
263         <rdar://problem/3991848> Double-click on first character selects wrong item
264
265         * khtml/editing/selection.cpp:
266         (khtml::Selection::validate):
267         Honor the fact that clicking on a character positions the cursor on the left side of the character.
268
269 2005-02-10  David Hyatt  <hyatt@apple.com>
270
271         Fix for 3980778, repro crash in RootInlineBox::paint.  Make sure that when merging blocks we dirty them for layout
272         up front. That way as we do the merge, we dont attempt to examine the lines in dirtyLinesForChangedChild.
273         
274         Reviewed by mjs
275
276         * khtml/rendering/render_block.cpp:
277         (khtml::RenderBlock::removeChild):
278
279 2005-02-10  David Hyatt  <hyatt@apple.com>
280
281         Fix for 3987010, fix a bug that caused the self-collapsing-block-cleared-float bit to never get set correctly.
282         
283         Reviewed by mjs
284
285         * khtml/rendering/render_block.h:
286         (khtml::RenderBlock::MarginInfo::setSelfCollapsingBlockClearedFloat):
287
288 2005-02-10  David Hyatt  <hyatt@apple.com>
289
290         Fix  for 3992440, text not wrapping correctly on half moon bay web site.  Refine an incorrect optimization I
291         added to be less restrictive.
292         
293         Reviewed by mjs
294
295         * khtml/rendering/render_block.cpp:
296         (khtml::RenderBlock::layoutBlockChildren):
297
298 2005-02-08  Maciej Stachowiak  <mjs@apple.com>
299
300         Reviewed by Darin.
301
302         <rdar://problem/3977973> pages on ebay leak referenced JavaScript objects -- over time browsing becomes super-slow
303
304         I fixed this by removing all event listeners for a document, it's
305         children, and any disconnected nodes that used to be in the
306         document at document detach time. Mozilla temporarily disables
307         event listeners on such nodes, but re-enables them if you
308         re-parant a node into a new document. However, in WebCore, you
309         can't re-parent a node into another document, so there is no
310         observable change in behavior.
311
312         We have to do this to break the possible reference cycles between
313         event listeners and the dom nodes they are attached to (e.g. via
314         scope chain, as in this case).
315
316         * khtml/xml/dom_docimpl.cpp:
317         (DocumentImpl::detach):
318         (DocumentImpl::removeAllEventListenersFromAllNodesx):
319         (DocumentImpl::registerDisconnectedNodeWithEventListeners):
320         (DocumentImpl::unregisterDisconnectedNodeWithEventListeners):
321         (DocumentImpl::removeAllDisconnectedNodeEventListeners):
322         * khtml/xml/dom_docimpl.h:
323         * khtml/xml/dom_nodeimpl.cpp:
324         (NodeImpl::~NodeImpl):
325         (NodeImpl::addEventListener):
326         (NodeImpl::removeEventListener):
327         (NodeImpl::removeAllEventListeners):
328         (NodeImpl::removeHTMLEventListener):
329         (NodeImpl::insertedIntoDocument):
330         (NodeImpl::removedFromDocument):
331         * khtml/xml/dom_nodeimpl.h:
332
333 2005-02-09  Chris Blumenberg  <cblu@apple.com>
334
335         Fixed: <rdar://problem/3999213> Sometimes 2 Windows Media Player plugin instances are loaded
336
337         Reviewed by hyatt.
338
339         * khtml/html/html_objectimpl.cpp:
340         (HTMLObjectElementImpl::attach): Set needWidgetUpdate to false before calling updateWidget because updateWidget may cause this method or another method (which also calls updateWidget) to be called.
341         (HTMLObjectElementImpl::recalcStyle): ditto
342
343 2005-02-09  David Harrison  <harrison@apple.com>
344
345         Reviewed by Darin.
346         
347         <rdar://problem/3937447> Mail-689: Arrow key navigation in new message body stops working when a line ends with a bold word
348         
349         Added affinity to VisiblePosition.  Changed Selection code to use affinity more.
350         
351         (Partial) <rdar://problem/3982096> editing/pasteboard/paste-text-007 is failing
352         
353         Changed ReplaceSelectionCommand to also pay attention to the top children of the incoming fragment, not just the very last node inserted, when deciding whether to insert a paragraph for the Apple interchange newline.
354
355         * khtml/ecma/kjs_window.cpp:
356         (SelectionFunc::tryCall):
357         * khtml/editing/htmlediting.cpp:
358         (khtml::EditCommandPtr::setStartingSelection):
359         (khtml::EditCommandPtr::setEndingSelection):
360         (khtml::EditCommand::setStartingSelection):
361         (khtml::EditCommand::setEndingSelection):
362         (khtml::CompositeEditCommand::deleteInsignificantTextDownstream):
363         (khtml::CompositeEditCommand::moveParagraphContentsToNewBlockIfNecessary):
364         (khtml::ApplyStyleCommand::splitTextAtStartIfNeeded):
365         (khtml::ApplyStyleCommand::splitTextAtEndIfNeeded):
366         (khtml::ApplyStyleCommand::splitTextElementAtStartIfNeeded):
367         (khtml::ApplyStyleCommand::splitTextElementAtEndIfNeeded):
368         (khtml::ApplyStyleCommand::mergeStartWithPreviousIfIdentical):
369         (khtml::ApplyStyleCommand::mergeEndWithNextIfIdentical):
370         (khtml::ApplyStyleCommand::joinChildTextNodes):
371         (khtml::DeleteSelectionCommand::initializePositionData):
372         (khtml::DeleteSelectionCommand::handleGeneralDelete):
373         (khtml::DeleteSelectionCommand::calculateTypingStyleAfterDelete):
374         (khtml::DeleteSelectionCommand::doApply):
375         (khtml::InsertLineBreakCommand::doApply):
376         (khtml::InsertParagraphSeparatorCommand::doApply):
377         (khtml::InsertParagraphSeparatorInQuotedContentCommand::doApply):
378         (khtml::InsertTextCommand::input):
379         (khtml::MoveSelectionCommand::doApply):
380         (khtml::ReplaceSelectionCommand::ReplaceSelectionCommand):
381         (khtml::ReplaceSelectionCommand::~ReplaceSelectionCommand):
382         (khtml::ReplaceSelectionCommand::doApply):
383         (khtml::ReplaceSelectionCommand::completeHTMLReplacement):
384         (khtml::ReplaceSelectionCommand::updateNodesInserted):
385         (khtml::TypingCommand::deleteKeyPressed):
386         (khtml::TypingCommand::forwardDeleteKeyPressed):
387         (khtml::TypingCommand::markMisspellingsAfterTyping):
388         * khtml/editing/htmlediting.h:
389         * khtml/editing/selection.cpp:
390         (khtml::Selection::Selection):
391         (khtml::Selection::init):
392         (khtml::Selection::moveTo):
393         (khtml::Selection::modifyExtendingRightForward):
394         (khtml::Selection::modifyMovingRightForward):
395         (khtml::Selection::modifyExtendingLeftBackward):
396         (khtml::Selection::modifyMovingLeftBackward):
397         (khtml::Selection::modify):
398         (khtml::Selection::xPosForVerticalArrowNavigation):
399         (khtml::Selection::clear):
400         (khtml::Selection::setBase):
401         (khtml::Selection::setExtent):
402         (khtml::Selection::setBaseAndExtent):
403         (khtml::Selection::layout):
404         (khtml::Selection::validate):
405         * khtml/editing/selection.h:
406         (khtml::Selection::startAffinity):
407         (khtml::Selection::endAffinity):
408         (khtml::Selection::baseAffinity):
409         (khtml::Selection::extentAffinity):
410         (khtml::operator==):
411         * khtml/editing/text_affinity.h:
412         (khtml::):
413         * khtml/editing/visible_position.cpp:
414         (khtml::VisiblePosition::VisiblePosition):
415         (khtml::VisiblePosition::init):
416         (khtml::VisiblePosition::initUpstream):
417         (khtml::VisiblePosition::initDownstream):
418         (khtml::VisiblePosition::next):
419         (khtml::VisiblePosition::previous):
420         (khtml::startVisiblePosition):
421         (khtml::endVisiblePosition):
422         * khtml/editing/visible_position.h:
423         (khtml::VisiblePosition::):
424         (khtml::VisiblePosition::VisiblePosition):
425         (khtml::VisiblePosition::affinity):
426         (khtml::VisiblePosition::setAffinity):
427         (khtml::operator==):
428         * khtml/editing/visible_units.cpp:
429         (khtml::previousBoundary):
430         (khtml::nextBoundary):
431         (khtml::startOfLine):
432         (khtml::endOfLine):
433         (khtml::previousLinePosition):
434         (khtml::nextLinePosition):
435         (khtml::startOfParagraph):
436         (khtml::endOfParagraph):
437         (khtml::previousParagraphPosition):
438         (khtml::nextParagraphPosition):
439         (khtml::startOfBlock):
440         (khtml::endOfBlock):
441         (khtml::startOfDocument):
442         (khtml::endOfDocument):
443         * khtml/editing/visible_units.h:
444         * khtml/khtml_part.cpp:
445         (KHTMLPart::findTextNext):
446         (KHTMLPart::selectClosestWordFromMouseEvent):
447         (KHTMLPart::handleMousePressEventTripleClick):
448         (KHTMLPart::handleMousePressEventSingleClick):
449         (KHTMLPart::handleMouseMoveEventSelection):
450         (KHTMLPart::khtmlMouseReleaseEvent):
451         (KHTMLPart::selectAll):
452         (KHTMLPart::computeAndSetTypingStyle):
453         (KHTMLPart::selectionComputedStyle):
454         * khtml/rendering/render_br.cpp:
455         (RenderBR::positionForCoordinates):
456         * khtml/xml/dom_docimpl.cpp:
457         (DocumentImpl::updateSelection):
458         * khtml/xml/dom_nodeimpl.cpp:
459         (NodeBaseImpl::setFocus):
460         * khtml/xml/dom_position.cpp:
461         (DOM::Position::previousCharacterPosition):
462         (DOM::Position::nextCharacterPosition):
463         * khtml/xml/dom_position.h:
464         * kwq/KWQAccObject.mm:
465         (-[KWQAccObject value]):
466         (-[KWQAccObject visiblePositionForStartOfTextMarkerRange:]):
467         (-[KWQAccObject visiblePositionForEndOfTextMarkerRange:]):
468         (-[KWQAccObject accessibilityAttributeValue:]):
469         (-[KWQAccObject doAXLineForTextMarker:]):
470         (-[KWQAccObject doAXTextMarkerRangeForLine:]):
471         (-[KWQAccObject doAXTextMarkerForPosition:]):
472         (-[KWQAccObject doAXLeftLineTextMarkerRangeForTextMarker:]):
473         (-[KWQAccObject doAXRightLineTextMarkerRangeForTextMarker:]):
474         (-[KWQAccObject doAXNextWordEndTextMarkerForTextMarker:]):
475         (-[KWQAccObject doAXPreviousWordStartTextMarkerForTextMarker:]):
476         (-[KWQAccObject doAXNextLineEndTextMarkerForTextMarker:]):
477         (-[KWQAccObject doAXPreviousLineStartTextMarkerForTextMarker:]):
478         (-[KWQAccObject doSetAXSelectedTextMarkerRange:]):
479         * kwq/KWQAccObjectCache.mm:
480         (KWQAccObjectCache::textMarkerForVisiblePosition):
481         (KWQAccObjectCache::visiblePositionForTextMarker):
482         * kwq/KWQKHTMLPart.mm:
483         (KWQKHTMLPart::findString):
484         (KWQKHTMLPart::advanceToNextMisspelling):
485         (KWQKHTMLPart::styleForSelectionStart):
486         (KWQKHTMLPart::baseWritingDirectionForSelectionStart):
487         (KWQKHTMLPart::setSelectionFromNone):
488         (KWQKHTMLPart::respondToChangedSelection):
489         * kwq/WebCoreBridge.mm:
490         (-[WebCoreBridge setSelectedDOMRange:affinity:]):
491         (-[WebCoreBridge selectionAffinity]):
492         (-[WebCoreBridge setMarkDOMRange:]):
493         (-[WebCoreBridge _visiblePositionForPoint:]):
494         (-[WebCoreBridge moveDragCaretToPoint:]):
495         (-[WebCoreBridge editableDOMRangeForPoint:]):
496         (-[WebCoreBridge ensureSelectionVisible]):
497         (-[WebCoreBridge rangeOfCharactersAroundCaret]):
498
499 2005-02-09  Chris Blumenberg  <cblu@apple.com>
500
501         Fixed: <rdar://problem/3985211> Seed: Mail: Drag-and-drop destination indicator / insertion point disappears
502
503         Reviewed by kocienda.
504
505         * khtml/rendering/render_block.cpp:
506         (khtml::RenderBlock::paintCaret): new
507         (khtml::RenderBlock::paintObject): call paintCaret for the cursor caret and the drag caret
508         * khtml/rendering/render_block.h:
509
510 === Safari-185 ===
511
512 2005-02-08  Ken Kocienda  <kocienda@apple.com>
513
514         Reviewed by John
515
516         Fix for this bug:
517         
518         <rdar://problem/3996344> Entire document content is deleted when only the first paragraph was supposed to be
519
520         Problem stems from my attempt to fix this bug: <rdar://problem/3986155> Insertion point goes 
521         to beginning of doc after deleting.
522         
523         I added an "optimization" that proved to do more harm than good. So, basically, the fix is to remove code.
524
525         * khtml/editing/htmlediting.cpp:
526         (khtml::DeleteSelectionCommand::handleGeneralDelete)
527
528 2005-02-07  Darin Adler  <darin@apple.com>
529
530         Reviewed by Kevin.
531
532         - fixed <rdar://problem/3890352> REGRESSION (125-170, Panther-only): pasted textarea contents disappear (exception in NSText)
533
534         * kwq/KWQTextArea.mm: (-[KWQTextArea tile]): Don't resize the text view immediately here.
535         Use performWithDelay to defer it to avoid the re-entrancy that bothers the Panther version
536         of NSTextView. On Tiger, leave the code alone.
537
538 2005-02-07  Adele Amchan  <adele@apple.com>
539
540         Reviewed by Darin.
541
542         Fix for <rdar://problem/3993628> REGRESSION (180-181): Logitelnet bank's website doesn't work
543
544         This fixes an oversight in the fix for <rdar://problem/3964286>.  
545         We're now making sure there is a document before calling checkCompleted in slotLoaderRequestDone.
546         That function is called even when other parts finish loads of their subresources, so we could end
547         up calling checkCompleted before we had a document. We also looked over all the other calls to
548         checkCompleted to convince ourselves no other call sites had a similar issue.
549
550         * khtml/khtml_part.cpp: (KHTMLPart::slotLoaderRequestDone): Check if doc is nil before calling
551         checkCompleted.
552
553 2005-02-07  Ken Kocienda  <kocienda@apple.com>
554
555         Reviewed by Darin
556
557         Fix for this bug:
558         
559         <rdar://problem/3953302> Replacing quoted text ends up with blue-colored text that is not quoted
560
561         * khtml/editing/htmlediting.cpp:
562         (khtml::DeleteSelectionCommand::doApply): Removed special case delete code for select all. It was
563         causing as many bugs as it fixed. What's more, the design concept is a bit shaky. By removing
564         this special case, the bug goes away.
565         * khtml/editing/htmlediting.h: Remove declaration.
566         
567         Test results using selectAll() updated to reflect changed behavior.
568         
569         * layout-tests/editing/deleting/delete-3775172-fix-expected.txt:
570         * layout-tests/editing/deleting/delete-select-all-001-expected.txt:
571         * layout-tests/editing/deleting/delete-select-all-003-expected.txt:
572         * layout-tests/editing/inserting/insert-3654864-fix-expected.txt:
573         * layout-tests/editing/inserting/insert-3775316-fix-expected.txt:
574         * layout-tests/editing/inserting/insert-3851164-fix-expected.txt:
575         * layout-tests/editing/inserting/insert-3907422-fix-expected.txt:
576         * layout-tests/editing/pasteboard/paste-text-015-expected.txt:
577
578 2005-02-06  Darin Adler  <darin@apple.com>
579
580         Reviewed by Ken.
581
582         - fixed <rdar://problem/3994164> setting a new style attribute with setAttribute("style") doesn't blow away the old style
583
584         * khtml/css/css_valueimpl.h: Renamed parseProperty to parseDeclaration, since it's used to parse
585         an entire style declaration, not a single property.
586         * khtml/css/css_valueimpl.cpp: (DOM::CSSMutableStyleDeclarationImpl::parseDeclaration): Renamed,
587         and added code to clear m_values.
588         * khtml/html/html_elementimpl.cpp: (HTMLElementImpl::parseHTMLAttribute): Call function by its
589         new name, and remove some unnecessary comments.
590
591 2005-02-06  Darin Adler  <darin@apple.com>
592
593         Reviewed by Maciej.
594
595         - fixed <rdar://problem/3993722> need oncut and onpaste handlers implemented for <textarea> (needed for widgets)
596
597         * kwq/KWQTextArea.mm:
598         (-[KWQTextAreaTextView dispatchHTMLEvent:]): Added.
599         (-[KWQTextAreaTextView cut:]): Dispatch "before cut" and "cut" events.
600         (-[KWQTextAreaTextView copy:]): Dispatch "before copy" and "copy" events.
601         (-[KWQTextAreaTextView paste:]): Dispatch "before paste" and "paste" events.
602         (-[KWQTextAreaTextView pasteAsPlainText:]): Ditto.
603         (-[KWQTextAreaTextView pasteAsRichText:]): Ditto.
604
605 2005-02-06  Darin Adler  <darin@apple.com>
606
607         Reviewed by Maciej.
608
609         - fixed <rdar://problem/3943038> <input type=search> that is focused in onload handler doesn't have a visible editor
610
611         * khtml/xml/dom_docimpl.cpp: (DocumentImpl::setFocusNode): Always update layout before giving focus to a widget.
612         This prevents the bad case where we give a widget focus before it has been positioned or sized, causing us to
613         exercise edge cases AppKit doesn't handle well.
614
615         * kwq/KWQTextField.mm: (-[KWQTextFieldController initWithTextField:QLineEdit:]): Remove workaround code I added
616         to fix bug 3943049. Updating the layout fixes the same problem in a cleaner, safer way, and solves another problem,
617         with the way the clip view is set up.
618
619 2005-02-06  Darin Adler  <darin@apple.com>
620
621         Reviewed by Maciej.
622
623         - fixed <rdar://problem/3425232> textarea won't trigger onchange action when clicking to new field
624
625         * khtml/rendering/render_form.h: Added new m_dirty data member.
626         * khtml/rendering/render_form.cpp:
627         (RenderTextArea::RenderTextArea): Initialize m_dirty to false.
628         (RenderTextArea::detach): Call value() on the DOM element to cause it to fetch the value from this object.
629         (RenderTextArea::handleFocusOut): Ditto. Also send the onchange event based only on the m_dirty flag.
630         (RenderTextArea::updateFromElement): Clear the m_dirty flag if the edited value is blown away by a value
631         that comes from the DOM element. Remove code to clear the element's m_dirtyvalue flag; that's an unnecessary
632         optimization, and ideally we'll stop having code in the render object that knows about that flag later.
633         (RenderTextArea::slotTextChanged): Set the m_dirty flag.
634
635 2005-02-06  Darin Adler  <darin@apple.com>
636
637         Reviewed by Maciej.
638
639         - re-fixed <rdar://problem/3760910> please add support for custom tag names in HTML
640
641         * khtml/xml/dom_docimpl.cpp:
642         (DocumentImpl::tagId): Use ID_LAST_TAG + 1 for the ID of the first assigned tag ID. Before we'd use ID_LAST_TAG,
643         which resulted in the same number being used for ID_COMMENT and the first custom tag.
644         (DocumentImpl::tagName): Use ID_LAST_TAG + 1, as above.
645         (DocumentImpl::namespaceURI): Change a < ID_LAST_TAG to <= ID_LAST_TAG in the same spirit as above.
646
647 2005-02-06  Darin Adler  <darin@apple.com>
648
649         Reviewed by Maciej.
650
651         - fixed <rdar://problem/3986639> Crash occurs after choosing Undo Typing from the Edit menu
652
653         * kwq/KWQTextArea.mm: (-[KWQTextArea viewWillMoveToWindow:]): Remove actions from undo manager when the view is
654         removed from the window. Unfortunately, to do this the code has to know that the target of NSTextView actions
655         will be the text storage object, but given the NSText architecture, that's pretty clear.
656
657 2005-02-05  Chris Blumenberg  <cblu@apple.com>
658
659         Fixed: <rdar://problem/3991974> REGRESSION: www.jabra.com world location screen does not work
660
661         Reviewed by hyatt.
662
663         * kwq/KWQKJavaAppletWidget.mm:
664         (KJavaAppletWidget::KJavaAppletWidget): fallback to the document's base URL if there is no baseURL attribute
665         * kwq/WebCoreBridge.h:
666         * kwq/WebCoreBridge.mm:
667         (-[WebCoreBridge baseURL]): new
668
669 2005-02-04  David Harrison  <harrison@apple.com>
670
671         Reviewed by Darin.
672
673         Rolled out Ken's accidental checkin when committing <rdar://problem/3986155> fix yesterday.
674         
675         * khtml/editing/selection.cpp:
676         (khtml::Selection::validate):
677
678 2005-02-04  Adele Amchan  <adele@apple.com>
679
680         Reviewed by Darin.
681
682         Fix for <rdar://problem/3758785> Safari no longer works at BankOfAmerica online banking for military users
683   
684         When closing the document, if a body doesn't exist we now create one.  This bug was preventing the onload handler from
685         firing in cases where there wasn't a body.  In the BankOfAmerica case, the page was just a bit of script where the onload
686         handler redirected to the correct page.
687
688         * khtml/xml/dom_docimpl.cpp: (DocumentImpl::close):
689
690 2005-02-03  Ken Kocienda  <kocienda@apple.com>
691
692         Reviewed by Chris
693
694         Fix for this bug:
695         
696         <rdar://problem/3986155> Insertion point goes to beginning of doc after deleting
697
698         * khtml/editing/htmlediting.cpp:
699         (khtml::DeleteSelectionCommand::setStartNode): New convenience to handle reference counting when setting.
700         (khtml::DeleteSelectionCommand::handleGeneralDelete): This contains the crux of the bug fix. Improve tests
701         that detect when a selected node needs to be retained, rather than deleted, to preserve the intent of the user.
702         This has the side effect of causing the insertion point placement code to succeed rather than fail. Before
703         this fix, the failure of the insertion point placement code caused the insertion point to jump to the start
704         of the document, which is the symptom that can be perceived by users when editing.
705         * khtml/editing/htmlediting.h: Add setStartNode declaration.
706         * khtml/editing/visible_units.cpp:
707         (khtml::startOfBlock): This function had a stubbed-in non-tested implementation. Implement and 
708         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-001-expected.txt: Added.
709         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-001.html: Added.
710         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-002-expected.txt: Added.
711         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-002.html: Added.
712         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-003-expected.txt: Added.
713         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-003.html: Added.
714         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-004-expected.txt: Added.
715         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-004.html: Added.
716         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-005-expected.txt: Added.
717         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-005.html: Added.
718         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-006-expected.txt: Added.
719         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-006.html: Added.
720
721 === Safari-183 ===
722
723 2005-02-03  Richard Williamson   <rjw@apple.com>
724
725         Fixed <rdar://problem/3987419> Stocks and Weather leak what appears to XMLHTTPRequest results
726
727         XMLHTTPRequests were causing massive leaks.  _webcore_initWithHeaderString: did funky things with
728         self replacement.  Re-wrote to use more traditional factory constructor avoiding self replacement.
729         
730         Reviewed by David Harrison.
731
732         * kwq/KWQLoader.mm:
733         (+[NSDictionary _webcore_dictionaryWithHeaderString:]):
734         (KWQServeRequest):
735         (KWQServeSynchronousRequest):
736
737 2005-02-03  Chris Blumenberg  <cblu@apple.com>
738
739         Fixed: <rdar://problem/3938763> Cannot view Windows Media Player videos (soundtrack is played twice with delay)
740
741         Reviewed by hyatt.
742
743         * khtml/html/html_objectimpl.cpp:
744         (HTMLObjectElementImpl::attach): set needWidgetUpdate to false right after calling updateWidget because dispatchHTMLEvent can end up calling this method again
745         (HTMLObjectElementImpl::recalcStyle): ditto
746
747 2005-02-02  John Sullivan  <sullivan@apple.com>
748
749         Reviewed by Chris.
750
751         - WebCore part of fix for <rdar://problem/3980651> REGRESSION (125-180): Huge number of pages printed from certain page, 
752         iFrame involved
753         
754         This also fixes the problems with printing from GMail, yay!
755
756         * khtml/rendering/render_flow.cpp:
757         (RenderFlow::paintLines):
758         If the current line is taller than the entire page height (e.g. tall iFrame), don't try
759         to avoid splitting it across pages.
760         
761         * kwq/WebCoreBridge.mm:
762         (-[WebCoreBridge computePageRectsWithPrintWidthScaleFactor:printHeight:]):
763         Handle error cases in a more obvious manner; this will cause future problems like this
764         to print a blank page and complain to the console on debug builds, rather than print a 
765         zillionty mostly-blank pages.
766
767 2005-02-02  Chris Blumenberg  <cblu@apple.com>
768
769         Fixed: <rdar://problem/3960304> can't load a particular applet (at www.escape.de) unless it's the first applet to be loaded
770
771         Reviewed by hyatt.
772
773         * khtml/rendering/render_frames.cpp:
774         (RenderPartObject::updateWidget): when getting the MIME type from the PARAM tag, make sure the MIME type is the text from the left of the semi-colon if there is one. We do this elsewhere as well.
775
776 2005-02-02  Chris Blumenberg  <cblu@apple.com>
777
778         Fixed: <rdar://problem/3983628> control-click on WebView is not selecting the word under the cursor (Mail, non-editable WebView)
779
780         Reviewed by rjw.
781
782         * kwq/KWQKHTMLPart.mm:
783         (KWQKHTMLPart::sendContextMenuEvent): check if SPI to always enable selecting closest word is enabled
784         * kwq/WebCoreBridge.h:
785
786 2005-02-02  Ken Kocienda  <kocienda@apple.com>
787
788         Reviewed by me
789
790         * khtml/editing/markup.cpp:
791         (khtml::createMarkup): Removed debug spam I committed earlier in error.
792
793 2005-02-02  Ken Kocienda  <kocienda@apple.com>
794
795         Reviewed by Darin
796
797         Fix for this bug:
798         
799         <rdar://problem/3823109> WebKit should support -toggleBaseWritingDirection: (bidi editing support)
800
801         Since base writing direction is a paragraph-level property in AppKit, and we use the CSS direction
802         property in WebCore, which can be applied to inline elements as well as blocks, a new notion has
803         been added to the WebCore apply style logic. It is now possible to force all properties in a 
804         style declaration to be applied as though they were block properties.
805
806         * khtml/editing/htmlediting.cpp:
807         (khtml::ApplyStyleCommand::ApplyStyleCommand): Add an enum and a flag to this command that controls whether to force all
808         properties in the style to be applied as block styles. Default is "no", retaining previous behavior.
809         (khtml::ApplyStyleCommand::doApply): Switch on new flag to apply styles as before, or force all preoperties to be applied
810         as block styles.
811         * khtml/editing/htmlediting.h:
812         (khtml::ApplyStyleCommand::): Add an enum and a flag, as above.
813         * khtml/khtml_part.cpp:
814         (KHTMLPart::applyParagraphStyle): New method to force application of all style properties as block styles.
815         * khtml/khtml_part.h: Update header declarations.
816         * kwq/KWQKHTMLPart.h: Update header declarations.
817         * kwq/KWQKHTMLPart.mm:
818         (KWQKHTMLPart::baseWritingDirectionForSelectionStart): Accessor to help WebKit do a toggle operation on 
819         writing direction.
820         * kwq/WebCoreBridge.h: Update header declarations.
821         * kwq/WebCoreBridge.mm:
822         (-[WebCoreBridge applyParagraphStyle:withUndoAction:]): New method to force application of all style properties as block styles.
823         (-[WebCoreBridge baseWritingDirectionForSelectionStart]): Accessor to help WebKit do a toggle operation on 
824         writing direction.
825
826         Fix for this bug:
827         
828         <rdar://problem/3985035> REGRESSION (Mail): Text copied from wrapped line contains extra character when pasted
829
830         * khtml/editing/markup.cpp:
831         (khtml::renderedText): Add an enum and a flag to this command that controls whether to force all
832         This is the result of an error in the code that computes the rendered text that is selected 
833         when copying. Since spaces collapse at the end of lines, and these spaces need to be copied 
834         when the selection spans line endings, code runs to compute this text. However, this code 
835         was also running incorrectly in cases where lines wrapped. I have now added the missing 
836         test to check that the selection does indeed extend to the end of the line.
837
838
839 2005-02-02  Ken Kocienda  <kocienda@apple.com>
840
841         Reviewed by Darin
842
843         Fix for these bugs:
844         
845         <rdar://problem/3984894> REGRESSION (Mail): Command-right-arrow in reply does the wrong thing (two ways)
846         <rdar://problem/3985130> REGRESSION (Mail): command-right-arrow in pasted RTF selects only up to tab
847
848         * khtml/editing/visible_units.cpp:
849         (khtml::endOfLine): Two separate problems in this new function recently added to take the place of
850         selectionForLine. In the first, endOfLine did not stop at BR elements, and returned the position
851         beyond them. In the second, the VisiblePosition constructor gives the wrong answer in certain cases.
852         Darin is going to work on a solution for that problem. In the meantime, I can fix the symptom of this
853         bug by going down to the last leaf child of the root line box; a one line change we will roll out when
854         Darin's fix is in.
855
856 2005-02-01  Richard Williamson   <rjw@apple.com>
857
858         Fixed <rdar://problem/3985535> QT Plug-in JavaScript support now fails in <embed> tag only case
859
860         Reviewed by Maciej.
861
862         * khtml/ecma/kjs_html.cpp:
863         (KJS::HTMLDocument::tryGet):
864
865 2005-02-01  John Sullivan  <sullivan@apple.com>
866
867         Written by Darin, reviewed and tested by me
868         
869         - fixed <rdar://problem/3969684> Panther-only: extra blank lines between 
870         pasted content from Blot
871
872         * kwq/KWQKHTMLPart.mm:
873         (KWQKHTMLPart::attributedString):
874         don't emit paragraph breaks if the margins are tiny; matches what
875         we do for plain-text conversion
876
877 === Safari-182 ===
878
879 2005-02-01  Ken Kocienda  <kocienda@apple.com>
880
881         Reviewed by John
882
883         Fix for this bug:
884         
885         <rdar://problem/3985160> Deficiencies in pasting architecture blocking progress on other bugs
886
887         * khtml/editing/html_interchange.h: Move style span text used to mark element added to 
888         add style to this header.
889         * khtml/editing/htmlediting.cpp:
890         (khtml::styleSpanClassString): Change to use constant moved to html_interchange.h.
891         (khtml::isStyleSpan): New helper function. Checks if this is a span we added to apply style.
892         (khtml::CompositeEditCommand::insertNodeBefore): Added an assert to check that the node
893         we are inserting before is not the body.
894         (khtml::CompositeEditCommand::insertNodeAfter): Ditto, but check is for after.
895         (khtml::ReplacementFragment::ReplacementFragment): Added code to process the "default style"
896         that is added by the copy code.
897         (khtml::ReplaceSelectionCommand::ReplaceSelectionCommand): first and last nodes inserted are
898         now member variables instead of function locals. Initialize them here.
899         (khtml::ReplaceSelectionCommand::~ReplaceSelectionCommand): Deref first and last nodes inserted
900         if necessary.
901         (khtml::ReplaceSelectionCommand::doApply): Change design to fix the bug. Major change is to
902         separate out the code that inserts nodes into the tree so additional styling checks can
903         be done in a centralized way. Also got rid of the notion of "merging into the end block." That
904         concept was just wrong.
905         (khtml::ReplaceSelectionCommand::completeHTMLReplacement): Tweak interface now that first and 
906         last nodes inserted are member variables.
907         (khtml::ReplaceSelectionCommand::insertNodeAfterAndUpdateNodesInserted): New helper used
908         by replace code to do the stated DOM operation and update state internal to the command.
909         This will also be a catch point to handle the kinds of additional style checks needed to
910         make paste work right.
911         (khtml::ReplaceSelectionCommand::insertNodeAtAndUpdateNodesInserted): Ditto.
912         (khtml::ReplaceSelectionCommand::insertNodeBeforeAndUpdateNodesInserted): Ditto.
913         (khtml::ReplaceSelectionCommand::updateNodesInserted): Ditto.
914         * khtml/editing/htmlediting.h: Update declarations as needed.
915         * khtml/editing/markup.cpp:
916         (khtml::createMarkup): Adds a "default style" span to the content written to the pasteboard.
917         This will help us to fix some of the bugs blocked by the bug above.
918         * khtml/xml/dom_nodeimpl.cpp:
919         (NodeImpl::lastDescendent): New helper.
920         * khtml/xml/dom_nodeimpl.h: Ditto.
921         * khtml/xml/dom_position.cpp:
922         (DOM::Position::upstream): Fixed a bug which would allow the upstream position returned to be
923         in unrendered content.
924         (DOM::Position::downstream): Ditto.
925
926         * layout-tests/editing/deleting/delete-3775172-fix-expected.txt: Ending positions tweaked due to 
927         changes in upstream() and downstream() functions.
928         * layout-tests/editing/inserting/insert-3851164-fix-expected.txt: Ditto
929         * layout-tests/editing/inserting/insert-3907422-fix-expected.txt: Ditto
930         * layout-tests/editing/selection/extend-by-character-006-expected.txt: Ditto
931
932         * layout-tests/editing/pasteboard/paste-text-003-expected.txt: Changed what we expect, given
933         new behavior of paste code.
934
935 2005-01-31  John Sullivan  <sullivan@apple.com>
936
937         Reviewed by Dave Hyatt.
938         
939         - fixed <rdar://problem/3983097> Tabbing on RSS pages gets stuck in search field 
940         with "full keyboard navigation" off
941
942         * kwq/KWQSlider.h:
943         * kwq/KWQSlider.mm:
944         (QSlider::focusPolicy):
945         Implemented this method for KWQSlider. It is needed for our widget subclasses that
946         can become focused in some situations. I missed this when fixing 3949203 because
947         it only comes into play when tab-to-controls is on, and because the other relevant
948         methods are objective-C methods.
949
950 2005-01-31  David Harrison  <harrison@apple.com>
951
952         Reviewed by Darin.
953
954         <rdar://problem/3964164> AXWebArea needs to unregister on going invisible
955
956         * khtml/xml/dom_docimpl.cpp:
957         (DocumentImpl::detach):
958         Detach the AX UIElement for the AXWebArea.
959
960 2005-01-31  David Harrison  <harrison@apple.com>
961
962         Reviewed by Darin
963
964         <rdar://problem/3850876> AX: button exposed as only an AXImage at http://appleseed.apple.com/ site (<input type=image>)
965
966         * khtml/rendering/render_form.h:
967         (khtml::RenderImageButton::isImageButton):
968         New.
969         * khtml/rendering/render_image.h:
970         (khtml::RenderImage::isImageButton):
971         New.
972         * kwq/KWQAccObject.mm:
973         (-[KWQAccObject isImageButton]):
974         (-[KWQAccObject actionElement]):
975         (-[KWQAccObject role]):
976         (-[KWQAccObject accessibilityActionNames]):
977         (-[KWQAccObject accessibilityPerformAction:]):
978         Represent RenderImageButton elements as buttons instead of images.
979
980 2005-01-31  David Harrison  <harrison@apple.com>
981
982         Prevent nil dereference in debug code.
983
984         * khtml/xml/dom_nodeimpl.cpp:
985         (NodeImpl::displayTree):
986         Stop when parent is 0, too.
987
988 2005-01-31  John Sullivan  <sullivan@apple.com>
989
990         Reviewed by Dave Hyatt.
991         
992         - fixed <rdar://problem/3949203> cannot tab to, within, or out of the RSS sidebar
993
994         * kwq/KWQSlider.mm:
995         (-[KWQSlider becomeFirstResponder]):
996         (-[KWQSlider resignFirstResponder]):
997         (-[KWQSlider nextKeyView]):
998         (-[KWQSlider previousKeyView]):
999         (-[KWQSlider canBecomeKeyView]):
1000         (-[KWQSlider nextValidKeyView]):
1001         (-[KWQSlider previousValidKeyView]):
1002         Copied these methods from KWQButton. The lack of special handling for first-responder-ness
1003         here was causing the focus to get "stuck" on the RSS page's slider widget. Added FIXME
1004         about how it would be nice to share more of this code rather than replicating it in each
1005         KWQ widget subclass.
1006
1007 2005-01-31  Darin Adler  <darin@apple.com>
1008
1009         Reviewed by Harrison.
1010
1011         - fixed <rdar://problem/3980066> Double-click on single character moves insertion point to previous line
1012
1013         * khtml/khtml_part.cpp:
1014         (KHTMLPart::selectClosestWordFromMouseEvent): Set affinity too.
1015         (KHTMLPart::handleMousePressEventTripleClick): Ditto.
1016         (KHTMLPart::handleMouseMoveEventSelection): Ditto.
1017         (KHTMLPart::khtmlMouseReleaseEvent): Ditto.
1018
1019         * khtml/editing/selection.cpp:
1020         (khtml::Selection::modifyExtendingRightForward): Use endOfLine and endOfDocument.
1021         (khtml::Selection::modifyMovingRightForward): Ditto.
1022         (khtml::Selection::modifyExtendingLeftBackward): Use startOfLine and startOfDocument.
1023         (khtml::Selection::modifyMovingLeftBackward): Ditto.
1024         (khtml::Selection::validate): Rewrote the section that handles double-click. Two main fixes: 1) use isStartOfLine to
1025         check for another case where we want to select the word to the right, and 2) use isEndOfParagraph, which seems
1026         to work correctly in cases where isLastVisiblePositionInParagraph is giving the wrong answer. Also changed the line
1027         code to use startOfLine/endOfLine and the document code to use startOfDocument/endOfDocument.
1028
1029 2005-01-31  Darin Adler  <darin@apple.com>
1030
1031         Reviewed by Harrison.
1032
1033         - fixed <rdar://problem/3935275> unexpected quit scrolling over link; last.fm (works in IE and Firefox)
1034
1035         * kwq/WebCoreBridge.mm: (-[WebCoreBridge elementAtPoint:]): By using the correct document, fix the crash reported here.
1036         The page still crashes when you close the browser window, but it's not trivial to fix so I'll file a new bug after that.
1037
1038 2005-01-31  Darin Adler  <darin@apple.com>
1039
1040         Reviewed by Ken and Harrison.
1041
1042         - fixed <rdar://problem/3947901> REGRESSION (Mail): Pasting paragraph of rich text leaves insertion point before pasted text
1043         - fixed <rdar://problem/3949790> hitting return after underlined line results in too much or too little underlined
1044         - fixed <rdar://problem/3981759> nil-deref and crash when pasting just a paragraph break
1045         - fixed a couple problems I discovered while working with bug 3949790
1046
1047         * khtml/editing/htmlediting.cpp:
1048         (khtml::ApplyStyleCommand::applyInlineStyle): Pass StayInBlock to upstream. Without this, we end up going too far
1049         upstream in the test case in bug 3949790.
1050         (khtml::ApplyStyleCommand::removeInlineStyle): Pass StayInBlock to upstream and downstream. Same reason as above.
1051         (khtml::ReplaceSelectionCommand::doApply): Update endPos if inserting a new node and endPos is using that node's
1052         parent and an offset past the node being inserted. That change fixes a problem with the position of the insertion point
1053         after pasting into the top level of a document (from test cases in 3947901 and 3949790). When setting insertionPos, use
1054         code that works when lastNodeInserted is a block rather than a text node. That change fixes a problem where a newline is
1055         not added when pasting an entire paragraph into the end of a document (from test case in 3949790). Added nil check before
1056         checking if lastNodeInserted is a <br> element, which fixes the crash when pasting just a paragraph break.
1057
1058         * khtml/editing/visible_units.h: Filled out the set of calls to add some boolean checks for lines (needed for the
1059         bug fix), and calls for blocks (not yet implemented), and documents. The document checks may need refinement to
1060         properly handle documents with a mix of editable and non-editable content, but for now they just refactor code
1061         and make things a little clearer. Also removed the "include line break" parameter from endOfSentence.
1062         * khtml/editing/visible_units.cpp:
1063         (khtml::rootBoxForLine): Added.
1064         (khtml::startOfLine): Added. Algorithm taken from selectionForLine in selection.cpp.
1065         (khtml::endOfLine): Ditto.
1066         (khtml::inSameLine): Added.
1067         (khtml::isStartOfLine): Added.
1068         (khtml::isEndOfLine): Added.
1069         (khtml::endOfSentence): Removed "include line break" parameter.
1070         (khtml::inSameParagraph): Added a null check.
1071         (khtml::isStartOfParagraph): Ditto.
1072         (khtml::isEndOfParagraph): Ditto.
1073         (khtml::startOfBlock): Added.
1074         (khtml::endOfBlock): Added.
1075         (khtml::inSameBlock): Added.
1076         (khtml::isStartOfBlock): Added.
1077         (khtml::isEndOfBlock): Added.
1078         (khtml::startOfDocument): Added.
1079         (khtml::endOfDocument): Added.
1080         (khtml::inSameDocument): Added.
1081         (khtml::isStartOfDocument): Added.
1082         (khtml::isEndOfDocument): Added.
1083
1084 2005-01-30  Darin Adler  <darin@apple.com>
1085
1086         Reviewed by John.
1087
1088         - fixed <rdar://problem/3977000> form data set posted for <input type="image" ...> omits name/value pair
1089
1090         * khtml/html/html_formimpl.cpp:
1091         (DOM::HTMLInputElementImpl::appendFormData): Append a name/value pair for type IMAGE in addition to the X/Y
1092         coordinates.
1093
1094 2005-01-30  Darin Adler  <darin@apple.com>
1095
1096         Reviewed by John.
1097
1098         - fixed <rdar://problem/3974246> REGRESSION (125-180): popup menus are missing item text on Harmony Remote web site
1099
1100         * khtml/html/html_formimpl.cpp: (DOM::HTMLOptionElementImpl::text): Change this function to traverse the entire tree
1101         and gather all the text rather than just looking at immediate children.
1102
1103         * khtml/xml/dom_nodeimpl.h: Added const.
1104         * khtml/xml/dom_nodeimpl.cpp:
1105         (NodeImpl::traverseNextNode): Added const.
1106         (NodeImpl::traverseNextSibling): Ditto.
1107         (NodeImpl::traversePreviousNodePostOrder): Ditto.
1108         (NodeImpl::detach): Add a missing nil check.
1109
1110 2005-01-30  Darin Adler  <darin@apple.com>
1111
1112         Reviewed by John.
1113
1114         - fixed <rdar://problem/3864536> crash copying text from other apps and pasting in a sticky in dashboard
1115
1116         * khtml/editing/markup.cpp: (khtml::createFragmentFromText): Added missing ref/deref of newly created element.
1117
1118 2005-01-28  Darin Adler  <darin@apple.com>
1119
1120         * khtml/css/cssproperties.c: Regenerated with newer gperf.
1121
1122 2005-01-28  David Harrison  <harrison@apple.com>
1123
1124         Reviewed by John Sullivan.
1125
1126         <rdar://problem/3968144> AX need to be able to focus an AXLink by setting AXFocused to true
1127         
1128         * kwq/KWQAccObject.mm:
1129         (-[KWQAccObject accessibilityPerformAction:]):
1130         (-[KWQAccObject accessibilityIsAttributeSettable:]):
1131         Add AXFocused for AXLinks.
1132
1133 2005-01-28  David Harrison  <harrison@apple.com>
1134
1135         Reviewed by Darin.
1136
1137         <rdar://problem/3584942> AX: Safari Accessibility parent-child mismatch
1138
1139         Use AppKit SPI _accessibilityParentForSubview to return KWQAccObject parent of AppKit AX object.
1140         
1141         * kwq/KWQAccObject.mm:
1142         (-[KWQAccObject _accessibilityParentForSubview:]):
1143         New.
1144
1145 2005-01-27  Adele Amchan  <adele@apple.com>
1146
1147         fixed by Darin, reviewed by me.
1148
1149         <rdar://problem/3976314> REGRESSION (180-TOT): submitting password fields fail on Panther
1150
1151         * kwq/KWQTextField.mm: (-[KWQTextFieldController string]): on panther, the secure text field's editor 
1152         does not contain the real string, so now we just call stringValue on the field in that case.
1153
1154 2005-01-26  Maciej Stachowiak  <mjs@apple.com>
1155
1156         Reviewed by Darin, Hyatt and Ken.
1157
1158         <rdar://problem/3790449> REGRESSION (Mail): underline behavior is flaky because of how CSS handles text-decoration
1159         
1160         * khtml/css/css_computedstyle.cpp:
1161         (DOM::CSSComputedStyleDeclarationImpl::getPropertyCSSValue): Add support
1162         for -khtml-text-decorations-in-effect property. This works like text-docration
1163         but follows proper inline semantics, that is, if a parent is causing text
1164         decoration then -khtml-text-decorations-in-effect on this element will reflect that.
1165         * khtml/css/cssproperties.in: Add -khtml-text-decorations-in-effect property.
1166         * khtml/css/cssproperties.h: regenerated
1167         * khtml/css/cssvalues.c: regenerated
1168         * khtml/css/cssparser.cpp: regenerated
1169         * khtml/css/cssproperties.c: regenerated
1170
1171         * khtml/css/css_valueimpl.h: Made copyPropertiesInSet public.
1172
1173         * khtml/editing/htmlediting.cpp:
1174         (khtml::StyleChange::init): Handle -khtml-text-decorations-in-effect
1175         specially, translate to text-decoration
1176         (khtml::ApplyStyleCommand::applyInlineStyle): Fix a comment.
1177         (khtml::ApplyStyleCommand::removeInlineStyle): Add new way of pushing down
1178         text-decoration styles around the edges of the selected range.
1179         (khtml::ApplyStyleCommand::pushDownTextDecorationStyleAroundNode): Helper for this.
1180         (khtml::ApplyStyleCommand::pushDownTextDecorationStyleAtBoundaries): ditto
1181         (khtml::ApplyStyleCommand::nodeFullyUnselected): ditto
1182         (khtml::hasTextDecorationProperty): ditto
1183         (khtml::highestAncestorWithTextDecoration): ditto
1184         (khtml::ApplyStyleCommand::extractTextDecorationStyle): ditto
1185         (khtml::ApplyStyleCommand::extractAndNegateTextDecorationStyle): ditto
1186         (khtml::ApplyStyleCommand::applyTextDecorationStyle): ditto
1187         * khtml/editing/htmlediting.h: Prototype new methods.
1188         * khtml/editing/jsediting.cpp: Make underline execCommand use the new CSS property.
1189
1190         - as a necessary part of the fix, fixed the longstanding problem
1191         that mutating an element's inlineStyleDecl would not property
1192         update its style attribute. now it does.
1193         
1194         * khtml/css/css_valueimpl.cpp:
1195         (DOM::CSSMutableStyleDeclarationImpl::setChanged): If this is an inline style
1196         declaration, tell the element it's style attribute needs updating.
1197         * khtml/html/html_elementimpl.cpp:
1198         (HTMLElementImpl::invalidateStyleAttribute): New method, just calls down
1199         to the dom element.
1200         (HTMLElementImpl::updateStyleAttribute): Regenerate style attribute from
1201         inline style declaration.
1202         * khtml/html/html_elementimpl.h: Prototype new stuff.
1203         * khtml/xml/dom_elementimpl.cpp:
1204         (ElementImpl::ElementImpl): Initialize new attribute.
1205         (ElementImpl::updateStyleAttributeIfNeeded): New method to check if the style
1206         is dirty and this is an html element, and if so call the html element to
1207         regenerate the style attribute.
1208         (ElementImpl::attributes): update style if needed
1209         (ElementImpl::getAttribute): ditto
1210         (ElementImpl::hasAttributes): ditto
1211         (ElementImpl::dump): ditto
1212         (XMLElementImpl::cloneNode): ditto
1213         * khtml/xml/dom_elementimpl.h:
1214         (DOM::ElementImpl::isStyleAttributeValid): new method to manage style attr
1215         dirty bit
1216         (DOM::ElementImpl::setStyleAttributeValid): ditto
1217
1218         - added new layout tests for underlining:
1219         
1220         * layout-tests/editing/editing.js:
1221         * layout-tests/editing/style/remove-underline-across-paragraph-expected.txt: Added.
1222         * layout-tests/editing/style/remove-underline-across-paragraph-in-bold-expected.txt: Added.
1223         * layout-tests/editing/style/remove-underline-across-paragraph-in-bold.html: Added.
1224         * layout-tests/editing/style/remove-underline-across-paragraph.html: Added.
1225         * layout-tests/editing/style/remove-underline-after-paragraph-expected.txt: Added.
1226         * layout-tests/editing/style/remove-underline-after-paragraph-in-bold-expected.txt: Added.
1227         * layout-tests/editing/style/remove-underline-after-paragraph-in-bold.html: Added.
1228         * layout-tests/editing/style/remove-underline-after-paragraph.html: Added.
1229         * layout-tests/editing/style/remove-underline-expected.txt: Added.
1230         * layout-tests/editing/style/remove-underline-from-stylesheet-expected.txt: Added.
1231         * layout-tests/editing/style/remove-underline-from-stylesheet.html: Added.
1232         * layout-tests/editing/style/remove-underline-in-bold-expected.txt: Added.
1233         * layout-tests/editing/style/remove-underline-in-bold.html: Added.
1234         * layout-tests/editing/style/remove-underline.html: Added.
1235         * layout-tests/editing/style/underline-expected.txt: Added.
1236         * layout-tests/editing/style/underline.html: Added.
1237
1238 2005-01-27  David Hyatt  <hyatt@apple.com>
1239
1240         Fix for 3875199, search field needs to be able to  show a magnifying  glass without a dropdown menu.
1241         
1242         Reviewed by kocienda
1243
1244         * khtml/html/html_formimpl.cpp:
1245         (DOM::HTMLInputElementImpl::HTMLInputElementImpl):
1246         (DOM::HTMLInputElementImpl::parseHTMLAttribute):
1247         * kwq/KWQLineEdit.mm:
1248         (QLineEdit::setMaxResults):
1249
1250 2005-01-27  Ken Kocienda  <kocienda@apple.com>
1251
1252         Reviewed by Maciej
1253
1254         Fix for this bug:
1255         
1256         <rdar://problem/3973254> Deletions of ranges does not coalesce correctly with subsequent typing
1257
1258         * khtml/editing/htmlediting.cpp:
1259         (khtml::InsertTextCommand::deleteCharacter): Remove this dead code.
1260         (khtml::ReplaceSelectionCommand::editingAction): Moved this code to a better place in the file. 
1261         It was in with unrelated functions.
1262         (khtml::TypingCommand::TypingCommand): Reorganize initialization list so it is easier to read.
1263         (khtml::TypingCommand::issueCommandForDeleteKey): Remove dead code. Roll in remaining code into deleteKeyPressed.
1264         (khtml::TypingCommand::deleteKeyPressed): Add in support for carrying along smart delete flag.
1265         (khtml::TypingCommand::forwardDeleteKeyPressed): New function. Makes forward delete work like
1266         "regular" delete in terms of coalescing typing.
1267         (khtml::TypingCommand::doApply): Add case for ForwardDeleteKey.
1268         (khtml::TypingCommand::preservesTypingStyle): Ditto.
1269         * khtml/editing/htmlediting.h:
1270         (khtml::TypingCommand::): Add ForwardDeleteKey constant. Remove a couple declarations for now-dead code.
1271         (khtml::TypingCommand::smartDelete): New accessor.
1272         (khtml::TypingCommand::setSmartDelete): Ditto.
1273         * kwq/WebCoreBridge.h:
1274         * kwq/WebCoreBridge.mm:
1275         (-[WebCoreBridge deleteKeyPressedWithSmartDelete:]): Add smart delete flag.
1276         (-[WebCoreBridge forwardDeleteKeyPressedWithSmartDelete:]): New method.
1277         * khtml/editing/jsediting.cpp: Add supprt for ForwardDelete command
1278         * layout-tests/editing/editing.js: Ditto.
1279         * layout-tests/editing/deleting/delete-and-undo-expected.txt: Added.
1280         * layout-tests/editing/deleting/delete-and-undo.html: Added.
1281         * layout-tests/editing/deleting/forward-delete-expected.txt: Added.
1282         * layout-tests/editing/deleting/forward-delete.html: Added.
1283
1284 === Safari-181 ===
1285
1286 2005-01-27  David Harrison  <harrison@apple.com>
1287
1288         Reviewed by Ken.
1289
1290         <rdar://problem/3962214> AX: AXLeftLineTextMarkerRangeForTextMarker returns incorrect range
1291
1292         * kwq/KWQAccObject.mm:
1293         (-[KWQAccObject doAXRightLineTextMarkerRangeForTextMarker:]):
1294         Allowed for selection to end of line including the linebreak.
1295         
1296 2005-01-27  David Harrison  <harrison@apple.com>
1297
1298         Reviewed by Darin, Ken.
1299
1300         <rdar://problem/3964470> AX: Include attachments in AXAttributedStringForTextMarkerRange
1301
1302         * kwq/KWQAccObject.mm:
1303         (-[KWQAccObject isAttachment]):
1304         (-[KWQAccObject attachmentView]):
1305         (-[KWQAccObject role]):
1306         (-[KWQAccObject subrole]):
1307         (-[KWQAccObject roleDescription]):
1308         (-[KWQAccObject value]):
1309         (-[KWQAccObject title]):
1310         (-[KWQAccObject accessibilityDescription]):
1311         (-[KWQAccObject accessibilityIsIgnored]):
1312         (-[KWQAccObject accessibilityAttributeNames]):
1313         (-[KWQAccObject accessibilityAttributeValue:]):
1314         Make attachments accessible.
1315         
1316         (CreateCGColorIfDifferent):
1317         (AXAttributeStringSetColor):
1318         (AXAttributeStringSetNumber):
1319         (AXAttributeStringSetFont):
1320         (AXAttributeStringSetStyle):
1321         (AXAttributeStringSetElement):
1322         (AXLinkElementForNode):
1323         (AXAttributedStringAppendText):
1324         (AXAttributedStringAppendReplaced):
1325         (-[KWQAccObject doAXAttributedStringForTextMarkerRange:]):
1326         Add attachments and more text attributes to AXAttributedStringForTextMarkerRange.
1327
1328 2005-01-27  Darin Adler  <darin@apple.com>
1329
1330         Reviewed by John.
1331
1332         - fixed <rdar://problem/3807935> DOM CSS computed style line-height is wrong in two ways
1333
1334         * khtml/css/css_computedstyle.cpp: (DOM::CSSComputedStyleDeclarationImpl::getPropertyCSSValue):
1335         Use specified size rather than computed size when dealing with a percentage for line height.
1336
1337 2005-01-27  Darin Adler  <darin@apple.com>
1338
1339         Reviewed by John.
1340
1341         - fixed <rdar://problem/3971372> SWB: template function DOM_cast() won't compile with gcc 4.0
1342         - fixed other gcc 4.0 compiling problems Patrick Beard pointed out on the phone
1343
1344         * kwq/DOMInternal.h: (DOM_cast): Change the "failToCompile()" trick to use a dependent name.
1345         Nowadays, if a name is not dependent, it is checked at template definition time. But we want
1346         a failure only at template instantiation time.
1347
1348         * ForwardingHeaders/editing/text_granularity.h: Added. Needed but a bug in the 3.3 compiler made
1349         it compile anyway without this.
1350
1351         - other changes
1352
1353         * khtml/html/html_miscimpl.h: For clarity, mark these functions virtual too. They are automatically
1354         virtual because the base class ones are virtual, but it's ugly to leave it this way.
1355
1356 2005-01-26  Ken Kocienda  <kocienda@apple.com>
1357
1358         Reviewed by Hyatt
1359
1360         Fix for this bug:
1361         
1362         <rdar://problem/3971609> REGRESSION (Mail): up/down arrow navigation broken after rewrapping text by resizing window
1363         <rdar://problem/3975661> REGRESSION (Mail): left/right arrow navigation can place insertion point after last character on line
1364
1365         * khtml/editing/selection.cpp:
1366         (khtml::Selection::modifyAffinity): PARAGRAPH and LINE movements should not alter affinity. This was
1367         just a mistake before when it reset to upstream in some cases.
1368         * khtml/rendering/render_line.cpp:
1369         (khtml::RootInlineBox::closestLeafChildForXPos): Move this function down from InlineBox, and 
1370         rework the implementation. This fixes 3971609.
1371         * khtml/rendering/render_line.h:
1372         * khtml/rendering/render_text.cpp:
1373         (RenderText::caretRect): Rework the algorithm to fix 3975661. This regressed when we began placing
1374         the spaces on the end of lines in text boxes when lines wrap.
1375
1376 2005-01-26  Richard Williamson   <rjw@apple.com>
1377
1378         Fixed <rdar://problem/3972522> (179-180) 40% slowdown on iBench JavaScript test
1379
1380         I added a member variable to ObjectImp.  This changed it's size and consequently
1381         hampered the optimizations built into the garbage collector.  Objects no longer
1382         fit within the allocators cell size, and thus allocation fell back to a slower
1383         allocator.
1384
1385         As a result of this fix I also dramatically cleaned up how runtime objects are
1386         accessed.  The path mostly *removes* code.
1387         
1388         Reviewed by Chris.
1389
1390         * khtml/ecma/kjs_dom.cpp:
1391         (DOMDocumentProtoFunc::tryCall):
1392         (DOMElementProtoFunc::tryCall):
1393         (KJS::getRuntimeObject):
1394         * khtml/ecma/kjs_dom.h:
1395         * khtml/ecma/kjs_html.cpp:
1396         (KJS::HTMLDocument::tryGet):
1397         (KJS::HTMLElement::tryGet):
1398         (KJS::HTMLElement::implementsCall):
1399         (KJS::HTMLElement::call):
1400         (KJS::HTMLElement::tryPut):
1401         (KJS::HTMLCollection::tryGet):
1402         (KJS::HTMLCollection::getNamedItems):
1403         * khtml/ecma/kjs_html.h:
1404         * khtml/ecma/kjs_window.cpp:
1405         (Window::get):
1406
1407 2005-01-26  Richard Williamson   <rjw@apple.com>
1408
1409         Fixed <rdar://problem/3757712> REGRESSION (Mail): WebCore does not allow Devanagari ligature input
1410
1411         For now we are using ICU UBreakIterator to determine grapheme boundaries for
1412         cursor and deletion.  This does not match what Cocoa does exactly, but does match
1413         what Carbon does.  The areas are difference are obscure, but, according to
1414         Deborah Goldsmith, using the UBreakIterator is the reasonable approach.
1415
1416         Reviewed by Ken.
1417
1418         * khtml/rendering/render_text.cpp:
1419         (RenderText::previousOffset):
1420         (RenderText::nextOffset):
1421
1422 2005-01-25  David Harrison  <harrison@apple.com>
1423
1424         Reviewed by Maciej and Richard.
1425
1426         <rdar://problem/3963731> AX VO: Changing window sizes causes a crash using with Voice Over - KWQPtrDictImpl::clear
1427
1428         * khtml/html/html_miscimpl.cpp:
1429         (HTMLCollectionImpl::HTMLCollectionImpl):
1430         Ensure that isHTMLDocument before calling HTMLDocument-only method.
1431
1432 2005-01-25  Richard Williamson   <rjw@apple.com>
1433
1434         Part one of fix for <rdar://problem/3757712> REGRESSION (Mail): WebCore does not allow Devanagari ligature input
1435
1436         This patch changes the semantics of next() and previous() on
1437         VisiblePosition to move a grapheme (character cluster) at a
1438         time.  This means that cursor navigation with correctly move
1439         over an entire cluster.
1440
1441         However, the expected behavior for deleting a grapheme is to
1442         delete individual code points, thus decomposing the grapheme
1443         into it constituent parts.  That will be addressed in the next
1444         part of the fix.
1445
1446         Reviewed by Ken.
1447
1448         * khtml/editing/visible_position.cpp:
1449         (khtml::VisiblePosition::previousPosition):
1450         (khtml::VisiblePosition::nextPosition):
1451         * khtml/editing/visible_position.h:
1452         * khtml/rendering/render_object.cpp:
1453         (RenderObject::previousOffset):
1454         (RenderObject::nextOffset):
1455         * khtml/rendering/render_object.h:
1456         * khtml/rendering/render_text.cpp:
1457         (RenderText::previousOffset):
1458         (RenderText::nextOffset):
1459         (RenderText::findNextInlineTextBox):
1460         * khtml/rendering/render_text.h:
1461         * khtml/xml/dom_nodeimpl.cpp:
1462         (NodeImpl::previousOffset):
1463         (NodeImpl::nextOffset):
1464         * khtml/xml/dom_nodeimpl.h:
1465
1466 2005-01-25  David Harrison  <harrison@apple.com>
1467
1468         Reviewed by Maciej.
1469
1470         <rdar://problem/3973067> AXWebArea for http://apple.netscape.com/ has an empty AXLinkUIElements
1471
1472         * kwq/KWQAccObject.mm:
1473         (-[KWQAccObject accessibilityAttributeValue:]):
1474         Omit ignored AXLinks from AXLinkUIElements result
1475
1476 2005-01-25  Ken Kocienda  <kocienda@apple.com>
1477
1478         Reviewed by John
1479
1480         Fix for this bug:
1481         
1482         <rdar://problem/3972851> REGRESSION (179-180+): Repro crash in ApplyStyleCommand::cleanUpEmptyStyleSpans
1483
1484         * khtml/editing/htmlediting.cpp:
1485         (khtml::ApplyStyleCommand::cleanUpEmptyStyleSpans): Added two null checks.
1486
1487 2005-01-25  Ken Kocienda  <kocienda@apple.com>
1488
1489         Reviewed by John
1490
1491         Fix for this bug:
1492         
1493         <rdar://problem/3954710> Mail crashed while editing signatures - NodeImpl::isBlockFlow
1494
1495         The fix is more general than for this one bug, and may work to fix many crashers. The problem
1496         is that the ReplaceSelectionCommand never checked whether its starting selection is empty. If
1497         it is, then we need to bail before doing the work of the command, which we need to deref the
1498         start and end points of the selection in order to do its work. I think you can see the crash
1499         potential.
1500
1501         * khtml/editing/htmlediting.cpp:
1502         (khtml::ReplaceSelectionCommand::doApply): Assert selection is not empty.
1503         * kwq/WebCoreBridge.mm:
1504         (partHasSelection): New helper function to test that bridge has a part with a selection.
1505         
1506         Use new helper function to test part and selection; return from these function if this test fails.
1507         
1508         (-[WebCoreBridge rangeByExpandingSelectionWithGranularity:])
1509         (-[WebCoreBridge rangeByAlteringCurrentSelection:direction:granularity:])
1510         (-[WebCoreBridge alterCurrentSelection:direction:granularity:])
1511         (-[WebCoreBridge rangeByAlteringCurrentSelection:verticalDistance:])
1512         (-[WebCoreBridge alterCurrentSelection:verticalDistance:])
1513         (-[WebCoreBridge documentFragmentWithText:])
1514         (-[WebCoreBridge replaceSelectionWithFragment:selectReplacement:smartReplace:])
1515         (-[WebCoreBridge insertLineBreak])
1516         (-[WebCoreBridge insertParagraphSeparator])
1517         (-[WebCoreBridge insertParagraphSeparatorInQuotedContent])
1518         (-[WebCoreBridge insertText:selectInsertedText:])
1519         (-[WebCoreBridge deleteSelectionWithSmartDelete:])
1520         (-[WebCoreBridge ensureSelectionVisible])
1521
1522 2005-01-24  Kevin Decker  <kdecker@apple.com>
1523
1524         Reviewed by Darin.
1525
1526         Fixed <rdar://problem/3932374> REGRESSION: 'ReferenceError - Can't find variable' JavaScript error at webxpress.fidelity.com
1527
1528         * khtml/html/html_miscimpl.h: Missing virtual identifiers for namedItem() and nextNamedItem() exposed a flaw that prevented finding variables in form [HTMLFormCollectionImpl] scopes.
1529         
1530
1531 2005-01-24  Vicki Murley <vicki@apple.com>
1532
1533         Reviewed by kocienda.
1534
1535         - fix <rdar://problem/3810661> computed style not handled for Apple extensions
1536  
1537         * khtml/css/css_computedstyle.cpp: (DOM::):
1538         (DOM::CSSComputedStyleDeclarationImpl::getPropertyCSSValue): add -apple-line-clamp and -apple-text-size-adjust
1539
1540 2005-01-24  Darin Adler  <darin@apple.com>
1541
1542         Reviewed by Kevin.
1543
1544         - fixed <rdar://problem/3969884> REGRESSION (179-180): Typing password not echoed as "bullets" at paypal.com when field is first focused
1545
1546         * kwq/KWQTextField.mm: (-[KWQTextFieldController initWithTextField:QLineEdit:]):
1547         Sizing up the form editor, which fixes things for normal fields and search fields,
1548         screws things up for password fields. Eventually, I'll need to figure out why this is
1549         and file a bug so that the AppKit team fixes it. In the mean time, just check for the
1550         case of the secure text field, and don't size up in that case.
1551
1552 2005-01-24  Ken Kocienda  <kocienda@apple.com>
1553
1554         Reviewed by Hyatt
1555
1556         Fix for this bug:
1557         
1558         <rdar://problem/3963560> 8A354: Inserting Japanese text to the line head causes line break
1559
1560         * khtml/editing/htmlediting.cpp:
1561         (khtml::ReplaceSelectionCommand::doApply): Add one more case where we merge content into the
1562         existing line. This covers the situation see using the steps to reproduce this bug.
1563
1564 2005-01-21  Maciej Stachowiak  <mjs@apple.com>
1565
1566         Reviewed by Darin.
1567
1568         <rdar://problem/3967572> Editing should split elements before removing style
1569         
1570         * khtml/editing/htmlediting.cpp:
1571         (khtml::CompositeEditCommand::splitElement):
1572         (khtml::CompositeEditCommand::mergeIdenticalElements):
1573         (khtml::CompositeEditCommand::wrapContentsInDummySpan):
1574         (khtml::CompositeEditCommand::splitTextNodeContainingElement):
1575         (khtml::ApplyStyleCommand::applyInlineStyle):
1576         (khtml::ApplyStyleCommand::splitTextAtStartIfNeeded):
1577         (khtml::ApplyStyleCommand::splitTextAtEndIfNeeded):
1578         (khtml::ApplyStyleCommand::splitTextElementAtStartIfNeeded):
1579         (khtml::ApplyStyleCommand::splitTextElementAtEndIfNeeded):
1580         (khtml::areIdenticalElements):
1581         (khtml::ApplyStyleCommand::mergeStartWithPreviousIfIdentical):
1582         (khtml::ApplyStyleCommand::mergeEndWithNextIfIdentical):
1583         (khtml::ApplyStyleCommand::cleanUpEmptyStyleSpans):
1584         (khtml::ApplyStyleCommand::addInlineStyleIfNeeded):
1585         (khtml::InsertParagraphSeparatorCommand::doApply):
1586         (khtml::InsertParagraphSeparatorInQuotedContentCommand::doApply):
1587         (khtml::InsertTextCommand::prepareForTextInsertion):
1588         (khtml::SplitTextNodeCommand::doUnapply):
1589         (khtml::SplitElementCommand::SplitElementCommand):
1590         (khtml::SplitElementCommand::~SplitElementCommand):
1591         (khtml::SplitElementCommand::doApply):
1592         (khtml::SplitElementCommand::doUnapply):
1593         (khtml::MergeIdenticalElementsCommand::MergeIdenticalElementsCommand):
1594         (khtml::MergeIdenticalElementsCommand::~MergeIdenticalElementsCommand):
1595         (khtml::MergeIdenticalElementsCommand::doApply):
1596         (khtml::MergeIdenticalElementsCommand::doUnapply):
1597         (khtml::WrapContentsInDummySpanCommand::WrapContentsInDummySpanCommand):
1598         (khtml::WrapContentsInDummySpanCommand::~WrapContentsInDummySpanCommand):
1599         (khtml::WrapContentsInDummySpanCommand::doApply):
1600         (khtml::WrapContentsInDummySpanCommand::doUnapply):
1601         (khtml::SplitTextNodeContainingElementCommand::SplitTextNodeContainingElementCommand):
1602         (khtml::SplitTextNodeContainingElementCommand::~SplitTextNodeContainingElementCommand):
1603         (khtml::SplitTextNodeContainingElementCommand::doApply):
1604         * khtml/editing/htmlediting.h:
1605
1606         New layout test that shows the side benefit of this.
1607         
1608         * layout-tests/editing/style/unbold-in-bold-expected.txt: Added.
1609         * layout-tests/editing/style/unbold-in-bold.html: Added.
1610
1611 2005-01-24  Darin Adler  <darin@apple.com>
1612
1613         Reviewed by John.
1614
1615         - fixed <rdar://problem/3933435> -[DOMRange cloneContents] sometimes alters the original DOMRange
1616
1617         * khtml/xml/dom2_rangeimpl.cpp: (DOM::RangeImpl::processContents): Fixed code that was collapsing
1618         the range after processing the contents. That's right for extract and delete, but not clone.
1619
1620         - fixed <rdar://problem/3714184> inline input works incorrectly when I type Korean slowly in textfield in form on www.google.co.kr
1621         - fixed <rdar://problem/3193848> Can't enter SSN to sign up for Chase visa online account (changing focus inside key press handler)
1622         - fixed <rdar://problem/3874683> REGRESSION (161-162): Crash after typing command-Z to undo after pasting text with newline in it into a text field <input type=text>
1623
1624         * kwq/KWQLineEdit.mm:
1625         (QLineEdit::text): Changed to call a new string method on the controller instead of calling
1626         stringValue, since stringValue has a bad side effect of ending inline input.
1627         (QLineEdit::selectAll): Changed to only call selectText: when the field is already selected.
1628         When you are giving the field focus, it automatically gets all selected, and this change
1629         is required in the case where we defer the focus change.
1630
1631         * kwq/KWQTextField.h: Added a new string method to the controller.
1632         * kwq/KWQTextField.mm:
1633         (-[KWQTextFieldController setMaximumLength:]): Call the new string method instead of using stringValue.
1634         (-[KWQTextFieldController controlTextDidChange:]): Removed the code to truncate at the first CR or LF.
1635         That's now handled in the shouldChangeTextInRange method instead.
1636         (-[KWQTextFieldController textView:shouldHandleEvent:]): Add new logic to defer responder changes until
1637         after the event is handled. This makes sure the key gets into the field that's already handling it at
1638         rather than ending up in the newly-focused field if the key press handler focuses a different element.
1639         (-[KWQTextFieldController textView:didHandleEvent:]): Turn off deferral here, now that the key press
1640         has been handled.
1641         (-[KWQTextFieldController string]): Added. Calls stringValue only if there's no editor. If there is
1642         an editor, calls string on that instead.
1643         (-[KWQTextFieldController textView:shouldChangeTextInRange:replacementString:]): Added. Called by
1644         the three field subclasses. Truncates incoming strings at the first CR or LF character. This works
1645         properly with Undo, and the old technique did not.
1646         (-[KWQTextFieldController preprocessString:]): Added. Helper used for all the setStringValue methods
1647         so they all truncate at the first CR or LF as well as truncating to the appropriate length.
1648         (-[KWQTextField setStringValue:]): Changed to call the controller.
1649         (-[KWQTextField textView:shouldChangeTextInRange:replacementString:]): Added. Calls the controller.
1650         (-[KWQSecureTextField setStringValue:]): More of the same.
1651         (-[KWQSecureTextField textView:shouldChangeTextInRange:replacementString:]): Ditto.
1652         (-[KWQSearchField setStringValue:]): Ditto.
1653         (-[KWQSearchField textView:shouldChangeTextInRange:replacementString:]): Ditto.
1654
1655         * kwq/KWQWidget.h: Added the new setDeferFirstResponderChanges function.
1656         * kwq/KWQWidget.mm:
1657         (QWidget::~QWidget): Clear out the deferredFirstResponder global just in case we are destroyed
1658         while we "have the ball".
1659         (QWidget::hasFocus): If we are in the deferred mode, use the global to decide who to say is focused.
1660         (QWidget::setFocus): If we are in the deferred mode, set the global instead of making something be
1661         the first responder.
1662         (QWidget::setDeferFirstResponderChanges): Set the boolean. If the boolean is being cleared, then
1663         get the deferred first responder and call setFocus on it again, which will do the work we didn't
1664         want to do earlier.
1665
1666 2005-01-24  Ken Kocienda  <kocienda@apple.com>
1667
1668         Reviewed by John
1669
1670         Fix for this bug:
1671         
1672         <rdar://problem/3964350> Deleting all content and typing in a message gets one letter, then beeps
1673
1674         This is a problem with the way we turn key events, when a user starts typing, into editing commands. 
1675         Right now, that initial delete key in an empty window is turned into an editing command, and much 
1676         editing code runs that need not run. What's more, this is confusing the selection machinery. The
1677         solution is to detect the "delete in an empty window" case and don't turn this into an editing
1678         command at all.
1679
1680         * khtml/editing/htmlediting.cpp:
1681         (khtml::TypingCommand::deleteKeyPressed)
1682
1683 2005-01-23  Adele Amchan  <adele@apple.com>
1684
1685         Fixed <rdar://problem/3964286> REGRESSION (178-179): menus and "go to old site" link at Ameritrade's new site don't work
1686
1687         Removed check for document from checkCompleted.  In this case, WebCore never knew that a WebImageView was complete because 
1688         it fell into this document check case in checkCompleted.  
1689         Added check for document to tokenizerProcessedData (see <rdar://problem/3807144>)
1690
1691         Reviewed by Darin.
1692
1693         * khtml/khtml_part.cpp:
1694         (KHTMLPart::stop):
1695         (KHTMLPart::checkCompleted):
1696         * khtml/khtml_part.h:
1697         * kwq/KWQKHTMLPart.mm: (KWQKHTMLPart::tokenizerProcessedData):
1698
1699 2005-01-21  Richard Williamson   <rjw@apple.com>
1700
1701         Fixed <rdar://problem/3759399> Javascript / Liveconnect problems ((event handler):Undefined value)
1702
1703         Java applets specified with <object> or <embed> weren't scriptable.  Now they are.
1704
1705         Reviewed by Chris.
1706
1707         * khtml/html/html_objectimpl.cpp:
1708         (HTMLEmbedElementImpl::getEmbedInstance):
1709         (HTMLObjectElementImpl::getObjectInstance):
1710
1711 2005-01-21  Ken Kocienda  <kocienda@apple.com>
1712
1713         Reviewed by John
1714
1715         Fix for this bug:
1716         
1717         <rdar://problem/3959464> REGRESSION (Mail): Insertion point goes back to beginning of document after deleting
1718
1719         * khtml/editing/htmlediting.cpp:
1720         (khtml::DeleteSelectionCommand::handleGeneralDelete): Add special case to handle retaining a fully-selected block.
1721         This fixes the bug.
1722         * layout-tests/editing/deleting/delete-3959464-fix-expected.txt: Added.
1723         * layout-tests/editing/deleting/delete-3959464-fix.html: Added.
1724
1725 2005-01-21  Richard Williamson   <rjw@apple.com>
1726
1727         Fixed <rdar://problem/3966998> REGRESSION(179-TOT) clicking on gmail message brings me to blank screen
1728
1729         getElementById() sometimes returns Undefined() instead of Null().
1730
1731         Reviewed by Hyatt.
1732
1733         * khtml/ecma/kjs_dom.cpp:
1734         (DOMDocumentProtoFunc::tryCall):
1735
1736 2005-01-21  David Hyatt  <hyatt@apple.com>
1737
1738         Fix for 3773809, make sure that overflow regions never end up at an invalid scroll offset because of a layout change.
1739         
1740         Reviewed by kocienda
1741
1742         * khtml/rendering/render_layer.cpp:
1743         (RenderLayer::updateScrollInfoAfterLayout):
1744
1745 2005-01-21  David Hyatt  <hyatt@apple.com>
1746
1747         Fix for 3966349, hang loading page.  Make sure that loops using popOneBlock properly check for a null
1748         blockStack to avoid an infinite loop.
1749         
1750         Reviewed by kocienda
1751
1752         * khtml/html/htmlparser.cpp:
1753         (KHTMLParser::parseToken):
1754         (KHTMLParser::insertNode):
1755         (KHTMLParser::popInlineBlocks):
1756
1757 2005-01-21  Ken Kocienda  <kocienda@apple.com>
1758
1759         Reviewed by John
1760
1761         Fix for this bug:
1762         
1763         <rdar://problem/3957204> Mail crashed when sending a message in ~InsertParagraphSeparatorInQuotedContentCommand
1764
1765         * khtml/editing/htmlediting.cpp:
1766         (khtml::InsertParagraphSeparatorInQuotedContentCommand::InsertParagraphSeparatorInQuotedContentCommand):
1767         InsertParagraphSeparatorInQuotedContentCommand has this member variable: DOM::ElementImpl *m_breakNode;
1768         I failed to initialize this variable to null in the constructor, and there is an uncommonly-traveled 
1769         code path which does not set this variable to something good. In the destructor, we check for null, 
1770         and deref if non-null. Obvious "BOOM" potential. Fixed.
1771
1772 2005-01-21  Ken Kocienda  <kocienda@apple.com>
1773
1774         Reviewed by John
1775
1776         Fix for this bug:
1777         
1778         <rdar://problem/3966311> REGRESSION (Mail): Hitting return makes space character disappear
1779
1780         * khtml/editing/htmlediting.cpp:
1781         (khtml::InsertParagraphSeparatorCommand::doApply): When writing the code to insert a block
1782         in response to the return key, I did not write code to cover the case described in the bug.
1783         Now I have.
1784         * layout-tests/editing/inserting/insert-div-025-expected.txt: Added.
1785         * layout-tests/editing/inserting/insert-div-025.html: Added.
1786
1787 2005-01-20  Maciej Stachowiak  <mjs@apple.com>
1788
1789         Reviewed by Ken.
1790
1791         <rdar://problem/3965196> security fix for javascript: exploit missed one case (already fixed in updates)
1792         
1793         * khtml/ecma/kjs_window.cpp:
1794         (WindowFunc::tryCall): correct mistake in earlier fix for the following bug, caught by Adele:
1795
1796 2005-01-20  Maciej Stachowiak  <mjs@apple.com>
1797
1798         Reviewed by Ken.
1799
1800         <rdar://problem/3965466> editing needs to insert text before applying typing style
1801         
1802         * khtml/editing/htmlediting.cpp:
1803         (khtml::ApplyStyleCommand::addInlineStyleIfNeeded): Remove a FIXME comment.
1804         (khtml::InsertLineBreakCommand::doApply): Apply style to the BR
1805         node after inserting it.
1806         (khtml::InsertTextCommand::prepareForTextInsertion): Don't try to
1807         apply style to any new nodes created before inserting.
1808         (khtml::InsertTextCommand::input): Apply style to the inserted range
1809         after doing the text insert.
1810         * khtml/editing/htmlediting.h:
1811
1812         This change leads to improved results on one of the layout tests:
1813         
1814         * layout-tests/editing/inserting/insert-div-024-expected.txt:
1815
1816 === Safari-180 ===
1817
1818 2005-01-20  Ken Kocienda  <kocienda@apple.com>
1819
1820         Reviewed by John
1821
1822         Fix for this bug:
1823         
1824         <rdar://problem/3964646> REGRESSION (179-180): Typing space at end of line makes following paragraph disappear
1825
1826         * khtml/editing/htmlediting.cpp:
1827         (khtml::CompositeEditCommand::removeBlockPlaceholderIfNeeded): Recent change to block placeholder removal code 
1828         caused this regression. The code became too aggressive in removing block placeholders, and would remove them
1829         from blocks other than the block containing the selection.
1830         * layout-tests/editing/inserting/insert-div-023-expected.txt: This file had a spurious BR element in it that
1831         I did not notice earlier.
1832         * layout-tests/editing/inserting/insert-div-024-expected.txt: Ditto.
1833
1834 2005-01-20  David Hyatt  <hyatt@apple.com>
1835
1836         Fix for oddness on albertsons.com.  Make sure not to crash when setting/removing style properties on a node
1837         with no document.  The bug # is 3813900.
1838         
1839         Reviewed by john
1840
1841 2005-01-20  David Harrison  <harrison@apple.com>
1842
1843         Reviewed by Darin.
1844
1845         PARTIAL fix for following bug.  Create attributed string with fonts and links.  Still need to add attachments.
1846         <rdar://problem/3942606> AX: Support kAXAttributedStringForTextMarkerRangeParameterizedAttribute
1847         
1848         * kwq/KWQAccObject.mm:
1849         (-[KWQAccObject textUnderElement]):
1850         Touched up previous checkin to match code review comments.
1851         
1852         (-[KWQAccObject value]):
1853         Use plainText for this one instead of obsolete attributedString.
1854         
1855         (-[KWQAccObject accessibilityParameterizedAttributeNames]):
1856         Advertise AXAttributedStringForTextMarkerRange.
1857         
1858         (AXAttributeStringAddFont):
1859         (AXAttributeStringAddElement):
1860         (-[KWQAccObject linkUIElementForNode:]):
1861         (-[KWQAccObject _addAttachmentForElement:URL:needsParagraph:usePlaceholder:]):
1862         (-[KWQAccObject accessibilityAttributedStringForRange:]):
1863         New routines to support AXAttributedStringForTextMarkerRange.
1864         
1865         (-[KWQAccObject doAXAttributedStringForTextMarkerRange:]):
1866         Use new routines instead of obsolete attributedString.
1867
1868 2005-01-20  David Harrison  <harrison@apple.com>
1869
1870         Reviewed by Darin.
1871
1872         <rdar://problem/3960196> AX Crash in DOM::Range::setStartBefore
1873
1874         * khtml/xml/dom_docimpl.cpp:
1875         (DocumentImpl::getAccObjectCache):
1876         Adjust when detecting cache in non-top level WebArea.
1877         * kwq/KWQAccObject.mm:
1878         (-[KWQAccObject textUnderElement]):
1879         (-[KWQAccObject accessibilityAttributeValue:]):
1880         Make sure the elements document is the current one for the part.
1881
1882 2005-01-20  Darin Adler  <darin@apple.com>
1883
1884         Reviewed by John.
1885
1886         - fixed <rdar://problem/3922980> Mail not crashing, just quitting itself suddenly in -[WebHTMLView(MailExtras) findString:options:]
1887
1888         * khtml/dom/dom2_range.cpp: (DOM::operator==): Handle null and detached ranges without raising exceptions.
1889         The uncaught exception would make the entire program terminate.
1890
1891         - fixed <rdar://problem/3885729> attempting to modify a computed style does nothing, but should raise a DOM exception
1892
1893         * kwq/DOM-CSS.mm: (-[DOMCSSStyleDeclaration setProperty:::]): Uncommented this code which I had to disable
1894         back in November because Mail was stumbling over it.
1895
1896         - fixed <rdar://problem/3943049> focus() called during onload handler results in square text field on <input type=search>        
1897
1898         * kwq/KWQLineEdit.mm: (QLineEdit::baselinePosition): Change computation so it will work even for fields
1899         that position their text in a way that depends on vertical size. In the case of a search field, the text
1900         is centered, so the old logic was broken.
1901         * kwq/KWQTextField.mm: (-[KWQTextFieldController initWithTextField:QLineEdit:]): Set the frame size to
1902         something large enough to accomodate the field editor. If we start the frame at size 0,0 we run into
1903         AppKit trouble when it insets the frame to figure out the frame for the field editor. In the case of this
1904         bug this happens because we become first responder before being sized and positioned by the HTML layout code.
1905
1906         - improved debugging output when using "po" from gdb with Objective-C DOM
1907
1908         * kwq/DOM.mm:
1909         (-[DOMNode description]): Added. Includes node name ("<tr>") and node value (e.g., string for text node).
1910         (-[DOMRange description]): Tweaked format.
1911
1912 2005-01-19  Richard Williamson   <rjw@apple.com>
1913
1914         After further discussion with Real we have decided to NOT include the
1915         additional CLSID for the real plugin.  See 3958601.
1916
1917         Reviewed by Darin.
1918
1919         * khtml/rendering/render_frames.cpp:
1920         (RenderPartObject::updateWidget):
1921
1922 2005-01-19  David Harrison  <harrison@apple.com>
1923
1924         Reviewed by Maciej.
1925
1926         <rdar://problem/3949429> AX: word marker routines returns incorrect data for empty line
1927
1928         Previous checkin for this bug was missing some of the patch.  Editing snafu with multiple changes in tree.
1929         
1930         * kwq/KWQAccObject.mm:
1931         (-[KWQAccObject doAXRightLineTextMarkerRangeForTextMarker:]):
1932         (-[KWQAccObject doAXNextWordEndTextMarkerForTextMarker:]):
1933         (-[KWQAccObject doAXPreviousWordStartTextMarkerForTextMarker:]):
1934         (-[KWQAccObject doAXNextLineEndTextMarkerForTextMarker:]):
1935         (-[KWQAccObject doAXPreviousLineStartTextMarkerForTextMarker:]):
1936         (-[KWQAccObject doAXPreviousSentenceStartTextMarkerForTextMarker:]):
1937         (-[KWQAccObject doAXPreviousParagraphStartTextMarkerForTextMarker:]):
1938
1939 2005-01-19  Ken Kocienda  <kocienda@apple.com>
1940
1941         Reviewed by John
1942
1943         * khtml/editing/htmlediting.cpp:
1944         (khtml::InsertParagraphSeparatorCommand::applyStyleAfterInsertion): Small, cosmetic change John and I decided
1945         to do on my last checkin, but I forgot to do before landing.
1946
1947 2005-01-19  Ken Kocienda  <kocienda@apple.com>
1948
1949         Reviewed by John
1950
1951         Fix for this bug:
1952         
1953         <rdar://problem/3959727> REGRESSION (Mail): Style not preserved on blank lines
1954
1955         * khtml/editing/htmlediting.cpp:
1956         (khtml::CompositeEditCommand::applyStyle):
1957         (khtml::CompositeEditCommand::insertBlockPlaceholder): New function that unconditionally adds a block placeholder.
1958         (khtml::CompositeEditCommand::insertBlockPlaceholderIfNeeded): Now returns bool based on whether
1959         placeholder was added or not.
1960         (khtml::CompositeEditCommand::removeBlockPlaceholderIfNeeded): Now searches all the descendents of a block
1961         looking for a placeholder. The old code, which just looked at the last child of a node, started missing
1962         once block placeholders became styled (which started happening with this patch).
1963         (khtml::DeleteSelectionCommand::calculateTypingStyleAfterDelete): Now handles applying typing style
1964         to a block placeholder at call time, rather than setting the typing style as a latent style that
1965         might be applied later. This is an important part of the bug fix.
1966         (khtml::DeleteSelectionCommand::doApply): Now uses bool return value from insertBlockPlaceholderIfNeeded()
1967         and passes it along to calculateStyleBeforeInsertion, so the case where a block placeholder needs to
1968         be styled can be detected.
1969         (khtml::InsertParagraphSeparatorCommand::InsertParagraphSeparatorCommand): Changed the way this class
1970         managed style. Before it would calculate and set typing style for the block added. This is not
1971         sufficient. Added blocks need to styled immediately. Some name changes to instance variables in 
1972         this class due to the change to accommodate this change.
1973         (khtml::InsertParagraphSeparatorCommand::~InsertParagraphSeparatorCommand): Name changes, as above.
1974         (khtml::InsertParagraphSeparatorCommand::calculateStyleBeforeInsertion): Ditto.
1975         (khtml::InsertParagraphSeparatorCommand::applyStyleAfterInsertion): Ditto.
1976         (khtml::InsertParagraphSeparatorCommand::doApply): Ditto.
1977         (khtml::ReplaceSelectionCommand::doApply): Improve check for testing when a placeholder
1978         block can be removed in its entirety after the insertion.
1979         * khtml/editing/htmlediting.h: Update header accordingly.
1980         * khtml/khtml_part.cpp:
1981         (KHTMLPart::selectionComputedStyle): Move position for computed style check downstream before
1982         doing check when the position is in an empty block (this makes sure any style on any block
1983         placeholder is accounted for).
1984
1985         New layout tests to check bug fix.
1986
1987         * layout-tests/editing/style/block-style-004-expected.txt: Added.
1988         * layout-tests/editing/style/block-style-004.html: Added.
1989         * layout-tests/editing/style/block-style-005-expected.txt: Added.
1990         * layout-tests/editing/style/block-style-005.html: Added.
1991         * layout-tests/editing/style/block-style-006-expected.txt: Added.
1992         * layout-tests/editing/style/block-style-006.html: Added.
1993
1994         Results updated to reflect new block placeholder code.
1995
1996         * layout-tests/editing/inserting/insert-div-004-expected.txt 
1997         * layout-tests/editing/inserting/insert-div-005-expected.txt
1998         * layout-tests/editing/inserting/insert-div-006-expected.txt
1999         * layout-tests/editing/inserting/insert-div-008-expected.txt
2000         * layout-tests/editing/inserting/insert-div-011-expected.txt
2001         * layout-tests/editing/inserting/insert-div-012-expected.txt
2002         * layout-tests/editing/inserting/insert-div-013-expected.txt
2003         * layout-tests/editing/inserting/insert-div-014-expected.txt
2004         * layout-tests/editing/inserting/insert-div-015-expected.txt
2005         * layout-tests/editing/inserting/insert-div-016-expected.txt
2006         * layout-tests/editing/inserting/insert-div-017-expected.txt
2007         * layout-tests/editing/inserting/insert-div-018-expected.txt
2008         * layout-tests/editing/inserting/insert-div-019-expected.txt
2009         * layout-tests/editing/inserting/insert-div-021-expected.txt
2010         * layout-tests/editing/inserting/insert-div-022-expected.txt
2011         * layout-tests/editing/inserting/insert-div-023-expected.txt
2012         * layout-tests/editing/inserting/insert-div-024-expected.txt
2013
2014 2005-01-19  David Hyatt  <hyatt@apple.com>
2015
2016         Dont null-check the renderer before submitting, since a script can set it to display:none and still expect the
2017         submission to occur.  Fixes bug #3477282.
2018         
2019         Reviewed by kdecker
2020
2021         (DOM::HTMLInputElementImpl::defaultEventHandler):
2022
2023 2005-01-18  Richard Williamson   <rjw@apple.com>
2024         
2025         Fixed several issues all arising from analysis of plugin detection code at ifilm.com:
2026
2027         Fixed <rdar://problem/3958592> can't script plug-ins if plug-in is invoked with <object> element instead of <embed>
2028         Fixed <rdar://problem/3958597> <object> elements with IDs do not show up as named properties of the document
2029         Fixed <rdar://problem/3960973> DOM objects for plugin elements are not accessible
2030         Fixed <rdar://problem/3958601> need an additional class ID in WebCore for the Real plug-in
2031
2032         We now support accessing scriptable plugin objects that are specified with <applet>, <embed>, or <object>
2033         tags.  Also, if any of these elements are named they can be accessed from the document or window objects.
2034         Finally, DOM methods are properties will be forwarded appropriately for the plugin's root scriptable object.
2035
2036         Reviewed by Chris.
2037
2038         * khtml/dom/html_document.cpp:
2039         (HTMLDocument::objects):
2040         * khtml/dom/html_document.h:
2041         * khtml/ecma/kjs_dom.cpp:
2042         (DOMDocumentProtoFunc::tryCall):
2043         (DOMElementProtoFunc::tryCall):
2044         (KJS::getRuntimeObject):
2045         * khtml/ecma/kjs_dom.h:
2046         * khtml/ecma/kjs_html.cpp:
2047         (KJS::HTMLDocument::tryGet):
2048         (KJS::HTMLElement::tryGet):
2049         (KJS::HTMLCollection::tryGet):
2050         (KJS::HTMLCollection::getNamedItems):
2051         * khtml/ecma/kjs_window.cpp:
2052         (Window::get):
2053         * khtml/html/html_miscimpl.cpp:
2054         (HTMLCollectionImpl::traverseNextItem):
2055         * khtml/html/html_miscimpl.h:
2056         (DOM::HTMLCollectionImpl::):
2057         * khtml/html/html_objectimpl.cpp:
2058         (HTMLAppletElementImpl::getAppletInstance):
2059         (HTMLObjectElementImpl::HTMLObjectElementImpl):
2060         (HTMLObjectElementImpl::getObjectInstance):
2061         * khtml/html/html_objectimpl.h:
2062         * khtml/rendering/render_frames.cpp:
2063         (RenderPartObject::updateWidget):
2064         * kwq/KWQKHTMLPart.h:
2065         * kwq/KWQKHTMLPart.mm:
2066         (KWQKHTMLPart::getObjectInstanceForView):
2067
2068 2005-01-18  David Hyatt  <hyatt@apple.com>
2069
2070         Fix for 3948123, rolling over link erases nearby text.  The repaint rect check for lines was wrong whenever
2071         two lines overlapped.
2072         
2073         Reviewed by kocienda
2074
2075         * khtml/rendering/render_flow.cpp:
2076         (RenderFlow::paintLines):
2077
2078 2005-01-18  Ken Kocienda  <kocienda@apple.com>
2079
2080         Reviewed by Hyatt
2081         
2082         Fix for this bug:
2083         
2084         <rdar://problem/3960116> Focus rings paint incorrectly for contenteditable blocks in web pages
2085
2086         * khtml/rendering/render_flow.cpp:
2087         (RenderFlow::addFocusRingRects): Fix painting of focus rings so that ring only paints around
2088         outermost contenteditable elements.
2089
2090 2005-01-18  David Harrison  <harrison@apple.com>
2091
2092         Reviewed by Darin.
2093
2094         <rdar://problem/3959668> accessibilityFocusedUIElement sometimes returns an ignored element; it must not
2095
2096         * kwq/KWQAccObject.mm:
2097         (-[KWQAccObject accessibilityFocusedUIElement]):
2098         Return parentObjectUnignored if focused object is ignored.
2099
2100 2005-01-18  Ken Kocienda  <kocienda@apple.com>
2101
2102         Reviewed by John
2103
2104         Fix for this bug:
2105         
2106         <rdar://problem/3952877> REGRESSION (Mail): Command-left/right-arrows don't work with file attachment
2107
2108         * khtml/editing/selection.cpp:
2109         (khtml::nodeForInlineBox): New helper function used in reimplementation of function below.
2110         (khtml::selectionForLine): Reimplemented using line box smarts. I originally wrote this code when
2111         I had a less than full understanding of line layout. I can do better now, and my new version no
2112         longer fails to notice attachments when doing the kind of navigation mentioned in the bug.
2113
2114 2005-01-17  David Harrison  <harrison@apple.com>
2115
2116         Reviewed by John Sullivan.
2117
2118         <rdar://problem/3949429> AX: word marker routines returns incorrect data for empty line
2119         <rdar://problem/3949848> AX: paragraph marker routines do not work when given a paragraph end marker
2120
2121         Also fixed sentence support in the same way.
2122         
2123         * kwq/KWQAccObject.mm:
2124         (-[KWQAccObject doAXNextLineEndTextMarkerForTextMarker:]):
2125         (-[KWQAccObject doAXNextSentenceEndTextMarkerForTextMarker:]):
2126         (-[KWQAccObject doAXPreviousSentenceStartTextMarkerForTextMarker:]):
2127         (-[KWQAccObject doAXNextParagraphEndTextMarkerForTextMarker:]):
2128         (-[KWQAccObject doAXPreviousParagraphStartTextMarkerForTextMarker:]):
2129         Move one position in desired direction before calling visible_units.cpp code.
2130
2131 2005-01-17  David Harrison  <harrison@apple.com>
2132
2133         Updated expected test results.
2134         
2135         <rdar://problem/3945880> line-ending space seems not to be present
2136
2137         * layout-tests/editing/deleting/delete-ws-fixup-001-expected.txt:
2138         * layout-tests/editing/deleting/delete-ws-fixup-002-expected.txt:
2139         * layout-tests/editing/inserting/insert-div-020-expected.txt:
2140         * layout-tests/editing/inserting/insert-div-021-expected.txt:
2141         * layout-tests/editing/inserting/insert-div-022-expected.txt:
2142         * layout-tests/editing/inserting/insert-div-023-expected.txt:
2143         * layout-tests/editing/inserting/insert-div-024-expected.txt:
2144
2145 2005-01-17  David Harrison  <harrison@apple.com>
2146
2147         Reviewed by Dave Hyatt (bidi.cpp) and Darin Adler (selection.cpp).
2148
2149         <rdar://problem/3945880> line-ending space seems not to be present
2150
2151         * khtml/editing/selection.cpp:
2152         (khtml::Selection::validate):
2153         Extend AFTER_WHITE_SPACE code to support white spac in the middle of paragraphs, not just the end.
2154         * khtml/rendering/bidi.cpp:
2155         (khtml::RenderBlock::findNextLineBreak):
2156         Pick left/rightness of word selection based on being at the end of paragraph (i.e. after a hard line break).
2157
2158 2005-01-17  Darin Adler  <darin@apple.com>
2159
2160         Reviewed by John Louch.
2161
2162         - fixed <rdar://problem/3958503> need screenX and screenY to use WebKit windowFrame delegate
2163
2164         * khtml/ecma/kjs_window.cpp: (Window::get): Change screenX and screenY to use frameGeometry instead
2165         of using mapToGlobal and screen in a complicated way.
2166         * kwq/KWQKHTMLView.mm: Removed unused mapToGlobal function.
2167         * kwq/KWQWindowWidget.h: Ditto.
2168         * kwq/KWQWindowWidget.mm: Ditto.
2169
2170 2005-01-17  David Hyatt  <hyatt@apple.com>
2171
2172         Fix a screwup in rightmost/lowets position computation.  3955207.  Make sure floats with layers are still checked.
2173
2174         Reviewed by kocienda
2175         
2176         * khtml/rendering/render_block.cpp
2177
2178 2005-01-17  Ken Kocienda  <kocienda@apple.com>
2179
2180         Reviewed by John
2181
2182         <rdar://problem/3953366> Problems with typing attributes in HTML compose
2183
2184         * khtml/editing/htmlediting.cpp:
2185         (khtml::DeleteSelectionCommand::calculateTypingStyleAfterDelete): Remove misguided "optimization"
2186         that tried to sense when typing style could be cleared without actually doing a style diff between
2187         before-delete and after-delete positions. Removing this extra check and running the 
2188         general-purpose code fixes the bug.
2189
2190 2005-01-17  Richard Williamson   <rjw@apple.com>
2191
2192         Fixed <rdar://problem/3753030> Need to ensure same origin for plugin binding invocations (origin security rules)
2193
2194         Keep track of originating execution context and target execution
2195         context for native JS object wrappers, and perform appropriate
2196         security checks.
2197
2198         Reviewed by David Harrison.
2199
2200         * khtml/ecma/kjs_binding.cpp:
2201         (ScriptInterpreter::isGlobalObject):
2202         (ScriptInterpreter::isSafeScript):
2203         (ScriptInterpreter::interpreterForGlobalObject):
2204         * khtml/ecma/kjs_binding.h:
2205         * khtml/ecma/kjs_window.cpp:
2206         (Window::interpreter):
2207         (Window::isSafeScript):
2208         * khtml/ecma/kjs_window.h:
2209         * kwq/DOMInternal.mm:
2210         (-[WebScriptObject _initializeScriptDOMNodeImp]):
2211         * kwq/KWQKHTMLPart.mm:
2212         (KWQKHTMLPart::windowScriptObject):
2213         (KWQKHTMLPart::windowScriptNPObject):
2214         * kwq/WebCoreBridge.mm:
2215         (rootForView):
2216         (-[WebCoreBridge init]):
2217
2218 2005-01-17  Ken Kocienda  <kocienda@apple.com>
2219
2220         Reviewed by John
2221
2222         Fix for this bug:
2223         
2224         <rdar://problem/3786659> REGRESSION (Mail): editable WebViews don't work with 
2225         "size up" and "size down" NSFontManager changes
2226
2227         * khtml/css/cssparser.cpp:
2228         (CSSParser::parseValue): Add support for parsing new font size delta property.
2229         * khtml/css/cssproperties.c: Generated file.
2230         * khtml/css/cssproperties.h: Ditto.
2231         * khtml/css/cssproperties.in: Add support for parsing new font size delta property.
2232         * khtml/editing/htmlediting.cpp:
2233         (khtml::isEmptyStyleSpan): New helper function. Code existed before, but now factored out for convenient use.
2234         (khtml::CompositeEditCommand::removeNodeAttribute): Does check on value to see it exists before creating
2235         and running command to do the removal.
2236         (khtml::ApplyStyleCommand::doApply): Now calls new applyRelativeFontStyleChange() function as part of its work.
2237         (khtml::ApplyStyleCommand::applyRelativeFontStyleChange): New function that does the "heavy lifting" to handle 
2238         relative font size changes.
2239         (khtml::ApplyStyleCommand::applyInlineStyle): Range check the start and end positions to make sure the start is
2240         before or equal to the end. Swap them if not true. I ran into this problem in some similar code in 
2241         applyRelativeFontStyleChange(). Moving that goodness here too.
2242         (khtml::ApplyStyleCommand::splitTextAtEndIfNeeded): Uses a local variable to save a value used often.
2243         Code is the same, but reads better now. Function now returns bool as well, just like splitTextAtStartIfNeeded.
2244         I use the bool return value now (I obviously did not need it before).
2245         (khtml::ApplyStyleCommand::computedFontSize): New helper function.
2246         (khtml::ApplyStyleCommand::joinChildTextNodes): Ditto.
2247         (khtml::createStyleSpanElement): Ditto.
2248         * khtml/editing/htmlediting.h: Update header accordingly.
2249         * khtml/editing/jsediting.cpp: Add new command string to enable relative font size changes.
2250         * kwq/DOM-CSS.mm:
2251         (-[DOMCSSStyleDeclaration _fontSizeDelta]): New convenience.
2252         (-[DOMCSSStyleDeclaration _setFontSizeDelta:]): Ditto.
2253         * kwq/DOMPrivate.h: Declare new conveniences.
2254         * layout-tests/editing/editing.js: Add new JS to enable relative font size changes, as well as explicit font size setting.
2255         * layout-tests/editing/style/relative-font-size-change-001-expected.txt: Added.
2256         * layout-tests/editing/style/relative-font-size-change-001.html: Added.
2257         * layout-tests/editing/style/relative-font-size-change-002-expected.txt: Added.
2258         * layout-tests/editing/style/relative-font-size-change-002.html: Added.
2259         * layout-tests/editing/style/relative-font-size-change-003-expected.txt: Added.
2260         * layout-tests/editing/style/relative-font-size-change-003.html: Added.
2261         * layout-tests/editing/style/relative-font-size-change-004-expected.txt: Added.
2262         * layout-tests/editing/style/relative-font-size-change-004.html: Added.
2263
2264 2005-01-14  Darin Adler  <darin@apple.com>
2265
2266         * khtml/css/cssproperties.c: Regenerated with gperf 3.0.1.
2267         * khtml/css/cssvalues.c: Regenerated with gperf 3.0.1.
2268         * khtml/misc/htmlattrs.c: Regenerated with gperf 3.0.1.
2269         * khtml/misc/htmltags.c: Regenerated with gperf 3.0.1.
2270
2271 2005-01-14  Chris Blumenberg  <cblu@apple.com>
2272
2273         Fixed: <rdar://problem/3886415> arrow keys don't work when the user hits Back to return to RSS page
2274
2275         Reviewed by hyatt.
2276
2277         (KWQKHTMLPart::openURLFromPageCache): restore mousePressNode
2278         (KWQKHTMLPart::mousePressNode): new
2279         * kwq/KWQPageState.h:
2280         * kwq/KWQPageState.mm:
2281         (-[KWQPageState initWithDocument:URL:windowProperties:locationProperties:interpreterBuiltins:]): save the mousePressNode
2282         (-[KWQPageState clear]): clear the mousePressNode
2283         (-[KWQPageState dealloc]): deref the mousePressNode
2284         (-[KWQPageState mousePressNode]): new
2285
2286 === Safari-179 ===
2287
2288 2005-01-13  Vicki Murley <vicki@apple.com>
2289
2290         Reviewed by Adele.
2291
2292         - fix <rdar://problem/3946836> Safari about box lists 2004 instead of 2005
2293
2294         * WebCore.pbproj/project.pbxproj: bump "2004" to "2005"
2295
2296 2005-01-13  David Harrison  <harrison@apple.com>
2297
2298         Reviewed by Ken Kocienda.
2299         
2300         Better fix for 3905066.
2301         
2302         * khtml/editing/htmlediting.cpp:
2303         (khtml::InsertParagraphSeparatorCommand::doApply):
2304
2305 2005-01-10  Maciej Stachowiak  <mjs@apple.com>
2306
2307         Reviewed by Darin.
2308
2309         <rdar://problem/3758033> REGRESSION (Mail): Support attributes in marked text (International input)
2310         
2311         * khtml/rendering/render_text.cpp:
2312         (InlineTextBox::paint): Support painting custom underline markers for
2313         marked text in place of generic yellow.
2314         (InlineTextBox::paintMarkedTextUnderline): New method that handles this.
2315         * khtml/rendering/render_text.h:
2316         * kwq/KWQKHTMLPart.h: Declare new methods and structs.
2317         * kwq/KWQKHTMLPart.mm:
2318         (KWQKHTMLPart::clear): Clear marked test underlines.
2319         (KWQKHTMLPart::setMarkedTextRange): Takes attributes and ranges now.
2320         (convertAttributesToUnderlines): Converts NSAttributedString attributes
2321         to simplified and C++-friendly form.
2322         (KWQKHTMLPart::markedTextUsesUnderlines): New method.
2323         (KWQKHTMLPart::markedTextUnderlines): New method.
2324         * kwq/KWQPainter.mm:
2325         (QPainter::drawLineForText): Handle pen width.
2326         * kwq/WebCoreBridge.h:
2327         * kwq/WebCoreBridge.mm:
2328         (-[WebCoreBridge setMarkedTextDOMRange:customAttributes:ranges:]): Take attributes
2329         and ranges.
2330         * kwq/WebCoreTextRenderer.h:
2331
2332 2005-01-12  David Harrison  <harrison@apple.com>
2333
2334         Reviewed by Dave Hyatt.
2335
2336         <rdar://problem/3888973> AX: Parent AXWebArea of nested AXWebAreas is messed up
2337         
2338         * kwq/KWQAccObject.mm:
2339         (-[KWQAccObject addChildrenToArray:]):
2340         Use the widget's outer view.
2341
2342 2005-01-12  David Harrison  <harrison@apple.com>
2343
2344         Reviewed by Darin Adler.
2345
2346         <rdar://problem/3949908> Crash when asking for the kAXLengthForTextMarkerRangeParameterizedAttribute
2347         
2348         * khtml/xml/dom_nodeimpl.cpp:
2349         (NodeImpl::displayNode):
2350         Add quotes around text node content.
2351         (NodeBaseImpl::childNode):
2352         Add nil check to return nil rather than crash when child node not found.
2353         * kwq/KWQAccObject.mm:
2354         (-[KWQAccObject doAXStringForTextMarkerRange:]):
2355         Pass range compliant positions to TextIterator.
2356
2357 2005-01-12  David Hyatt  <hyatt@apple.com>
2358
2359         Fix for 3951203, CSS border style incorrectly clipped on inline elements.  Make sure the repaint rect set during
2360         line layout is smarter about including the overflow for both old states and new states.
2361         
2362         Reviewed by john
2363
2364         * khtml/rendering/bidi.cpp:
2365         (khtml::RenderBlock::layoutInlineChildren):
2366
2367 2005-01-12  David Hyatt  <hyatt@apple.com>
2368
2369         Fix for bug 3937608, versiontracker.com flashes and displays the right column below content.  Make sure to move
2370         tables/overflows that dont fit within a block only in strict mode.
2371
2372         Fix for bug 3931049, characters dont show up when typing.  Make sure to dirty the right lines when this specific
2373         case in editing is hit.
2374         
2375         Reviewed by darin (first one), kocienda (second one)
2376
2377         * khtml/rendering/render_block.cpp:
2378         (khtml::RenderBlock::getClearDelta):
2379         * khtml/rendering/render_flow.cpp:
2380         (RenderFlow::dirtyLinesFromChangedChild):
2381         * khtml/rendering/render_line.cpp:
2382         (khtml::InlineFlowBox::verticallyAlignBoxes):
2383
2384 2005-01-12  Ken Kocienda  <kocienda@apple.com>
2385
2386         Reviewed by John
2387
2388         Fix for this bug:
2389         
2390         <rdar://problem/3926142> REGRESSION (Mail): Deleting text decreases quote level
2391
2392         * khtml/editing/htmlediting.cpp:
2393         (khtml::DeleteSelectionCommand::initializePositionData): Change test that will prevent block
2394         merging. End-of-line test was just wrong. Call new start-of and end-of paragraph functions
2395         added to visible_position files.
2396         (khtml::DeleteSelectionCommand::moveNodesAfterNode): Add tests for BR elements, which makes
2397         tests to determine when to stop moving nodes more complete and correct. Also improved comments.
2398         * khtml/editing/visible_position.cpp:
2399         (khtml::isFirstVisiblePositionInParagraph): New function.
2400         (khtml::isLastVisiblePositionInParagraph): New function.
2401         * khtml/editing/visible_position.h: Update header accordingly.
2402         * layout-tests/editing/deleting/delete-block-merge-contents-002-expected.txt: New results, slightly different from former
2403         results but still correct.
2404         * layout-tests/editing/deleting/delete-block-merge-contents-007-expected.txt: Ditto.
2405         * layout-tests/editing/deleting/delete-block-merge-contents-018-expected.txt: Added.
2406         * layout-tests/editing/deleting/delete-block-merge-contents-018.html: Added.
2407         * layout-tests/editing/deleting/delete-block-merge-contents-019-expected.txt: Added.
2408         * layout-tests/editing/deleting/delete-block-merge-contents-019.html: Added.
2409         * layout-tests/editing/deleting/delete-block-merge-contents-020-expected.txt: Added.
2410         * layout-tests/editing/deleting/delete-block-merge-contents-020.html: Added.
2411         * layout-tests/editing/deleting/delete-block-merge-contents-021-expected.txt: Added.
2412         * layout-tests/editing/deleting/delete-block-merge-contents-021.html: Added.
2413         * layout-tests/editing/deleting/delete-line-014-expected.txt: These new results are actually better, and fix a bug.
2414
2415 2005-01-11  Richard Williamson   <rjw@apple.com>
2416
2417         Fixed 3922875.  Fall back to DOM object is EMBED element
2418         has no associated runtime object.
2419
2420         Reviewed by Chris.
2421
2422         * khtml/ecma/kjs_dom.cpp:
2423         (KJS::getRuntimeObject):
2424         * khtml/ecma/kjs_html.cpp:
2425         (KJS::HTMLDocument::tryGet):
2426         (KJS::HTMLElement::tryGet):
2427         (KJS::HTMLCollection::tryGet):
2428         (KJS::HTMLCollection::getNamedItems):
2429
2430 2005-01-11  David Hyatt  <hyatt@apple.com>
2431
2432         Fix for 3882299, missing content on gibson.com.  Change our handling of " and ' in certain states of the parser to match
2433         other browsers.
2434         
2435         Reviewed by Maciej
2436
2437         * khtml/html/htmltokenizer.cpp:
2438         (khtml::HTMLTokenizer::parseTag):
2439
2440 2005-01-11  Chris Blumenberg  <cblu@apple.com>
2441
2442         Fixed: <rdar://problem/3930733> Mail prints second page of email blank
2443
2444         Reviewed by dave.
2445
2446         * khtml/rendering/render_canvas.cpp:
2447         (RenderCanvas::paint): cache the print rect since the dirty rect can get changed during printing
2448         * khtml/rendering/render_flow.cpp:
2449         (RenderFlow::paintLines): removed null check since the print rect should never be null
2450         * khtml/rendering/render_list.cpp:
2451         (RenderListMarker::paint): ditto
2452         * kwq/KWQKHTMLPart.mm:
2453         (KWQKHTMLPart::adjustPageHeight): don't set the print rect here since this method is not called for the last page
2454
2455 2005-01-10  Ken Kocienda  <kocienda@apple.com>
2456
2457         Reviewed by Hyatt
2458
2459         Fix for this bug:
2460         
2461         <rdar://problem/3943648> extra line is inserted after pressing return within quoted text of reply
2462
2463         * khtml/editing/htmlediting.cpp:
2464         (khtml::InsertParagraphSeparatorInQuotedContentCommand::doApply): This bug was the result of a 
2465         simple coding mistake. A local variable was erroneously redefined in a deeper scope, and so the 
2466         result calculated in that deeper scope was not available when tested.
2467
2468 2005-01-10  Ken Kocienda  <kocienda@apple.com>
2469
2470         Reviewed by John
2471
2472         Fix for this bug:
2473         
2474         <rdar://problem/3946852> Option-e goes to next line
2475
2476         * khtml/editing/htmlediting.cpp:
2477         (khtml::ReplaceSelectionCommand::doApply): Tweak case used to determine when merging content
2478         into the start line is done. We plan to change pretty substantially soon to better handle
2479         the problem described in <rdar://problem/3937352> Quote level not maintained when copied 
2480         and pasted within a Mail message. In the meantime, this change does no harm, and fixes the bug.
2481
2482 2005-01-10  Ken Kocienda  <kocienda@apple.com>
2483
2484         Reviewed by Darin
2485
2486         Fix for this bug:
2487         
2488         <rdar://problem/3907005> Applying block styles to a line of text can unexpectedly affect other lines
2489
2490         * khtml/editing/htmlediting.cpp:
2491         (khtml::CompositeEditCommand::moveParagraphContentsToNewBlockIfNecessary): New function which moves "paragraphs"
2492         to their own blocks if needed so that a block style can be applied.
2493         (khtml::CompositeEditCommand::isMailBlockquote): Moved this function to base class so it can be used more generally.
2494         (khtml::ApplyStyleCommand::applyBlockStyle): Pass a node instead of a block to addBlockStyleIfNeeded().
2495         (khtml::ApplyStyleCommand::addBlockStyleIfNeeded): Now accepts a node instead of a block for styling.
2496         This function also now calls moveParagraphContentsToNewBlockIfNecessary() to make sure that only the current
2497         paragraph is styled.
2498         (khtml::SetNodeAttributeCommand::doUnapply): Should not assert on undo if old value of attribute was null.
2499         Should remove attributue instead.
2500         * khtml/editing/htmlediting.h: Touch function declarations accordingly.
2501         * layout-tests/editing/style/create-block-for-style-001-expected.txt: Added.
2502         * layout-tests/editing/style/create-block-for-style-001.html: Added.
2503         * layout-tests/editing/style/create-block-for-style-002-expected.txt: Added.
2504         * layout-tests/editing/style/create-block-for-style-002.html: Added.
2505         * layout-tests/editing/style/create-block-for-style-003-expected.txt: Added.
2506         * layout-tests/editing/style/create-block-for-style-003.html: Added.
2507         * layout-tests/editing/style/create-block-for-style-004-expected.txt: Added.
2508         * layout-tests/editing/style/create-block-for-style-004.html: Added.
2509         * layout-tests/editing/style/create-block-for-style-005-expected.txt: Added.
2510         * layout-tests/editing/style/create-block-for-style-005.html: Added.
2511         * layout-tests/editing/style/create-block-for-style-006-expected.txt: Added.
2512         * layout-tests/editing/style/create-block-for-style-006.html: Added.
2513         * layout-tests/editing/style/create-block-for-style-007-expected.txt: Added.
2514         * layout-tests/editing/style/create-block-for-style-007.html: Added.
2515         * layout-tests/editing/style/create-block-for-style-008-expected.txt: Added.
2516         * layout-tests/editing/style/create-block-for-style-008.html: Added.
2517         * layout-tests/editing/style/create-block-for-style-009-expected.txt: Added.
2518         * layout-tests/editing/style/create-block-for-style-009.html: Added.
2519         * layout-tests/editing/style/create-block-for-style-010-expected.txt: Added.
2520         * layout-tests/editing/style/create-block-for-style-010.html: Added.
2521         * layout-tests/editing/style/create-block-for-style-011-expected.txt: Added.
2522         * layout-tests/editing/style/create-block-for-style-011.html: Added.
2523         * layout-tests/editing/style/create-block-for-style-012-expected.txt: Added.
2524         * layout-tests/editing/style/create-block-for-style-012.html: Added.
2525         * layout-tests/editing/style/create-block-for-style-013-expected.txt: Added.
2526         * layout-tests/editing/style/create-block-for-style-013.html: Added.
2527
2528         Unrelated updates to these expected results.
2529         * layout-tests/editing/inserting/insert-div-007-expected.txt
2530         * layout-tests/editing/pasteboard/paste-text-013-expected.txt
2531
2532 2005-01-10  Chris Blumenberg  <cblu@apple.com>
2533
2534         Fixed: <rdar://problem/3936844> Mail: Messages with rich text do not print
2535
2536         Reviewed by john.
2537
2538         * khtml/rendering/render_flow.cpp:
2539         (RenderFlow::paintLines): don't do pagination work if printRect is not set
2540         * khtml/rendering/render_list.cpp:
2541         (RenderListMarker::paint): ditto
2542
2543 2005-01-10  David Harrison  <harrison@apple.com>
2544
2545         Reviewed by Darin.
2546
2547         * kwq/KWQTextUtilities.mm:
2548         (currentTextBreakLocaleID):
2549         Return empty string (AKA root locale) if locale pref can not be canonicalized.
2550
2551 2005-01-10  John Sullivan  <sullivan@apple.com>
2552
2553         Fixed broken Panther build.
2554
2555         * kwq/KWQTextUtilities.mm:
2556         (currentTextBreakLocaleID):
2557         This recently-added function was using code copy/pasted from CarbonCore UnicodeUtilities.
2558         That code used a Tiger-only function, CFLocaleCreateCanonicalLanguageIdentifierFromString.
2559         To fix the build, I added a BUILDING_ON_PANTHER #ifdef that avoids the call to the Tiger
2560         function. However, the Tiger-only code was wrong; the string generated using 
2561         CFLocaleCreateCanonicalLanguageIdentifierFromString was not used at all, so I fixed that
2562         as well.
2563
2564 2005-01-09  David Harrison  <harrison@apple.com>
2565
2566         Reviewed by Ken Kocienda.
2567
2568         <rdar://problem/3786362> REGRESSION (Mail): pasted text loses one newline
2569         
2570         * khtml/editing/htmlediting.cpp:
2571         (khtml::ReplaceSelectionCommand::doApply):
2572         Tune check for need for insertParagraphSeparator when hasInterchangeNewline.
2573
2574 2005-01-09  Darin Adler  <darin@apple.com>
2575
2576         Reviewed by Harrison.
2577
2578         - fixed <rdar://problem/3939176> select() method does not work on <input type=search>
2579
2580         * khtml/html/html_formimpl.cpp: (DOM::HTMLInputElementImpl::select): Changed if statement
2581         to a switch statement. Added SEARCH to the set of types that treat the renderer as a
2582         RenderLineEdit.
2583
2584 2005-01-09  David Harrison  <harrison@apple.com>
2585
2586         Reviewed by Ken Kocienda.
2587
2588         <rdar://problem/3905066> REGRESSION (Mail): Hitting return key with caret in front of space causes space to become lost (resize fixes)
2589
2590         Problem was that InsertParagraphSeparatorCommand::doApply() was not collapsing
2591         whitespace to a single non-breaking space when splitting a text node.
2592
2593         * khtml/editing/htmlediting.cpp:
2594         (khtml::InsertParagraphSeparatorCommand::doApply):
2595
2596 2005-01-08  Kevin Decker  <kdecker@apple.com>
2597
2598         Reviewed by Ken.
2599
2600         Fixed: <rdar://problem/3924219> Calling setOuterHTML: on a DOMHTMLHtmlElement can crash a program
2601
2602         * khtml/html/html_elementimpl.cpp:
2603         (HTMLElementImpl::setOuterHTML): Added a nil check for fragments who don't have parents.
2604
2605 2005-01-07  Maciej Stachowiak  <mjs@apple.com>
2606
2607         Reviewed by Darin.
2608         
2609         <rdar://problem/3807144> REGRESSION (125-TOT): my bank's website doesn't work (Societe Generale, socgen.com)
2610
2611         * Khtml/khtml_part.cpp:
2612         (KHTMLPart::checkCompleted): If the document is NULL, assume this frame has
2613         not started loading yet so it could not possibly be finishing here...
2614         (KHTMLPart::stop): ...unless the part is explicitly stopped and there is still
2615         no document, in this case we must have hit an error or been loading a non-HTML
2616         frame.
2617         * khtml/khtml_part.h:
2618
2619 2005-01-08  David Harrison  <harrison@apple.com>
2620
2621         Reviewed by Maciej.
2622
2623         <rdar://problem/3943415> REGRESSION (Mail): double-clicking past word selects previous word instead of only blank space
2624         
2625         * khtml/editing/selection.cpp:
2626         (khtml::Selection::validate):
2627         Tune word selections left/right choice to use right if on empty last line.
2628
2629 2005-01-07  David Harrison  <harrison@apple.com>
2630
2631         Reviewed by Darin.
2632
2633         <rdar://problem/3942619> AX: Support sentence ax attributes
2634
2635         Needed to use the unicode utilities properly.  Twas lame before.
2636
2637         * khtml/editing/visible_units.cpp:
2638         (khtml::previousBoundary):
2639         (khtml::nextBoundary):
2640         (khtml::startOfWord):
2641         (khtml::endOfWord):
2642         (khtml::previousWordPosition):
2643         (khtml::nextWordPosition):
2644         (khtml::startOfSentence):
2645         (khtml::endOfSentence):
2646         (khtml::previousSentencePosition):
2647         (khtml::nextSentencePosition):
2648         * kwq/KWQAccObject.mm:
2649         (-[KWQAccObject accessibilityAttributeNames]):
2650         (-[KWQAccObject accessibilityAttributeValue:]):
2651         (-[KWQAccObject accessibilityParameterizedAttributeNames]):
2652         (-[KWQAccObject doAXAttributedStringForTextMarkerRange:]):
2653         * kwq/KWQTextUtilities.mm:
2654         (currentTextBreakLocaleID):
2655         (KWQFindSentenceBoundary):
2656         (KWQFindNextSentenceFromIndex):
2657
2658 2005-01-07  Ken Kocienda  <kocienda@apple.com>
2659
2660         Reviewed by Kevin
2661
2662         Fix for these bugs:
2663         
2664         <rdar://problem/3939523> in some cases, text does not retain style info after pressing return twice
2665         <rdar://problem/3944492> after pressing return twice, text is bold when it shouldn't be
2666
2667         * khtml/editing/htmlediting.cpp:
2668         (khtml::InsertParagraphSeparatorCommand::setFullTypingStyleBeforeInsertion):
2669         Merge the typing style with the computed style for the current position. Fixes both bugs.
2670         * khtml/editing/htmlediting.h:
2671         * layout-tests/editing/inserting/insert-div-023-expected.txt: Added.
2672         * layout-tests/editing/inserting/insert-div-023.html: Added.
2673         * layout-tests/editing/inserting/insert-div-024-expected.txt: Added.
2674         * layout-tests/editing/inserting/insert-div-024.html: Added.
2675
2676 2005-01-07  David Hyatt  <hyatt@apple.com>
2677
2678         Fix for 3941364, make sure tables reset overflowWidth/Height when they lay out again.  Fixes the odd scrolling
2679         behavior on worldofwarcraft.com.
2680         
2681         Reviewed by kevin
2682
2683         * khtml/rendering/render_table.cpp:
2684         (RenderTable::layout):
2685
2686 2005-01-06  David Hyatt  <hyatt@apple.com>
2687
2688         Fix for 3932418 and 3920998, assertion failures caused by stray inline content inside tables.  Bulletproof the hit testing to
2689         ignore inline flows in this case.
2690         
2691         Reviewed by kevin
2692
2693         * khtml/rendering/render_block.cpp:
2694         (khtml::RenderBlock::nodeAtPoint):
2695
2696 2005-01-07  Ken Kocienda  <kocienda@apple.com>
2697
2698         Reviewed by Hyatt
2699
2700         Fix for this bug:
2701         
2702         <rdar://problem/3848412> for forwarded message, tabbing to message view scrolls to bottom of view
2703
2704         * kwq/KWQKHTMLPart.mm:
2705         (KWQKHTMLPart::nextKeyViewInFrame): Don't scroll the focus node to visible if it is not
2706         in the document, or if it is not a descendent of the document element. In the case of the bug,
2707         since the selection has not yet been set up, the focus node passed here is the HTML element, and
2708         that does not yield a rect that is useful to us here. So now, in the case the bug mentions, we do nothing.
2709
2710 2005-01-06  Kevin Decker  <kdecker@apple.com>
2711
2712         Reviewed by mjs.
2713
2714         Fixed: <rdar://problem/3932215> REGRESSION (125-177): iFrame example at developer.apple.com fails in Safari
2715
2716         * khtml/khtml_part.cpp:
2717         (KHTMLPart::processObjectRequest): m_bComplete was never true for frames generated by Javascript due to our synchronous loading and as a result, scheduled redirects wouldn't fire in KHTMLPart::scheduleLocationChange().  By virtue of being an empty document, a document is complete.  In this special case it's safe at this point to call checkCompleted() which sets m_bComplete true. 
2718
2719 === Safari-178 ===
2720
2721 2005-01-06  David Harrison  <harrison@apple.com>
2722
2723         Reviewed by Chris.
2724
2725         (addendum to previous checkin for this bug) 
2726         <rdar://problem/3776056> AX: Editable HTML should not be viewed as AXStaticText
2727
2728         Fix line navigation.  Add AXUIElementForTextMarker.
2729
2730         * kwq/KWQAccObject.mm:
2731         (-[KWQAccObject accessibilityParameterizedAttributeNames]):
2732         (-[KWQAccObject doAXUIElementForTextMarker:]):
2733         (-[KWQAccObject doAXLineForTextMarker:]):
2734         (-[KWQAccObject doAXTextMarkerRangeForLine:]):
2735         (-[KWQAccObject doAXRightLineTextMarkerRangeForTextMarker:]):
2736         (-[KWQAccObject doAXNextLineEndTextMarkerForTextMarker:]):
2737         (-[KWQAccObject doAXPreviousLineStartTextMarkerForTextMarker:]):
2738         (-[KWQAccObject accessibilityAttributeValue:forParameter:]):
2739
2740 2005-01-06  Darin Adler  <darin@apple.com>
2741
2742         Reviewed by Ken.
2743
2744         - re-fixed <rdar://problem/3760910> Request to include support for custom tag names in HTML (they already work in XML)
2745
2746         (turns out the PLT regression was a false alarm)
2747
2748         * khtml/html/htmlparser.h: Change forbidden tag array to be allocated in the object rather than on
2749         the heap. Also use ID_LAST_TAG for the array size; the old code used ID_CLOSE_TAG which is now a
2750         much larger number.
2751         * khtml/html/htmlparser.cpp:
2752         (KHTMLParser::KHTMLParser): Remove code that creates the forbidden tag array on the heap; makes more
2753         sense to just have the array be a member so we don't have to use new and delete on it. Also needed
2754         to eliminate code that used ID_CLOSE_TAG for an array size.
2755         (KHTMLParser::~KHTMLParser): Remove code that deletes the forbidden tag array. Also changed the code
2756         that manages isindex to use deref instead of delete.
2757         (KHTMLParser::reset): Use safer sizeof for clearing the forbidden tag array. Old code had the
2758         mistake of using ID_CLOSE_TAG for the array size too.
2759         (KHTMLParser::parseToken): Removed code that checks for bogus tags; it's not clear why it was ever
2760         there and it would prevent custom tags from working. Added range check before using the forbidden
2761         tag array with the token ID since custom tags will use index values past the end of the array.
2762         (KHTMLParser::getElement): Removed most of the code that makes an element by ID; now the work is done
2763         inside the DocumentImpl createHTMLElement. Any code that needs to be different than a dynamic
2764         createElement call is still here. Last time I left out a few form element types from this switch;
2765         fixed now.
2766         * khtml/html/htmltokenizer.cpp: (khtml::HTMLTokenizer::parseTag): Call the tagId function in the
2767         document if getTagID fails; this creates a unique per-document ID.
2768
2769         * khtml/misc/htmltags.c: Regenerated.
2770         * khtml/misc/htmltags.h: Regenerated.
2771
2772         * khtml/misc/maketags: Changed the generated constants to use "const unsigned short" instead of "#define".
2773         Changed ID_CLOSE_TAG to be a fixed value of 32000 rather than being just past the IDs of the HTML tags.
2774         Also rewrote getTagName to work with the new scheme.
2775
2776 2005-01-06  David Harrison  <harrison@apple.com>
2777         
2778         Fixed Panther build.  Also, do not advertize sentence support since it is incomplete.
2779         
2780         * kwq/KWQAccObject.mm:
2781         (-[KWQAccObject visiblePositionForEndOfTextMarkerRange:]):
2782         (-[KWQAccObject accessibilityParameterizedAttributeNames]):
2783         (-[KWQAccObject accessibilityIsAttributeSettable:]):
2784
2785 2005-01-06  David Harrison  <harrison@apple.com>
2786
2787         Reviewed by Dave Hyatt.
2788
2789         <rdar://problem/3776056> AX: Editable HTML should not be viewed as AXStaticText
2790         <rdar://problem/3588548> AX: tabbing does not work correctly with the screen reader and a focused link; need AXFocusedUIElement to work
2791         
2792         Many more AX attributes supported.  Numerous fixes to previous AX work.
2793         
2794         * khtml/editing/visible_units.cpp:
2795         (khtml::startSentenceBoundary):
2796         (khtml::startOfSentence):
2797         (khtml::endSentenceBoundary):
2798         (khtml::endOfSentence):
2799         (khtml::previousSentencePositionBoundary):
2800         (khtml::previousSentencePosition):
2801         (khtml::nextSentencePositionBoundary):
2802         (khtml::nextSentencePosition):
2803         * khtml/editing/visible_units.h:
2804         * khtml/khtmlview.cpp:
2805         (KHTMLView::layout):
2806         * khtml/misc/helper.cpp:
2807         (khtml::findSentenceBoundary):
2808         (khtml::nextSentenceFromIndex):
2809         * khtml/misc/helper.h:
2810         * khtml/misc/htmltags.c:
2811         (hash_tag):
2812         (findTag):
2813         * khtml/rendering/render_container.cpp:
2814         (RenderContainer::removeChildNode):
2815         (RenderContainer::appendChildNode):
2816         (RenderContainer::insertChildNode):
2817         * khtml/rendering/render_object.cpp:
2818         (RenderObject::remove):
2819         * khtml/xml/dom_docimpl.cpp:
2820         (DocumentImpl::getAccObjectCache):
2821         (DocumentImpl::updateSelection):
2822         (DocumentImpl::close):
2823         (DocumentImpl::setFocusNode):
2824         (DocumentImpl::parentDocument):
2825         (DocumentImpl::topDocument):
2826         * khtml/xml/dom_docimpl.h:
2827         * kwq/KWQAccObject.mm:
2828         (-[KWQAccObject accessibilityShouldUseUniqueId]):
2829         (-[KWQAccObject detach]):
2830         (-[KWQAccObject anchorElement]):
2831         (-[KWQAccObject firstChild]):
2832         (-[KWQAccObject lastChild]):
2833         (-[KWQAccObject previousSibling]):
2834         (-[KWQAccObject nextSibling]):
2835         (-[KWQAccObject parentObject]):
2836         (-[KWQAccObject value]):
2837         (-[KWQAccObject accessibilityAttributeNames]):
2838         (-[KWQAccObject accessibilityPerformAction:]):
2839         (-[KWQAccObject textMarkerForVisiblePosition:]):
2840         (-[KWQAccObject visiblePositionForTextMarker:]):
2841         (-[KWQAccObject textMarkerRangeFromVisiblePositions:andEndPos:]):
2842         (-[KWQAccObject topDocument]):
2843         (-[KWQAccObject topRenderer]):
2844         (-[KWQAccObject topView]):
2845         (-[KWQAccObject accessibilityAttributeValue:]):
2846         (-[KWQAccObject accessibilityParameterizedAttributeNames]):
2847         (-[KWQAccObject doAXLineForTextMarker:]):
2848         (-[KWQAccObject doAXTextMarkerRangeForLine:]):
2849         (-[KWQAccObject doAXStringForTextMarkerRange:]):
2850         (-[KWQAccObject doAXTextMarkerForPosition:]):
2851         (-[KWQAccObject doAXBoundsForTextMarkerRange:]):
2852         (-[KWQAccObject doAXAttributedStringForTextMarkerRange:]):
2853         (-[KWQAccObject doAXTextMarkerRangeForUnorderedTextMarkers:]):
2854         (-[KWQAccObject doAXNextTextMarkerForTextMarker:]):
2855         (-[KWQAccObject doAXPreviousTextMarkerForTextMarker:]):
2856         (-[KWQAccObject doAXLeftWordTextMarkerRangeForTextMarker:]):
2857         (-[KWQAccObject doAXRightWordTextMarkerRangeForTextMarker:]):
2858         (-[KWQAccObject doAXLeftLineTextMarkerRangeForTextMarker:]):
2859         (-[KWQAccObject doAXRightLineTextMarkerRangeForTextMarker:]):
2860         (-[KWQAccObject doAXSentenceTextMarkerRangeForTextMarker:]):
2861         (-[KWQAccObject doAXParagraphTextMarkerRangeForTextMarker:]):
2862         (-[KWQAccObject doAXNextWordEndTextMarkerForTextMarker:]):
2863         (-[KWQAccObject doAXPreviousWordStartTextMarkerForTextMarker:]):
2864         (-[KWQAccObject doAXNextLineEndTextMarkerForTextMarker:]):
2865         (-[KWQAccObject doAXPreviousLineStartTextMarkerForTextMarker:]):
2866         (-[KWQAccObject doAXNextSentenceEndTextMarkerForTextMarker:]):
2867         (-[KWQAccObject doAXPreviousSentenceStartTextMarkerForTextMarker:]):
2868         (-[KWQAccObject doAXNextParagraphEndTextMarkerForTextMarker:]):
2869         (-[KWQAccObject doAXPreviousParagraphStartTextMarkerForTextMarker:]):
2870         (-[KWQAccObject doAXLengthForTextMarkerRange:]):
2871         (-[KWQAccObject accessibilityAttributeValue:forParameter:]):
2872         (-[KWQAccObject accessibilityHitTest:]):
2873         (-[KWQAccObject accessibilityFocusedUIElement]):
2874         (-[KWQAccObject accessibilityIsAttributeSettable:]):
2875         (-[KWQAccObject doSetAXSelectedTextMarkerRange:]):
2876         (-[KWQAccObject setAccObjectID:]):
2877         (-[KWQAccObject removeAccObjectID]):
2878         * kwq/KWQAccObjectCache.h:
2879         * kwq/KWQAccObjectCache.mm:
2880         (KWQAccObjectCache::setAccObject):
2881         (KWQAccObjectCache::removeAccObject):
2882         (KWQAccObjectCache::visiblePositionForTextMarker):
2883         (KWQAccObjectCache::postNotificationToTopWebArea):
2884         (KWQAccObjectCache::postNotification):
2885         (KWQAccObjectCache::handleFocusedUIElementChanged):
2886         * kwq/KWQKHTMLPart.mm:
2887         (KWQKHTMLPart::respondToChangedContents):
2888         * kwq/KWQTextUtilities.h:
2889         * kwq/KWQTextUtilities.mm:
2890         (KWQFindNextWordFromIndex):
2891         (KWQFindSentenceBoundary):
2892         (KWQFindNextSentenceFromIndex):
2893         * kwq/WebCoreBridge.mm:
2894         (-[WebCoreBridge accessibilityTree]):
2895
2896 2005-01-05  Darin Adler  <darin@apple.com>
2897
2898         Reviewed by Ken.
2899
2900         - re-landing a subset of my custom tag change that does not fix the bug, but also does
2901           not introduce a performance regression
2902
2903         * khtml/css/cssstyleselector.cpp: (khtml::CSSStyleSelector::checkOneSelector): Changed
2904         some code that used ID_LAST_TAG in a slightly wrong, but harmless, way.
2905
2906         * khtml/editing/htmlediting.cpp:
2907         (khtml::debugPosition): Use nodeName rather than getTagName, since the latter works for
2908         per-document tags and is just better all around for things like the document.
2909         (khtml::debugNode): Ditto.
2910         * khtml/editing/selection.cpp: (khtml::Selection::debugPosition): Ditto.
2911         * khtml/editing/visible_position.cpp: (khtml::VisiblePosition::debugPosition): Ditto.
2912         * khtml/xml/dom_nodeimpl.cpp: (NodeImpl::displayNode): Ditto.
2913         * khtml/xml/dom_position.cpp: (DOM::Position::debugPosition): Ditto.
2914
2915         * khtml/html/dtd.cpp: (DOM::checkChild): Use ID_LAST_TAG rather than 1000 for the check that allows
2916         non-HTML elements to be nested as desired.
2917
2918         * khtml/misc/htmlhashes.h: Changed return types to unsigned short.
2919         * khtml/misc/htmlhashes.cpp:
2920         (khtml::getTagID): Changed return type to unsigned short.
2921         (khtml::getAttrID): Ditto.
2922
2923         * khtml/xml/dom_docimpl.h: Added overload of createHTMLElement, made it non-virtual since it's not overriden.
2924         * khtml/xml/dom_docimpl.cpp:
2925         (DocumentImpl::createHTMLElement): Refactored into two separate functions, one that takes the tag ID.
2926         Also updated for a few tags that the parser handled but this did not.
2927
2928         * kwq/KWQRenderTreeDebug.cpp:
2929         (getTagName): Added. Works for custom nodes, because it calls nodeName rather than using getTagName on
2930         the tag ID directly, which only works for standard nodes.
2931         (operator<<): Update to call getTagName.
2932         (nodePositionRelativeToRoot): Ditto.
2933         (writeSelection): Ditto.
2934
2935 2005-01-05  Ken Kocienda  <kocienda@apple.com>
2936
2937         Reviewed by Hyatt
2938
2939         Fix for this bug:
2940         
2941         <rdar://problem/3941203> REGRESSION (Mail): Paste inserts content in wrong place
2942
2943         * khtml/editing/htmlediting.cpp:
2944         (khtml::ReplaceSelectionCommand::doApply): Some cleanup and refinement of the concepts used to make
2945         this operation work correctly, particularly in the logic to figure out whether to merge content, and
2946         also performing merges.
2947         * khtml/editing/visible_position.cpp:
2948         (khtml::isFirstVisiblePositionInBlock): Simplification of test used to make this determination.
2949         * khtml/editing/visible_units.cpp:
2950         (khtml::isStartOfParagraph): New helper, used in khtml::ReplaceSelectionCommand::doApply().
2951         (khtml::isEndOfParagraph): Ditto.
2952         * khtml/editing/visible_units.h: Declare new functions.
2953
2954 2005-01-04  Ken Kocienda  <kocienda@apple.com>
2955
2956         Reviewed by John
2957
2958         Fix for this bug:
2959         
2960         <rdar://problem/3926522> Pressing return in a quoted block inserts too many newlines
2961
2962         * khtml/editing/htmlediting.cpp:
2963         (khtml::InsertParagraphSeparatorInQuotedContentCommand::doApply): Call to insertBlockPlaceholderIfNeeded()
2964         for the block we are adding was being done at the wrong time, which led to the placeholder remaining
2965         in the document when it was not needed. This resulted in the extra space reported in the bug.
2966
2967 2005-01-04  Kevin Decker  <kdecker@apple.com>
2968
2969         Reviewed by Hyatt.
2970
2971         Fixed: <rdar://problem/3936879> nil-deref, crash in InlineFlowBox::nodeAtPoint closing DHTML menus at hrweb.apple.com
2972
2973         * khtml/rendering/render_block.cpp:
2974         (khtml::RenderBlock::fillInlineSelectionGaps): Added a nil check. If there is no selection, don't try to get the selection's containing block. If we do, we'll crash. 
2975
2976 2005-01-04  David Hyatt  <hyatt@apple.com>
2977
2978         Fix for 3937203, force an update of the dashboard regions when scrollbars are added/removed.
2979         
2980         Reviewed by kevin
2981
2982         * khtml/rendering/render_layer.cpp:
2983         (RenderLayer::updateScrollInfoAfterLayout):
2984
2985 2005-01-04  Ken Kocienda  <kocienda@apple.com>
2986
2987         Reviewed by John
2988
2989         Fix for these two bugs:
2990         
2991         <rdar://problem/3938935> REGRESSION (Mail): Pasting into an empty document mangles content
2992         <rdar://problem/3939148> REGRESSION (Mail): Pasting mistakenly reverses lines
2993
2994         * khtml/editing/htmlediting.cpp:
2995         (khtml::ReplaceSelectionCommand::doApply): For 3938935, add one more case to handle an empty document; merge
2996         neither start nor end. For 3939148, improve the code which adjusts the insertion point during 
2997         the process of pasting. It formerly handled only one of the possible cases.
2998         * layout-tests/editing/pasteboard/paste-text-015-expected.txt: Added.
2999         * layout-tests/editing/pasteboard/paste-text-015.html: Added.
3000
3001 2005-01-04  David Hyatt  <hyatt@apple.com>
3002
3003         Fix for 3936571, placeholder attribute should work for normal inputs for Dashboard.
3004         
3005         Reviewed by john
3006
3007         * khtml/rendering/render_form.cpp:
3008         (RenderLineEdit::updateFromElement):
3009         * kwq/KWQLineEdit.mm:
3010         (QLineEdit::setPlaceholderString):
3011
3012 2005-01-04  David Hyatt  <hyatt@apple.com>
3013
3014         Fix for 3830936, hang on changeforamerica.com.  Make sure to ignore the style not yet available option when
3015         returning pseudo-styles.
3016         
3017         Reviewed by john
3018
3019         * khtml/css/cssstyleselector.cpp:
3020         (khtml::CSSStyleSelector::matchRulesForList):
3021         (khtml::CSSStyleSelector::pseudoStyleForElement):
3022         * khtml/rendering/render_style.cpp:
3023         (RenderStyle::addPseudoStyle):
3024
3025 2005-01-04  Darin Adler  <darin@apple.com>
3026
3027         - rolled out my custom tag name change again -- it caused a 1 ms PLT regression
3028
3029         * khtml/css/cssstyleselector.cpp:
3030         * khtml/editing/htmlediting.cpp:
3031         * khtml/editing/selection.cpp:
3032         * khtml/editing/visible_position.cpp:
3033         * khtml/html/dtd.cpp:
3034         * khtml/html/htmlparser.cpp:
3035         * khtml/html/htmlparser.h:
3036         * khtml/html/htmltokenizer.cpp:
3037         * khtml/misc/htmlhashes.cpp:
3038         * khtml/misc/htmlhashes.h:
3039         * khtml/misc/htmltags.c:
3040         * khtml/misc/htmltags.h:
3041         * khtml/misc/maketags:
3042         * khtml/xml/dom_docimpl.cpp:
3043         * khtml/xml/dom_docimpl.h:
3044         * khtml/xml/dom_nodeimpl.cpp:
3045         * khtml/xml/dom_position.cpp:
3046         * kwq/KWQRenderTreeDebug.cpp:
3047
3048 2005-01-04  Ken Kocienda  <kocienda@apple.com>
3049
3050         Reviewed by John
3051
3052         Fix for this bug:
3053         
3054         <rdar://problem/3927554> Style info applied to remainder of document after a newline is entered
3055
3056         * khtml/editing/htmlediting.cpp:
3057         (khtml::InsertParagraphSeparatorCommand::doApply): Clean up and simplification in code that inserts
3058         a paragraph separator. The bug was all about applying styles to the new paragraph that did not need
3059         to be applied. Now the code will detect when at the end of a style run and will not move and apply 
3060         that ending style to the new paragraph, though it will place that style into the typing style. This
3061         seems to match NSText behavior.
3062         * layout-tests/editing/inserting/insert-div-021-expected.txt: This test result exhibited the bug fixed 
3063         here. The only reason it was not noticed is that the erroneously copied inline was a span, and so did
3064         not have any visible effect on the document.
3065         * layout-tests/editing/inserting/insert-div-022-expected.txt: Added.
3066         * layout-tests/editing/inserting/insert-div-022.html: Added.
3067
3068 2005-01-04  David Hyatt  <hyatt@apple.com>
3069
3070         Fix for 3904562, make sure to clear the outline dictionary when drawing so that random focus rings dont get drawn
3071         all over the place.
3072         
3073         Reviewed by john
3074
3075         * khtml/rendering/render_flow.cpp:
3076         (RenderFlow::paintLines):
3077
3078 2005-01-03  David Hyatt  <hyatt@apple.com>
3079
3080         Fix for float painting regressions 3932524, 3931664, and 3933068.  Make the noPaint flag setting more
3081         robust and make it work regardless of which objects get a layout or not.
3082         
3083         Reviewed by mjs
3084
3085         * khtml/rendering/render_block.cpp:
3086         (khtml::RenderBlock::insertFloatingObject):
3087         (khtml::RenderBlock::addOverhangingFloats):
3088         (khtml::RenderBlock::addIntrudingFloats):
3089         * khtml/rendering/render_block.h:
3090         (khtml::RenderBlock::FloatingObject::FloatingObject):
3091
3092 2005-01-03  Maciej Stachowiak  <mjs@apple.com>
3093
3094         Reviewed by Kevin.
3095
3096         <rdar://problem/3935390> Tiger 8A341: nil deref crash in DOM::NodeImpl::traverseNextNode
3097         
3098         * khtml/html/html_miscimpl.cpp:
3099         (HTMLCollectionImpl::traverseNextItem): Assert that the starting point is not nil,
3100         it should not ever be (now).
3101         (HTMLCollectionImpl::item): When traversing items stop when we hit
3102         nil, meaning the end to avoid triggering above assert (formerly crash).
3103
3104 2005-01-03  Maciej Stachowiak  <mjs@apple.com>
3105
3106         Reviewed by John and Kevin.
3107
3108         <rdar://problem/3870317> REGRESSION(125.9-125.11) broken behavior at test.profoundlearning.com - used to
3109         
3110         * khtml/ecma/kjs_window.cpp:
3111         (Window::get): Look up frame names before buitin window properties
3112         to match other browsers. This regressed because we added a builtin
3113         "toolbar" property but this site had a frame with that name.
3114
3115 2004-12-21  Maciej Stachowiak  <mjs@apple.com>
3116
3117         Reviewed by Darin.
3118
3119         <rdar://problem/3888931> frame naming allows malicious site to bring up a window when you click on a link in another
3120         
3121         Added opener bridge method to help WebKit implement security check
3122         for named frame visibility.
3123         
3124         * khtml/khtml_part.h:
3125         * kwq/WebCoreBridge.h:
3126         * kwq/WebCoreBridge.mm:
3127         (-[WebCoreBridge opener]):
3128
3129 2005-01-03  Ken Kocienda  <kocienda@apple.com>
3130
3131         Reviewed by John
3132
3133         Fix for this bug:
3134         
3135         <rdar://problem/3933926> Tiger8A341: Mail crashes while forwarding embedded HTML message in -[WebCoreBridge ensureSelectionVisible]
3136
3137         * kwq/WebCoreBridge.mm:
3138         (-[WebCoreBridge ensureSelectionVisible]): Put in some null checks to prevent crash experienced in bug.
3139
3140 2005-01-03  David Hyatt  <hyatt@apple.com>
3141
3142         Fix for 3936881, make sure positioned objects prooperly update y-position.
3143         
3144         Reviewed by john
3145
3146         * khtml/rendering/render_block.cpp:
3147         (khtml::RenderBlock::layoutPositionedObjects):
3148
3149 2005-01-03  Ken Kocienda  <kocienda@apple.com>
3150
3151         Reviewed by Harrison
3152         
3153         Fix for this bug:
3154         
3155         <rdar://problem/3928250> REGRESSION (Mail): Typing style lost after hitting return key
3156
3157         * khtml/editing/htmlediting.cpp:
3158         (khtml::InsertLineBreakCommand::preservesTypingStyle): Now implemented, returning yes for this command.
3159         (khtml::InsertParagraphSeparatorCommand::InsertParagraphSeparatorCommand): Initialize new typing style member variable.
3160         (khtml::InsertParagraphSeparatorCommand::~InsertParagraphSeparatorCommand): Deref new typing style member variable.
3161         (khtml::InsertParagraphSeparatorCommand::preservesTypingStyle): Now implemented, returning yes for this command.
3162         (khtml::InsertParagraphSeparatorCommand::setFullTypingStyleBeforeInsertion): New function to set the typing style
3163         (khtml::InsertParagraphSeparatorCommand::calculateAndSetTypingStyleAfterInsertion): Function called after the <p>
3164         insertion is done. This function diffs the style created in setFullTypingStyleBeforeInsertion() with the style
3165         of the new <p> and only sets those styles needed to preserve the style in effect before the insertion.
3166         (khtml::InsertParagraphSeparatorCommand::doApply): Call new functions.
3167         (khtml::TypingCommand::preservesTypingStyle): Now yes for inserting line breaks and paragraphs.
3168          * khtml/editing/htmlediting.h: Declare new functions.
3169
3170 2004-12-25  Kevin Decker  <kdecker@apple.com>
3171
3172         Reviewed by Hyatt.
3173
3174         Fixed: <rdar://problem/3505072> hang in KHTMLParser::parseToken (consulting.soroos.net)
3175         
3176         * khtml/html/dtd.cpp: <label> needed a much higher priority such that it will close block elements.  Malformed HTML (ugh) is the only reason why we need to do this. 
3177
3178 2004-12-23  Darin Adler  <darin@apple.com>
3179
3180         Reviewed by Ken.
3181
3182         - re-fixed <rdar://problem/3760910> Request to include support for custom tag names in HTML (they already work in XML)
3183
3184         * khtml/css/cssstyleselector.cpp: (khtml::CSSStyleSelector::checkOneSelector): Changed
3185         some code that used ID_LAST_TAG in a slightly wrong, but harmless, way.
3186
3187         * khtml/editing/htmlediting.cpp:
3188         (khtml::debugPosition): Use nodeName rather than getTagName, since the latter works for
3189         per-document tags and is just better all around for things like the document.
3190         (khtml::debugNode): Ditto.
3191         * khtml/editing/selection.cpp: (khtml::Selection::debugPosition): Ditto.
3192         * khtml/editing/visible_position.cpp: (khtml::VisiblePosition::debugPosition): Ditto.
3193         * khtml/xml/dom_nodeimpl.cpp: (NodeImpl::displayNode): Ditto.
3194         * khtml/xml/dom_position.cpp: (DOM::Position::debugPosition): Ditto.
3195
3196         * khtml/html/dtd.cpp: (DOM::checkChild): Use ID_LAST_TAG rather than 1000 for the check that allows
3197         non-HTML elements to be nested as desired.
3198
3199         * khtml/html/htmlparser.h: Change forbidden tag array to be allocated in the object rather than on
3200         the heap. Also use ID_LAST_TAG for the array size; the old code used ID_CLOSE_TAG which is now a
3201         much larger number.
3202         * khtml/html/htmlparser.cpp:
3203         (KHTMLParser::KHTMLParser): Remove code that creates the forbidden tag array on the heap; makes more
3204         sense to just have the array be a member so we don't have to use new and delete on it. Also needed
3205         to eliminate code that used ID_CLOSE_TAG for an array size.
3206         (KHTMLParser::~KHTMLParser): Remove code that deletes the forbidden tag array. Also changed the code
3207         that manages isindex to use deref instead of delete.
3208         (KHTMLParser::reset): Use safer sizeof for clearing the forbidden tag array. Old code had the
3209         mistake of using ID_CLOSE_TAG for the array size too.
3210         (KHTMLParser::parseToken): Removed code that checks for bogus tags; it's not clear why it was ever
3211         there and it would prevent custom tags from working. Added range check before using the forbidden
3212         tag array with the token ID since custom tags will use index values past the end of the array.
3213         (KHTMLParser::getElement): Removed most of the code that makes an element by ID; now the work is done
3214         inside the DocumentImpl createHTMLElement. Any code that needs to be different than a dynamic
3215         createElement call is still here. Last time I left out a few form element types from this switch;
3216         fixed now.
3217         * khtml/html/htmltokenizer.cpp: (khtml::HTMLTokenizer::parseTag): Call the tagId function in the
3218         document if getTagID fails; this creates a unique per-document ID.
3219
3220         * khtml/misc/htmlhashes.h: Changed return types to unsigned short.
3221         * khtml/misc/htmlhashes.cpp:
3222         (khtml::getTagID): Changed return type to unsigned short.
3223         (khtml::getAttrID): Ditto.
3224
3225         * khtml/misc/htmltags.c: Regenerated.
3226         * khtml/misc/htmltags.h: Regenerated.
3227
3228         * khtml/misc/maketags: Changed the generated constants to use "const unsigned short" instead of "#define".
3229         Changed ID_CLOSE_TAG to be a fixed value of 32000 rather than being just past the IDs of the HTML tags.
3230         Also rewrote getTagName to work with the new scheme.
3231
3232         * khtml/xml/dom_docimpl.h: Added overload of createHTMLElement, made it non-virtual since it's not overriden.
3233         * khtml/xml/dom_docimpl.cpp:
3234         (DocumentImpl::createHTMLElement): Refactored into two separate functions, one that takes the tag ID.
3235         Also updated for a few tags that the parser handled but this did not.
3236
3237         * kwq/KWQRenderTreeDebug.cpp:
3238         (getTagName): Added. Works for custom nodes, because it calls nodeName rather than using getTagName on
3239         the tag ID directly, which only works for standard nodes.
3240         (operator<<): Update to call getTagName.
3241         (nodePositionRelativeToRoot): Ditto.
3242         (writeSelection): Ditto.
3243
3244 === Safari-177 ===
3245
3246 2004-12-22  Darin Adler  <darin@apple.com>
3247
3248         - rolled out my custom tag name change -- it broke amazon.com
3249
3250         * khtml/css/cssstyleselector.cpp:
3251         * khtml/editing/htmlediting.cpp:
3252         * khtml/editing/selection.cpp:
3253         * khtml/editing/visible_position.cpp:
3254         * khtml/html/dtd.cpp:
3255         * khtml/html/htmlparser.cpp:
3256         * khtml/html/htmlparser.h:
3257         * khtml/html/htmltokenizer.cpp:
3258         * khtml/misc/htmlhashes.cpp:
3259         * khtml/misc/htmlhashes.h:
3260         * khtml/misc/htmltags.c:
3261         * khtml/misc/htmltags.h:
3262         * khtml/misc/maketags:
3263         * khtml/xml/dom_docimpl.cpp:
3264         * khtml/xml/dom_docimpl.h:
3265         * khtml/xml/dom_nodeimpl.cpp:
3266         * khtml/xml/dom_position.cpp:
3267         * kwq/KWQRenderTreeDebug.cpp:
3268
3269 2004-12-22  David Harrison  <harrison@apple.com>
3270
3271         Reviewed by Darin Adler.
3272
3273         * khtml/editing/selection.cpp:
3274         (khtml::Selection::validate):
3275         The selecting/deselecting bad behavior is because the Selection code that expands by words
3276         had an inaccurate test for being at the end of the document (where double-clicking needs
3277         to select the last word).  Fixed that check.
3278
3279 2004-12-22  Adele Amchan  <adele@apple.com>
3280
3281         Reviewed by Chris.
3282
3283         Fix for <rdar://problem/3911650> tabs at safeway.com stop working after a while
3284
3285         * kwq/KWQKHTMLPart.mm: (KWQKHTMLPart::scrollToAnchor): removed call to cancelRedirection 
3286           so that we match Firefox and WinIE behavior.
3287
3288 2004-12-22  Darin Adler  <darin@apple.com>
3289
3290         Reviewed by Ken.
3291
3292         - fixed <rdar://problem/3760910> Request to include support for custom tag names in HTML (they already work in XML)
3293
3294         * khtml/css/cssstyleselector.cpp: (khtml::CSSStyleSelector::checkOneSelector): Changed
3295         some code that used ID_LAST_TAG in a slightly wrong, but harmless, way.
3296
3297         * khtml/editing/htmlediting.cpp:
3298         (khtml::debugPosition): Use nodeName rather than getTagName, since the latter works for
3299         per-document tags and is just better all around for things like the document.
3300         (khtml::debugNode): Ditto.
3301         * khtml/editing/selection.cpp: (khtml::Selection::debugPosition): Ditto.
3302         * khtml/editing/visible_position.cpp: (khtml::VisiblePosition::debugPosition): Ditto.
3303         * khtml/xml/dom_nodeimpl.cpp: (NodeImpl::displayNode): Ditto.
3304         * khtml/xml/dom_position.cpp: (DOM::Position::debugPosition): Ditto.
3305
3306         * khtml/html/dtd.cpp: (DOM::checkChild): Use ID_LAST_TAG rather than 1000 for the check that allows
3307         non-HTML elements to be nested as desired.
3308
3309         * khtml/html/htmlparser.h: Change forbidden tag array to be allocated in the object rather than on
3310         the heap. Also use ID_LAST_TAG for the array size; the old code used ID_CLOSE_TAG which is now a
3311         much larger number.
3312         * khtml/html/htmlparser.cpp:
3313         (KHTMLParser::KHTMLParser): Remove code that creates the forbidden tag array on the heap; makes more
3314         sense to just have the array be a member so we don't have to use new and delete on it. Also needed
3315         to eliminate code that used ID_CLOSE_TAG for an array size.
3316         (KHTMLParser::~KHTMLParser): Remove code that deletes the forbidden tag array. Also changed the code
3317         that manages isindex to use deref instead of delete.
3318         (KHTMLParser::reset): Use safer sizeof for clearing the forbidden tag array. Old code had the
3319         mistake of using ID_CLOSE_TAG for the array size too.
3320         (KHTMLParser::parseToken): Removed code that checks for bogus tags; it's not clear why it was ever
3321         there and it would prevent custom tags from working. Added range check before using the forbidden
3322         tag array with the token ID since custom tags will use index values past the end of the array.
3323         (KHTMLParser::getElement): Removed most of the code that makes an element by ID; now the work is done
3324         inside the DocumentImpl createHTMLElement. Any code that needs to be different than a dynamic
3325         createElement call is still here.
3326         * khtml/html/htmltokenizer.cpp: (khtml::HTMLTokenizer::parseTag): Call the tagId function in the
3327         document if getTagID fails; this creates a unique per-document ID.
3328
3329         * khtml/misc/htmlhashes.h: Changed return types to unsigned short.
3330         * khtml/misc/htmlhashes.cpp:
3331         (khtml::getTagID): Changed return type to unsigned short.
3332         (khtml::getAttrID): Ditto.
3333
3334         * khtml/misc/htmltags.c: Regenerated.
3335         * khtml/misc/htmltags.h: Regenerated.
3336
3337         * khtml/misc/maketags: Changed the generated constants to use "const unsigned short" instead of "#define".
3338         Changed ID_CLOSE_TAG to be a fixed value of 32000 rather than being just past the IDs of the HTML tags.
3339         Also rewrote getTagName to work with the new scheme.
3340
3341         * khtml/xml/dom_docimpl.h: Added overload of createHTMLElement, made it non-virtual since it's not overriden.
3342         * khtml/xml/dom_docimpl.cpp:
3343         (DocumentImpl::createHTMLElement): Refactored into two separate functions, one that takes the tag ID.
3344         Also updated for a few tags that the parser handled but this did not.
3345
3346         * kwq/KWQRenderTreeDebug.cpp:
3347         (getTagName): Added. Works for custom nodes, because it calls nodeName rather than using getTagName on
3348         the tag ID directly, which only works for standard nodes.
3349         (operator<<): Update to call getTagName.
3350         (nodePositionRelativeToRoot): Ditto.
3351         (writeSelection): Ditto.
3352
3353 2004-12-21  David Harrison  <harrison@apple.com>
3354
3355         Reviewed by Ken Kocienda.
3356
3357         <rdar://problem/3924934> REGRESSION: double click at end of line selects start of next line
3358
3359         Problem was the TextIterator was not handling exitNode() from a P block properly.
3360         
3361         * khtml/editing/visible_text.cpp:
3362         (khtml::TextIterator::TextIterator):
3363         Add new param that specifies whether the iterator is for content or for searching.
3364         Search iterators do not prevent newlines at the beginning.
3365         (khtml::TextIterator::advance):
3366         Added some comments.
3367         (khtml::TextIterator::handleTextNode):
3368         Added some comments.
3369         (khtml::TextIterator::exitNode):
3370         Emit newline for P (and other) blocks with position following the block, instead of the m_lastTextNode.
3371         (khtml::TextIterator::emitCharacter):
3372         Added some comments.
3373         (khtml::TextIterator::range):
3374         Added some comments.
3375         (khtml::CharacterIterator::CharacterIterator):
3376         Specify search type TextIterator.
3377         (khtml::CharacterIterator::advance):
3378         * khtml/editing/visible_text.h:
3379         (khtml::):
3380         Add new TextIterator::TextIterator param that specifies whether the iterator is for content or for searching.
3381         * khtml/editing/visible_units.cpp:
3382         (khtml::nextWordBoundary):
3383         Specify search type TextIterator.
3384
3385 2004-12-21  David Harrison  <harrison@apple.com>
3386
3387         Reviewed by Ken Kocienda.
3388
3389         <rdar://problem/3924695> REGRESSION (Mail): double-clicking past end of line shows no selection, should select to EOL
3390         
3391         Problem was that RenderText::setSelectionState did not handle the SelectionStart case where start and end are the end of the line.
3392         Fixed by pretending the start == end-1 in that situation, as long as end > 0.
3393         
3394         * khtml/rendering/render_text.cpp:
3395         (RenderText::setSelectionState)
3396
3397 2004-12-21  Maciej Stachowiak  <mjs@apple.com>
3398
3399         Reviewed by John.
3400
3401         <rdar://problem/3929187> WebKit needs to restrict access to certain window operations by domain
3402         
3403         * khtml/ecma/kjs_window.cpp:
3404         (Window::get): Change most window functions to be restricted by
3405         XSS domain check.
3406
3407 2004-12-21  Ken Kocienda  <kocienda@apple.com>
3408
3409         Reviewed by John
3410
3411         Fix for this bug:
3412         
3413         <rdar://problem/3928305> selecting an entire line and typing over causes new inserted text at top of document
3414
3415         * khtml/editing/htmlediting.cpp:
3416         (khtml::DeleteSelectionCommand::insertPlaceholderForAncestorBlockContent): New function to detect case
3417         formerly undetected and unhandled. This is the crux of the bug fix.
3418         (khtml::DeleteSelectionCommand::doApply): Call insertPlaceholderForAncestorBlockContent() during
3419         execution of command.
3420         * khtml/editing/htmlediting.h: Declare new function.
3421         * layout-tests/editing/deleting/delete-3928305-fix-expected.txt: Added.
3422         * layout-tests/editing/deleting/delete-3928305-fix.html: Added.
3423
3424 2004-12-21  Ken Kocienda  <kocienda@apple.com>
3425
3426         Reviewed by me
3427
3428         * khtml/editing/htmlediting.cpp:
3429         (khtml::CompositeEditCommand::removeBlockPlaceholderIfNeeded): Note to self: Must compile code before
3430         checking in (aka must return false from function returning bool).
3431
3432 2004-12-21  Ken Kocienda  <kocienda@apple.com>
3433
3434         Reviewed by John
3435         
3436         Fix for this bug:
3437         
3438         <rdar://problem/3927752> Crash in khtml::CompositeEditCommand::removeBlockPlaceholderIfNeeded(DOM::NodeImpl*)
3439
3440         * khtml/editing/htmlediting.cpp:
3441         (khtml::CompositeEditCommand::insertBlockPlaceholderIfNeeded): Added some null checks.
3442         (khtml::CompositeEditCommand::removeBlockPlaceholderIfNeeded): Ditto.
3443
3444 2004-12-21  Ken Kocienda  <kocienda@apple.com>
3445
3446         Reviewed by Darin
3447
3448         * khtml/editing/htmlediting.cpp:
3449         (khtml::ReplacementFragment::mergeStartNode): Refine concept of how this node is found based on
3450         further experiements.
3451         (khtml::ReplaceSelectionCommand::doApply): Add a special case for determining merges that need to
3452         be done if the insertion point is in an empty block.
3453         * layout-tests/editing/pasteboard/paste-text-012-expected.txt: Added.
3454         * layout-tests/editing/pasteboard/paste-text-012.html: Added.
3455         * layout-tests/editing/pasteboard/paste-text-013-expected.txt: Added.
3456         * layout-tests/editing/pasteboard/paste-text-013.html: Added.
3457         * layout-tests/editing/pasteboard/paste-text-014-expected.txt: Added.
3458         * layout-tests/editing/pasteboard/paste-text-014.html: Added.
3459
3460 2004-12-21  Darin Adler  <darin@apple.com>
3461
3462         Reviewed by Ken.
3463
3464         - fixed <rdar://problem/3899133> text search in a Safari window takes a very long time on Tiger updates page (and some other pages)
3465
3466         * khtml/editing/visible_text.h: Add an "offset base node" parameter to emitCharacter, and also
3467         add a field to track it. Must make a few things mutable so we can update them in the range accessor.
3468         * khtml/editing/visible_text.cpp:
3469         (khtml::TextIterator::advance): Pass in base node and offsets rather than computing actual offsets
3470         using the node's index. We only compute the node index if actually asked for the range.
3471         (khtml::TextIterator::handleTextNode): Pass 0 for base node and set base node to 0 when setting
3472         up the offsets.
3473         (khtml::TextIterator::handleTextBox): Ditto.
3474         (khtml::TextIterator::handleReplacedElement): Pass base node and set base node instead of calling
3475         nodeIndex.
3476         (khtml::TextIterator::handleNonTextNode): Pass 0 for offset.
3477         (khtml::TextIterator::exitNode): More of the same.
3478         (khtml::TextIterator::emitCharacter): Ditto.
3479         (khtml::TextIterator::range): If an offset base node is stored, then get its node index, and then
3480         add that in to the offsets. Doing the work here guarantees it's done only once when doing a text search.
3481
3482         - another small fix
3483
3484         * khtml/khtml_part.cpp: Removed SPEED_DEBUG define. Not sure why it was on.
3485
3486 === Safari-176 ===
3487
3488 2004-12-20  Ken Kocienda  <kocienda@apple.com>
3489
3490         Reviewed by Darin
3491
3492         * khtml/editing/htmlediting.cpp:
3493         (khtml::DeleteSelectionCommand::moveNodesAfterNode): My one-liner for this bug introduced layout test
3494         regressions: <rdar://problem/3926142> REGRESSION (Mail): Deleting text decreases quote level
3495         Rolling out until I can develop a real fix.
3496
3497 2004-12-20  David Harrison  <harrison@apple.com>
3498
3499         Reviewed by Dave Hyatt.
3500         
3501         Initial checkin of AXTextMarkerRef support.
3502
3503         * khtml/xml/dom_docimpl.cpp:
3504         (DocumentImpl::updateSelection):
3505         (DocumentImpl::setFocusNode):
3506         * kwq/KWQAccObject.h:
3507         * kwq/KWQAccObject.mm:
3508         (-[KWQAccObject detach]):
3509         (-[KWQAccObject anchorElement]):
3510         (-[KWQAccObject addChildrenToArray:]):
3511         (-[KWQAccObject accessibilityAttributeNames]):
3512         (-[KWQAccObject accessibilityActionDescription:]):
3513         (-[KWQAccObject accessibilityPerformAction:]):
3514         (-[KWQAccObject textMarkerRangeFromMarkers:andEndMarker:]):
3515         (-[KWQAccObject textMarkerForVisiblePosition:]):
3516         (-[KWQAccObject visiblePositionForTextMarker:]):
3517         (-[KWQAccObject AXTextMarkerRangeCopyStartMarkerWrapper:]):
3518         (-[KWQAccObject AXTextMarkerRangeCopyEndMarkerWrapper:]):
3519         (-[KWQAccObject visiblePositionForStartOfTextMarkerRange:]):
3520         (-[KWQAccObject visiblePositionForEndOfTextMarkerRange:]):
3521         (-[KWQAccObject accessibilityAttributeValue:]):
3522         (-[KWQAccObject accessibilityParameterizedAttributeNames]):
3523         (-[KWQAccObject textMarkerRangeFromVisiblePositions:andEndPos:]):
3524         (-[KWQAccObject getSelectedTextMarkerRange]):
3525         (-[KWQAccObject doAXLineForTextMarker:]):
3526         (-[KWQAccObject doAXTextMarkerRangeForLine:]):
3527         (-[KWQAccObject doAXStringForTextMarkerRange:]):
3528         (-[KWQAccObject doAXNextTextMarkerForTextMarker:]):
3529         (-[KWQAccObject doAXPreviousTextMarkerForTextMarker:]):
3530         (-[KWQAccObject doAXLeftWordTextMarkerRangeForTextMarker:]):
3531         (-[KWQAccObject doAXRightWordTextMarkerRangeForTextMarker:]):
3532         (-[KWQAccObject doAXLeftLineTextMarkerRangeForTextMarker:]):
3533         (-[KWQAccObject doAXRightLineTextMarkerRangeForTextMarker:]):
3534         (-[KWQAccObject accessibilityAttributeValue:forParameter:]):
3535         (-[KWQAccObject accessibilityFocusedUIElement]):
3536         (-[KWQAccObject clearChildren]):
3537         (-[KWQAccObject accObjectID]):
3538         (-[KWQAccObject setAccObjectID:]):
3539         (-[KWQAccObject removeAccObjectID]):
3540         * kwq/KWQAccObjectCache.h:
3541         * kwq/KWQAccObjectCache.mm:
3542         (KWQAccObjectCache::KWQAccObjectCache):
3543         (KWQAccObjectCache::~KWQAccObjectCache):
3544         (KWQAccObjectCache::getAccObjectID):
3545         (KWQAccObjectCache::removeAccObjectID):
3546         (KWQAccObjectCache::textMarkerForVisiblePosition):
3547         (KWQAccObjectCache::visiblePositionForTextMarker):
3548
3549 2004-12-19  Darin Adler  <darin@apple.com>
3550
3551         * kwq/KWQFoundationExtras.h: (KWQCFAutorelease): Added nil check.
3552
3553 2004-12-19  Darin Adler  <darin@apple.com>
3554
3555         Reviewed by Kevin.
3556
3557         - a garbage collection fix
3558
3559         * kwq/KWQFoundationExtras.h: (KWQCFAutorelease): Added a more-extensive comment and fixed the BUILDING_ON_PANTHER
3560         #ifndef to use #if (in practice, either is OK).
3561         * kwq/KWQKURL.mm: (KURL::getNSURL): Use KWQCFAutorelease instead of autorelease.
3562
3563 2004-12-17  David Hyatt  <hyatt@apple.com>
3564
3565         Fix for 3923255, specified percentage heights of divs with overflow auto inside tables not honored.
3566         
3567         Reviewed by kocienda
3568
3569         * khtml/rendering/render_box.cpp:
3570         (RenderBox::calcPercentageHeight):
3571         * khtml/rendering/render_table.cpp:
3572         (RenderTableSection::layoutRows):
3573
3574 2004-12-17  David Harrison  <harrison@apple.com>
3575
3576         Reviewed by Ken Kocienda.
3577
3578         <rdar://problem/3924930> REGRESSION: triple click does not select to end of line
3579         
3580         * khtml/editing/visible_units.cpp:
3581         (khtml::endOfParagraph):
3582         When includeLineBreak is true, allow traversal to next node after enclosingBlockFlowElement.
3583
3584 2004-12-17  Ken Kocienda  <kocienda@apple.com>
3585
3586         Reviewed by Vicki
3587
3588         * khtml/editing/htmlediting.cpp:
3589         (khtml::InsertParagraphSeparatorInQuotedContentCommand::doApply): Missed deleting some now-obsolete expcetion
3590         codes when I added the createBreakElement() function.
3591
3592 2004-12-17  Richard Williamson   <rjw@apple.com>
3593
3594         Set the floor of max cacheable object size to 40K.  This restores
3595         the long standing floor.  Lower floor deleteriously impacts the PLT.
3596         Reviewed by Hyatt.
3597
3598         * khtml/khtml_part.cpp:
3599         (KHTMLPart::checkCompleted):
3600         * khtml/misc/loader.cpp:
3601         (Cache::setSize):
3602
3603 2004-12-17  Ken Kocienda  <kocienda@apple.com>
3604
3605         Reviewed by Hyatt
3606
3607         Fix for this bug:
3608         
3609         <rdar://problem/3926142> REGRESSION (Mail): Deleting text decreases quote level
3610
3611         * khtml/editing/htmlediting.cpp:
3612         (khtml::DeleteSelectionCommand::moveNodesAfterNode): Stop merging nodes when a <br> is hit.
3613         Formerly checked only for block boundary.
3614
3615 2004-12-17  David Harrison  <harrison@apple.com>
3616
3617         Reviewed by Darin.
3618
3619                 Add KWQCFAutorelease for autoreleasing CF objects.
3620         * kwq/KWQFoundationExtras.h:
3621         (KWQCFAutorelease):
3622         New.
3623
3624 2004-12-17  David Harrison  <harrison@apple.com>
3625
3626         Reviewed by Darin.
3627
3628                 Fix GC compatibility in getNSString.
3629
3630         * kwq/KWQString.mm:
3631         (QString::getNSString):
3632                 Use NSString allocator instead of CFString, so that autorelease works under GC.
3633
3634 2004-12-17  Ken Kocienda  <kocienda@apple.com>
3635
3636         Reviewed by Hyatt
3637
3638         Fix for this bug:
3639         
3640         <rdar://problem/3890973> REGRESSION (Mail): Deleting reorders remaining text
3641
3642         * khtml/editing/htmlediting.cpp:
3643         (khtml::DeleteSelectionCommand::moveNodesAfterNode): Added check to ensure that moving content will not
3644         move it after the <body> element.
3645
3646 2004-12-17  Ken Kocienda  <kocienda@apple.com>
3647
3648         Reviewed by me
3649         
3650         Added new layout tests covering cases from recent bug fixes.
3651
3652         * layout-tests/editing/inserting/insert-div-018-expected.txt: Added.
3653         * layout-tests/editing/inserting/insert-div-018.html: Added.
3654         * layout-tests/editing/inserting/insert-div-019-expected.txt: Added.
3655         * layout-tests/editing/inserting/insert-div-019.html: Added.
3656         * layout-tests/editing/inserting/insert-div-020-expected.txt: Added.
3657         * layout-tests/editing/inserting/insert-div-020.html: Added.
3658         * layout-tests/editing/inserting/insert-div-021-expected.txt: Added.
3659         * layout-tests/editing/inserting/insert-div-021.html: Added.
3660
3661 2004-12-17  Ken Kocienda  <kocienda@apple.com>
3662
3663         Reviewed by me
3664
3665         Changes in layout resulting from giving <p> elements no margin rather than 0.1em margin.
3666
3667         * layout-tests/editing/inserting/insert-div-013-expected.txt
3668         * layout-tests/editing/inserting/insert-div-014-expected.txt
3669
3670 2004-12-17  Ken Kocienda  <kocienda@apple.com>
3671
3672         Reviewed by John
3673
3674         Fix for this bug:
3675         
3676         <rdar://problem/3925317> Increase quote in email and with cursor below the quote the new line appears above the quote
3677
3678         * khtml/editing/htmlediting.cpp:
3679         (khtml::InsertParagraphSeparatorCommand::doApply):
3680         * khtml/editing/visible_position.cpp: Refine rules for whether to use the starting node or the starting
3681         block as the reference node for the insertion of the new block.
3682         (khtml::isLastVisiblePositionInBlock): Tweak rules again. Descendants of following blocks should answer true.
3683         I worked this all out on the whiteboard this time. This should be the last tweak.
3684
3685 2004-12-17  Kevin Decker  <kdecker@apple.com>
3686
3687         Reviewed by Ken.
3688
3689         Fixed <rdar://problem/3824438> Need a clean way for Dashboard to detect when an XML parsing error occurs
3690
3691         * khtml/xml/xml_tokenizer.cpp:
3692         (khtml::XMLTokenizer::insertErrorMessageBlock): In the xml error report, instead of a generic <div>, use <parsererror> to match Mozilla.
3693
3694 2004-12-16  Ken Kocienda  <kocienda@apple.com>
3695
3696         Reviewed by Chris
3697
3698         Fix for this bug:
3699         
3700         <rdar://problem/3924888> REGRESSION (Mail): Hitting return key at end of line does not insert visible newline
3701
3702         * khtml/editing/htmlediting.cpp:
3703         (khtml::InsertParagraphSeparatorCommand::doApply): Tweaked code I added just before to fix 3924486, so that
3704         it checks the downstream node for the starting position.
3705
3706 2004-12-16  Ken Kocienda  <kocienda@apple.com>
3707
3708         Reviewed by Chris
3709
3710         Added new createBreakElement() function that makes creating a <br> element a one-liner.
3711         Converted all the code that used to call the DocumentImpl, and dealt with the exceptionCode,
3712         over to this new helper.
3713
3714         * khtml/editing/htmlediting.cpp:
3715         (khtml::DeleteSelectionCommand::moveNodesAfterNode): Now uses new helper function.
3716         (khtml::InsertLineBreakCommand::doApply): Ditto.
3717         (khtml::InsertParagraphSeparatorCommand::doApply): Ditto.
3718         (khtml::InsertParagraphSeparatorInQuotedContentCommand::doApply): Ditto.
3719         (khtml::ReplaceSelectionCommand::doApply): Ditto.
3720         (khtml::createBreakElement): New helper.
3721         * khtml/editing/htmlediting.h: Ditto.
3722
3723 2004-12-16  David Hyatt  <hyatt@apple.com>
3724
3725         Fix a bug where vertical-align values that depended on their parent's value went crazy if the parent was
3726         vertical-align top or bottom.  The bug is 3771007, bankofamerica's ebills page.
3727         
3728         Reviewed by kocienda
3729
3730         * khtml/rendering/render_object.cpp:
3731         (RenderObject::getVerticalPosition):
3732
3733 2004-12-16  Ken Kocienda  <kocienda@apple.com>
3734
3735         Reviewed by John
3736
3737         Fix for these bugs:
3738         
3739         <rdar://problem/3924486> REGRESSION (Mail): Hitting return key does not insert visible newline
3740         <rdar://problem/3924579> REGRESSION (Mail): After deleting, hitting return key does not insert visible newline
3741
3742         * khtml/editing/htmlediting.cpp:
3743         (khtml::InsertParagraphSeparatorCommand::doApply): For the first bug, detect when inserting a <p> will
3744         make a visible <br> collapse. For the second bug, move the code that inserts the new <p> after
3745         a check which may move the node used as the reference node for the insertion. Also change this code to
3746         insert the <p> after the last sibling of the starting position, to move it past the nodes we're going
3747         to want to shift into the new <p>.
3748
3749 2004-12-16  Darin Adler  <darin@apple.com>
3750
3751         Reviewed by Ken.
3752
3753         - use <p> elements rather than <br> when pasting plain text; also use margin of 0 rather than 0.1 em
3754           after talking this over with Dave and Ken
3755
3756         * khtml/editing/htmlediting.h: Added createDefaultParagraphElement and createBlockPlaceholderElement.
3757         * khtml/editing/htmlediting.cpp:
3758         (khtml::CompositeEditCommand::insertBlockPlaceholderIfNeeded): Use new createBlockPlaceholderElement
3759         helper so this can share code with the plain-text conversion code.
3760         (khtml::InsertParagraphSeparatorCommand::createParagraphElement): Use new createDefaultParagraphElement
3761         helper so this can share code with the plain-text conversion code.
3762         (khtml::createDefaultParagraphElement): Added.
3763         (khtml::createBlockPlaceholderElement): Added.
3764
3765         * khtml/editing/markup.cpp: (khtml::createFragmentFromText): Use paragraphs rather than
3766         <br> elements for pasting plain text.
3767
3768         - regenerated these files with the newer gperf
3769
3770         * khtml/css/cssproperties.c: Regenerated.
3771         * khtml/css/cssvalues.c: Regenerated.
3772         * khtml/misc/htmlattrs.c: Regenerated.
3773         * khtml/misc/htmltags.c: Regenerated.
3774
3775 2004-12-16  Ken Kocienda  <kocienda@apple.com>
3776
3777         Reviewed by Hyatt
3778
3779         Fix for this bug:
3780         
3781         <rdar://problem/3924291> REGRESSION (Mail): Crash deleting content following a <p> element
3782
3783         * khtml/xml/dom_nodeimpl.cpp:
3784         (NodeImpl::enclosingInlineElement): Fixed problem in this function where recursive search for
3785         parent that is not an inline would skip past previous siblings of nodes which were blocks. Now
3786         it stops looking in this situation. This problem eventually caused the delete code to try to 
3787         merge a node under a descendent.
3788
3789 2004-12-16  Adele Amchan  <adele@apple.com>
3790
3791         Change by Richard, reviewed by me.
3792
3793         Fix for: <rdar://problem/3923983> background image decoding prevents page with 0Kb image from finishing to load
3794
3795         * khtml/misc/loader.cpp: (CachedImage::data): Added call to notifyFinished so the 0Kb image case finishes loading.
3796
3797 2004-12-16  Adele Amchan  <adele@apple.com>
3798
3799         Reviewed by Chris.
3800
3801         Fix for: <rdar://problem/3534824> VIP: some navigation links on safeway.com don't work due to a JavaScript quirk
3802
3803         Added a call to ObjectImp::get before Window::get just returns Undefined.  
3804         This was preventing us from getting the toString function from a Window object.
3805
3806         * khtml/ecma/kjs_window.cpp: (Window::get):
3807
3808 2004-12-16  Ken Kocienda  <kocienda@apple.com>
3809
3810         Reviewed by John
3811         
3812         Fix for this bug:
3813         
3814         <rdar://problem/3918351> REGRESSION (Mail, 173-175+): Return before first char of line leaves insertion point in wrong place
3815         
3816         * khtml/editing/htmlediting.cpp:
3817         (khtml::InsertParagraphSeparatorCommand::doApply): Basically, did a rewrite of this function
3818         to do a better job than it was doing before. Added several test cases to prove I am on a 
3819         better track.
3820         * khtml/editing/visible_position.cpp:
3821         (khtml::isFirstVisiblePositionInBlock): Tweaked the rules a bit to fix an issue very similar to the
3822         leaving-the-bar-node case problem I just fixed in a recent checkin (relevant markup: <p>foo</p>bar).
3823         This function was returning true for the first position in "bar". Wrong. Also tightened up other 
3824         rule: Should not report true when relationship between blocks cannot be determined.
3825         (khtml::isLastVisiblePositionInBlock): Tightened up rule as above: Should not report true 
3826         when relationship between blocks cannot be determined.
3827         * layout-tests/editing/inserting/insert-div-010-expected.txt: Added.
3828         * layout-tests/editing/inserting/insert-div-010.html: Added.
3829         * layout-tests/editing/inserting/insert-div-011-expected.txt: Added.
3830         * layout-tests/editing/inserting/insert-div-011.html: Added.
3831         * layout-tests/editing/inserting/insert-div-012-expected.txt: Added.
3832         * layout-tests/editing/inserting/insert-div-012.html: Added.
3833         * layout-tests/editing/inserting/insert-div-013-expected.txt: Added.
3834         * layout-tests/editing/inserting/insert-div-013.html: Added.
3835         * layout-tests/editing/inserting/insert-div-014-expected.txt: Added.
3836         * layout-tests/editing/inserting/insert-div-014.html: Added.