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