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