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