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