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