572886e68fee4e548477c194f6c5fbab0c7d990c
[WebKit-https.git] / WebCore / ChangeLog
1 2007-08-14  Sam Weinig  <sam@webkit.org>
2
3         Reviewed by Brady and Dr. Harrison.
4
5         Fix typo.  'whitespace' property is spelled 'white-space'.
6
7         * page/inspector/inspector.css:
8
9 2007-08-13  Beth Dakin  <bdakin@apple.com>
10
11         Reviewed by Maciej.
12
13         Fix for <rdar://problem/5404899> REGRESSION: Mail crash in 
14         WebCore::FontFallbackList::fontDataAt() after dragging image into 
15         text multiple times
16
17         We were crashing because style information was not up-to-date. This 
18         patch fixes the problem in two ways:
19
20         Style information was not up to date at the time of the crash 
21         because the document thought there was still a pending style sheet. 
22         The pending style sheet counter was incremented when a call to 
23         cloneNode from Mail cloned a style node with an imported style 
24         sheet. Because Mail disables the cache, the style sheet did not 
25         load immediately for the cloned node, and we do not check again to 
26         see if it has loaded in time to decrement the pending style sheet 
27         counter before the crash point. The fix here is only to increment 
28         the pending style sheet counter for elements that are already in 
29         the document.
30         * dom/StyleElement.cpp:
31         (WebCore::StyleElement::insertedIntoDocument): If we have a CSS 
32         style sheet that is currently loading, increment the pending style 
33         sheet counter. This should keep the counter accurate in the case 
34         where a style node is cloned and then immediately inserted into the 
35         document.
36         (WebCore::StyleElement::removedFromDocument): If we have a CSS 
37         style sheet that is currently loading, decrement the pending style 
38         sheet count. This is required to keep the correct balance, given 
39         the change above.
40         (WebCore::StyleElement::createSheet): Only addPendingSheet() and 
41         checkLoaded() if we are in the document.
42
43         Here is Darin's original fix. It seems worth keeping this fix too. 
44         Font style information should not cause a crash if there are still 
45         pending style sheets. This is good belt-and-suspenders in case 
46         there is another way to run into this bug with a wacky timing 
47         issue.
48         * css/CSSStyleSelector.cpp:
49         (WebCore::CSSStyleSelector::styleForElement): Update the font.
50
51 2007-08-13  Alexey Proskuryakov  <ap@webkit.org>
52
53         Reviewed by Darin.
54
55         http://bugs.webkit.org/show_bug.cgi?id=14635
56         rdar://problem/5340188
57         Uploading file with non-ASCII character in path fails
58
59         File upload cannot be tested in DumpRenderTree.
60
61         * html/HTMLFormElement.cpp:
62         (WebCore::pathGetFilename): A cross-platform helper that extracts a file name from a path.
63         (WebCore::HTMLFormElement::formData): Use the above helper instead of code that doesn't
64         work on Windows.
65
66 2007-08-13  Alexey Proskuryakov  <ap@webkit.org>
67
68         Reviewed by Darin.
69
70         http://bugs.webkit.org/show_bug.cgi?id=14951
71         REGRESSION: page interpreted as UTF-8 because of stray <?xml> after <head>
72
73         Test: fast/encoding/misplaced-xml-declaration.html
74
75         * loader/TextResourceDecoder.cpp:
76         (WebCore::TextResourceDecoder::checkForHeadCharset): Only honor XML declaration
77         at the very beginning of the file.
78
79 2007-08-13  Oliver Hunt  <oliver@apple.com>
80
81         rs=sam
82
83         Correct accidentally modified code.
84
85         * platform/mac/FontDataMac.mm:
86         (WebCore::FontData::platformInit):
87
88 2007-08-13  Adele Peterson  <adele@apple.com>
89
90         Reviewed by Brady.
91
92         Fix for http://bugs.webkit.org/show_bug.cgi?id=14746
93         <rdar://problem/5401041> REGRESSION: Form state not saved for forms that submit via HTTPS even if they do not contain a password field
94
95         * loader/FrameLoader.cpp: (WebCore::FrameLoader::saveDocumentState): Restore our old behavior that will save form state for secure forms.
96           This will also match Firefox behavior.
97
98         * dom/Document.cpp: Removed secureFormAdded(), secureFormRemoved(), hasSecureForm() which are no longer used.
99         * dom/Document.h:
100         * html/HTMLFormElement.cpp:
101         (WebCore::HTMLFormElement::attach):
102         (WebCore::HTMLFormElement::parseMappedAttribute):
103
104 2007-08-13  Oliver Hunt  <oliver@apple.com>
105
106         Reviewed by Maciej.
107
108         <rdar://problem/5386183> REGRESSION (9A504-9A508): Underline of inline hole is too thin 
109         on Japanese DotMac page
110         
111         Hack the line metrics for the Hiragino font families so that they always allow space for
112         the marked text underline.
113         
114         * platform/mac/FontDataMac.mm:
115         (WebCore::FontData::platformInit):
116
117 2007-08-13  David Hyatt  <hyatt@apple.com>
118
119         Reviewed by aroben
120  
121         <rdar://problem/5400446> messed up content on calendar.yahoo.com and my.yahoo.com
122
123         Fix some more bad assumptions about <html> being the first child of the document now that we
124         properly support HTML5's model (where a comment node preceding <html> will in fact be its sibling).
125
126         * html/HTMLParser.cpp:
127         (WebCore::HTMLParser::handleError):
128         (WebCore::HTMLParser::createHead):
129
130 2007-08-13  Justin Garcia  <justin.garcia@apple.com>
131
132         Reviewed by Darin.
133         
134         <rdar://problem/5333725> -webkit-user-select: none makes selection difficult
135         
136         Let users create selections if they mouse down in a -webkit-user-select:none
137         region, just (continue to) disallow selection endpoints in those regions, and
138         don't paint those regions as selected if they are fully enclosed by a selection. 
139         For example, in xxyyyxx where x is -webkit-user-select:none, a user can mouse down
140         between the first two xs and drag across yyy to the second two xs to create a 
141         selection xx^yyy^xx.
142         
143         * editing/SelectionController.cpp:
144         (WebCore::SelectionController::selectAll): Allow selectAll inside a root
145         that has -webkit-user-select:none, because it may contain content that
146         is selectable (VisiblePosition and Selection creation will keep Selection
147         endpoints out of -webkit-user-select:none regions).
148         * page/EventHandler.cpp:
149         (WebCore::EventHandler::selectClosestWordFromMouseEvent): Use canMouseDownStartSelect
150         instead of the ambiguously named shouldSelect().
151         (WebCore::EventHandler::handleMousePressEventTripleClick): Ditto.
152         (WebCore::EventHandler::handleMousePressEventSingleClick): Ditto.
153         (WebCore::EventHandler::updateSelectionForMouseDrag): Use canMouseDragExtendSelect.
154         (WebCore::EventHandler::selectCursor): Paint an ibeam in -webkit-user-select:none regions,
155         because you can click in those regions to create a selection.
156         (WebCore::EventHandler::canMouseDownStartSelect): Now fires the selectStart event, and
157         returns true in -webkit-user-select: none regions.
158         (WebCore::EventHandler::canMouseDragExtendSelect): This is identical to 
159         canMouseDownStartSelect because of 12823, even though it seems strange that we would fire 
160         the selectStart event here.
161         * page/EventHandler.h:
162         * rendering/RenderObject.cpp:
163         (WebCore::RenderObject::draggableNode): Only -webkit-user-select:ignore regions will
164         prevent selection creation.
165         * rendering/RenderObject.h:
166
167 2007-08-13  Anders Carlsson  <andersca@apple.com>
168
169         Reviewed by Maciej.
170
171         <rdar://problem/5360748>
172         REGRESSION (r21002-r21003): Flash widget sniffer doesn't work (affects iWeb)
173
174         Don't check whether the document is being parsed or not, because the node list
175         could be accessed after the document has finished parsing.
176         
177         * dom/Node.cpp:
178         (WebCore::Node::registerNodeList):
179
180 2007-08-13  Lars Knoll  <lars@trolltech.com>
181
182         Reviewed by Simon.
183
184         no need to update regions that are not visible on the webpage.
185
186         * platform/qt/ScrollViewQt.cpp:
187         (WebCore::ScrollView::updateContents):
188
189 2007-08-12  Maciej Stachowiak  <mjs@apple.com>
190
191         Reviewed by Darin and Sam.
192         
193         <rdar://problem/5395213> cross-domain access to individual components of location object should be denied.
194
195         * bindings/js/kjs_window.cpp:
196         (KJS::Location::put): Add the appropriate cross-domain access checks.
197
198 2007-08-12  Darin Adler  <darin@apple.com>
199
200         Reviewed by John Sullivan.
201
202         - fix <rdar://problem/5403724> REGRESSION: text inputs are not scrolled to make inline input visible (14912)
203
204         * editing/Editor.h: Made setIgnoreMarkedTextSelectionChange no longer inline.
205         It now has a side effect of revealing the selection when you set it to false.
206         Added private revealSelectionAfterEditingOperation helper.
207         * editing/Editor.cpp:
208         (WebCore::Editor::deleteRange): Calls revealSelectionAfterEditingOperation instead
209         of calling m_frame->revealSelection directly.
210         (WebCore::Editor::replaceSelectionWithFragment): Ditto.
211         (WebCore::Editor::insertOrderedList): Ditto.
212         (WebCore::Editor::insertUnorderedList): Ditto.
213         (WebCore::Editor::increaseSelectionListLevel): Ditto.
214         (WebCore::Editor::increaseSelectionListLevelOrdered): Ditto.
215         (WebCore::Editor::increaseSelectionListLevelUnordered): Ditto.
216         (WebCore::Editor::decreaseSelectionListLevel): Ditto.
217         (WebCore::Editor::insertLineBreak): Ditto.
218         (WebCore::Editor::insertParagraphSeparator): Ditto.
219         (WebCore::Editor::replaceMarkedText): Ditto.
220         (WebCore::Editor::revealSelectionAfterEditingOperation): Added. Calls revealSelection,
221         unless we are in the ignoreMarkedTextSelectionChange state. If we are in that state,
222         we're in the middle of a composite editing operation and we shouldn't try to scroll
223         to reveal the selection until the operation is done.
224         (WebCore::Editor::setIgnoreMarkedTextSelectionChange): Made no longer inline. If
225         changing the state from true to false, then calls revealSelectionAfterEditingOperation.
226
227         * WebCore.exp: Add new entry point for no-longer-inline setter function.
228
229 2007-08-12  Geoffrey Garen  <ggaren@apple.com>
230
231         Reviewed by Maciej Stachowiak, Dave Hyatt.
232         
233         Changed the dead resource LRU-SP algorithm to measure an object's
234         total size, not just its encoded size. This will allow us to make 
235         better decisions about what data to evict when the cache is small. For 
236         example, the PLT can now run with a 16MB cache without fully evicting
237         any resources.
238         
239         (Previously, we had assumed that decoded size would be an OK estimate
240         of encoded size, but that is not true of GIF, whose decoded size can be 
241         orders of magnitude greater than its encoded size.)
242         
243         Subtly, destroying a resource's decoded data now increases its recency 
244         by moving it to the head of a smaller LRU list. This is slightly odd,
245         but, since all resources get the same treatment, it shouldn't hurt 
246         the eviction algorithm.
247
248         * history/PageCache.cpp:
249         (WebCore::PageCache::releaseAutoreleasedPagesNow): Make sure that a
250         dead resource eviction doesn't happen until we've released all of our
251         dead pages. Otherwise, the cache will make terrible decisions about 
252         what to evict because all of our dead resources will seem live.
253
254         * loader/Cache.cpp:
255         (WebCore::Cache::Cache):
256         (WebCore::Cache::pruneLiveResources):
257         (WebCore::Cache::pruneDeadResources): Removed call to 
258         removeFromLiveDecodedResourcesList because this happens automatically
259         now as a part of the process of changing the resource's decoded size.
260         (WebCore::Cache::lruListFor): *** The key change. *** Compute the 
261         appropriate LRU list based on total size, not encoded size.
262         (WebCore::Cache::dumpLRULists): Added debug logging function to help
263         visualize the cache.
264
265         * loader/Cache.h:
266         (WebCore::Cache::setDeadResourcePruneEnabled):
267         (WebCore::Cache::deadResourcePruneEnabled):
268
269         * loader/CachedImage.cpp: Moved decoded size tracking code from here
270         up into the base class. Currently, only CachedImage has a use for that
271         functionality, but other subclasses might need it in the future, and
272         the base class is already responsible for similar code related to 
273         encoded size tracking.
274         (WebCore::CachedImage::decodedSizeChanged):
275         * loader/CachedImage.h:
276
277         * loader/CachedResource.cpp:
278         (WebCore::CachedResource::CachedResource):
279         (WebCore::CachedResource::setDecodedSize): Move us in the LRU-SP list
280         just like setEncodedSize does, since decoded size counts now, too.
281         (WebCore::CachedResource::setEncodedSize): Changed slightly to match
282         the style of setDecodedSize.
283
284         * loader/CachedResource.h:
285         (WebCore::CachedResource::decodedSize):
286
287 2007-08-11  Mitz Pettel  <mitz@webkit.org>
288
289         Reviewed by Darin.
290
291         - fix http://bugs.webkit.org/show_bug.cgi?id=13670
292           <rdar://problem/5399619> Table misrender when one of the TDs has width=100%
293
294         Tests: fast/table/100-percent-cell-width.html
295                fast/table/percent-widths-stretch.html
296
297         * rendering/AutoTableLayout.cpp:
298         (WebCore::AutoTableLayout::calcPrefWidths): Changed the value used instead of
299         0% to avoid division by zero from 1% to less than 0.01%. Removed code that
300         added 0.5px to non-percent widths when calculating the scaling factor. The
301         latter change is covered by the percent-widths-stretch test, where the new
302         results match both WinIE 7 and Firefox 3.
303
304 2007-08-11  Darin Adler  <darin@apple.com>
305
306         Reviewed by Antti.
307
308         - fix <rdar://problem/5266535> REGRESSION: <img> inside <map> no longer allowed in strict mode
309           (breaks chemicalelements.com)
310
311         Test: fast/parser/strict-img-in-map.html
312
313         * html/HTMLMapElement.cpp: (WebCore::HTMLMapElement::checkDTD): Removed FIXME saying this
314         code is strange, since this code matches the HTML 4 specification almost exactly. Made
315         <img> elements allowed even in strict mode and added small comments to clarify what comes
316         from the DTD and what is non-standard.
317
318 2007-08-11  Holger Hans Peter Freyther  <zecke@selfish.org>
319
320         Reviewed by Anders.
321
322         Implement passing events to a subframe. The code is copied from
323         the windows port and passSubframeEventToSubframe was removed as it
324         is not called and it is not avilable in the windows port as well.
325
326         * page/gdk/EventHandlerGdk.cpp:
327         (WebCore::EventHandler::passMousePressEventToSubframe):
328         (WebCore::EventHandler::passMouseMoveEventToSubframe):
329         (WebCore::EventHandler::passMouseReleaseEventToSubframe):
330
331 2007-08-11  Holger Hans Peter Freyther  <zecke@selfish.org>
332
333         Reviewed by Lars.
334
335         GdkEventKey::string is not supposed to be used. The length
336         of this string is zero for non ascii characters. Use the
337         gdk_unicode_to_keyval to convert the keyval to a UChar and construct
338         a String. This change makes it possible to input non ascii
339         characters.
340
341         * platform/gdk/KeyEventGdk.cpp:
342         (WebCore::keyIdentifierForGdkKeyCode):
343         (WebCore::singleCharacterString):
344         (WebCore::PlatformKeyboardEvent::PlatformKeyboardEvent):
345
346 2007-08-11  Andrew Wellington  <proton@wiretapped.net>
347
348         Reviewed by Mark Rowe.
349         
350         Fix http://bugs.webkit.org/show_bug.cgi?id=14645
351         getPropertyValue should be case insensitive
352         
353         When we get the propertyID for a given string we convert to lowercase.
354         
355         This also applies to setProperty, removeProperty and others.
356         
357         * css/CSSStyleDeclaration.cpp:
358         (WebCore::propertyID):
359
360 2007-08-11  Mark Rowe  <mrowe@apple.com>
361
362         Build fix.  Change "#ifdef PLATFORM(GDK)" to "#if PLATFORM(GDK)".
363
364         * page/FrameView.cpp:
365         * page/FrameView.h:
366
367 2007-08-11  Holger Hans Peter Freyther  <zecke@selfish.org>
368
369         Reviewed by Adam.
370
371         Copy the WebFrame::layoutIfNeededRecursive method of the windows port
372         to FrameView to be used by the Gtk+ port. Simplify the implementation due
373         moving it to the FrameView class.
374
375         Implement the ScrollView::children() method for the Gtk+ port and make it
376         available to the FrameView as children() is used within the layoutIfNeededRecursive method.
377
378         * page/FrameView.cpp:
379         (WebCore::FrameView::layoutIfNeededRecursive):
380         * page/FrameView.h:
381         * platform/ScrollView.h:
382         * platform/gdk/ScrollViewGdk.cpp:
383
384 2007-08-11  Holger Hans Peter Freyther  <zecke@selfish.org>
385
386         Reviewed by Adam.
387
388         To fix text selection make the PlatformMouseEvent set the pressed
389         button even when moving the mouse.
390         
391         Add building of the WebKit::DragClient stubs as they are needed to
392         make text selection work.
393
394         * WebCore.pro:
395         * platform/gdk/MouseEventGdk.cpp:
396         (WebCore::PlatformMouseEvent::PlatformMouseEvent):
397
398 2007-08-10  Anders Carlsson  <andersca@apple.com>
399
400         Reviewed by Darin and Maciej.
401
402         <rdar://problem/5360748>
403         REGRESSION(r21002-r21003) Flash widget sniffer doesn't work
404         
405         Add a per-document NodeList counter. When parsing, only call notifyNodeListsChildrenChanged
406         if the document has node lists. Also, make sure to reset the cache when the node list count has 
407         been 0 and a new node list is registered to avoid any stale cache information.
408         
409         * dom/ContainerNode.cpp:
410         (WebCore::ContainerNode::addChild):
411         * dom/Document.cpp:
412         (WebCore::Document::Document):
413         * dom/Document.h:
414         (WebCore::Document::addNodeList):
415         (WebCore::Document::removeNodeList):
416         (WebCore::Document::hasNodeLists):
417         * dom/Node.cpp:
418         (WebCore::Node::registerNodeList):
419         (WebCore::Node::unregisterNodeList):
420
421 2007-08-10  Timothy Hatcher  <timothy@apple.com>
422
423         Reviewed by Adam.
424
425         <rdar://problem/5394449> Stop using some Carbon UI APIs for 64 bit
426
427         Disable NPObject use in 64-bit on Mac OS X.
428
429         * Configurations/WebCore.xcconfig: Add a framework search path to the sub-framworks of Carbon.
430         * WebCore.xcodeproj/project.pbxproj: Filter out the Frame::windowScriptNPObject() symbol in 64-bit.
431         * bindings/objc/DOM.mm:
432         (-[DOMElement _NPObject]): Return null in 64-bit.
433         * config.h: Set WTF_USE_NPOBJECT to 0 in 64-bit Mac OS X.
434         * page/Frame.cpp:
435         (WebCore::Frame::cleanupScriptObjects): Add more #if USE(NPOBJECT) blocks where needed.
436         * page/Frame.h: Ditto.
437         * page/mac/FrameMac.mm:
438         (WebCore::Frame::createScriptInstanceForWidget): Ditto.
439         * page/mac/WebCoreFrameBridge.h: Ditto.
440         * page/mac/WebCoreFrameBridge.mm: Ditto.
441
442 2007-08-10  Mitz Pettel  <mitz@webkit.org>
443
444         Reviewed by Justin.
445
446         - fix <rdar://problem/5397344> http://bugs.webkit.org/show_bug.cgi?id=14911
447           REGRESSION: Clicking in pasted text doesn't position the insertion point correctly
448
449         Test: editing/selection/inline-closest-leaf-child.html
450
451         * rendering/RootInlineBox.cpp:
452         (WebCore::RootInlineBox::closestLeafChildForXPos): Return the last leaf if
453         it's the closest match, or if no other leaf matches (for example if all
454         leaves are list markers or non-editable where editable is required).
455
456 2007-08-10  Anders Carlsson  <andersca@apple.com>
457
458         Reviewed by Geoff.
459
460         <rdar://problem/5390568> 
461         REGRESSION: –[WebFrame loadHTMLString:baseURL:] leaks the data source.
462         
463         Revert the fix for <rdar://problem/5133420> which caused us to not cancel 
464         substitute data loads. It's better to remove the assertion in the WebKit layer.
465         
466         * loader/ResourceLoader.cpp:
467         (WebCore::ResourceLoader::didCancel):
468
469 2007-08-10  Sam Weinig  <sam@webkit.org>
470
471         Rubber-stamped by Adam Roben.
472
473         Fix Windows, Qt and Gtk build.
474
475         * WebCore.pro:
476         * WebCore.vcproj/WebCore.vcproj:
477
478 2007-08-09  Sam Weinig  <sam@webkit.org>
479
480         Reviewed by Maciej.
481
482         Fix for <rdar://problem/5395618>
483
484         Use checkNodeSecurity when setting the 'src' or 'location' attribute of an
485         iframe or frame element.  
486
487         * WebCore.xcodeproj/project.pbxproj:
488         * bindings/js/JSAttrCustom.cpp: Added.
489         (WebCore::JSAttr::setValue): Call checkNodeSecurity for attributes with a current iframe or frame
490         ownerElement when setting src to a javascript: URL.
491         * bindings/js/JSElementCustom.cpp: Added.
492         (WebCore::allowSettingSrcToJavascriptURL):
493         (WebCore::JSElement::setAttribute): Call checkNodeSecurity when element is a frame or iframe and 
494         setting he src attribute to a javascript: URL.
495         (WebCore::JSElement::setAttributeNode): Ditto.
496         (WebCore::JSElement::setAttributeNS): Ditto.
497         (WebCore::JSElement::setAttributeNodeNS): Ditto.
498         * bindings/js/JSHTMLFrameElementCustom.cpp: Added.
499         (WebCore::allowSettingJavascriptURL):
500         (WebCore::JSHTMLFrameElement::setSrc): Call checkNodeSecurity when setting to a javascript: URL.
501         (WebCore::JSHTMLFrameElement::setLocation): Ditto.
502         * bindings/js/JSHTMLIFrameElementCustom.cpp: Added.
503         (WebCore::JSHTMLIFrameElement::setSrc): Call checkNodeSecurity when setting to a javascript: URL.
504         * bindings/scripts/CodeGeneratorJS.pm: Add support for [CustomGetter] and [CustomSetter]
505         * dom/Attr.idl:
506         * dom/Element.idl:
507         * html/HTMLFrameElement.idl:
508         * html/HTMLIFrameElement.idl:
509
510 2007-08-10  Holger Hans Peter Freyther  <zecke@selfish.org>
511
512         Reviewed by Anders.
513
514         Make the containingWindow a GtkContainer and make use of the
515         GtkWidget::window instead of the GtkLayout::bin_window.
516
517         * platform/Widget.h:
518         * platform/gdk/PlatformScreenGdk.cpp:
519         (WebCore::screenDepth):
520         * platform/gdk/ScrollViewGdk.cpp:
521         (WebCore::ScrollView::updateContents):
522         (WebCore::ScrollView::update):
523         * platform/gdk/WidgetGdk.cpp:
524         (WebCore::Widget::setContainingWindow):
525         (WebCore::Widget::setCursor):
526
527 2007-08-10  Simon Hausmann  <hausmann@kde.org>
528
529         Reviewed by Lars.
530
531         Revert r24699 as it broke timers. The precision of QTime::toTime_t() is just seconds, which is not good enough. Revert back
532         to the old implementation and use the simple implementation of currentTime() from win/ for the Qt/Windows build (fingers crossed :)
533
534         * WebCore.pro:
535         * platform/qt/SystemTimeQt.cpp:
536         (WebCore::currentTime):
537
538 2007-08-10  Simon Hausmann  <hausmann@kde.org>
539
540         Reviewed by Lars.
541
542         Recognize .htm as valid extension for text/html.
543
544         * platform/qt/MIMETypeRegistryQt.cpp:
545         (WebCore::):
546
547 2007-08-10  Lars Knoll  <lars@trolltech.com>
548
549         Reviewed by Simon.
550
551         remove an assertion that leads to crashes. The whole design of WidgetQt and ScrollViewQt needs to be reevaluated soon anyways.
552
553         * platform/qt/ScrollViewQt.cpp:
554
555 2007-08-10  Mark Rowe  <mrowe@apple.com>
556
557         Fix the Mac build.
558
559         * ForwardingHeaders/bindings/runtime_object.h: Added.
560
561 2007-08-10  Simon Hausmann  <hausmann@kde.org>
562
563         Reviewed by Lars.
564
565         Make sure -fno-strict-aliasing is also added for mkspecs like linux-g++-64.
566
567         * WebCore.pro:
568
569 2007-08-10  Simon Hausmann  <hausmann@kde.org>
570
571         Reviewed by Lars.
572
573         Enable JavaScript bindings for HTML Object/Applet elements in the Qt port.
574
575         * WebCore.pro:
576         * bindings/js/kjs_dom.cpp:
577         * html/HTMLAppletElement.h:
578         * html/HTMLEmbedElement.h:
579         * page/qt/FrameQt.cpp:
580         (WebCore::Frame::createScriptInstanceForWidget):
581
582 2007-08-10  Mitz Pettel  <mitz@webkit.org>
583
584         Reviewed by Dave Hyatt.
585
586         - fix http://bugs.webkit.org/show_bug.cgi?id=14798
587           Incorrect bidi reordering of neutrals and digits after RTL embed
588           and other bugs in the bidi algorithm.
589
590         Test: fast/text/international/bidi-neutral-run.html
591
592         Fixed several bugs in resolving the embedding level of runs of neutral
593         characters. Changed the logic to rely on the eor direction only for
594         the number types, and otherwise consider the last strong type.
595
596         * platform/BidiContext.h:
597         (WebCore::BidiContext::BidiContext): Added an ASSERT.
598         * platform/BidiResolver.h:
599         (WebCore::::embed):
600         (WebCore::::createBidiRunsForLine):
601         * platform/graphics/GraphicsContext.cpp:
602         (WebCore::TextRunIterator::atEnd): Changed to return true instead of
603         crashing when called on the empty iterator.
604
605 2007-08-09  Mark Rowe  <mrowe@apple.com>
606
607         Reviewed by Antti.
608
609         <rdar://problem/5400709> Versioning in debug and release builds should include minor and tiny version before +
610
611         * Configurations/Version.xcconfig:
612         * WebCore.xcodeproj/project.pbxproj: Add a shell script phase to make to dependency between
613         Version.xcconfig and Info.plist explicit to Xcode.
614
615 2007-08-09  Mitz Pettel  <mitz@webkit.org>
616
617         Reviewed by Justin Garcia.
618
619         - fix http://bugs.webkit.org/show_bug.cgi?id=14347
620           REGRESSION (r21291): Initiating a drag near the edge of a selection deselects it
621
622         Test: editing/selection/contains-boundaries.html
623
624         * editing/SelectionController.cpp:
625         (WebCore::SelectionController::contains): Changed to return true for the
626         selection boundaries too.
627
628 2007-08-09  Mitz Pettel  <mitz@webkit.org>
629
630         Reviewed by Dave Hyatt.
631
632         - fix http://bugs.webkit.org/show_bug.cgi?id=14742
633           Document::recalcStyle(Force) called for every updateStyleIgnorePendingStylesheets while waiting for stylesheets
634           <rdar://problem/5376306>
635
636         updateStyleSelector() is normally called when something changes that factors
637         into the style selector. However, updateLayoutIgnorePendingStylesheets() calls it for
638         a different reason, namely to account for all the preceding changes that were ignored
639         because of the early return in updateStyleSelector(). After that, the early return
640         can no longer occur, so changes are accounted for as they happen, and
641         updateLayoutIgnorePendingStylesheets() does not need to call updateStyleSelector()
642         again.
643
644         * dom/Document.cpp:
645         (WebCore::Document::updateLayoutIgnorePendingStylesheets): Call updateStyleSelector()
646         only before the first layout.
647
648 2007-08-09  Mitz Pettel  <mitz@webkit.org>
649
650         Reviewed by Adam Roben.
651
652         - fix http://bugs.webkit.org/show_bug.cgi?id=14362
653           Opening a select list always highlights first element in list
654
655         * platform/win/PopupMenuWin.cpp:
656         (WebCore::PopupWndProc): Track the mouse only inside the popup.
657
658 2007-08-09  Mitz Pettel  <mitz@webkit.org>
659
660         Reviewed by Dave Hyatt.
661
662         - fix http://bugs.webkit.org/show_bug.cgi?id=14875
663           Textarea with nowrap - left/right nav, Up/down nav both hide text
664
665         Test: fast/layers/scroll-rect-to-visible.html
666
667         * rendering/RenderLayer.cpp:
668         (WebCore::RenderLayer::scrollRectToVisible): Account for borders and scroll bars.
669
670 2007-08-09  Geoffrey Garen  <ggaren@apple.com>
671
672         Reviewed by Dave Hyatt.
673         
674         Refactored live decoded resource eviction to be more modular / 
675         encapsulated. 
676         
677         This fixes one known place where we forgot to hook into the live 
678         decoded eviction mechanism -- canvas. There might be other, unknown 
679         places. In a canvas test page, which I broke off from the Safari 
680         pageout test, I saw an RPRVT reduction of ~10MB.
681         
682         A few renames:
683         - "m_lastLiveAccessTime" => "m_lastDecodedAccessTime" because the data
684         point we're recording is access to the resource in decoded form.
685         
686         - "liveResourceAccessed" => "didAccessDecodedData" for the same reason.
687
688         - "pruneAllResources" => "pruneDeadResources" because this function 
689         does not prune live resources.
690         
691         And the fix:
692         Instead of updating cache metadata at the call site whenver drawing an 
693         image, just have an image notify its observer whenever it draws. The 
694         observer, which is a CachedResource, can then update the metadata.
695         
696         * loader/Cache.cpp: Renames
697         * loader/Cache.h: Removed stale declarations, updated comments
698         * loader/CachedImage.cpp:
699         (WebCore::CachedImage::didDraw): Implemented didDraw to update cache
700         metadata whenever our image draws.
701         * loader/CachedImage.h: Grouped parts of the ImageObserver interface.
702         * loader/CachedResource.cpp:
703         (WebCore::CachedResource::CachedResource):
704         (WebCore::CachedResource::deref):
705         (WebCore::CachedResource::didAccessDecodedData): Made this function
706         slightly more modular by allowing the caller to provide a time stamp.
707         In theory, not all CachedResources will necessarily want to use the 
708         current paint time stamp.
709         * platform/graphics/cg/ImageCG.cpp:
710         (WebCore::BitmapImage::draw): Notify our observer that we drew.
711         (WebCore::Image::drawPattern): ditto
712         * platform/graphics/cg/PDFDocumentImage.cpp:
713         (WebCore::PDFDocumentImage::draw): ditto
714         * platform/graphics/svg/SVGImage.cpp:
715         (WebCore::SVGImage::draw): ditto
716         
717         Removed old code at image drawing call sites:
718         
719         * rendering/RenderBox.cpp:
720         (WebCore::RenderBox::paintBackgroundExtended):
721         * rendering/RenderImage.cpp:
722         (WebCore::RenderImage::paint):
723         * rendering/RenderListMarker.cpp:
724         (WebCore::RenderListMarker::paint):
725         * rendering/RenderObject.cpp:
726         (WebCore::RenderObject::paintBorderImage):
727
728 2007-08-10  Holger Hans Peter Freyther  <zecke@selfish.org>
729
730         Reviewed by Adam.
731
732         Move the various *ClientGdk.{h,cpp} away from the WebCore directory as
733         of http://bugs.webkit.org/show_bug.cgi?id=14727.
734
735         * WebCore.pro:
736         * platform/gdk/TemporaryLinkStubs.cpp:
737
738 2007-08-09  Anders Carlsson  <andersca@apple.com>
739
740         Reviewed by Maciej.
741
742         <rdar://problem/5400029> iframes with an image src rarely load image
743         
744         Don't try to shrink standalone images in subframes. The resize event is not 
745         sent for subframes which screws up the shrink-to-fit logic.
746         
747         * loader/ImageDocument.cpp:
748         (WebCore::ImageDocument::createDocumentStructure):
749         (WebCore::ImageDocument::imageChanged):
750         (WebCore::ImageDocument::shouldShrinkToFit):
751         * loader/ImageDocument.h:
752
753 2007-08-10  Holger Hans Peter Freyther  <zecke@selfish.org>
754
755         Reviewed by Adam.
756
757         Implement FrameLoaderClientGdk::createFrame mostly by copying
758         the windows implementation. A method similiar to WebFrame::loadURLIntoChild
759         was not introduced instead we have a simplified version similiar to the
760         one of the Qt port.
761
762         Remove building of WebKit/gtk/webkitgtkframedata.{cpp,h}.
763
764         * WebCore.pro:
765         * loader/gdk/FrameLoaderClientGdk.cpp:
766         (WebCore::FrameLoaderClientGdk::createFrame):
767
768 2007-08-10  Holger Hans Peter Freyther  <zecke@selfish.org>
769
770         Reviewed by Adam.
771
772         Use the ScrollView/Widget design of the Windows port to only use one
773         native window for the whole page. This will make it possible to implement
774         FrameLoaderClientGdk::createFrame.
775
776         In contrast to the windows port the ScrollBars are GtkWidgets. To paint them
777         at the right position we need to position them correctly. To not scroll the
778         ScrollBar's belonging to the ScrollView a ScrollViewScrollbar is introduced with
779         a different geometryChanged method.
780
781         To allow the Gtk+ way of scrolling the ScrollView allows to get GtkAdjustments
782         set. In this case no ScrollViewScrollbar will be created.
783
784
785         * platform/ScrollView.h:
786         * platform/Widget.h:
787         * platform/gdk/PlatformScreenGdk.cpp:
788         (WebCore::screenDepth):
789         * platform/gdk/PlatformScrollBar.h:
790         * platform/gdk/PlatformScrollBarGdk.cpp:
791         (PlatformScrollbar::PlatformScrollbar):
792         (PlatformScrollbar::~PlatformScrollbar):
793         (PlatformScrollbar::setRect):
794         (PlatformScrollbar::geometryChanged):
795         * platform/gdk/ScrollViewGdk.cpp:
796         (WebCore::ScrollView::ScrollViewPrivate::ScrollViewPrivate):
797         (WebCore::ScrollView::ScrollViewPrivate::~ScrollViewPrivate):
798         (WebCore::ScrollViewScrollbar::ScrollViewScrollbar):
799         (WebCore::ScrollViewScrollbar::geometryChanged):
800         (WebCore::ScrollView::ScrollViewPrivate::setHasHorizontalScrollbar):
801         (WebCore::ScrollView::ScrollViewPrivate::setHasVerticalScrollbar):
802         (WebCore::ScrollView::ScrollViewPrivate::scrollBackingStore):
803         (WebCore::ScrollView::ScrollViewPrivate::adjustmentChanged):
804         (WebCore::ScrollView::ScrollViewPrivate::valueChanged):
805         (WebCore::ScrollView::ScrollViewPrivate::windowClipRect):
806         (WebCore::ScrollView::setGtkAdjustments):
807         (WebCore::ScrollView::updateContents):
808         (WebCore::ScrollView::update):
809         (WebCore::ScrollView::visibleWidth):
810         (WebCore::ScrollView::resizeContents):
811         (WebCore::ScrollView::contentsX):
812         (WebCore::ScrollView::scrollOffset):
813         (WebCore::ScrollView::maximumScroll):
814         (WebCore::ScrollView::scrollBy):
815         (WebCore::ScrollView::suppressScrollbars):
816         (WebCore::ScrollView::setHScrollbarMode):
817         (WebCore::ScrollView::setVScrollbarMode):
818         (WebCore::ScrollView::setScrollbarsMode):
819         (WebCore::ScrollView::setFrameGeometry):
820         (WebCore::ScrollView::addChild):
821         (WebCore::ScrollView::removeChild):
822         (WebCore::ScrollView::scrollRectIntoViewRecursively):
823         (WebCore::ScrollView::wheelEvent):
824         (WebCore::ScrollView::updateScrollbars):
825         (WebCore::ScrollView::windowToContents):
826         (WebCore::ScrollView::contentsToWindow):
827         (WebCore::ScrollView::scrollbarUnderMouse):
828         (WebCore::ScrollView::convertChildToSelf):
829         (WebCore::ScrollView::convertSelfToChild):
830         (WebCore::ScrollView::paint):
831         (WebCore::ScrollView::geometryChanged):
832         (WebCore::ScrollView::scroll):
833         (WebCore::ScrollView::addToDirtyRegion):
834         (WebCore::ScrollView::scrollBackingStore):
835         (WebCore::ScrollView::updateBackingStore):
836         * platform/gdk/WidgetGdk.cpp:
837         (WebCore::WidgetPrivate::gdkDrawable):
838         (WebCore::Widget::Widget):
839         (WebCore::Widget::setContainingWindow):
840         (WebCore::Widget::containingWindow):
841         (WebCore::Widget::frameGeometry):
842         (WebCore::Widget::setFrameGeometry):
843         (WebCore::Widget::setParent):
844         (WebCore::Widget::parent):
845         (WebCore::Widget::setCursor):
846         (WebCore::Widget::show):
847         (WebCore::Widget::hide):
848         (WebCore::Widget::removeFromParent):
849         (WebCore::Widget::paint):
850         (WebCore::Widget::invalidate):
851         (WebCore::Widget::invalidateRect):
852         (WebCore::Widget::convertToContainingWindow):
853         (WebCore::Widget::convertFromContainingWindow):
854         (WebCore::Widget::convertChildToSelf):
855         (WebCore::Widget::convertSelfToChild):
856         (WebCore::Widget::suppressInvalidation):
857         (WebCore::Widget::setSuppressInvalidation):
858
859 2007-08-09  Adele Peterson  <adele@apple.com>
860
861         Fix by Brady, reviewed by me.
862
863         Fix for <rdar://problem/5380697> connection:willSendRequest:redirectResponse: is called on every NSURLConnection
864
865         * platform/network/mac/ResourceHandleMac.mm: (-[WebCoreResourceHandleAsDelegate connection:willSendRequest:redirectResponse:]):
866           Work around a behavior change in CFNetwork where willSendRequest gets called more often by returning early.
867
868 2007-08-09  Darin Adler  <darin@apple.com>
869
870         Reviewed by Antti.
871
872         - fix <rdar://problem/4889753> REGRESSION: Selection doesn't continue with drag selecting
873           when autoscrolling vertically (in Notes as well as Safari)
874
875         The bug doesn't happen inside DumpRenderTree, so I was unable to make an automated
876         regression test.
877
878         * manual-tests/autoscroll-when-outside-window.html: Added.
879
880         * rendering/RenderLayer.cpp: (WebCore::RenderLayer::autoscroll): Removed unneeded null
881         check for the layer's renderer and the document, neither of which can be null. Call
882         the new updateSelectionForMouseDrag instead of doing selection updating here.
883
884         * page/EventHandler.h:
885         * page/EventHandler.cpp:
886         (WebCore::EventHandler::handleMouseDraggedEvent): Refactored most of the logic
887         about updating the selection into updateSelectionForMouseDrag.
888         (WebCore::EventHandler::updateSelectionForMouseDrag): Added. The public version of
889         this function takes no parameters, and is for use from auto-scrolling code. The
890         private version of this function takes node and point parameters and contains the
891         shared code, including everything from updateSelectionForMouseDragOverPosition.
892         Aside from the code motion, variable name changes, and sharing more code, this
893         differs from the old code in RenderLayer::autoscroll in the following ways:
894
895           1) The old code did hit testing only in the layer that was auto-scrolling,
896              and the new code instead starts the hit testing at the root layer, which is
897              better because it's the same thing we do for mouse moved events. Further,
898              the code to do this by calling convertToLayerCoords had a bug  because the
899              x and y variables were uninitialized.
900           2) The old code passed false for active to HitTestRequest, which was wrong.
901              The new code passes true. This flag needs to be true for hit testing done
902              while the mouse is down and false for hit testing done while the mouse is up.
903           3) The old code did not have the SVG-specific logic to match the mouse moved case.
904           4) The old code wouldn't do any selection updating if the return value from hitTest
905              was false, which is incorrect. The new code ignores the return value as it should.
906
907 2007-08-08  Beth Dakin  <bdakin@apple.com>
908
909         Reviewed by Geoff Garen.
910
911         Fx for <rdar://problem/5286443>, http://bugs.webkit.org/
912         show_bug.cgi?id=14268 REGRESSION: Radio buttons don't stay selected 
913         due to unclosed <label> tags
914
915         This patch maintains the behavior that allows <label> tags to nest. 
916         This matches WinIE, and appears to match the spec, since the spec 
917         does not explicitly say that they cannot nest. It fixes the bug 
918         instead by calling setDefaultHandled() in two places it should have 
919         been called anyway. This keeps the appropriate button checked as 
920         the event bubbles.
921
922         * html/HTMLInputElement.cpp:
923         (WebCore::HTMLInputElement::postDispatchEventHandler):
924         * html/HTMLLabelElement.cpp:
925         (WebCore::HTMLLabelElement::defaultEventHandler):
926
927 2007-08-08  Justin Garcia  <justin.garcia@apple.com>
928
929         Reviewed by Oliver.
930
931         <rdar://problem/5387578> Crash at ReplaceSelectionCommand::doApply() when pasting just after table cell content
932         
933         ReplaceSelectionCommand::doApply() inserts a line break before insertion
934         to prevent block nesting.  InsertLineBreakCommand::doApply was accidently
935         destroying a text node when it removed insignificant whitespace and then
936         setting a nil endingSelection().
937
938         * editing/InsertLineBreakCommand.cpp:
939         (WebCore::InsertLineBreakCommand::doApply): If insignificant whitespace
940         removal removes textNode from the document, insert a text node containing
941         the non-breaking space we were attempting to insert and then insert it
942         at the position that the removed textNode occupied.
943
944 2007-08-08  Geoffrey Garen  <ggaren@apple.com>
945
946         Reviewed by Maciej Stachowiak.
947
948         Added a thrash check to live decoded resource eviction.
949         
950         Here's the strategy: Stamp every image with its paint time. Don't evict 
951         a live decoded resource until another resource paints with a reasonably
952         (1 second) larger time stamp. 
953         
954         If no other resource paints, or another resource paints, but very soon 
955         after the resource in question, the resource in question is very likely 
956         to paint again soon. In fact, it's probably still on screen. So we 
957         leave it alone. (Previously, we evicted it on a timer, but that would 
958         evict a resource that was still on screen, hurting speed without 
959         helping memory use.)
960
961         In theory, this algorithm allows a single large resource or closely 
962         related set of resources to linger in the live decoded cache even 
963         though the cache is over its limit. However, that can only happen as 
964         long as no other resource ever paints again, which guarantees an 
965         absolute cap on cache memory usage from then on. Also, the resources 
966         will only linger as long as they remain live. Upon going dead, they 
967         will flush. Also, these circumstances are so rare that they are almost 
968         impossible to encounter in the wild. So don't sweat it.
969         
970         Stop evicting if the next resource painted too recently:
971         
972         * loader/Cache.cpp:
973         (WebCore::Cache::pruneLiveResources):
974         * loader/CachedResource.cpp:
975         (WebCore::CachedResource::CachedResource):
976         (WebCore::CachedResource::liveResourceAccessed):
977         * loader/CachedResource.h:
978
979         Track the paint time stamp in Frame. We do this to give a consistent
980         stamp to all resources painted in a single paint operation (in case the
981         operation takes a significant amount of time), and to avoid excessive 
982         calls to system time functions, which hurt the PLT:
983
984         * page/Frame.cpp:
985         (WebCore::Frame::paint):
986         * page/Frame.h:
987         (WebCore::Frame::currentPaintTimeStamp):
988
989 2007-08-08  Sam Weinig  <sam@webkit.org>
990
991         Reviewed by Adam Roben.
992
993         Update project file to reflect the moving of character-sets.txt
994         and make-charset-table.pl to platform/mac a while ago.
995
996         * WebCore.xcodeproj/project.pbxproj:
997
998 2007-08-08  Justin Garcia  <justin.garcia@apple.com>
999
1000         Reviewed by Harrison.
1001
1002         <rdar://problem/5390681> WebKit asserts when deleting To Do content selected with a double-click
1003         
1004         * dom/Position.cpp:
1005         (WebCore::Position::trailingWhitespacePosition): Use VisiblePosition::characterAfter
1006         to look for a trailing space.  The old code would incorrectly return a position before
1007         a non-editable space if it had a collapsed space before it.
1008
1009 2007-08-08  Sam Weinig  <sam@webkit.org>
1010
1011         Reviewed by Brady.
1012
1013         Make protocol and host compares case-insensitive.
1014
1015         * bindings/js/kjs_window.cpp:
1016         (KJS::Window::isSafeScript):
1017         * dom/Document.cpp:
1018         (WebCore::Document::initSecurityPolicyURL):
1019         * platform/DeprecatedString.cpp:
1020         (WebCore::equalIgnoringCase):
1021         * platform/DeprecatedString.h:
1022         (WebCore::equalIgnoringCase):
1023
1024 2007-08-08  Justin Garcia  <justin.garcia@apple.com>
1025
1026         Reviewed by Harrison.
1027
1028         <rdar://problem/5390681> WebKit asserts when deleting To Do content selected with a double-click
1029
1030         * dom/Position.cpp:
1031         (WebCore::Position::leadingWhitespacePosition): Added checks to prevent expansion across editable an boundary.
1032         (WebCore::Position::trailingWhitespacePosition): Ditto.
1033
1034 2007-08-08  Adele Peterson  <adele@apple.com>
1035
1036         Reviewed by John.
1037
1038         Fix for <rdar://problem/5393798> 100% reproducible crash in WebCore::Scrollbar::setValue
1039
1040         * page/EventHandler.cpp: (WebCore::EventHandler::handleMousePressEvent):
1041           If the hit testing originally determined the event was in a scrollbar, 
1042           refetch the MouseEventWithHitTestResults in case the scrollbar widget was destroyed when the mouse event was handled.
1043
1044 2007-08-08  Sam Weinig  <sam@webkit.org>
1045
1046         Reviewed by Geoff Garen.
1047
1048         Fix for <rdar://problem/5354635>
1049
1050         Match Firefox's model for data: URLs by not allowing them script access
1051         to any frames other then itself.
1052
1053         * bindings/js/kjs_window.cpp:
1054         (KJS::Window::isSafeScript):
1055         * dom/Document.cpp:
1056         (WebCore::Document::initSecurityPolicyURL):
1057
1058 2007-08-08  Darin Adler  <darin@apple.com>
1059
1060         Reviewed by Kevin Decker.
1061
1062         - fix for <rdar://problem/5390708> CrashTracer: [USER] 27 crashes in Safari at
1063           com.apple.WebCore: WTF::HashMap<etc>::set + 68, beneath pruneUnretainedIconsAtStartup
1064
1065         * loader/icon/IconDatabase.cpp: (WebCore::IconDatabase::pruneUnretainedIconsOnStartup):
1066         Eliminate an unnecessary HashMap from the implementation; we can just use the
1067         m_pageURLToRetainCount map directly. This simplifies the code and allows us to handle
1068         the empty string, which otherwise poses a problem for HashMap.
1069
1070 2007-08-08  Antti Koivisto  <antti@apple.com>
1071
1072         Reviewed by Darin.
1073         
1074         Fix for <rdar://problem/5391576>
1075         Malformed table innerHTML causes Safari to crash in HTMLParser::handleError (14894)
1076         
1077         Add null checks to protect against 
1078         
1079         e.innerHTML = "<tr>text</tr>";
1080         
1081         type cases. Normal assumptions about document tree structure don't hold when parsing 
1082         fragments. Results don't match Firefox in all cases. It seems to have some sort of 
1083         anything-goes fragment parsing mode.
1084         
1085         * html/HTMLParser.cpp:
1086         (WebCore::HTMLParser::handleError):
1087
1088 2007-08-07  Kevin McCullough  <kmccullough@apple.com>
1089
1090         Reviewed by Maciej and Hyatt.
1091
1092         - <rdar://problem/4976879> REGRESSION: Safari doesn't work with Zimbra enhanced login.
1093         - Reverting a previous change, and modifying how documents are created so that we better match other browsers behavior with respect to namespaceURIs.
1094
1095         * WebCore.xcodeproj/project.pbxproj:
1096         * dom/DOMImplementation.cpp:
1097         (WebCore::DOMImplementation::createDocument):
1098         * dom/Document.cpp:
1099         (WebCore::Document::Document):
1100         (WebCore::Document::createElement):
1101         * dom/Document.h:
1102         * html/HTMLDocument.cpp:
1103         (WebCore::HTMLDocument::createElement):
1104         * html/HTMLDocument.h:
1105
1106 2007-08-08  Cameron Zwarich  <cwzwarich@uwaterloo.ca>
1107
1108         Reviewed and landed by Brady
1109
1110         Fixes <http://bugs.webkit.org/show_bug.cgi?id=13422>
1111
1112         Bug 13422: REGRESSION: Page reload loses page position
1113
1114         * loader/FrameLoader.cpp:
1115         (WebCore::FrameLoader::updateHistoryForReload):
1116
1117 2007-08-08  Holger Hans Peter Freyther  <zecke@selfish.org>
1118
1119         Reviewed by Niko.
1120
1121         Be paranoid and disconnect from the signal before going away.
1122
1123         * platform/gdk/PlatformScrollBarGdk.cpp:
1124         (PlatformScrollbar::~PlatformScrollbar):
1125
1126 2007-08-08  Holger Hans Peter Freyther  <zecke@selfish.org>
1127
1128         Reviewed by Niko.
1129
1130         Use GraphicsContext::translatePoint in RenderThemeGdk to paint at the
1131         right position.
1132         This is needed as the Gtk+ theming code does not know about the translation
1133         of the GraphicsContext.
1134
1135         * platform/gdk/RenderThemeGdk.cpp:
1136         (WebCore::RenderThemeGdk::paintCheckbox):
1137         (WebCore::RenderThemeGdk::paintRadio):
1138         (WebCore::RenderThemeGdk::paintButton):
1139
1140 2007-08-08  Holger Hans Peter Freyther  <zecke@selfish.org>
1141
1142         Reviewed by Niko.
1143
1144         Implement Widget::paint for the Gtk port. This is needed to paint
1145         Widgets in z-order. The original GdkEventExpose is stored within the
1146         GraphicsContext and then used to draw the children. This is similiar
1147         to gtk_container_propagate_expose but we try to honor the GraphicsConntext
1148         translation.
1149
1150         * platform/gdk/WidgetGdk.cpp:
1151         (WebCore::Widget::paint):
1152         * platform/graphics/GraphicsContext.h:
1153         * platform/graphics/cairo/GraphicsContextCairo.cpp:
1154         (WebCore::GraphicsContextPlatformPrivate::GraphicsContextPlatformPrivate):
1155         (WebCore::GraphicsContext::setGdkExposeEvent):
1156         (WebCore::GraphicsContext::gdkExposeEvent):
1157         (WebCore::GraphicsContext::gdkDrawable):
1158         (WebCore::GraphicsContext::translatePoint):
1159
1160 2007-08-08  Holger Hans Peter Freyther  <zecke@selfish.org>
1161
1162         Reviewed by Oliver Hunt.
1163
1164         Implement PlatformScrollbar by calling ScrollBar::setValue from 
1165         gtkValueChange connected to the value-changed signal of the
1166         GtkAdjustment.
1167         Update 'value' of the GtkAdjustment in updateThumbPosition and
1168         set upper, page-increment, step-increment and page_size in
1169         updateThumbProportion.
1170
1171         This is from bug http://bugs.webkit.org/show_bug.cgi?id=14795.
1172
1173         * platform/gdk/PlatformScrollBar.h:
1174         * platform/gdk/PlatformScrollBarGdk.cpp:
1175         (PlatformScrollbar::PlatformScrollbar):
1176         (PlatformScrollbar::updateThumbPosition):
1177         (PlatformScrollbar::updateThumbProportion):
1178         (PlatformScrollbar::gtkValueChanged):
1179
1180 2007-08-07  Geoffrey Garen  <ggaren@apple.com>
1181
1182         Reviewed by Maciej Stachowiak. Based on earlier review from Dave Hyatt.
1183
1184         First chunk of work for <rdar://problem/5326009> Make non-browser 
1185         WebKit clients have no memory cache, or a very tiny one
1186         
1187         Layout tests pass.
1188         
1189         Removed decodedSizeWillChange mechanism because my last patch to
1190         change the live resources list to a strict LRU model made that code
1191         vestigial.
1192         
1193         Renamed "liveResourcesList" and related stuff => 
1194         "liveDecodedResourcesList" because only live resources with decoded 
1195         data are kept in the list.
1196
1197         * loader/CachedImage.cpp:
1198         (WebCore::CachedImage::decodedSizeChanged): Only add ourselves to the
1199         list if we're live, our decoded size has grown, and we're not in the 
1200         list already. (Otherwise, either we're not live, we're not decoded,
1201         or we're already in the list.)
1202
1203         * loader/CachedResource.cpp:
1204         (WebCore::CachedResource::liveResourceAccessed): Only re-insert
1205         ourselves into the list if we're already there. (In theory, this should
1206         be always, but it's a little more clear to check.)
1207
1208 2007-08-08  Holger Hans Peter Freyther  <zecke@selfish.org>
1209
1210         Reviewed by Adam.
1211
1212         Kill class FrameGdk and move the stubs to page/gdk/FrameGdk.cpp and the
1213         remainings into WebKitGtkFrame.
1214         The DRT functionality of class FrameGdk is currently lost.
1215
1216         * WebCore.pro:
1217         * loader/gdk/FrameLoaderClientGdk.cpp:
1218         * loader/gdk/FrameLoaderClientGdk.h:
1219         * page/gdk/FrameGdk.cpp: Renamed from WebCore/platform/gdk/FrameGdk.cpp.
1220         (WebCore::Frame::issueTransposeCommand):
1221         (WebCore::Frame::cleanupPlatformScriptObjects):
1222         (WebCore::Frame::dragImageForSelection):
1223         (WebCore::Frame::dashboardRegionsChanged):
1224         * platform/gdk/FrameGdk.h: Removed.
1225         * platform/gdk/TemporaryLinkStubs.cpp: Removed Frame stub, added the loadResourceIntoArray stub
1226         * platform/gdk/WidgetGdk.cpp:
1227
1228 2007-08-08  Holger Hans Peter Freyther  <zecke@selfish.org>
1229
1230         Reviewed by Adam.
1231
1232         Remove the event handling code and move it to WebKit/gtk/Api/webkitgtkpage.cpp
1233
1234         * platform/gdk/FrameGdk.cpp:
1235         * platform/gdk/FrameGdk.h:
1236
1237 2007-08-07  Holger Hans Peter Freyther  <zecke@selfish.org>
1238
1239         Reviewed by Niko.
1240
1241         Switch from the generic union GdkEvent to the specific struct GdkEvent*. This is needed
1242         to make WebKitGtkPage handle the events by reimplementing the default handlers in the near
1243         future.
1244
1245         * platform/PlatformKeyboardEvent.h:
1246         * platform/PlatformMouseEvent.h:
1247         * platform/PlatformWheelEvent.h:
1248         * platform/gdk/FrameGdk.cpp:
1249         (WebCore::FrameGdk::handleGdkEvent):
1250         * platform/gdk/KeyEventGdk.cpp:
1251         (WebCore::PlatformKeyboardEvent::PlatformKeyboardEvent):
1252         * platform/gdk/MouseEventGdk.cpp:
1253         (WebCore::PlatformMouseEvent::PlatformMouseEvent):
1254         * platform/gdk/WheelEventGdk.cpp:
1255         (WebCore::PlatformWheelEvent::PlatformWheelEvent):
1256
1257 2007-08-07  George Staikos  <staikos@kde.org>
1258
1259         Some QStyles don't handle negative maximum well (crash)
1260
1261         * platform/qt/PlatformScrollBarQt.cpp:
1262         (WebCore::PlatformScrollbar::paint):
1263
1264 2007-08-07  Antti Koivisto  <antti@apple.com>
1265
1266         Reviewed by Hyatt.
1267
1268         Fix <rdar://problem/5102553>
1269         Mail spins trying to display or edit a specific long plain text message in WebCore::TimerBase::...
1270
1271         Calling removeLeftoverAnonymousBoxes() from RenderBlock::addChildToFlow() made adding children
1272         O(n^2) in simple cases (repeated <div><div></div></div> for example).
1273         
1274         I couldn't find any limited fix so here is a more complete one. It removes iterating/recursing 
1275         removeLeftoverAnonymousBoxes() method altogether. Instead of hunting around wildly, just get 
1276         rid of anonymous boxes with block children when they occur.
1277
1278         * rendering/RenderBlock.cpp:
1279         (WebCore::RenderBlock::addChildToFlow):
1280         * rendering/RenderButton.h:
1281         (WebCore::RenderButton::removeLeftoverAnonymousBlock):
1282         * rendering/RenderContainer.cpp:
1283         (WebCore::RenderContainer::removeLeftoverAnonymousBlock):
1284         * rendering/RenderContainer.h:
1285         * rendering/RenderObject.cpp:
1286         (WebCore::RenderObject::handleDynamicFloatPositionChange):
1287         (WebCore::RenderObject::removeLeftoverAnonymousBlock):
1288         * rendering/RenderObject.h:
1289         * rendering/RenderTextControl.h:
1290         (WebCore::RenderTextControl::removeLeftoverAnonymousBlock):
1291
1292 2007-08-06  Sam Weinig  <sam@webkit.org>
1293
1294         Reviewed by Maciej.
1295
1296         Fix for <rdar://problem/5354689>
1297
1298         - Use document variable to determine permissions instead
1299           of traversing the frame tree. 
1300
1301         * bindings/js/kjs_window.cpp:
1302         (KJS::Window::isSafeScript):
1303         * dom/Document.cpp:
1304         (WebCore::Document::Document):
1305         (WebCore::Document::initSecurityPolicyURL):
1306         * dom/Document.h:
1307         (WebCore::Document::securityPolicyURL):
1308         * loader/FrameLoader.cpp:
1309         (WebCore::FrameLoader::setOpener): We must re-initialize the
1310         safeScript URL when setting the opener because the opener was
1311         not known at Document construction.
1312
1313 2007-08-06  David Hyatt  <hyatt@apple.com>
1314
1315         Make sure to clear out the parent of the ellipsis box so that it doesn't
1316         trigger the consistency check for line boxes.
1317
1318         Reviewed by darin
1319
1320         * ChangeLog:
1321         * rendering/RootInlineBox.cpp:
1322         (WebCore::RootInlineBox::detachEllipsisBox):
1323
1324 2007-08-06  David Hyatt  <hyatt@apple.com>
1325
1326         Back out fix for <rdar://problem/5366582> and replace it with the correct
1327         fix.  Make sure to delete the line box tree before splitting an inline flow
1328         into a continuation.  The added layout test for the original checkin covers
1329         the problem.
1330
1331         Reviewed by beth
1332
1333         * rendering/RenderBlock.cpp:
1334         (WebCore::RenderBlock::makeChildrenNonInline):
1335         Back out fix.
1336
1337         * rendering/RenderFlow.cpp:
1338         (WebCore::RenderFlow::destroy):
1339         Back out fix.
1340
1341         * rendering/RenderInline.cpp:
1342         (WebCore::RenderInline::splitFlow):
1343         Here's the new fix.
1344
1345 2007-08-06  Geoffrey Garen  <ggaren@apple.com>
1346
1347         Reviewed by Darin Adler.
1348         
1349         Touching a file to force a re-build.
1350
1351 2007-08-06  Darin Adler  <darin@apple.com>
1352
1353         - fix release build
1354
1355         * rendering/RenderText.h: (WebCore::RenderText::checkConsistency):
1356         Add missing const.
1357
1358 2007-08-06  Darin Adler  <darin@apple.com>
1359
1360         Reviewed by Maciej.
1361
1362         - fix <rdar://problem/5366582> crash on it.eurosport.yahoo.com page
1363
1364         Test: fast/dynamic/inline-to-block-crash.html
1365
1366         I added some consistency checks for the line box tree, which helped me figure out
1367         what was going on with this bug pretty quickly.
1368
1369         * rendering/RenderBlock.cpp: (WebCore::RenderBlock::makeChildrenNonInline):
1370         This is the actual fix. If the block needs layout, then don't try to delete the line
1371         box tree because it's going to be rebuilt as part of layout. More importantly, the
1372         child list in the tree is no good, so we will crash if we try to delete here.
1373
1374         * rendering/RenderFlow.cpp: (WebCore::RenderFlow::destroy):
1375         Here's a second fix. We have the same issue in the code that handles anonymous
1376         blocks -- if it's already running as part of layout, we can't walk through the
1377         already partly destroyed line box tree. This crashed in one of the layout tests.
1378
1379         * rendering/InlineBox.h: Made more fields private, since I wanted to do a bit more
1380         work in setters. Made setNextOnLine() and setPrevOnLine() assert that the box has a
1381         parent. Made parent() assert that the parent is good. Also removed the unused
1382         isChildOfParent() function.
1383         * rendering/InlineBox.cpp: (WebCore::InlineBox::~InlineBox): At destruction time, if
1384         we are still attached to a parent, tag that parent as having a "bad" child list.
1385
1386         * rendering/InlineFlowBox.h: Added m_reasonForBadChildList, checkConsistency(),
1387         setHasBadChildList(), and hasBadChildList(). Also changed firstChild() and lastChild() so
1388         they call checkConsistency() and made all the fields private instead of protected.
1389         * rendering/InlineFlowBox.cpp:
1390         (WebCore::InlineFlowBox::addToLine): Added consistency checks before and after adding a
1391         box to the line. Also checked that next and prev start out as 0. Changed manipulation of
1392         next and prev to use accessor functions.
1393         (WebCore::InlineFlowBox::removeChild): Added consistency checks before and after removing
1394         the box from the line.
1395         (WebCore::InlineFlowBox::deleteLine): Use firstChild() instead of getting at m_firstChild
1396         directly so we get a consistency check. Also set the parent to 0 before destroying so that
1397         the assertion in ~InlineBox will work properly.
1398         (WebCore::InlineFlowBox::extractLine): Ditto.
1399         (WebCore::InlineFlowBox::attachLine): Ditto.
1400         (WebCore::InlineFlowBox::adjustPosition): Ditto.
1401         (WebCore::InlineFlowBox::checkConsistency): Added. Checks consistency of the child list by
1402         looking at the parent, next, and prev pointers. Also asserts that we are not yet in the
1403         "bad" child list state, which happens if one of our children is destroyed without removing
1404         it from our list; that's normal, but once it happens we can't look at our child list again.
1405
1406         * rendering/InlineTextBox.h:
1407         * rendering/InlineTextBox.cpp: Remove unnneeded destroy/new/delete functions -- these are
1408         inherited from the InlineBox base class and don't need to be defined again.
1409
1410         * rendering/RenderFlow.h:
1411         * rendering/RenderFlow.cpp:
1412         (WebCore::RenderFlow::~RenderFlow): Assert that there are no children to confirm that we
1413         didn't leak something.
1414         (WebCore::RenderFlow::extractLineBox): Added consistency checks before and after removing
1415         a run of boxes from the list.
1416         (WebCore::RenderFlow::attachLineBox): Added consistency checks before and after adding
1417         a box to the list.
1418         (WebCore::RenderFlow::removeLineBox): Added consistency checks before and after removing
1419         a box from the list.
1420         (WebCore::RenderFlow::createInlineBox): Added consistency checks before and after adding
1421         a box to the list.
1422         (WebCore::RenderFlow::checkConsistency): Added.
1423
1424         * rendering/RenderText.h:
1425         * rendering/RenderText.cpp:
1426         (WebCore::RenderText::~RenderText): Assert that there are no children to confirm that we
1427         didn't leak something.
1428         (WebCore::RenderText::extractTextBox): Added consistency checks before and after removing
1429         a run of boxes from the list.
1430         (WebCore::RenderText::attachTextBox): Added consistency checks before and after adding
1431         a box to the list.
1432         (WebCore::RenderText::removeTextBox): Added consistency checks before and after removing
1433         a box from the list.
1434         (WebCore::RenderText::deleteTextBoxes): Added code to call setHasBadChildList since this
1435         destroys line boxes without informing the parent.
1436         (WebCore::RenderText::checkConsistency): Added.
1437
1438 2007-08-06  Adele Peterson  <adele@apple.com>
1439
1440         Reviewed by Darin.
1441
1442         Fix for <rdar://problem/5382483> REGRESSION: <select> element's text is clipped when a CSS line-height is specified
1443
1444         Don't honor line-height for styled popup buttons.  We already don't honor line-height for unstyled popups
1445         and since IE and FF don't honor it at all for popups, we shouldn't either.
1446
1447         * rendering/RenderThemeMac.mm: (WebCore::RenderThemeMac::adjustMenuListButtonStyle):
1448         * rendering/RenderThemeSafari.cpp: (WebCore::RenderThemeSafari::adjustMenuListButtonStyle):
1449
1450 2007-08-06  Antti  <antti@apple.com>
1451
1452         Reviewed by Darin.
1453
1454         Fix <rdar://problem/5378214>
1455         Mail crashes at RenderLayer::paintLayer() when dragging a selection over To Do text
1456         
1457         ObjC interface does not guarantee that Document::updateRendering() gets called after
1458         modification are made to document. This can lead to situation where paint()
1459         is invoked with document still dirty which can then crash in number of interesting ways.
1460         
1461         - add hasChangedChild() as needsLayout() condition. layout() will then call recalcStyle() 
1462           catching most cases and making sure document is not dirty when entering painting.
1463         - protect recalcStyle() and layout() from being executed during painting. There are some
1464           cases needsLayout() protection does not cover.
1465         
1466         No layout test, these states are very hard or impossible to reach using Javascript interface
1467         (which generally guarantees that updateRendering() is done right after execution).
1468
1469         * dom/Document.cpp:
1470         (WebCore::Document::recalcStyle):
1471         * page/Frame.cpp:
1472         (WebCore::Frame::paint):
1473         (WebCore::Frame::setPaintRestriction):
1474         (WebCore::Frame::isPainting):
1475         (WebCore::FramePrivate::FramePrivate):
1476         * page/Frame.h:
1477         * page/FramePrivate.h:
1478         * page/FrameView.cpp:
1479         (WebCore::FrameView::layout):
1480         (WebCore::FrameView::needsLayout):
1481
1482 2007-08-05  Maciej Stachowiak  <mjs@apple.com>
1483
1484         Reviewed by Darin Adler.
1485         
1486         <rdar://problem/5369110> CrashTracer: [USER] reproducible crash opening particular mail messages
1487
1488         * platform/network/mac/ResourceHandleMac.mm:
1489         (-[WebCoreResourceHandleAsDelegate connection:willSendRequest:redirectResponse:]): Make sure to retain
1490         self for the body of this method. Otherwise, the willSendRequest could trigger events which will
1491         cancel the connection, and we access ivars after this point.
1492         (-[WebCoreSynchronousLoader connection:willSendRequest:redirectResponse:]): retain and release
1493         in the right order.
1494
1495 2007-08-04  Adam Roben  <aroben@apple.com>
1496
1497         Another workaround for <rdar://problem/5386894>
1498
1499         Reviewed by Sam.
1500
1501         This fixed ~150 failing tests.
1502
1503         * platform/network/cf/ResourceResponseCFNet.cpp:
1504         (WebCore::ResourceResponse::doUpdateResourceResponse): Hardcode the
1505         MIME type for .svg files as well.
1506
1507 2007-08-04  Adam Roben  <aroben@apple.com>
1508
1509         Workaround for <rdar://problem/5386894> CFURLResponseGetMIMEType returns "text/html" for local .xhtml and .xml files
1510
1511         Reviewed by Sam.
1512
1513         This fixes ~350 failing tests.
1514
1515         * platform/network/cf/ResourceResponseCFNet.cpp:
1516         (WebCore::ResourceResponse::doUpdateResourceResponse): Use a workaround
1517         identical to the one in ResourceResponseMac.mm, but include .xml files
1518         as well.
1519
1520 2007-08-04  David Kilzer  <ddkilzer@webkit.org>
1521
1522         Reviewed by Oliver.
1523
1524         - fix for http://bugs.webkit.org/show_bug.cgi?id=14882
1525           <rdar://problem/5386550> REGRESSION (r24866): text/plain documents are always downloaded
1526
1527         The supportedNonImageMimeTypes list is used to determine which MIME types may be viewed
1528         within the web browser (e.g., plug-ins add their own MIME types to the list during
1529         initialization), so we must add "text/plain" and "text/" back to the list.  Since
1530         this change would then break DOMImplementation::isTextMIMEType(), that method was reverted
1531         to its original form and MIMETypeRegistry::shouldTreatAsText() was removed.
1532
1533         * dom/DOMImplementation.cpp:
1534         (WebCore::DOMImplementation::isTextMIMEType): Revert to previous version.
1535         * platform/MIMETypeRegistry.cpp:
1536         (WebCore::initialiseSupportedNonImageMimeTypes): Added back "text/plain" and "text/" to the list.
1537         (WebCore::MIMETypeRegistry::shouldTreatAsText): Removed.
1538         * platform/MIMETypeRegistry.h:
1539
1540 2007-08-03  Brady Eidson  <beidson@apple.com>
1541
1542         Reviewed by Oliver
1543
1544         Fix for http://bugs.webkit.org/show_bug.cgi?id=14824 and <rdar://problem/5372989>
1545
1546         Two issues - 
1547         1 - The WebCore MIMEType registry was designed assuming the list of types would never change
1548             That is false, as WebKit has API and SPI calls which directly mutate the MIMETypeRegistry
1549         2 - DOMImplementation didn't consult the registry for any MIMEType that started with "text/", 
1550             instead maintaining it's own hard coded rules
1551
1552         * dom/DOMImplementation.cpp:
1553         (WebCore::DOMImplementation::isTextMIMEType): For now, call through to the MIMETypeRegistry
1554           until we decided a different fate for this function
1555
1556         * platform/MIMETypeRegistry.cpp:
1557         (WebCore::initialiseSupportedNonImageMimeTypes):  "SupportedNonImageMIMETypes" is really a misnomer for 
1558           "MIMETypes we should show as HTML" but that line has slowly been blurred since Tiger.  In an attempt
1559           to start to unblur it, remove "text/" and "text/plain"
1560         (WebCore::MIMETypeRegistry::shouldTreatAsText):  The decision is very close to the old DOMImplementation 
1561           method, except we don't automatically hand off "text/" types as true if they are in the set of supported
1562           MIMETypes
1563         (WebCore::MIMETypeRegistry::getSupportedImageMIMETypes): Non-const (can be changed!)
1564         (WebCore::MIMETypeRegistry::getSupportedImageResourceMIMETypes): Non-const (can be changed!)
1565         (WebCore::MIMETypeRegistry::getSupportedNonImageMIMETypes): Non-const (can be changed!)
1566         * platform/MIMETypeRegistry.h:
1567
1568 2007-08-03  Adele Peterson  <adele@apple.com>
1569
1570         Reviewed by Adam.
1571
1572         Fix for <rdar://problem/5345862> CrashTracer: [USER] 4 crashes in Safari at com.apple.WebCore: WebCore::Frame::isContentEditable const + 10
1573
1574         Couldn't reproduce the problem, but a nil check for the frame should fix this.
1575
1576         * css/CSSStyleSelector.cpp: (WebCore::CSSStyleSelector::adjustRenderStyle):
1577
1578 2007-08-03  Anders Carlsson  <andersca@apple.com>
1579
1580         Reviewed by Oliver.
1581
1582         <rdar://problem/5383286>
1583         XMLHTTPRequest does not return 401 when user cancels authentication dialog (affects .Mac)
1584         
1585         * loader/ResourceLoader.h:
1586         Make receivedCancellation virtual.
1587         
1588         * loader/SubresourceLoader.cpp:
1589         (WebCore::SubresourceLoader::receivedCancellation):
1590         Call SubresourceLoaderClient::receivedCancellation.
1591         
1592         * xml/XMLHttpRequest.cpp:
1593         (WebCore::XMLHttpRequest::receivedCancellation):
1594         Save the failure response.
1595
1596 2007-08-03  Anders Carlsson  <andersca@apple.com>
1597
1598         Reviewed by Geoff.
1599
1600         <rdar://problem/5374393> 
1601         Image change on disk not noticed by WebView; -[WebCache setDisabled:] used to cause a reload every time
1602         
1603         This is essentially a better fix for the crash in <rdar://problem/5362783>.
1604         
1605         * loader/DocLoader.cpp:
1606         (WebCore::DocLoader::requestResource):
1607         If the resource already exists in the m_docResources map, remove it and disassociate it from the doc loader.
1608
1609 2007-08-03  Oliver Hunt  <oliver@apple.com>
1610
1611         Reviewed by Geoff.
1612
1613         <rdar://problem/5375190> Mail crashed in WebCore::CachedImage::imageSize() const when viewing a particular message
1614
1615         Fix the uncached load path to confirm that the type of resource being 
1616         returned actually matches the type that was requested.
1617
1618         Also make sure we never create a resource in the Cache for invalid urls.
1619
1620         * loader/Cache.cpp:
1621         (WebCore::Cache::requestResource):
1622         * loader/DocLoader.cpp:
1623         (WebCore::DocLoader::requestResource):
1624
1625 2007-08-03  Mitz Pettel  <mitz@webkit.org>
1626
1627         Reviewed by Adele.
1628
1629         - fix http://bugs.webkit.org/show_bug.cgi?id=14879
1630           REGRESSION: First item in select (pop-up menu) is displayed even if another item was selected via JavaScript
1631
1632         Test: fast/forms/menulist-deselect-update.html
1633
1634         * html/HTMLOptionElement.cpp:
1635         (WebCore::HTMLOptionElement::setSelected): Reordered to allow setSelectedIndex() to call setChanged().
1636
1637 2007-08-03  Anders Carlsson  <andersca@apple.com>
1638
1639         Reviewed by Darin.
1640
1641         <rdar://problem/5286444>
1642         http://bugs.webkit.org/show_bug.cgi?id=14269
1643         REGRESSION: Gmail links stop working after computer sleep
1644         
1645         Add a PowerNotifier object that takes care of resetting and firing the shared timer when coming
1646         back from sleep.
1647         
1648         * platform/mac/SharedTimerMac.cpp:
1649         (-[PowerNotifier init]):
1650         (-[PowerNotifier didWake:]):
1651         (WebCore::setSharedTimerFireTime):
1652
1653 2007-08-04  Mark Rowe  <mrowe@apple.com>
1654
1655         Windows build fix.
1656
1657         * rendering/RenderTextControl.cpp: Don't use the same name for two arguments.
1658
1659 2007-08-03  Mitz Pettel  <mitz@webkit.org>
1660
1661         Reviewed by Darin.
1662
1663         - fix http://bugs.webkit.org/show_bug.cgi?id=14653
1664           REGRESSION (r23994): No caret is drawn after clicking a search field's placeholder text
1665           <rdar://problem/5383841>
1666
1667         Test: fast/forms/search-click-in-placeholder.html
1668
1669         Defined a subclass of RenderBlock that never hit-tests children for use in
1670         text controls. This avoids returning placeholder text as the hit node.
1671         Since text controls cannot contain inline elements, there is no harm in
1672         doing that unconditionally, and not just in the case that the field is
1673         showing placeholder text.
1674
1675         * rendering/RenderTextControl.cpp:
1676         (WebCore::RenderTextControlInnerBlock::RenderTextControlInnerBlock):
1677         (WebCore::RenderTextControlInnerBlock::~RenderTextControlInnerBlock):
1678         (WebCore::RenderTextControlInnerBlock::nodeAtPoint):
1679         (WebCore::RenderTextControl::createSubtreeIfNeeded):
1680
1681 2007-08-02  Oliver Hunt  <oliver@apple.com>
1682
1683         Reviewed by Geoff
1684
1685         Fix for <rdar://problem/5369332> Xcode crashes while selecting a hyperlink within a AppleScript dictionary (WebCore::Font::drawGlyphBuffer)
1686
1687         There were many places where we were not correctly retaining/releasing the
1688         NSFont object stored in the C++ PlatformFontData object, this resulted in
1689         the GC incorrectly collecting the NSFont.
1690
1691         This patch fixes the problem by prevent direct modification of the PlatformFontData
1692         font pointer, allowing us to enforce correct CFRetain/Release behaviour.
1693
1694         * platform/FontData.h:
1695         (WebCore::FontData::getNSFont):
1696         * platform/mac/FontCacheMac.mm:
1697         (WebCore::FontCache::getFontDataForCharacters):
1698         (WebCore::FontCache::createFontPlatformData):
1699         * platform/mac/FontDataMac.mm:
1700         (WebCore::initFontData):
1701         (WebCore::FontData::platformInit):
1702         (WebCore::FontData::platformDestroy):
1703         (WebCore::FontData::smallCapsFontData):
1704         (WebCore::FontData::containsCharacters):
1705         (WebCore::FontData::determinePitch):
1706         (WebCore::FontData::platformWidthForGlyph):
1707         (WebCore::FontData::checkShapesArabic):
1708         * platform/mac/FontMac.mm:
1709         (WebCore::initializeATSUStyle):
1710         (WebCore::overrideLayoutOperation):
1711         (WebCore::Font::drawGlyphs):
1712         * platform/mac/FontPlatformData.h:
1713         (WebCore::FontPlatformData::FontPlatformData):
1714         (WebCore::FontPlatformData::~FontPlatformData):
1715         (WebCore::FontPlatformData::hash):
1716         (WebCore::FontPlatformData::operator==):
1717         (WebCore::FontPlatformData::font):
1718         (WebCore::FontPlatformData::setFont):
1719
1720 2007-08-03  Antti Koivisto  <antti@apple.com>
1721
1722         Oops, this change wasn't supposed to be commited.
1723
1724         * page/mac/WebCoreFrameBridge.mm:
1725         (-[WebCoreFrameBridge setBaseBackgroundColor:]):
1726
1727 2007-08-02  Antti Koivisto  <antti@apple.com>
1728
1729         Reviewed by Darin.
1730
1731         <rdar://problem/5355951>
1732         plainText() fragments TCMalloc heap badly on large pages
1733         
1734         also likely fixes some cases of
1735         <rdar://problem/5335382>
1736         CrashTracer: [REGRESSION] 73 crashes in Safari at com.apple.WebCore: WebCore::DeprecatedStringData::increaseUnicodeSize + 52
1737         
1738         If you load http://dscoder.com/test.txt with WebKit build with TCMalloc and system malloc you see that
1739         Safari RPRVT with TCMalloc is 118.8MB
1740         Safari RPRVT with system malloc is 69.7MB
1741         
1742         Difference is almost entirely caused by heap fragmentation from a full document plainText() call (for indexing purposes).
1743         
1744         The patch helps in two ways:
1745         - construct plainText string in pieces to avoid O(n^2) reallocs
1746         - allocate buffers using system malloc so they can be returned back to OS and don't fragment and grow TCMalloc heap
1747     
1748         This shrinks http://dscoder.com/test.txt RPRVT to 79.0MB and makes full document plainText() take 50ms instead of 500ms.
1749         The benefits are not limited to extreme cases, web pages above ~200kB can show substantial improvement in RPRVT.
1750
1751         * editing/TextIterator.cpp:
1752         (WebCore::plainTextToMallocAllocatedBuffer):
1753         (WebCore::plainText):
1754         * editing/TextIterator.h:
1755         * page/mac/WebCoreFrameBridge.mm:
1756         (-[WebCoreFrameBridge selectedString]):
1757         (-[WebCoreFrameBridge stringForRange:]):
1758
1759 2007-08-02  David Hyatt  <hyatt@apple.com>
1760
1761         Fix for 5374437, allow comment nodes to be the child of a document.
1762         Refine the check to always make a root element to check documentElement()
1763         rather than firstChild(), since a comment node could be present as the
1764         firstChild() now.
1765
1766         Reviewed by Tim Hatcher
1767
1768         * html/HTMLDocument.cpp:
1769         (WebCore::HTMLDocument::childAllowed):
1770         * html/HTMLParser.cpp:
1771         (WebCore::HTMLParser::finished):
1772
1773 2007-08-02  Antti Koivisto  <antti@apple.com>
1774
1775         Reviewed by Darin.
1776         
1777         <rdar://problem/5228138>
1778         REGRESSION(Leopard): test failures: tests that test Georgian numbering
1779
1780         Fix to Georgian number tables to get CSS2.1 test results right. Font has relevant characters now 
1781         which revealed that results were actually wrong. 
1782
1783         * rendering/RenderListMarker.cpp:
1784         (WebCore::toGeorgian):
1785
1786 2007-08-02  Ada Chan  <adachan@apple.com>
1787
1788         Reviewed by Steve.
1789
1790         <rdar://problem/5079175> Added parameters headerHeight and footerHeight to 
1791         computePageRectsForFrame() so we can account for the header and footer when
1792         calculating page heights for this frame.
1793
1794         * bridge/win/FrameWin.cpp:
1795         (WebCore::computePageRectsForFrame):
1796         * bridge/win/FrameWin.h:
1797
1798 2007-08-02  Alice Liu  <alice.liu@apple.com>
1799
1800         Reviewed by Kevin McCullough.
1801
1802         fixed <rdar://problem/5310312> REGRESSION: javascript is mis-escaped at http://labs.zarate.org/passwd causing bookmarklet to break
1803         
1804         * WebCore.exp:
1805         expose some calls for WebKit to call. 
1806         * manual-tests/JavaScript-bookmarklets.html: Added.
1807
1808 2007-08-01  Adam Treat  <treat@kde.org>
1809
1810         Reviewed by George Staikos.
1811
1812         Add an interface to manage global history for clients
1813
1814         * WebCore.pro:
1815         * platform/qt/TemporaryLinkStubs.cpp:
1816
1817 2007-08-01  Adam Treat  <treat@kde.org>
1818
1819         Reviewed by George Staikos.
1820
1821         Do not call update or paint from inside a paint event.
1822
1823         * platform/qt/ScrollViewQt.cpp:
1824         (WebCore::ScrollView::updateContents):
1825         * platform/qt/WidgetQt.cpp:
1826         (WebCore::Widget::invalidateRect):
1827
1828 2007-08-01  Timothy Hatcher  <timothy@apple.com>
1829
1830         Reviewed by Justin.
1831
1832         <rdar://problem/5376156> Mail crash in DeleteButtonController::hide() when dropping selected image on DIV's border
1833
1834         Add the container element back so the selection can not touch the deletion UI nodes. The container
1835         has style to prevent user selection, user drag and user modification.
1836
1837         * editing/DeleteButtonController.cpp:
1838         (WebCore::DeleteButtonController::show): Make the container node, and append the button and outline elements.
1839         (WebCore::DeleteButtonController::hide): Remove the container elements and null out the other nodes.
1840         * editing/DeleteButtonController.h:
1841
1842 2007-08-01  Steve Falkenburg  <sfalken@apple.com>
1843
1844         Build mod: Fix sln to match configs in vcproj.
1845         
1846         Reviewed by Adam.
1847
1848         * WebCore.vcproj/WebCore.make:
1849
1850 2007-07-31  David Harrison  <harrison@apple.com>
1851
1852         Reviewed by Justin.
1853
1854         <rdar://problem/5362659> CrashTracer: [USER] 11 crashes in Mail at WebCore::InsertLineBreakCommand::doApply()
1855
1856         The problem was that deleting with the X control leaves the selection inside the fragment that was deleted.
1857
1858         * editing/DeleteButtonController.cpp:
1859         (WebCore::DeleteButtonController::deleteTarget):
1860         Because the deletion UI only appears when the selection is entirely
1861         within the target, we unconditionally update the selection to be
1862         a caret where the target had been.
1863
1864 2007-07-31  Adele Peterson  <adele@apple.com>
1865
1866         Reviewed by Hyatt.
1867
1868          Fix for <rdar://problem/5339395> REGRESSION:http://sudokucraving.com does not render grid correctly
1869
1870         * rendering/RenderTextControl.h: (WebCore::RenderTextControl::hasControlClip): Clip for search fields.
1871         * rendering/RenderTextControl.cpp:
1872         (WebCore::RenderTextControl::controlClipRect): Added a control clip so the search field's cancel button and magnifier glass
1873          never draw outside the control's bounds.
1874         (WebCore::RenderTextControl::calcPrefWidths): Only include the inner box's padding when calculating the min/max width without using calcContentBoxWidth.
1875          Our old behavior was causing that inner padding to get counted twice.  Also, no need to add in the border
1876          for an inner box that can't be controlled from outside this class.
1877         * rendering/RenderMenuList.cpp: (WebCore::RenderMenuList::calcPrefWidths): ditto.
1878
1879 2007-07-31  Anders Carlsson  <andersca@apple.com>
1880
1881         Reviewed by Geoff.
1882
1883         Speculative fix for <rdar://problem/5359695> 
1884         REGRESSION (Tiger Beta): Multiple crashes in WebCore::Widget::getView() const + 6
1885                 
1886         * page/EventHandler.cpp:
1887         (WebCore::EventHandler::updateDragAndDrop):
1888         Null check the frame view.
1889
1890 2007-07-31  Timothy Hatcher  <timothy@apple.com>
1891
1892         Reviewed by Oliver and Beth.
1893
1894         <rdar://problem/5211271> ADOBE Leopard 9A410: At the first Launching InDesign after deactivate, EULA page gets blanked.
1895
1896         Rename needsAcrobatFrameReloadingQuirk to needsAdobeFrameReloadingQuirk, since this now applies to more Adobe applications.
1897
1898         * WebCore.exp:
1899         * page/Settings.cpp:
1900         (WebCore::Settings::Settings):
1901         (WebCore::Settings::setNeedsAdobeFrameReloadingQuirk):
1902         * page/Settings.h:
1903         (WebCore::Settings::needsAcrobatFrameReloadingQuirk):
1904
1905 2007-07-31  Matt Perry  <mpComplete@gmail.com>
1906
1907         Reviewed by Brady and Darin, tweaked by Brady, landed by Brady
1908
1909         Fix for http://bugs.webkit.org/show_bug.cgi?id=14757 and <rdar://problem/5364692>
1910         HTMLTokenizer::processingData implementation is incorrect
1911
1912         * html/HTMLTokenizer.cpp:
1913         (WebCore::HTMLTokenizer::processingData): Made it also return true if the HTMLTokenizer was inside the write() call.
1914         * loader/FrameLoader.cpp:
1915         (WebCore::FrameLoader::FrameLoader):
1916         (WebCore::FrameLoader::checkLoadCompleteTimerFired):
1917         (WebCore::FrameLoader::scheduleCheckLoadComplete):
1918         (WebCore::FrameLoader::stopForUserCancel): Changed a call to checkLoadComplete to be asynchronous, since
1919         stopForUserCancel can be called while parsing.
1920         * loader/FrameLoader.h:
1921
1922 2007-07-31  Anders Carlsson  <andersca@apple.com>
1923
1924         Reviewed by Geoff.
1925
1926         <rdar://problem/5371582>
1927         REGRESSION: PLT .5% slower due to r24451 (copying HTMLCollection objects)
1928         
1929         Make the hash maps store CollectionInfo pointers to reduce amount of copying when
1930         inserting/rehashing etc.
1931         
1932         * dom/Document.cpp:
1933         (WebCore::Document::~Document):
1934         (WebCore::Document::nameCollectionInfo):
1935         * dom/Document.h:
1936
1937 2007-07-31  Sam Weinig  <sam@webkit.org>
1938
1939         Reviewed by Mitz.
1940
1941         Fix for http://bugs.webkit.org/show_bug.cgi?id=14825
1942         Non-integer hsl() colours are ignored
1943
1944         * css/CSSParser.cpp:
1945         (WebCore::CSSParser::parseHSLParameters): Parse hue as a Number,
1946         not an Integer. 
1947
1948 2007-07-30  Justin Garcia  <justin.garcia@apple.com>
1949
1950         Reviewed by Darin.
1951
1952         <rdar://problem/5369009> Crash due to infinite recursion in moveParagraphs on delete
1953         
1954         After the delete, we moved content into the previous block, and a style
1955         rule turned a style span in the moved content into a block, throwing
1956         moveParagraphs into infinite recursion, as it continually tried and failed
1957         to get the style span into the same paragraph as the content just before it.
1958         
1959         Added a method to ReplaceSelectionCommand to keep inserted style spans 
1960         from turning into blocks because of style rules.  Will add code to prevent
1961         other kinds of content from changing appearance because of style rules,
1962         post-Leopard (5371536). Also added a bool to ReplaceSelectionCommand's 
1963         constructor to guard against infinite recursion.
1964
1965         * editing/CompositeEditCommand.cpp:
1966         (WebCore::CompositeEditCommand::moveParagraphs):
1967         * editing/JSEditor.cpp:
1968         * editing/ReplaceSelectionCommand.cpp:
1969         (WebCore::ReplaceSelectionCommand::ReplaceSelectionCommand):
1970         (WebCore::ReplaceSelectionCommand::negateStyleRulesThatEffectAppearance):
1971         (WebCore::ReplaceSelectionCommand::doApply):
1972         * editing/ReplaceSelectionCommand.h:
1973
1974 2007-07-30  Anders Carlsson  <andersca@apple.com>
1975
1976         Reviewed by Brady.
1977
1978         <rdar://problem/5371515>
1979         BitmapImage::getTIFFRepresentation() bug results in favicons not working at many sites
1980
1981         Don't bail out if a single frame is invalid.
1982         
1983         * platform/graphics/mac/ImageMac.mm:
1984         (WebCore::BitmapImage::getTIFFRepresentation):
1985
1986 2007-07-30  Adele Peterson  <adele@apple.com>
1987
1988         Reviewed by Darin.
1989
1990         Fix for <rdar://problem/5274937> Safari 3 breaks Missing Sync's WebKit code by crashing
1991
1992         * loader/MainResourceLoader.cpp: (WebCore::MainResourceLoader::continueAfterContentPolicy): Nil check for the FrameLoader.
1993
1994 2007-07-30  Anders Carlsson  <andersca@apple.com>
1995
1996         Reviewed by Darin.
1997
1998         <rdar://problem/5370710> 
1999         REGRESSION: After switching from Bookmark view, the Find Banner won't appear while displaying a PDF file
2000
2001         Add a hasHTMLView to FrameLoaderClient. This is only useful for clients who can show different views for different
2002         MIME types and URL schemes.
2003         
2004         * loader/FrameLoader.cpp:
2005         (WebCore::FrameLoader::transitionToCommitted):
2006         Call delegate methods here if the current view is not a HTML view.
2007         
2008         * loader/FrameLoaderClient.h:
2009         (WebCore::FrameLoaderClient::hasHTMLView):
2010
2011 2007-07-30  Sam Weinig  <sam@webkit.org>
2012
2013         Reviewed by Maciej.
2014
2015         Fix for <rdar://problem/5363896>
2016         REGRESSION: Setting document.domain does not override port-based cross-frame security checks -- breaks SAP NetWeaver
2017
2018         Updates the results for:
2019             http/tests/security/cross-frame-access-port-explicit-domain.html
2020             http/tests/security/cross-frame-access-protocol-explicit-domain.html
2021
2022         * bindings/js/kjs_window.cpp:
2023         (KJS::createWindow): Use the new setDomainInternal method.
2024         (KJS::Window::isSafeScript): Don't set check the port or protocol 
2025         if both documents have explicitly set document.domain in the DOM
2026         and the those domains are equal.
2027         * dom/Document.cpp:
2028         (WebCore::Document::Document):
2029         (WebCore::Document::setDomain): Remove force parameter and change 
2030         all calls that relied on it use the new setDomainInternal method
2031         which does the same thing.
2032         (WebCore::Document::setDomainInternal): 
2033         * dom/Document.h: Add new m_domainWasSetInDOM variable and accessor.
2034         (WebCore::Document::domainWasSetInDOM):
2035         * loader/FrameLoader.cpp:
2036         (WebCore::FrameLoader::checkCallImplicitClose): Use the new setDomainInternal method. 
2037
2038 2007-07-30  Justin Garcia  <justin.garcia@apple.com>
2039
2040         Reviewed by Tristan.
2041         
2042         <rdar://problem/5098931> Attachments are lost when they are moved into a ToDo after a delete
2043         
2044         Added an editor client method for asking whether or not it is
2045         OK to merge content after a delete.
2046
2047         * bridge/EditorClient.h:
2048         * editing/DeleteSelectionCommand.cpp:
2049         (WebCore::DeleteSelectionCommand::mergeParagraphs): Ask if the 
2050         merge is allowed.
2051         * platform/gdk/EditorClientGdk.cpp: 
2052         (WebCore::EditorClientGdk::shouldMoveRangeAfterDelete): Added a method stub.
2053         * platform/gdk/EditorClientGdk.h:
2054         * platform/graphics/svg/SVGImageEmptyClients.h: 
2055         (WebCore::SVGEmptyEditorClient::shouldMoveRangeAfterDelete): Ditto.
2056
2057 2007-07-30  Alexey Proskuryakov  <ap@webkit.org>
2058
2059         Reviewed by Anders.
2060
2061         <rdar://problem/5352526>
2062         http://bugs.webkit.org/show_bug.cgi?id=14704
2063         REGRESSION: sync XMLHttpRequest.send() raises an exception for failed authentication
2064
2065         Test: http/tests/xmlhttprequest/failed-auth.html
2066
2067         * platform/network/mac/ResourceHandleMac.mm:
2068         (WebCore::ResourceHandle::loadResourceSynchronously): Make the fake response better match the real one
2069         in case of failed authentication. Unfortunately, NSURLConnection doesn't give us the real response.
2070
2071         * xml/XMLHttpRequest.cpp:
2072         (WebCore::XMLHttpRequest::send): If the response has an HTTP code in it, then the error wasn't
2073         a network one, and an exception shouldn't be raised.
2074
2075 2007-07-30  Anders Carlsson  <andersca@apple.com>
2076
2077         Reviewed by Darin.
2078
2079         <rdar://problem/4942372> REGRESSION: Anchor links in Mail don't work anymore
2080         
2081         Make it possible for KURL to handle addig fragments to non-hierarchical URLs
2082         such as mailto: and cid:.
2083     
2084         * platform/KURL.cpp:
2085         (WebCore::KURL::init):
2086         If the base URL is not hierarchical but the relative URL is a fragment, then 
2087         allow parsing it.
2088         
2089         (WebCore::KURL::parse):
2090         If the URL is not hierarchical, set the fragment start and end positions correctly.
2091
2092 2007-07-30  Simon Hausmann  <hausmann@kde.org>
2093
2094         Reviewed by Lars.
2095
2096         On Windows make sure the dll also ends up in $$OUTPUT_DIR/bin, so that QtLauncher can find it.
2097
2098         * WebCore.pro:
2099
2100 2007-07-30  Simon Hausmann  <hausmann@kde.org>
2101
2102         Reviewed by Lars.
2103
2104         Removed the __BUILDING_QT ifdef in JSStringRef.h and changed UChar for the Qt build to use wchar_t on Windows.
2105
2106         * platform/TextEncoding.cpp:
2107         (WebCore::TextEncoding::encode):
2108
2109 2007-07-30  Simon Hausmann  <hausmann@kde.org>
2110
2111         Reviewed by Lars.
2112
2113         Don't link against libxml/libxslt unless we really need it.
2114
2115         * WebCore.pro:
2116
2117 2007-07-29  Tristan O'Tierney  <tristan@apple.com>
2118
2119         Reviewed by Oliver Hunt.
2120
2121         <rdar://problem/5369282> REGRESSION: DOMHTMLInput throwing exception due to missing _isEdited method
2122
2123         * bindings/objc/DOMHTML.mm:
2124         (-[DOMHTMLInputElement _isEdited]):
2125         (-[DOMHTMLTextAreaElement _isEdited]):
2126         * bindings/objc/DOMPrivate.h:
2127         Renamed _isUserEdited to _isEdited.
2128
2129 2007-07-29  Adam Treat  <treat@kde.org>
2130
2131         Reviewed by George Staikos.
2132
2133         Correctly set the update rect for the scrollbars when they are invalidated.
2134         Do not paint entire page for each scroll delta.  Cache the dirty regions
2135         when webkit calls ScrollView::updateContents as webkit expects the paint
2136         routine to use the dirty regions bounding rect.
2137
2138         These changes greatly reduce the cpu load as we are no longer painting the
2139         entire page for each 1px scroll :P
2140
2141         * platform/qt/ScrollViewQt.cpp:
2142         (WebCore::ScrollView::ScrollViewPrivate::scrollBackingStore):
2143         (WebCore::ScrollView::updateContents):
2144         (WebCore::ScrollView::paint):
2145         * platform/qt/WidgetQt.cpp:
2146         (WebCore::Widget::invalidateRect):
2147
2148 2007-07-29  Adele Peterson  <adele@apple.com>
2149
2150         Reviewed by John.
2151
2152         WebCore part of fix for <rdar://problem/5102522> REGRESSION: Can't tab to webview that doesn't have editable content (affects Safari, preview pane in Mail)
2153
2154         * WebCore.exp:
2155         * page/FocusController.cpp:
2156         (WebCore::FocusController::setInitialFocus): Added.
2157         (WebCore::FocusController::advanceFocus): Don't give the focus back to the chrome if this is the initial focus.
2158         * page/FocusController.h:
2159
2160 2007-07-29  Adam Treat  <treat@kde.org>
2161
2162         Reviewed by Alexey Proskuryakov.
2163
2164         WebCore::Widget::setParent should be virtual.
2165         It is reimplemented in ScrollViewQt for instance.
2166
2167         * platform/Widget.h:
2168
2169 2007-07-29  Alp Toker  <alp.toker@collabora.co.uk>
2170
2171         Reviewed by bdash.
2172
2173         http://bugs.webkit.org/show_bug.cgi?id=14711 (revisited)
2174         RenderThemeGdk's buttons are state-agnostic (pressed, hovered)
2175
2176         Generalize shadow state into a function.
2177         use a GtkHBox to work around a theme bug (thanks to Nigel Tao).
2178
2179         * platform/gdk/RenderThemeGdk.cpp:
2180         (WebCore::RenderThemeGdk::determineShadow):
2181         (WebCore::RenderThemeGdk::paintCheckbox):
2182         (WebCore::RenderThemeGdk::paintRadio):
2183         (WebCore::RenderThemeGdk::paintButton):
2184         (WebCore::RenderThemeGdk::gtkWindowContainer):
2185         * platform/gdk/RenderThemeGdk.h:
2186
2187 2007-07-27  Adele Peterson  <adele@apple.com>
2188
2189         Reviewed by Darin. 
2190
2191         Temporary fix for Windows to prevent crashing on all frame pages.  Darin
2192         is working on a more permanent fix.
2193
2194         * loader/FrameLoader.cpp:
2195
2196 2007-07-27  Adam Treat  <treat@kde.org>
2197
2198         Reviewed by David Hyatt.
2199
2200         Fix crash when using QtWebKit canvas support.
2201
2202         * ChangeLog:
2203         * html/HTMLCanvasElement.cpp:
2204         (WebCore::HTMLCanvasElement::reset):
2205
2206 2007-07-27  Darin Adler  <darin@apple.com>
2207
2208         * rendering/RenderLayer.cpp: Rolled out accidentally-checked-in code.
2209
2210 2007-07-27  Darin Adler  <darin@apple.com>
2211
2212         Reviewed by John Sullivan.
2213
2214         - fix <rdar://problem/5261393> In Mail the plain text alternatives to messages with attachments show weird little OBJ thingies
2215
2216         The "weird little thingies" are U+FFFC characters. It's good to render them as zero-width, the way we do
2217         with control characters -- helps Mail and doesn't hurt web browsing.
2218
2219         Test: fast/text/zero-width-characters.html
2220
2221         * platform/CharacterNames.h: Add names for leftToRightMark, rightToLeftMark, and objectReplacementCharacter.
2222         * platform/GlyphPageTreeNode.cpp: (WebCore::GlyphPageTreeNode::initializePage): Give objectReplacementCharacter
2223         zero width in the same way we do it for the various other characters.
2224
2225 2007-07-27  Lars Knoll <lars@trolltech.com>
2226
2227         Reviewed by Zack
2228
2229         Enable XSLT support for the gtk port.
2230
2231         * WebCore.pro:
2232
2233 2007-07-27  Zack Rusin  <zack@kde.org>
2234
2235         Reviewed by Zack and Lars.
2236
2237         Premature end after finishing parsing is a fatal error.
2238
2239         * dom/XMLTokenizer.cpp:
2240         (WebCore::XMLTokenizer::end):
2241
2242 2007-07-27  Lars Knoll  <lars@trolltech.com>
2243
2244         Reviewed by Zack and Lars.
2245
2246         Simplify conversions that go from a QStringRef to a WebCore::String to not use a temporary QString.
2247
2248         * dom/XMLTokenizer.cpp:
2249         (WebCore::):
2250
2251 2007-07-27  Zack Rusin  <zack@kde.org>
2252
2253         Reviewed by Zack and Lars.
2254
2255         Fix entity handling in the main document content (attributes still broken)
2256
2257         * dom/XMLTokenizer.cpp:
2258         (WebCore::):
2259
2260 2007-07-27  Lars Knoll  <lars@trolltech.com>
2261
2262         Reviewed by Zack and Lars.
2263
2264         Correctly convert a null QString into a null WebCore::String. Add a String(const QStringRef&) constructor so that we can avoid converting QStringRef via QString to WebCore::String.
2265
2266         * dom/XMLTokenizer.cpp:
2267         (WebCore::):
2268         * platform/PlatformString.h:
2269         * platform/qt/StringQt.cpp:
2270         (WebCore::String::String):
2271
2272 2007-07-27  Zack Rusin  <zack@kde.org>
2273
2274         Reviewed by Zack and Lars.
2275
2276         Parse version and encoding of the xml document.
2277
2278         * dom/XMLTokenizer.cpp:
2279         (WebCore::XMLTokenizer::write):
2280
2281 2007-07-27  Zack Rusin  <zack@kde.org>
2282
2283         Reviewed by Zack and Lars.
2284
2285         Correctly or semi-correctly parse the public and system id.
2286
2287         Patch from Lars.
2288
2289         * dom/XMLTokenizer.cpp:
2290         (WebCore::):
2291
2292 2007-07-27  Zack Rusin  <zack@kde.org>
2293
2294         Reviewed by Zack and Lars.
2295
2296         Fix uri parsing for attributes.
2297
2298         * dom/XMLTokenizer.cpp:
2299         (WebCore::):
2300
2301 2007-07-27  Zack Rusin  <zack@kde.org>
2302
2303         Reviewed by Zack and Lars.
2304
2305         Fixing qualified name parsing - from Lars.
2306
2307         * dom/XMLTokenizer.cpp:
2308         (WebCore::XMLTokenizer::insertErrorMessageBlock):
2309         (WebCore::):
2310
2311 2007-07-27  Zack Rusin  <zack@kde.org>
2312
2313         Reviewed by Zack and Lars.
2314
2315         Parse dtd's
2316
2317         * dom/XMLTokenizer.cpp:
2318         (WebCore::XMLTokenizer::resumeParsing):
2319         (WebCore::):
2320         * dom/XMLTokenizer.h:
2321
2322 2007-07-27  Zack Rusin  <zack@kde.org>
2323
2324         Reviewed by Zack and Lars.
2325
2326         Implement error handling.
2327
2328         Add our copyrights
2329
2330         * dom/XMLTokenizer.cpp:
2331         (WebCore::XMLTokenizer::handleError):
2332         (WebCore::XMLTokenizer::end):
2333         (WebCore::):
2334         * dom/XMLTokenizer.h:
2335
2336 2007-07-27  Zack Rusin  <zack@kde.org>
2337
2338         Reviewed by Zack and Lars.
2339
2340         Making the stylesheets work (plus everything else basically)
2341
2342         * dom/XMLTokenizer.cpp:
2343         (WebCore::XMLTokenizer::write):
2344         (WebCore::XMLTokenizer::insertErrorMessageBlock):
2345         (WebCore::):
2346         * dom/XMLTokenizer.h:
2347
2348 2007-07-27  Zack Rusin  <zack@kde.org>
2349
2350         Reviewed by Zack and Lars.
2351
2352         Remove the libxml dependency when not compiling with XSLT.
2353
2354         Just ifdefing, displaying xml doesn't work.
2355
2356         * WebCore.pro:
2357         * dom/XMLTokenizer.cpp:
2358         (WebCore::XMLTokenizer::XMLTokenizer):
2359         (WebCore::XMLTokenizer::write):
2360         (WebCore::XMLTokenizer::startElementNs):
2361         (WebCore::XMLTokenizer::enterText):
2362         (WebCore::XMLTokenizer::exitText):
2363         (WebCore::XMLTokenizer::initializeParserContext):
2364         (WebCore::XMLTokenizer::end):
2365         (WebCore::XMLTokenizer::lineNumber):
2366         (WebCore::XMLTokenizer::columnNumber):
2367         (WebCore::XMLTokenizer::stopParsing):
2368         (WebCore::XMLTokenizer::resumeParsing):
2369         (WebCore::):
2370         * dom/XMLTokenizer.h:
2371
2372 2007-07-27  Simon Hausmann  <hausmann@kde.org>
2373
2374         Reviewed by Zack.
2375
2376         Work around bug in the moc when used as preprocessor for generating the bindings. -DFOO=1 is needed instead of -DFOO
2377         to make the <hash>if FOO conditional match.
2378
2379         * WebCore.pro:
2380
2381 2007-07-27  Patrick Hanna  <phanna@email.unc.edu>
2382
2383         Reviewed by Darin Adler.
2384
2385         Change PluginBase::refresh to be static and update PluginsFunc::callAsFunction accordingly. Now we no longer
2386         allocate an instance of a JSObject subclass on the stack which could lead to a crash during garbage collection.
2387
2388         * bindings/js/kjs_navigator.cpp:
2389         (KJS::PluginsFunc::callAsFunction):
2390
2391 2007-07-27  Simon Hausmann  <hausmann@kde.org>
2392
2393         Done with and reviewed by Lars and Zack.
2394
2395         Fix snprintf hack for the Qt/Windows build with mingw-gcc. MingW has snprintf, so we don't need this helper function.
2396
2397         * page/FrameTree.cpp:
2398         * platform/DeprecatedString.cpp:
2399         (WebCore::DeprecatedString::format):
2400         * platform/String.cpp:
2401         (WebCore::String::format):
2402
2403 2007-07-27  Simon Hausmann  <hausmann@kde.org>
2404
2405         Done with and reviewed by Lars and Zack.
2406
2407         Make the DocTypeStrings.cpp generation work with MingW. Cleaned it up to be a regular extra compiler at the same time.
2408
2409         * WebCore.pro:
2410
2411 2007-07-27  Simon Hausmann  <hausmann@kde.org>
2412
2413         Done with and reviewed by Lars and Zack.
2414
2415         MingW build fixes: Do the "OBJECTS_TRAILING_SLASH" trick not only for win32-msvc but for all win32 mkspecs. Added LIB/INCLUDE hack from Qt to make us pick up 3rdparty libraries such as libxml from these environment variables.
2416
2417         * WebCore.pro:
2418
2419 2007-07-27  Simon Hausmann  <hausmann@kde.org>
2420
2421         Done with and reviewed by Lars and Zack.
2422
2423         Use $(MOVE) instead of mv to eliminated the shell dependency and replaced the long shell line to call bison and modify the css grammar file with a few lines of portable perl code.
2424
2425         * WebCore.pro:
2426         * css/makegrammar.pl: Added.
2427
2428 2007-07-27  Simon Hausmann  <hausmann@kde.org>
2429
2430         Done with and reviewed by Lars and Zack.
2431
2432         On make install on Windows copy the dll into the bin dir.
2433
2434         * WebCore.pro:
2435
2436 2007-07-27  Simon Hausmann  <hausmann@kde.org>
2437
2438         Done with and reviewed by Lars and Zack.
2439
2440         Link in libxml and libxslt on Windows.
2441
2442         * WebCore.pro:
2443
2444 2007-07-27  Simon Hausmann  <hausmann@kde.org>
2445
2446         Done with and reviewed by Lars and Zack.
2447
2448         Temporarily disable the ICO support for the Qt build on Windows.
2449
2450         * WebCore.pro:
2451         * platform/graphics/qt/ImageDecoderQt.cpp:
2452
2453 2007-07-27  Simon Hausmann  <hausmann@kde.org>
2454
2455         Done with and reviewed by Lars and Zack.
2456
2457         Fix evaluation with ActiveState Perl 5.6. Somehow it tried to treat nameEntries as array.
2458
2459         * bindings/scripts/CodeGeneratorJS.pm:
2460
2461 2007-07-27  Simon Hausmann  <hausmann@kde.org>
2462
2463         Done with and reviewed by Lars and Zack.
2464
2465         Fix compilation with MSVC in the Qt build (missing header files).
2466
2467         * loader/icon/IconDatabaseNone.cpp:
2468         * platform/graphics/svg/SVGImage.cpp:
2469
2470 2007-07-27  Simon Hausmann  <hausmann@kde.org>
2471
2472         Done with and reviewed by Lars and Zack.
2473
2474         Disable the favicon database on Windows for now, to eliminate the sqlite dependency.
2475
2476         * WebCore.pro:
2477
2478 2007-07-27  Simon Hausmann  <hausmann@kde.org>
2479
2480         Done with and reviewed by Lars and Zack.
2481
2482         Added custom preprocessor support to make_names.pl and use the moc for it in the Qt build.
2483
2484         * WebCore.pro:
2485         * ksvg2/scripts/make_names.pl:
2486
2487 2007-07-27  Simon Hausmann  <hausmann@kde.org>
2488
2489         Done with and reviewed by Lars and Zack.
2490
2491         Disable the batch mode for nmake to work around the clash of Node.c and Node.cpp both mapping to Node.obj
2492
2493         * WebCore.pro:
2494
2495 2007-07-27  Simon Hausmann  <hausmann@kde.org>
2496
2497         Done with and reviewed by Lars and Zack.
2498
2499         Fix compilation under Windows (removed sys/time.h dependency, use Qt instead).
2500
2501         * platform/qt/SystemTimeQt.cpp:
2502
2503 2007-07-27  Simon Hausmann  <hausmann@kde.org>
2504
2505         Done with and reviewed by Lars and Zack.
2506
2507         Fix compilation on Windows.
2508
2509         * platform/graphics/qt/PathQt.cpp:
2510
2511 2007-07-27  Simon Hausmann  <hausmann@kde.org>
2512
2513         Done with and reviewed by Lars and Zack.
2514
2515         Fix generation of ColorData.c on Windows.
2516
2517         * WebCore.pro:
2518
2519 2007-07-27  Simon Hausmann  <hausmann@kde.org>
2520
2521         Done with and reviewed by Lars and Zack.
2522
2523         Fix compilation under Qt/Windows.
2524
2525         * loader/icon/IconDatabase.cpp:
2526         (WebCore::IconDatabase::open):
2527
2528 2007-07-27  Simon Hausmann  <hausmann@kde.org>
2529
2530         Done with and reviewed by Lars and Zack.
2531
2532         Changed extendedAttributes to be a variable instead of a hash directly. Required to work with ActiveState perl.
2533
2534         * bindings/scripts/IDLStructure.pm:
2535
2536 2007-07-27  Simon Hausmann  <hausmann@kde.org>
2537
2538         Done with and reviewed by Lars and Zack.
2539
2540         Fix header guard generation for CSSGrammar.h under Windows
2541
2542         * WebCore.pro:
2543
2544 2007-07-27  Simon Hausmann  <hausmann@kde.org>
2545
2546         Done with and reviewed by Lars and Zack.
2547
2548         Fix build with moc as preprocessor. Don't rely the preprocessor preserving whitespace at the beginning of lines.
2549
2550         * bindings/scripts/IDLParser.pm:
2551
2552 2007-07-27  Simon Hausmann  <hausmann@kde.org>
2553
2554         Done with and reviewed by Lars and Zack.
2555
2556         Make make-css-file-arrays.pl work on Windows by not calling /usr/bin/gcc as preprocessor for the Qt build.
2557
2558         * WebCore.pro:
2559         * css/make-css-file-arrays.pl:
2560
2561 2007-07-27  Simon Hausmann  <hausmann@kde.org>
2562
2563         Done with and reviewed by Lars and Zack.
2564
2565         More gperf commandline fixes for Windows.
2566
2567         * WebCore.pro:
2568
2569 2007-07-27  Simon Hausmann  <hausmann@kde.org>
2570
2571         Done with and reviewed by Lars and Zack.
2572
2573         More quoting fixes for perl under Windows.
2574
2575         * WebCore.pro:
2576
2577 2007-07-27  Simon Hausmann  <hausmann@kde.org>
2578
2579         Done with and reviewed by Lars and Zack.
2580
2581         Fix command quoting under Windows
2582
2583         * WebCore.pro:
2584
2585 2007-07-27  Simon Hausmann  <hausmann@kde.org>
2586
2587         Done with and reviewed by Lars and Zack.
2588
2589         Fix cssmakeprops and cssmakevalue scripts to work on Windows without cygwin perl. Avoid inplace substitutions and direct invocation of /bin/sh. Also call gperf with arguments that GnuWin32's gperf understands.
2590
2591         * ksvg2/scripts/cssmakeprops:
2592         * ksvg2/scripts/cssmakevalues:
2593
2594 2007-07-27  Simon Hausmann  <hausmann@kde.org>
2595
2596         Done with and reviewed by Lars and Zack.
2597
2598         Beautiful hacks to make more of the extra compiler magic work under Windows outside of cygwin.
2599
2600         * WebCore.pro:
2601
2602 2007-07-27  Simon Hausmann  <hausmann@kde.org>
2603
2604         Done with and reviewed by Lars and Zack.
2605
2606         Correctly propagate the custom preprocessor option through the idl parser and the codegenerator.
2607
2608         * bindings/scripts/CodeGenerator.pm:
2609         * bindings/scripts/generate-bindings.pl:
2610
2611 2007-07-27  Simon Hausmann  <hausmann@kde.org>
2612
2613         Done with and reviewed by Lars and Zack.
2614
2615         When constructing the absolute path when searching for IDL files in the list of search paths don't prepend a slash if $SOURCEROOT as environment variable is not set. In the Qt build we pass absolute search paths already and we don't set SOURCEROOT. Under Unix that gives a double slash for the directory which works fine, under Windows we get /c:\webkit\foo which of course does not work.
2616
2617         * bindings/scripts/CodeGenerator.pm:
2618
2619 2007-07-27  Simon Hausmann  <hausmann@kde.org>
2620
2621         Done with and reviewed by Lars and Zack.
2622
2623         Relax the regular expression that tries to find constant declarations in the IDL source to not require leading whitespace. This makes it work with preprocessors that happen to eliminate leading whitespace.
2624
2625         * bindings/scripts/IDLParser.pm:
2626
2627 2007-07-27  Simon Hausmann  <hausmann@kde.org>
2628
2629         Done with and reviewed by Lars and Zack.
2630
2631         Try to use the moc as preprocessor for the IDL bindings generator
2632
2633         * WebCore.pro:
2634
2635 2007-07-27  Simon Hausmann  <hausmann@kde.org>
2636
2637         Done with and reviewed by Lars and Zack.
2638
2639         Make it possible to specify the preprocessor the bindings generator uses instead of hardcoding /usr/bin/gcc (which is of course no option on Windows). Also try to use a more portable and Windows friendly way of opening the reading pipe to the preprocessor.
2640
2641         * bindings/scripts/IDLParser.pm:
2642         * bindings/scripts/generate-bindings.pl:
2643
2644 2007-07-27  Simon Hausmann  <hausmann@kde.org>
2645
2646         Done with and reviewed by Lars and Zack.
2647
2648         Don't use stdout redirection for make_names.pl as it doesn't work under Windows perl (outside cygwin).
2649
2650         * ksvg2/scripts/make_names.pl:
2651
2652 2007-07-27  Simon Hausmann  <hausmann@kde.org>
2653
2654         Done with and reviewed by Lars and Zack.
2655
2656         Fix DocTypeStrings.cpp generation to work on Windows with cmd.exe
2657
2658         * WebCore.pro:
2659
2660 2007-07-27  Simon Hausmann  <hausmann@kde.org>
2661
2662         Reviewed by Lars.
2663
2664         Work around aliasing bugs in WebCore by compiling with -fno-strict-aliasing for gcc builds for now.
2665
2666         * WebCore.pro:
2667
2668 2007-07-27  Simon Hausmann  <hausmann@kde.org>
2669
2670         Reviewed by Lars.
2671
2672         Use -Wreturn-type only when compiling with g++
2673
2674         * WebCore.pro:
2675
2676 2007-07-27  Simon Hausmann  <hausmann@kde.org>
2677
2678         Reviewed by Zack.
2679
2680         Don't use pkg-config on Windows for the Qt build
2681
2682         * WebCore.pro:
2683
2684 2007-07-27  Simon Hausmann  <hausmann@kde.org>
2685
2686         Reviewed by Zack.
2687
2688         Fix compilation with MSVC.
2689
2690         * platform/graphics/qt/ImageDecoderQt.cpp:
2691
2692 2007-07-26  Tristan O'Tierney  <tristan@apple.com>
2693
2694         Reviewed by Anders Carlsson.
2695
2696         <rdar://problem/5350019> REGRESSION: Pages on milliyet.com are added to Back list when visited, causing Back button to just reload
2697
2698         * loader/FrameLoader.cpp:
2699         (WebCore::FrameLoader::continueFragmentScrollAfterNavigationPolicy):
2700         If the policy action is FrameLoadTypeRedirectLockHistory, don't add the frame load url to the history.
2701
2702 2007-07-26  Anders Carlsson  <andersca@apple.com>
2703
2704         Reviewed by Geoff.
2705
2706         Add a FIXME about caching pages with plug-ins that have outstanding NPObjects.
2707         
2708         * loader/FrameLoader.cpp:
2709         (WebCore::FrameLoader::canCachePage):
2710
2711 2007-07-26  David Hyatt  <hyatt@apple.com>
2712
2713         FIx for <rdar://problem/5289721> CrashTracer: [REGRESSION] 2658 crashes in Safari at com.apple.WebCore: WebCore::RenderInline::height const + 16
2714
2715         Adding a null check for now and an assert.  We don't know how/why this
2716         bug happens, but hopefully the assert will help people to reproduce.
2717
2718         Reviewed by kevin
2719
2720         * rendering/RenderInline.cpp:
2721         (WebCore::RenderInline::height):
2722
2723 2007-07-26  Anders Carlsson  <andersca@apple.com>
2724
2725         Reviewed by Oliver.
2726
2727         <rdar://problem/5362783>
2728         In Mail, a crash occurs at WTF::fastMalloc() when attempting to create a new HTML message from http://nytimes.com/
2729         
2730         If the cache is disabled and there is already a resource with the given URL, return it instead of creating a new one.
2731         
2732         * loader/DocLoader.cpp:
2733         (WebCore::DocLoader::requestResource):
2734
2735 2007-07-26  Adele Peterson  <adele@apple.com>
2736
2737         Reviewed by Geoff. 
2738
2739         Build fix.
2740
2741         * platform/network/cf/ResourceRequest.h:
2742
2743 2007-07-26  Anders Carlsson  <andersca@apple.com>
2744
2745         Reviewed by John Sullivan.
2746
2747         <rdar://problem/5349389> 
2748         Some frame load delegate methods not called when loading a page from the BF cache
2749         
2750         These calls were moved to FrameLoader::begin, which is never called for pages loaded
2751         from the BF cache. This happened in revision 24490.
2752          
2753         * loader/FrameLoader.cpp:
2754         (WebCore::FrameLoader::transitionToCommitted):
2755         Call delegate methods if the load is from the BF cache.
2756
2757 2007-07-26  Kevin McCullough  <kmccullough@apple.com>
2758
2759         Reviewed by Darin, Geoff and Sam.
2760
2761         - <rdar://problem/5150461> Resizing the window larger than the screen causes no resize.
2762         - We now better match the behavior of other browsers.
2763
2764         * bindings/js/kjs_window.cpp:
2765         (KJS::constrainToVisible):
2766         (KJS::WindowFunc::callAsFunction):
2767
2768 2007-07-26  Tristan O'Tierney  <tristan@apple.com>
2769
2770         Reviewed by Adele Peterson.
2771         
2772         <rdar://problem/5359921> WebCore should maintain a dirty flag for confirmation on unsaved changes
2773
2774         * bindings/objc/DOMHTML.mm:
2775         (-[DOMHTMLInputElement _isUserEdited]):
2776         (-[DOMHTMLTextAreaElement _isUserEdited]):
2777         Renamed _isEdited to _isUserEdited since the functionality is now different
2778         
2779         * bindings/objc/DOMPrivate.h:
2780         Renamed _isEdited to _isUserEdited.
2781         
2782         * rendering/RenderTextControl.cpp:
2783         (WebCore::RenderTextControl::RenderTextControl):
2784         Defaulted m_userEdited to false
2785         
2786         (WebCore::RenderTextControl::updateFromElement):
2787         Set m_userEdited to false, since the change wasn't triggered first by an edit
2788         
2789         (WebCore::RenderTextControl::subtreeHasChanged):
2790         Set m_userEdited to true, since it has been touched by the user
2791         
2792         * rendering/RenderTextControl.h:
2793         (WebCore::RenderTextControl::isUserEdited):
2794         (WebCore::RenderTextControl::setUserEdited):
2795         Added two new methods to set/return the userEdited boolean value.
2796         
2797 2007-07-26  Geoffrey Garen  <ggaren@apple.com>
2798
2799         Reviewed by Beth Dakin.
2800
2801         Fixed NULL-dereference crash seen on buildbot.
2802         
2803         No bug filed because this is a part of <rdar://problem/5241167>.
2804
2805         * history/PageCache.h:
2806         (WebCore::PageCache::get): NULL-check HistoryItems passed to get()
2807         and remove(), to match the old semantics of HashMap. For clarity,
2808         ASSERT that add() is not called with NULL arguments.
2809
2810 2007-07-26  Anders Carlsson  <andersca@apple.com>
2811
2812         Reviewed by Oliver Hunt.
2813
2814         <rdar://problem/5361106> Crash in user style sheet when loading webpage
2815
2816         Null check m_frame.
2817         
2818         * dom/Document.cpp:
2819         (WebCore::Document::stylesheetLoaded):
2820
2821 2007-07-26  Geoffrey Garen  <ggaren@apple.com>
2822
2823         Used `svn merge -r24646:24645' to revert project changes I accidentally
2824         checked in.
2825
2826         * WebCore.xcodeproj/project.pbxproj:
2827
2828 2007-07-26  Geoffrey Garen  <ggaren@apple.com>
2829
2830         Reviewed by Darin Adler.
2831
2832         Fixed <rdar://problem/5241167> REGRESSION: PLT 1% slower due to r21793 
2833         (global page cache cap)
2834         
2835         I just measured a .1%-.2% regression in PLT average, but a .4% win in 
2836         PLT fastest run, so I think this regression is licked.
2837
2838         Surprisingly, the combination of wtf data structures I originally used 
2839         for PageCache turned out to be too slow, so I reworked PageCache to use
2840         a hand-crafted linked list for LRU tracking (instead of ListHashSet), 
2841         to store its CachedPages in the HistoryItems to which they corresponded 
2842         (instead of using a HashMap), and to ref/deref HistoryItems manually
2843         (instead of using RefPtr, which would ref once for every reference in 
2844         the linked list).
2845
2846         * history/HistoryItem.h: Added data members for PageCache data. Made
2847         PageCache a friend so it could access them. Ideally (from an 
2848         encapsulation perspective), we would store this data an independent 
2849         structure, but that's just too slow.
2850
2851         * history/PageCache.cpp: Added a hand-crafted linked list for LRU 
2852         tracking.
2853         (WebCore::PageCache::PageCache):
2854         (WebCore::PageCache::add): Adopt the HistoryItem's ref when it's added.
2855         (WebCore::PageCache::remove): deref() the Historyitem when it's 
2856         removed.
2857         (WebCore::PageCache::prune):
2858         (WebCore::PageCache::addToLRUList):
2859         (WebCore::PageCache::removeFromLRUList):
2860
2861         * history/PageCache.h:
2862         (WebCore::PageCache::get): Inlined just in case.
2863
2864 2007-07-26  Adam Treat  <treat@kde.org>
2865
2866         Reviewed by George Staikos.
2867
2868         Launch the context menu in the right place.
2869
2870         * platform/qt/ContextMenuQt.cpp:
2871         (WebCore::ContextMenu::setPlatformDescription):
2872
2873 2007-07-25  Maciej Stachowiak  <mjs@apple.com>
2874
2875         Reviewed by Mark.
2876
2877         - follow-up to previous change to avoid assertion failures in debug
2878         
2879         * xml/XMLHttpRequest.cpp:
2880         (WebCore::XMLHttpRequest::getResponseText): hold JSLock when needed
2881         (WebCore::XMLHttpRequest::open): ditto
2882         (WebCore::XMLHttpRequest::didFinishLoading): ditto
2883         (WebCore::XMLHttpRequest::didReceiveData): ditto
2884         * xml/XMLHttpRequest.h:
2885
2886 2007-07-25  Anders Carlsson  <andersca@apple.com>
2887
2888         Reviewed by Darin.
2889
2890         <rdar://problem/5327912> 
2891         iDisk: Web iDisk & main iDisk appear blank
2892         
2893         Prepend any remaining text that scripts might have written.
2894         
2895         * html/HTMLTokenizer.cpp:
2896         (WebCore::HTMLTokenizer::scriptExecution):
2897
2898 2007-07-25  Kevin McCullough  <kmccullough@apple.com>
2899
2900         Reviewed by Tim, Darin, Oliver.
2901
2902         - <rdar://problem/5329440> REGRESSION: Clicking links with the feed:// protocol in Safari 3 does nothing
2903         - Check for file:// urls when clicking links, not block all schemes that are treated as local.
2904
2905         * loader/FrameLoader.cpp:
2906         (WebCore::FrameLoader::load):
2907
2908 2007-07-25  Maciej Stachowiak  <mjs@apple.com>
2909
2910         Reviewed by Darin.
2911
2912         - fixed <rdar://problem/5300291> Optimize GC to reclaim big, temporary objects (like XMLHttpRequest.responseXML) quickly
2913         
2914         With this plus related JavaScriptCore changes, a number of XMLHttpRequest situations that
2915         result in huge data sets are addressed, including a single huge responseXML on an XMR done
2916         repeatedly, or accessing responseText repeatedly during loading of a single large XHR.
2917         
2918         In addition to the GC changes in JavaScriptCore, I changed responseText to be stored as a
2919         KJS::UString instead of a WebCore::String so that the JavaScript responseText value can
2920         share the buffer (indeed multiple intermediate responseTexts can share its buffer).
2921
2922         
2923         First of all, here's some manual test cases that will each blow out the process VM without this fix,
2924         but will settle into decent steady state with.
2925         
2926         * manual-tests/memory: Added.
2927         * manual-tests/memory/MessageUidsAlreadyDownloaded2: Added.
2928         * manual-tests/memory/string-growth.html: Added.
2929         * manual-tests/memory/xhr-multiple-requests-responseText.html: Added.
2930         * manual-tests/memory/xhr-multiple-requests-responseXML.html: Added.
2931         * manual-tests/memory/xhr-multiple-requests.html: Added.
2932         * manual-tests/memory/xhr-repeated-string-access.xml: Added.
2933
2934         And here's the actual code changes:
2935         
2936         * WebCore.xcodeproj/project.pbxproj:
2937         * bindings/js/JSDocumentCustom.cpp:
2938         (WebCore::toJS): Record extra cost if the document is frameless (counting the nodes
2939         doesn't make a measurable performance difference here in any case I could find)
2940         * bindings/js/JSXMLHttpRequest.cpp:
2941         (KJS::JSXMLHttpRequest::getValueProperty): Adjust for the fact that ressponseText
2942         is now stored as a UString.
2943         * bindings/js/kjs_binding.cpp:
2944         (KJS::jsOwnedStringOrNull): New helper.
2945         * bindings/js/kjs_binding.h:
2946         * xml/XMLHttpRequest.cpp:
2947         (WebCore::XMLHttpRequest::getResponseText): It's a UString!
2948         (WebCore::XMLHttpRequest::getResponseXML): handle the fact that m_responseText
2949         is a UString.
2950         (WebCore::XMLHttpRequest::XMLHttpRequest): ditto.
2951         (WebCore::XMLHttpRequest::abort): call dropProtection
2952         (WebCore::XMLHttpRequest::didFinishLoading): call dropProtection
2953         (WebCore::XMLHttpRequest::dropProtection): after removing our GC protection,
2954         report extra cost of this XHR's responseText buffer.
2955         * xml/XMLHttpRequest.h:
2956
2957 2007-07-25  Timothy Hatcher  <timothy@apple.com>
2958
2959         Reviewed by Brady.
2960
2961         <rdar://problem/4796657> table deletion outline does not always follow the table size as editing occurs inside
2962
2963         Change the outline element to position itself automaticlly using the top, left, bottom and right CSS properties.
2964         This made the container element redundant, so it has been removed. Now the outline element and the delete button
2965         both get appended to the target element and positioned based on that container element. This removes the need
2966         to update the width and height when the target contents changed.
2967
2968         * editing/DeleteButtonController.cpp:
2969         (WebCore::DeleteButtonController::show): Change the style properties and remove the container element.
2970         (WebCore::DeleteButtonController::hide): Remove the button and outline from the target element.
2971         * editing/DeleteButtonController.h: Removed updateOutlineStyle, respondToChangedContents and m_containerElement.
2972         * editing/Editor.cpp:
2973         (WebCore::Editor::respondToChangedContents): Remove the call to DeleteButtonController respondToChangedContents.
2974
2975 2007-07-25  Anders Carlsson  <andersca@apple.com>
2976
2977         Reviewed by Darin.
2978
2979         <rdar://problem/5344471>
2980         CrashTracer: [USER] 1 crash in Mail at WebCore::PluginTokenizer::writeRawData(char const*, int)
2981         
2982         Make sure to layout so we'll have a renderer. Also null-check the renderer for extra safety.
2983         
2984         * loader/PluginDocument.cpp:
2985         (WebCore::PluginTokenizer::writeRawData):
2986
2987 2007-07-25  Marvin Decker  <marv.decker@gmail.com>
2988
2989         Reviewed by Maciej, Darin.
2990
2991         - http://bugs.webkit.org/show_bug.cgi?id=14030
2992
2993         Add ResourceHandle::setClient to resolve some messiness with handle
2994         releasing. Clear the client when ResourceLoader is going to release
2995         the handle to prevent crashes in the case where somebody still holds a
2996         reference (this doesn't seem to currently happen in practice). Add
2997         NULL-checking for ResourceHandle implementations using the client.
2998
2999         * loader/ResourceLoader.cpp:
3000         (WebCore::ResourceLoader::releaseResources):
3001         * platform/network/ResourceHandle.cpp:
3002         (WebCore::ResourceHandle::fireBlockedFailure):
3003         (WebCore::ResourceHandle::setClient):
3004         * platform/network/ResourceHandle.h:
3005         * platform/network/cf/ResourceHandleCFNet.cpp:
3006         (WebCore::willSendRequest):
3007         (WebCore::didReceiveResponse):
3008         (WebCore::didReceiveData):
3009         (WebCore::didFinishLoading):
3010         (WebCore::didFail):
3011         (WebCore::willCacheResponse):
3012         (WebCore::ResourceHandle::didReceiveAuthenticationChallenge):
3013         (WebCore::ResourceHandle::receivedCancellation):
3014         * platform/network/mac/ResourceHandleMac.mm:
3015         (WebCore::ResourceHandle::didReceiveAuthenticationChallenge):
3016         (WebCore::ResourceHandle::didCancelAuthenticationChallenge):
3017         (WebCore::ResourceHandle::receivedCancellation):
3018         (-[WebCoreResourceHandleAsDelegate connection:willSendRequest:redirectResponse:]):
3019         (-[WebCoreResourceHandleAsDelegate connection:didReceiveResponse:]):
3020         (-[WebCoreResourceHandleAsDelegate connection:didReceiveData:lengthReceived:]):
3021         (-[WebCoreResourceHandleAsDelegate connection:willStopBufferingData:]):
3022         (-[WebCoreResourceHandleAsDelegate connectionDidFinishLoading:]):
3023         (-[WebCoreResourceHandleAsDelegate connection:didFailWithError:]):
3024         (-[WebCoreResourceHandleAsDelegate connection:willCacheResponse:]):
3025
3026 2007-07-25  Maxime Britto  <mbritto@pleyo.com>
3027
3028         Reviewed by Darin.
3029
3030         - fix http://bugs.webkit.org/show_bug.cgi?id=11756
3031           <rdar://problem/5286420>
3032
3033         Fix a typo error to really compare the present domain to the domain of the parent of the targeted frame.
3034
3035         * loader/FrameLoader.cpp: (WebCore::FrameLoader::canTarget):
3036
3037 2007-07-25  Mitz Pettel  <mitz@webkit.org>
3038
3039         Reviewed by Darin.
3040
3041         - fix http://bugs.webkit.org/show_bug.cgi?id=14758
3042           REGRESSION: Repeated text after line break on facebook.com
3043
3044         Test: fast/text/reset-emptyRun.html
3045
3046         * platform/BidiResolver.h:
3047         (WebCore::::deleteRuns): Re-add a line that was removed for no reason at all
3048         during refactoring in r24485.
3049         * rendering/bidi.cpp:
3050         (WebCore::BidiState::deleteRuns): Ditto.
3051
3052 2007-07-24  Oliver Hunt  <oliver@apple.com>
3053
3054         Reviewed by Adam and Justin.
3055
3056         <rdar://problem/5141779> WebView editableDOMRangeForPoint: & moveDragCaretToPoint: returns last position in DOMText range
3057
3058         Remove bridge implementation for editableDOMRangeForPoint: and moveDragCaretToPoint:. 
3059         Now use cross-platform code Editor::rangeForPoint and DragController::placeDragCaret instead.
3060         This required lifting local code from DragController.cpp into the shared methods
3061         Frame::visiblePositionForPoint and Frame::documentAtPoint.
3062
3063         * WebCore.exp:
3064         * editing/Editor.cpp:
3065         (WebCore::Editor::rangeForPoint):
3066         * editing/Editor.h:
3067         * page/DragController.cpp:
3068         (WebCore::DragController::dragEnded):
3069         (WebCore::DragController::performDrag):
3070         (WebCore::DragController::dragEnteredOrUpdated):
3071         (WebCore::DragController::tryDocumentDrag):
3072         (WebCore::DragController::operationForLoad):
3073         (WebCore::setSelectionToDragCaret):
3074         (WebCore::DragController::concludeDrag):
3075         (WebCore::DragController::placeDragCaret):
3076         * page/DragController.h:
3077         * page/Frame.cpp:
3078         (WebCore::Frame::visiblePositionForPoint):
3079         (WebCore::Frame::documentAtPoint):
3080         * page/Frame.h:
3081         * page/mac/WebCoreFrameBridge.h:
3082         * page/mac/WebCoreFrameBridge.mm:
3083
3084 2007-07-24  Sam Weinig  <sam@webkit.org>
3085
3086         Rubber-stamped by Adam Roben.
3087
3088         Remove unused .strip files.
3089
3090         * WebCore.xcodeproj/project.pbxproj:
3091
3092 2007-07-24  Adele Peterson  <adele@apple.com>
3093
3094         Reviewed by Hyatt.
3095
3096         Fix for <rdar://problem/5308492> Computed width for elements with box-sizing: border-box is not equal to the width set in the CSS
3097
3098         Test: fast/css/getComputedStyle-border-box.html
3099
3100         * css/CSSComputedStyleDeclaration.cpp: (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue):
3101           For the width and height properties, when you get the value from the renderer, use the renderer's box sizing value to determine the size.
3102
3103 2007-07-24  Anders Carlsson  <andersca@apple.com>
3104
3105         Reviewed by Kevin Decker.
3106
3107         <rdar://problem/5355781>
3108         REGRESSION: reproducible crash in CoreFoundation!CFRunLoopFinished on Flash pages
3109         
3110         Null check the loader.
3111         
3112         * plugins/win/PluginStreamWin.cpp:
3113         (WebCore::PluginStreamWin::start):
3114
3115 2007-07-24  Adele Peterson  <adele@apple.com>
3116
3117         Reviewed by Hyatt and Adam.
3118
3119         Fix for <rdar://problem/5130590> REGRESSION: style="width:1px" on <select> element no longer hides the element
3120
3121         Removed hack that forced large padding on popup buttons.  Now we put that padding in the inner block, so that
3122         the specified width will be honored.
3123
3124         * rendering/RenderMenuList.cpp:
3125         (WebCore::RenderMenuList::adjustInnerStyle): Set the padding on the inner block based on the metrics provided by the theme.
3126         (WebCore::RenderMenuList::controlClipRect): Clip to the intersection of the inner content box and the outer content box.
3127          This will leave room for the arrows which sit in the inner box padding, and if the inner box ever spills out of the outer box, 
3128          that will get clipped too.
3129         (WebCore::RenderMenuList::calcPrefWidths):  Add in the inner box's padding and border to the pref widths.
3130
3131         * rendering/RenderThemeMac.mm:
3132         (WebCore::RenderThemeMac::paintMenuList): Only inflate the rect for the shadow if the rect is big enough to fit the whole control.
3133          Also, on Leopard, the NSCell will draw outside of a small rect, so add a clip for that case.
3134         (WebCore::RenderThemeMac::paintMenuListButton): Restrict font scale to make sure the arrows will actually fit in the bounds vertically.
3135          Don't draw the arrows if they won't fit horizontally.  Reset padding.  Since WinIE doesn't honor padding for popups, its not critical to
3136          support padding at this time.
3137         (WebCore::RenderThemeMac::adjustMenuListStyle): Don't set the padding here.  Instead, we're going to set the padding on the inner block of the select.
3138         (WebCore::RenderThemeMac::adjustMenuListButtonStyle): ditto.
3139         (WebCore::RenderThemeMac::popupInternalPaddingLeft): Added.  Provides internal padding values for RenderMenuList.
3140         (WebCore::RenderThemeMac::popupInternalPaddingRight): ditto.
3141         (WebCore::RenderThemeMac::popupInternalPaddingTop): ditto.
3142         (WebCore::RenderThemeMac::popupInternalPaddingBottom): ditto.
3143         * rendering/RenderThemeMac.h:
3144
3145         * rendering/RenderThemeSafari.cpp:  The same changes that were made to RenderThemeMac were made here, with variations for the arrow differences.
3146           This code should be refactored and shared, but now did not seem like the right time to do that refactoring.
3147         (WebCore::RenderThemeSafari::paintMenuList):
3148         (WebCore::RenderThemeSafari::paintMenuListButton):
3149         (WebCore::RenderThemeSafari::adjustMenuListStyle):
3150         (WebCore::RenderThemeSafari::popupInternalPaddingLeft):
3151         (WebCore::RenderThemeSafari::popupInternalPaddingRight):
3152         (WebCore::RenderThemeSafari::popupInternalPaddingTop):
3153         (WebCore::RenderThemeSafari::popupInternalPaddingBottom):
3154         (WebCore::RenderThemeSafari::adjustMenuListButtonStyle):
3155         * rendering/RenderThemeSafari.h:
3156
3157         * rendering/RenderTheme.h: Added to provide internal padding values for RenderMenuList.
3158         (WebCore::RenderTheme::popupInternalPaddingLeft):
3159         (WebCore::RenderTheme::popupInternalPaddingRight):
3160         (WebCore::RenderTheme::popupInternalPaddingTop):
3161         (WebCore::RenderTheme::popupInternalPaddingBottom):
3162
3163 2007-07-24  Lars Knoll  <lars@trolltech.com>
3164
3165         Reviewed by Adam Roben & David Kilzer.
3166
3167         replace the makeprop and makevalues shell scripts by equivalent perl versions. This is required to remove the last shell dependency when building QtWebKit on Windows.
3168
3169         * DerivedSources.make:
3170         * WebCore.pro:
3171         * WebCore.xcodeproj/project.pbxproj:
3172         * css/makeprop: Added.
3173         * css/makeprop.pl: Removed.
3174         * css/makevalues: Added.
3175         * css/makevalues.pl: Removed.
3176
3177 2007-07-24  Beth Dakin  <bdakin@apple.com>
3178
3179         Reviewed by Darin.
3180
3181         Fix for http://bugs.webkit.org/show_bug.cgi?id=14714 REGRESSION: 
3182         ASSERTION FAILED: i < size() in Vector.h:401 on negative -webkit-
3183         column-width
3184         - and -
3185         http://bugs.webkit.org/show_bug.cgi?id=14718 REGRESSION: ASSERTION 
3186         FAILED: i < size() in Vector.h:401 on zero -webkit-column-count
3187
3188         * rendering/RenderBlock.cpp:
3189         (WebCore::RenderBlock::calcColumnWidth): Make 1 the minimum value 
3190         for column-width and column-count. Since the spec does not address 
3191         what to do with negative values for these properties, we are 
3192         patching the rendering code instead of the parser.
3193
3194 2007-07-24  Anders Carlsson  <andersca@apple.com>
3195
3196         Reviewed by Steve.
3197         
3198         <rdar://problem/5355403>
3199         REGRESSION: 303A2 does not display pdf files with AdobeReader 8.1
3200         
3201         Close the file before handing off the file name to the plug-in.
3202         
3203         * plugins/win/PluginStreamWin.cpp:
3204         (WebCore::PluginStreamWin::destroyStream):
3205
3206 2007-07-24  Alp Toker  <alp.toker@collabora.co.uk>
3207
3208         Reviewed by Adam.
3209
3210         http://bugs.webkit.org/show_bug.cgi?id=14711
3211         RenderThemeGdk's buttons are state-agnostic (pressed, hovered)
3212
3213         Remove unnecessary label from widget instances.
3214         Render check and radio widgets correctly.
3215         Determine the widget state and render it appropriately.
3216
3217         * platform/gdk/RenderThemeGdk.cpp:
3218         (WebCore::RenderThemeGdk::determineState):
3219         (WebCore::RenderThemeGdk::paintCheckbox):
3220         (WebCore::RenderThemeGdk::paintRadio):
3221         (WebCore::RenderThemeGdk::paintButton):
3222         (WebCore::RenderThemeGdk::gtkButton):
3223         (WebCore::RenderThemeGdk::gtkCheckbox):
3224         (WebCore::RenderThemeGdk::gtkRadioButton):
3225         * platform/gdk/RenderThemeGdk.h:
3226
3227 2007-07-24  Mark Rowe  <mrowe@apple.com>
3228
3229         Reviewed by Antti.
3230
3231         <rdar://problem/5356666> NSMenuItem's seen leaking on buildbot
3232
3233         * platform/mac/ContextMenuItemMac.mm:
3234         (WebCore::ContextMenuItem::releasePlatformDescription): Transfer ownership from the RetainPtr's CF-based retain
3235         count to the Foundation retain count so that callers of releasePlatformDescription can use -[NSObject release]
3236         to dispose of it in a manner that won't leak under Obj-C GC.
3237         * platform/mac/ContextMenuMac.mm:
3238         (WebCore::ContextMenu::appendItem): Release platformItem as we were transferred its ownership by releasePlatformDescription.
3239         (WebCore::ContextMenu::insertItem): ditto.
3240
3241 2007-07-24  Mitz Pettel  <mitz@webkit.org>
3242
3243         Reviewed by Darin.
3244
3245         - fix http://bugs.webkit.org/show_bug.cgi?id=14684
3246           Hebrew text in Safari chrome is reversed (LTR instead of RTL)
3247
3248         Test: fast/text/drawBidiText.html
3249
3250         * WebCore.pro:
3251         * WebCore.vcproj/WebCore.vcproj:
3252         * WebCore.xcodeproj/project.pbxproj:
3253         * WebCoreSources.bkl:
3254         * manual-tests/chrome-bidi-text.html: Added.
3255         * manual-tests/resources/chrome-bidi-text-window.html: Added.
3256         * platform/BidiReorderCharacters.cpp: Removed.
3257         * platform/BidiReorderCharacters.h: Removed.
3258         * platform/BidiResolver.h:
3259         (WebCore::BidiCharacterRun::start): Added accessor method.
3260         (WebCore::BidiCharacterRun::stop): Ditto.
3261         (WebCore::BidiCharacterRun::level): Ditto.
3262         (WebCore::BidiCharacterRun::next): Ditto.
3263         (WebCore::::appendRun): Added default implementation.
3264         * platform/TextStyle.h:
3265         (WebCore::TextStyle::setDirectionalOverride): Added accessor method.
3266         * platform/graphics/GraphicsContext.cpp:
3267         (WebCore::TextRunIterator::TextRunIterator): Added. A BidiResolver-
3268         compliant iterator over the characters in a TextRun.
3269         (WebCore::TextRunIterator::offset):
3270         (WebCore::TextRunIterator::increment):
3271         (WebCore::TextRunIterator::atEnd):
3272         (WebCore::TextRunIterator::current):
3273         (WebCore::TextRunIterator::direction):
3274         (WebCore::TextRunIterator::operator==):
3275         (WebCore::TextRunIterator::operator!=):
3276         (WebCore::GraphicsContext::drawBidiText): Added. Applies the Unicode
3277         Bidi Algorithm to the text and draws the resulting unidirectional runs
3278         in the right order and with the right directionality.
3279         * platform/graphics/GraphicsContext.h:
3280         * platform/win/PopupMenuWin.cpp:
3281         (WebCore::PopupMenu::paint): Replaced the use of a character buffer
3282         and BidiReorderCharacters with calling to drawBidiText(). Removed special
3283         handling of '-webkit-rtl-ordering:visual' because that CSS property is an
3284         implementation detail of WebCore's visual Hebrew support, and the UA stylesheet
3285         sets it to 'logical' for this form control. Authors can specify the ordering
3286         using the 'direction' and 'unicode-bidi' properties.
3287         * platform/win/WebCoreTextRenderer.cpp:
3288         (WebCore::isOneLeftToRightRun): Added. Checks if the text consists of
3289         a single left-to-right run, in which case it requires no bidi processing.
3290         (WebCore::doDrawTextAtPoint): Changed to call drawBidiText if the text
3291         is not entirely left-to-right.
3292         * rendering/RenderFileUploadControl.cpp:
3293         (WebCore::RenderFileUploadControl::paintObject): Replaced the use of a
3294         character buffer in BidiReorderCharacters with calling to drawBidiText().
3295         Removed special handling of '-webkit-rtl-ordering:visual' for the same reason
3296         stated above.
3297         * rendering/RenderListBox.cpp:
3298         (WebCore::RenderListBox::paintItemForeground): Ditto. Also changed the
3299         run-rounding modes used when drawing to match those used when measuring.
3300
3301 2007-07-23  Oliver Hunt  <oliver@apple.com>
3302
3303         Reviewed by Steve.
3304
3305         Windows build fix, remove superfluous !
3306
3307         * page/EventHandler.cpp:
3308         (WebCore::EventHandler::keyEvent):
3309
3310 2007-07-23  Adam Roben  <aroben@apple.com>
3311
3312         Add an assignment operator for BString that takes a BSTR
3313
3314         Reviewed by Geoff and Oliver.
3315
3316         * platform/win/BString.cpp:
3317         (WebCore::BString::operator=):
3318         * platform/win/BString.h:
3319
3320 2007-07-23  Justin Garcia  <justin.garcia@apple.com>
3321
3322         Reviewed by Geoff.
3323         
3324         <rdar://problem/5354455> Word selection when right-clicking can be confusing (14728)
3325
3326         * page/EventHandler.cpp:
3327         (WebCore::EventHandler::sendContextMenuEvent): In non-editable content,
3328         only do word selection over text.  In editable content, we will continue
3329         to select images, line breaks and other elements on right-clicks, to match 
3330         TextEdit.  For now, in editable content, we'll live with the cases where 
3331         positionForPoint creates selections that aren't underneath the mouse.  These
3332         aren't regressions because we've always done word selection on right clicks
3333         in editable content.
3334
3335 2007-07-23  Anders Carlsson  <andersca@apple.com>
3336
3337         Reviewed by Oliver.
3338
3339         <rdar://problem/5335354>
3340         REGRESSION(r21359-r21368): Can't edit inside RTEF editable region
3341         
3342         If Document::open is called and there's a pending load that has not yet started,
3343         that load should be cancelled.
3344         
3345         * dom/Document.cpp:
3346         (WebCore::Document::open):
3347
3348 2007-07-23  Timothy Hatcher  <timothy@apple.com>
3349
3350         Reviewed by Hyatt.
3351
3352         <rdar://problem/5242145> REGRESSION: Clicking on symbol in documentation often doesn't scroll to symbol
3353
3354         A renderer for the anchor wasn't always available at the time parsing finished. So we need
3355         to bail out of gotoAnchor if stylesheets are pending and remember to call gotoAnchor later
3356         once all of the pending stylesheets load.
3357
3358         * dom/Document.cpp:
3359         (WebCore::Document::Document): Initialize m_gotoAnchorNeededAfterStylesheetsLoad to false.
3360         (WebCore::Document::stylesheetLoaded): If we have no more pending stylesheets, call gotoAnchor if needed.
3361         * dom/Document.h:
3362         (WebCore::Document::gotoAnchorNeededAfterStylesheetsLoad): New method.
3363         (WebCore::Document::setGotoAnchorNeededAfterStylesheetsLoad): Ditto.
3364         * loader/FrameLoader.cpp:
3365         (WebCore::FrameLoader::gotoAnchor): Bail early if the document still has pending stylesheets.
3366         * loader/FrameLoader.h: Make gotoAnchor() public.
3367
3368 2007-07-23  John Sullivan  <sullivan@apple.com>
3369
3370         Reviewed by Darin
3371         
3372         - fixed <rdar://problem/5327887> Printing Mail note (or Safari page) with misspelled word prints red underline
3373
3374         * rendering/InlineTextBox.cpp:
3375         (WebCore::InlineTextBox::paintSpellingOrGrammarMarker):
3376         When printing, bail out without doing any work. Also moved a couple of lines down below another early
3377         bailout since they were pointless above it.
3378
3379 2007-07-23  Oliver Hunt  <oliver@apple.com>
3380
3381         Reviewed by Darin.
3382         
3383         <rdar://problem/5353577> WebKit key event behaviour needs to better match other browsers keyevent behaviour
3384         <rdar://problem/5352152> REGRESSION (24399-24479): Pressing Enter in a search field at apple.com no longer starts a search with Korean IM
3385         <rdar://problem/5352649> WebKit should send keyDown event on autorepeat keyDowns
3386         http://bugs.webkit.org/show_bug.cgi?id=14690
3387
3388         Perform Input Method call first so that our behaviour is determined by whether or not 
3389         the input method has actually handle the event, rather than by making guesses based 
3390         on the existences of marked text.  This fixes issues with IMs that have side effects
3391         even on events they do not handle.
3392
3393         Refactored the code in order to improve clarity given the hoisting required by performing
3394         the IM call earlier.
3395
3396         * page/EventHandler.cpp:
3397         (WebCore::EventHandler::keyEvent):
3398
3399 2007-07-23  Anders Carlsson  <andersca@apple.com>
3400
3401         Reviewed by Darin.
3402
3403         <rdar://problem/5045711> 
3404         http://bugs.webkit.org/show_bug.cgi?id=12938
3405         Google calendar settings page crashes
3406         
3407         Move handling of checked radio buttons to a new class, HTMLFormElement::CheckedRadioButtons. 
3408         Each <form> element has an instance of this class. For radio buttons without a containing 
3409         form, the document has an instance of HTMLFormElement::CheckedRadioButtons where the
3410         state of those radio buttons will be stored.
3411         be stored.
3412         
3413         This also fixes another bug where removing a checked radio button that does not have a
3414         containing form would not remove the radio button from the checked radio buttons map,
3415         which could lead to a crash due to a dangling pointer.
3416         
3417         * dom/Document.cpp:
3418         (WebCore::Document::~Document):
3419         * dom/Document.h:
3420         (WebCore::Document::checkedRadioButtons):
3421         * html/HTMLFormElement.cpp:
3422         (WebCore::HTMLFormElement::registerFormElement):
3423         (WebCore::HTMLFormElement::removeFormElement):
3424         (WebCore::HTMLFormElement::CheckedRadioButtons::didCheckButton):
3425         (WebCore::HTMLFormElement::CheckedRadioButtons::checkedButtonForGroup):
3426         (WebCore::HTMLFormElement::CheckedRadioButtons::removeButtonIfChecked):
3427         * html/HTMLFormElement.h:
3428         (WebCore::HTMLFormElement::checkedRadioButtons):
3429         * html/HTMLGenericFormElement.cpp:
3430         (WebCore::HTMLGenericFormElement::insertedIntoTree):
3431         * html/HTMLInputElement.cpp:
3432         (WebCore::HTMLInputElement::~HTMLInputElement):
3433         (WebCore::checkedRadioButtons):
3434         (WebCore::HTMLInputElement::isKeyboardFocusable):
3435         (WebCore::HTMLInputElement::setInputType):
3436         (WebCore::HTMLInputElement::parseMappedAttribute):
3437         (WebCore::HTMLInputElement::setChecked):
3438         (WebCore::HTMLInputElement::preDispatchEventHandler):
3439         (WebCore::HTMLInputElement::willMoveToNewOwnerDocument):
3440         * manual-tests/remove-form-node-with-radio-buttons-crash.html: Added.
3441
3442 2007-07-23  David Hyatt  <hyatt@apple.com>
3443
3444         Fix for 5350587, hang in iExploder text 8101.  The code that painted outlines for continuations was buggy
3445         in that it assumed the chain was always inline-block-inline, but this is only true for the innermost chained
3446         continuation.  To make this more robust, we always just use the inline's containing block's containing block,
3447         which should be guaranteed to enclose all renderers in the continuation chain.  In addition, there is now a
3448         null check (to guarantee no more hangs) and an assert (to check if we hit this situation again where the block
3449         used to paint does not properly enclose the continuation chain).
3450
3451         Reviewed by beth
3452
3453         fast/inline/outline-continuation.html
3454
3455         * rendering/RenderBlock.cpp:
3456         (WebCore::RenderBlock::paintContinuationOutlines):
3457         * rendering/InlineFlowBox.cpp:
3458         (WebCore::RenderInline::paint):
3459
3460 2007-07-22  Holger Hans Peter Freyther  <zecke@selfish.org>
3461
3462         Reviewed by Adam.
3463
3464         WARNING: NO TEST CASES ADDED OR CHANGED
3465
3466         Add the WebKit/Gtk API to the buildsystem, ask qmake to create a
3467         pkg-config file and install headers and libraries.
3468
3469         Start to emit signals from FrameLoaderClientGdk, hide the kit Frame
3470         inside the the FrameLoaderClientGdk.
3471
3472         Move ChromeClientGdk to WebKit/gtk/WebCoreSupport
3473
3474         * WebCore.pro:
3475         * loader/gdk/FrameLoaderClientGdk.cpp:
3476         * loader/gdk/FrameLoaderClientGdk.h:
3477         * platform/gdk/ChromeClientGdk.h: Removed.
3478         * platform/gdk/FrameGdk.cpp: Remove code not belonging here
3479         * platform/gdk/FrameGdk.h:
3480         * platform/gdk/ScrollViewGdk.cpp: The gdkDrawable won't exist at that time and it is fine
3481         * platform/gdk/TemporaryLinkStubs.cpp: Removed ChromeClientGdk stubs
3482
3483 2007-07-22  Maciej Stachowiak  <mjs@apple.com>
3484
3485         Reviewed by Adam.
3486
3487         <rdar://problem/5353174> REGRESSION: 1% JavaScript performance regression fro Window refactoring (14717)
3488         http://bugs.webkit.org/show_bug.cgi?id=14717
3489         
3490         * bindings/js/kjs_window.cpp:
3491         * bindings/js/kjs_window.h:
3492         (KJS::Window::impl): inlined
3493         * page/DOMWindow.cpp:
3494         * page/DOMWindow.h:
3495         (WebCore::DOMWindow::frame): inlined
3496
3497 2007-07-22  Darin Adler  <darin@apple.com>
3498
3499         * platform/ContextMenu.cpp: Added missing include.
3500
3501 2007-07-22  Sam Weinig  <sam@webkit.org>
3502
3503         Reviewed by Darin.
3504
3505         Fix for http://bugs.webkit.org/show_bug.cgi?id=14682
3506         REGRESSION(24285-24399): alerts do not appear at W3C RTL test page
3507
3508         Test: fast/dom/Window/window-function-name-getter-precedence.html
3509
3510         * bindings/js/JSDOMWindowCustom.cpp:
3511         (WebCore::JSDOMWindow::customGetOwnPropertySlot): Make sure to return functions
3512         before the custom name getter.
3513
3514 2007-07-22  Darin Adler  <darin@apple.com>
3515
3516         Reviewed by Adam.
3517
3518         - fix <rdar://problem/5353263> ContextMenuItem and ContextMenu objects leaking (seen on buildbot)
3519
3520         * platform/ContextMenu.cpp:
3521         (WebCore::separatorItem): Return an auto_ptr instead of a raw pointer, since this function
3522         creates an object that's the caller's responsibility to delete.
3523         (WebCore::createAndAppendFontSubMenu): Create the context menu on the stack, not the heap,
3524         since setSubMenu does not take ownership, and hence the objects were leaking.
3525         (WebCore::createAndAppendSpellingAndGrammarSubMenu): Ditto.
3526         (WebCore::createAndAppendSpellingSubMenu): Ditto.
3527         (WebCore::createAndAppendSpeechSubMenu): Ditto.
3528         (WebCore::createAndAppendWritingDirectionSubMenu): Ditto.
3529
3530 2007-07-22  Darin Adler  <darin@apple.com>
3531
3532         Reviewed by Kevin Decker.
3533
3534         - fix <rdar://problem/5126394> REGRESSION: Crash after clicking back button in test application (13250)
3535           http://bugs.webkit.org/show_bug.cgi?id=13250
3536
3537         * bindings/objc/WebScriptObject.mm:
3538         (_didExecute): Removed unnecessary check for isValid() since the _rootObject method already
3539         takes care of that check.
3540         (-[WebScriptObject _imp]): Made this return 0 if there is not a valid rootObject.
3541         (-[WebScriptObject _isSafeScript]): Made this always return false if there is not a valid
3542         rootObject, eliminating the need to check _rootObject for nil if the code is checking _isSafeScript.
3543         (-[WebScriptObject callWebScriptMethod:withArguments:]): Removed check of _rootObject, since it's
3544         immediately followed by a check of _isSafeScript. Removed awkward conversion of name from NSString *
3545         to KJS::Identifier and did it using WebCore::String instead -- makes it clear that there's no
3546         arbitrary JavaScript execution after _isSafeScript and before _imp, so we don't need to null-check
3547         the _imp pointer. Added a second check of _isSafeScript after calling get to get the function
3548         object, since arbitrary changes could occur in there, including navigation to a new frame.
3549         This also takes care of null checking the second call to _imp.
3550         (-[WebScriptObject evaluateWebScript:]): Removed check of _rootObject, since it's
3551         immediately followed by a check of _isSafeScript. Removed awkward conversion of script from NSString *
3552         to KJS::Identifier and did it using WebCore::String instead -- makes it clear that there's no
3553         arbitrary JavaScript execution after _isSafeScript and before _imp, so we don't need to null-check
3554         the _imp pointer.
3555         (-[WebScriptObject setValue:forKey:]): Removed check of _rootObject, since it's
3556         immediately followed by a check of _isSafeScript. Removed awkward conversion of key from NSString *
3557         to KJS::Identifier and did it using WebCore::String instead -- makes it clear that there's no
3558         arbitrary JavaScript execution after _isSafeScript and before _imp, so we don't need to null-check
3559         the _imp pointer.
3560         (-[WebScriptObject valueForKey:]): Ditto.
3561         (-[WebScriptObject removeWebScriptKey:]): Ditto.
3562         (-[WebScriptObject stringRepresentation]): Removed check of _rootObject, since it's
3563         immediately followed by a check of _isSafeScript. Removed unnecessary local variable
3564         and const_cast from the call to the _imp method.
3565         (-[WebScriptObject webScriptValueAtIndex:]): Removed check of _rootObject, since it's
3566         immediately followed by a check of _isSafeScript.
3567         (-[WebScriptObject setWebScriptValueAtIndex:value:]): Ditto.
3568         (-[WebScriptObject JSObject]): Ditto.
3569
3570 2007-07-22  Darin Adler  <darin@apple.com>
3571
3572         Reviewed by Anders Carlsson and John Sullivan.
3573
3574         - speculative fix for <rdar://problem/5337500> CrashTracer: [USER] 4 crashes in Mail
3575           at WebCore::HTMLImageElement::isURLAttribute(WebCore::Attribute*) const
3576
3577         * editing/markup.cpp: Added AttributeChange class.
3578         (WebCore::completeURLs): Changed function so that all the URL completion is done in
3579         a separate pass after finding all the URL attributes. This is safer, since actually
3580         applying an attribute change could have any arbitrary effect on the document; it's
3581         tricky to iterate a document while it's being modified and we don't have the checks
3582         here that would be needed to make that work in pathological cases.
3583
3584 2007-07-18  Darin Adler  <darin@apple.com>
3585
3586         Reviewed by Adam.
3587
3588         - fix <rdar://problem/5350604> REGRESSION: Crash in inspector controller code after
3589           clicking back button in test application (14337)
3590
3591         * page/InspectorController.cpp: (WebCore::InspectorController::addScriptResource):
3592         Replace an assertion that was firing with some code that at least doesn't immediately crash.
3593
3594 2007-07-22  Darin Adler  <darin@apple.com>
3595
3596         Reviewed by Anders.
3597
3598         - improve the fix for <rdar://problem/5298816> Crash redirecting message,
3599           in -[SharedBufferData initWithSharedBuffer:]; fixes a crash seen on the buildbot
3600
3601         * loader/DocLoader.cpp: (WebCore::DocLoader::~DocLoader): Call setDocLoader(0) on all
3602         the resources so they don't try to use a stale DocLoader pointer later.
3603
3604 2007-07-21  Mitz Pettel  <mitz@webkit.org>
3605
3606         Reviewed by Sam Weinig.
3607
3608         - fixed typos and markup in the following manual tests
3609
3610         * manual-tests/accidental-strict-mode.html:
3611         * manual-tests/caretScrolling.html:
3612         * manual-tests/close-on-closedWindow.html:
3613
3614 2007-07-21  Sam Weinig  <sam@webkit.org>
3615
3616         Reviewed by Mitz.
3617
3618         Patch for <rdar://problem/5352013>
3619         The computed style for background-position is wrong for the initial value
3620
3621         - Set the initial value for background-position-x and background-position-y (and
3622           therefore background-position) to 0% instead of 0px.
3623
3624         * rendering/RenderStyle.cpp:
3625         (WebCore::BackgroundLayer::BackgroundLayer):
3626         * rendering/RenderStyle.h:
3627         (WebCore::RenderStyle::initialBackgroundXPosition):
3628         (WebCore::RenderStyle::initialBackgroundYPosition):
3629
3630 2007-07-20  Brady Eidson  <beidson@apple.com>
3631
3632         Reviewed by Adele and Andersca
3633
3634         <rdar://problem/5336105> - WebBackForwardList created from scratch is unusable (always leads to crash)
3635
3636         * WebCore.exp: Export the BackForwardList c'tor so WebKit can create one explicitly
3637
3638 2007-07-20  Sam Weinig  <sam@webkit.org>
3639
3640         Reviewed by Beth Dakin.
3641
3642         Fix for <rdar://problem/5351901>
3643         Computed value of border-position should return a CSSValueList, not a CSSPrimitiveValue
3644
3645         - Return a space separated CSSValueList for background-position
3646           instead of a CSSPrimitiveValue (string type).
3647         - Remove the "else if (renderer)" case as it never returns a different
3648           value than just calling length.value().
3649         - Make background-position-x and background-position-y behave like
3650           background-position.  Fix case of initial value return 'auto' instead
3651           of 0.
3652
3653         Test: fast/css/getComputedStyle-background-position.html
3654
3655         * css/CSSComputedStyleDeclaration.cpp:
3656         (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue):
3657
3658 2007-07-20  Geoffrey Garen  <ggaren@apple.com>
3659
3660         Build fix for non-Mac platforms.
3661         
3662         * bindings/js/GCController.cpp:
3663
3664 2007-07-20  Anders Carlsson  <andersca@apple.com>
3665
3666         Reviewed by Darin.
3667
3668         If the style sheet requested is a user style sheet, don't store it in the DocLoader's resource map;
3669         user style sheets can outlive their doc loaders.
3670
3671         * loader/DocLoader.cpp:
3672         (WebCore::DocLoader::requestCSSStyleSheet):
3673
3674 2007-07-20  Justin Garcia  <justin.garcia@apple.com>
3675
3676         Reviewed by Darin.
3677
3678         <rdar://problem/5109817> Ctrl-click on word in non-editable text doesn't select it
3679         
3680         * bridge/EditorClient.h: Removed a client method for enabling/disabling
3681         word selection on right clicks.
3682         * editing/Editor.cpp: Ditto.
3683         * editing/Editor.h:
3684         * page/EventHandler.cpp:
3685         (WebCore::EventHandler::sendContextMenuEvent): Select the
3686         word underneath the mouse regardless of whether its editable.
3687
3688 2007-07-20  Ada Chan  <adachan@apple.com>
3689
3690         Reviewed by Darin and Adam.
3691
3692         <rdar://problem/5338385> Fixed infinite loop in ScrollView::scrollRectIntoViewRecursively().
3693         Also removed an unused local variable.
3694
3695         * platform/win/ScrollViewWin.cpp:
3696         (WebCore::ScrollView::scrollRectIntoViewRecursively):
3697
3698 2007-07-21  Antti  <antti@apple.com>
3699
3700         Reviewed by Darin.
3701         
3702         Fix <rdar://problem/5305788>
3703         REGRESSION: Safari sometimes loads IE-specific stylesheet on www.apaema.org
3704         
3705         Pick the preferred style sheet set based on document order even if the sheet is still loading. Previously 
3706         the set was chosen based on which stylesheet happened to arrive first. Just fix the problem at hand 
3707         and resist urge to start refactoring this function.
3708
3709         * dom/Document.cpp:
3710         (WebCore::Document::recalcStyleSelector):
3711
3712 2007-07-20  Sam Weinig  <sam@webkit.org>
3713
3714         Reviewed by Darin.
3715
3716         Fix for <rdar://problem/5351252>
3717         Computed value for -webkit-background-size and border-spacing
3718         should be space separated CSSValueLists.
3719
3720         * css/CSSComputedStyleDeclaration.cpp:
3721         (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue):
3722
3723 2007-07-20  Geoffrey Garen  <ggaren@apple.com>
3724
3725         Suggested by Darin Adler.
3726         
3727         Slight tweak to my last commit: changed gcController() to return a 
3728         reference instead of a pointer.
3729
3730 2007-07-20  Geoffrey Garen  <ggaren@apple.com>
3731
3732         Reviewed by Darin Adler.
3733         
3734         Fixed http://bugs.webkit.org/show_bug.cgi?id=12900 Page tear-down 
3735         forces garbage collection once per frame
3736
3737         Also fixed <rdar://problem/5286989> GC on window close does not always 
3738         bring the JS object count down to 0
3739         
3740         Implemented a 0-delay GC timer in WebCore. Instead of forcing GC
3741         immediately, code that thinks it has created a lot of garbage starts
3742         the timer. This has two advantages: 
3743
3744         1) Multiple GCs can coalesce. In my pathological test case, this 
3745         improves performance by an order of magnitude. 
3746         
3747         2) Conservative marking is less likely to keep alive important dead
3748         objects, like the window object, because the stack is small and free of
3749         JS processing when the timer fires.
3750
3751         Added GCController.h/.cpp, sometimes blindly:
3752         * WebCore.pro:
3753         * WebCore.vcproj/WebCore.vcproj:
3754         * WebCore.xcodeproj/project.pbxproj:
3755         * WebCoreSources.bkl:
3756
3757         Added singleton that implements GC on a 0-delay timer:
3758         * bindings/js/GCController.h: Added.
3759         * bindings/js/GCController.cpp: Added.
3760         
3761         Changed Collector::collect() calls below to call to the singleton:
3762         * bindings/js/kjs_proxy.cpp:
3763         (WebCore::KJSProxy::~KJSProxy):
3764         * bindings/js/kjs_window.cpp:
3765         (KJS::Window::clear):
3766         * history/CachedPage.cpp:
3767         (WebCore::CachedPage::clear):
3768         
3769         * page/Frame.cpp:
3770         (WebCore::Frame::~Frame): Removed previous slightly hackish attempt to
3771         avoid conservative marking of the window object.
3772
3773 2007-07-20  Anders Carlsson  <andersca@apple.com>
3774     
3775         Reviewed by Darin.
3776
3777         <rdar://problem/5298816> Crash redirecting message, in -[SharedBufferData initWithSharedBuffer:]
3778         
3779         Have cached resources keep track of what DocLoader they belong to. This is so that they can remove themselves
3780         from the DocLoader's resource map when they're destroyed when the cache is disabled.
3781         
3782         * html/HTMLImageLoader.cpp:
3783         (WebCore::HTMLImageLoader::updateFromElement):
3784         * loader/Cache.cpp:
3785         (WebCore::Cache::requestResource):
3786         * loader/CachedResource.cpp:
3787         (WebCore::CachedResource::CachedResource):
3788         (WebCore::CachedResource::~CachedResource):
3789         * loader/CachedResource.h:
3790         (WebCore::CachedResource::setDocLoader):
3791
3792 2007-07-20  Brady Eidson  <beidson@apple.com>
3793
3794         Reviewed by Darin
3795
3796         <rdar://problem/5153021> and http://bugs.webkit.org/show_bug.cgi?id=13364
3797
3798         The issue here was that if a document in a subframe was loaded from a URL, but then a script did 
3799         document.open or document.write during parsing, we would overwrite the document's url and baseurl 
3800         with the parent frame's url.  WRONG!
3801
3802         * dom/Document.cpp:
3803         (WebCore::Document::open): Only set the url and baseURL in document.open if they are still empty or about:blank
3804
3805 2007-07-20  Maciej Stachowiak  <mjs@apple.com>
3806
3807         Reviewed by Oliver.
3808
3809         <rdar://problem/5326303> REGRESSION: blur event fires upon navigating away from a page with focused element
3810
3811
3812         
3813         The proximate cause was the recent change to keep focus on the
3814         WebHTMLView when switching views. But the reason this happend was
3815         that didCommitLoadForFrame got called at a time when the new view
3816         was in place, but the old document was still there. This was a
3817         longstanding problem with the delegate, and fixing it cleans it
3818         up.
3819
3820         * loader/FrameLoader.cpp:
3821         (WebCore::FrameLoader::begin): Don't send dispatchWindowObjectAvailable if
3822         caller asked not to (this is to allow order of delegates to be the same).
3823         (WebCore::FrameLoader::transitionToCommitted): Don't emit didCommitLoadForFrame here.
3824         (WebCore::FrameLoader::receivedFirstData): Instead do it here, after calling begin(),
3825         so the new document is set up.
3826         * loader/FrameLoader.h: Add new optional parameter to begin().
3827
3828 2007-07-20  Sam Weinig  <sam@webkit.org>
3829
3830         Reviewed by Beth Dakin.
3831
3832         Update for fix for http://bugs.webkit.org/show_bug.cgi?id=14646
3833         <rdar://problem/5340449>
3834
3835         - Return a CSSValueList instead of CSSValue (with a Pair type) for
3836           computed values of border radii.
3837         - Add ability to CSSValueList to print out a space separated list
3838           instead of a comma.
3839         - Add border radii to list of computed styles that we create and can
3840           iterate over.
3841
3842         * css/CSSComputedStyleDeclaration.cpp:
3843         (WebCore::):
3844         (WebCore::getBorderRadiusCornerValue):
3845         * css/CSSValueList.cpp:
3846         (WebCore::CSSValueList::CSSValueList):
3847         (WebCore::CSSValueList::cssText):
3848         * css/CSSValueList.h:
3849
3850 2007-07-20  Mitz Pettel  <mitz@webkit.org>
3851
3852         Reviewed by Darin.
3853
3854         - http://bugs.webkit.org/show_bug.cgi?id=14626
3855           Make bidiReorderCharacters independent of RenderBlock
3856
3857         No layout test possible because there is no change in functionality.
3858
3859         This patch generalizes RenderBlock's implementation of the Unicode Bidi Algorithm
3860         in the form of the BidiResolver class template. An instance of a BidiResolver class
3861         can generate a sequence of runs with corresponding level and override attributes,
3862         given a range specified by start and end iterators. The iterators can optionally
3863         call back to the BidiResolver instance to push or pop explicit embedding levels.
3864
3865         The patch replaces BidiState with a specialization of BidiResolver that uses
3866         BidiIterators and generates BidiRuns. It also eliminates some of the file statics
3867         in bidi.cpp, instead relying on BidiResolver data members.
3868
3869         The patch makes the BidiContext part of BidiStatus, thus making BidiStatus the
3870         entire state that needs to be saved and restored in order to restart the bidi
3871         algorithm at a given point. Previously, you had to keep and pass around two
3872         separate structures, namely the BidiContext and the BidiStatus.
3873
3874         bidiReorderCharacters is implemented without relying on render objects, using
3875         a BidiResolver specialization that uses simple character buffer iterators and
3876         simple run structures.
3877
3878         * WebCore.pro:
3879         * WebCore.vcproj/WebCore.vcproj:
3880         * WebCore.xcodeproj/project.pbxproj:
3881         * WebCoreSources.bkl:
3882         * platform/BidiContext.cpp: Added.
3883         (WebCore::operator==):
3884         * platform/BidiContext.h: Added.
3885         (WebCore::BidiContext::BidiContext):
3886         (WebCore::BidiContext::ref):
3887         (WebCore::BidiContext::deref):
3888         (WebCore::BidiContext::parent):
3889         (WebCore::BidiContext::level):
3890         (WebCore::BidiContext::dir):
3891         (WebCore::BidiContext::override):
3892         * platform/BidiReorderCharacters.cpp: Added.
3893         (WebCore::CharacterBufferIterator::CharacterBufferIterator):
3894         (WebCore::CharacterBufferIterator::offset):
3895         (WebCore::CharacterBufferIterator::increment):
3896         (WebCore::CharacterBufferIterator::atEnd):
3897         (WebCore::CharacterBufferIterator::current):
3898         (WebCore::CharacterBufferIterator::direction):
3899         (WebCore::CharacterBufferIterator::operator==):
3900         (WebCore::CharacterBufferIterator::operator!=):
3901         (WebCore::::appendRun):
3902         (WebCore::bidiReorderCharacters):
3903         * platform/BidiReorderCharacters.h: Added.
3904         * platform/BidiResolver.h: Added.
3905         (WebCore::BidiStatus::BidiStatus):
3906         (WebCore::operator==):
3907         (WebCore::operator!=):
3908         (WebCore::BidiCharacterRun::BidiCharacterRun):
3909         (WebCore::BidiCharacterRun::reversed):
3910         (WebCore::BidiCharacterRun::dirOverride):
3911         (WebCore::BidiCharacterRun::next):
3912         (WebCore::BidiResolver::):
3913         (WebCore::BidiResolver::context):
3914         (WebCore::BidiResolver::setContext):
3915         (WebCore::BidiResolver::setLastDir):
3916         (WebCore::BidiResolver::setLastStrongDir):
3917         (WebCore::BidiResolver::setEorDir):
3918         (WebCore::BidiResolver::dir):
3919         (WebCore::BidiResolver::setDir):
3920         (WebCore::BidiResolver::status):
3921         (WebCore::BidiResolver::setStatus):
3922         (WebCore::BidiResolver::adjustEmbedding):
3923         (WebCore::BidiResolver::setAdjustEmbedding):
3924         (WebCore::BidiResolver::firstRun):
3925         (WebCore::BidiResolver::lastRun):
3926         (WebCore::BidiResolver::runCount):
3927         (WebCore::::embed):
3928         (WebCore::::deleteRuns):
3929         (WebCore::::reverseRuns):
3930         (WebCore::::createBidiRunsForLine):
3931         * platform/win/PopupMenuWin.cpp:
3932         (WebCore::PopupMenu::paint):
3933         * rendering/RenderBlock.h:
3934         * rendering/RenderFileUploadControl.cpp:
3935         (WebCore::RenderFileUploadControl::paintObject):
3936         * rendering/RenderListBox.cpp:
3937         (WebCore::RenderListBox::paintItemForeground):
3938         * rendering/RootInlineBox.cpp:
3939         (WebCore::RootInlineBox::childRemoved):
3940         (WebCore::RootInlineBox::lineBreakBidiStatus):
3941         (WebCore::RootInlineBox::setLineBreakInfo):
3942         * rendering/RootInlineBox.h:
3943         (WebCore::RootInlineBox::RootInlineBox):
3944         * rendering/bidi.cpp:
3945         (WebCore::BidiIterator::BidiIterator):
3946         (WebCore::BidiState::deleteRuns):
3947         (WebCore::operator==):
3948         (WebCore::operator!=):
3949         (WebCore::bidiNext):
3950         (WebCore::bidiFirst):
3951         (WebCore::BidiState::addRun):
3952         (WebCore::appendRunsForObject):
3953         (WebCore::BidiState::appendRun):
3954         (WebCore::RenderBlock::constructLine):
3955         (WebCore::RenderBlock::computeHorizontalPositionsForLine):
3956         (WebCore::RenderBlock::computeVerticalPositionsForLine):
3957         (WebCore::RenderBlock::bidiReorderLine):
3958         (WebCore::buildCompactRuns):
3959         (WebCore::RenderBlock::layoutInlineChildren):
3960         (WebCore::RenderBlock::determineStartPosition):
3961         (WebCore::RenderBlock::determineEndPosition):
3962         (WebCore::RenderBlock::matchedEndLine):
3963         (WebCore::RenderBlock::skipWhitespace):
3964         * rendering/bidi.h:
3965         (WebCore::BidiRun::BidiRun):
3966         (WebCore::BidiRun::next):
3967
3968 2007-07-20  Darin Adler  <darin@apple.com>
3969
3970         Reviewed by John Sullivan.
3971
3972         - fix for <rdar://problem/5331723> <rdar://problem/5331723> Safari gives error
3973           103 for URLs that Adobe Lightroom's Preview feature produces, with ":1" in the hostname
3974
3975         Test: fast/loader/file-URL-with-port-number.html
3976
3977         * platform/network/ResourceHandle.cpp: (WebCore::ResourceHandle::portAllowed):
3978         Don't do any port blocking for file URLs.
3979
3980 2007-07-20  Mitz Pettel  <mitz@webkit.org>
3981
3982         Reviewed by Darin.
3983
3984         - fix http://bugs.webkit.org/show_bug.cgi?id=14689
3985           REGRESSION (3.0.2-TOT): <select> menu items have incorrect background color
3986
3987         * manual-tests/item-background.html: Added.
3988         * platform/PopupMenuClient.h:
3989         * platform/graphics/Color.cpp:
3990         (WebCore::blendComponent): Renamed the static method blend() to this.
3991         (WebCore::Color::blend): Added. Compositing (in "normal" or "source over"
3992         blend mode) B.blend(C) over A is equivalent to compositing C over the
3993         result of compositing B over A.
3994         (WebCore::Color::blendWithWhite): Changed for the above rename.
3995         * platform/graphics/Color.h:
3996         * platform/win/PopupMenuWin.cpp:
3997         (WebCore::PopupMenu::paint): Changed to use itemBackgroundColor().
3998         * rendering/RenderMenuList.cpp:
3999         (WebCore::RenderMenuList::itemBackgroundColor): Added. Returns the color
4000         that would result from overlaying the item's background color over the
4001         menu's background color over solid white. Note that clientStyle() cannot
4002         be used for the menu's background color, since background color is not
4003         inherited by the inner block (the regression resulted from changing
4004         clientStyle() to return the inner block's style), and that the color
4005         returned from this method is guaranteed to be opaque.
4006         * rendering/RenderMenuList.h:
4007         * rendering/RenderTextControl.cpp:
4008         (WebCore::RenderTextControl::itemBackgroundColor): Added.
4009         * rendering/RenderTextControl.h:
4010
4011 2007-07-20  Rob Buis  <buis@kde.org>
4012
4013         Reviewed by Darin.
4014
4015         http://bugs.webkit.org/show_bug.cgi?id=14642
4016         REGRESSION(r24064-24096): Reflection type effect in canvas tag broke
4017
4018         Do not stop the fill/stroke operation when encountering an empty path.
4019
4020         * html/CanvasRenderingContext2D.cpp:
4021         (WebCore::CanvasRenderingContext2D::fill):
4022         (WebCore::CanvasRenderingContext2D::stroke):
4023
4024 2007-07-20  Lars Knoll  <lars@trolltech.com>
4025
4026         Reviewed by Simon.
4027
4028         Remove some files that are not used anymore.
4029
4030         * platform/qt/FontCacheQt.cpp: Removed.
4031         * platform/qt/FontDataQt.cpp: Removed.
4032         * platform/qt/FontPlatformData.h: Removed.
4033         * platform/qt/FontPlatformDataQt.cpp: Removed.
4034         * platform/qt/GlyphPageTreeNodeQt.cpp: Removed.
4035
4036 2007-07-20  Lars Knoll  <lars@trolltech.com>
4037
4038         Reviewed by Simon.
4039
4040         use the correct font for spaces.
4041
4042         * platform/qt/FontQt.cpp:
4043         (WebCore::generateComponents):
4044
4045 2007-07-20  Lars Knoll  <lars@trolltech.com>
4046
4047         Reviewed by Simon.
4048
4049         spaces where not correctly taken into account for both offsetForPosition and selectionRectForText. Because of that selections sort of worked in LTR text, but completely failed in RTL.
4050
4051         * platform/qt/FontQt.cpp:
4052         (WebCore::TextRunComponent::isSpace):
4053         (WebCore::TextRunComponent::TextRunComponent):
4054         (WebCore::generateComponents):
4055         (WebCore::Font::drawText):
4056         (WebCore::Font::offsetForPosition):
4057         (WebCore::Font::selectionRectForText):
4058
4059 2007-07-20  Lars Knoll  <lars@trolltech.com>
4060
4061         Reviewed by Simon.
4062
4063         fix up some smaller issues in selection handling. It's still not perfect and selections in mixed rtl/ltr text are still broken, but it's getting there.
4064
4065         * platform/qt/FontQt.cpp:
4066         (WebCore::Font::offsetForPosition):
4067         (WebCore::cursorToX):
4068         (WebCore::Font::selectionRectForText):
4069
4070 2007-07-20  Lars Knoll  <lars@trolltech.com>
4071
4072         Reviewed by Simon.
4073
4074         make offsetForPosition and selectionRectForText work correctly with small caps.
4075
4076         * platform/qt/FontQt.cpp:
4077         (WebCore::Font::offsetForPosition):
4078         (WebCore::cursorToX):
4079         (WebCore::Font::selectionRectForText):
4080
4081 2007-07-20  Lars Knoll  <lars@trolltech.com>
4082
4083         Reviewed by Simon.
4084
4085         clip the drawn text correctly when needed.
4086
4087         * platform/qt/FontQt.cpp:
4088         (WebCore::Font::drawText):
4089
4090 2007-07-20  Lars Knoll  <lars@trolltech.com>
4091
4092         Reviewed by Simon.
4093
4094         Fix offsetForPosition and selectionRectForText methods.
4095
4096         * platform/qt/FontQt.cpp:
4097         (WebCore::Font::offsetForPosition):
4098         (WebCore::cursorToX):
4099         (WebCore::Font::selectionRectForText):
4100
4101 2007-07-20  Lars Knoll  <lars@trolltech.com>
4102
4103         Reviewed by Simon.
4104
4105         fix BiDi text rendering.
4106
4107         * platform/qt/FontQt.cpp:
4108         (WebCore::TextRunComponent::TextRunComponent):
4109         (WebCore::generateComponents):
4110         (WebCore::Font::drawText):
4111
4112 2007-07-20  Mark Rowe  <mrowe@apple.com>
4113
4114         Reviewed by Maciej.
4115
4116         Move FTPDirectoryTokenizer::m_templateDocumentData to be a function-scoped static
4117         to avoid creating a global initializer.  This fixes the build for x86_64.
4118
4119         * loader/FTPDirectoryDocument.cpp:
4120         (WebCore::FTPDirectoryTokenizer::loadDocumentTemplate):
4121
4122 2007-07-19  Geoffrey Garen  <ggaren@apple.com>
4123
4124         Reviewed by Maciej Stachowiak.
4125         
4126         Fixed <rdar://problem/5347849> Cache eviction of live decoded data is 
4127         thrash-y
4128         
4129         The solution here is to evict live decoded data based on a strict LRU
4130         model. This should work well as a "scrolling window."
4131
4132         With this patch, I see a substantial reduction in CPU while scrolling
4133         through a page with large images on a low memory system. Layout tests
4134         pass.
4135
4136         * loader/Cache.h: Changed from a size-based vector of LRU lists to a
4137         single LRU list in order to implement strict LRU.
4138         
4139         * loader/CachedResource.h: Removed tracking of access count, since that
4140         was the old cache eviction model.
4141
4142 2007-07-19  Oliver Hunt  <oliver@apple.com>
4143
4144         Reviewed by Maciej.
4145
4146         <rdar://problem/5076807> REGRESSION: Can't undo conversion of inline text (by hitting ESC)
4147         <rdar://problem/5346167> DOM key events triggered during IME composition differ in webkit/mac vs all windows browsers
4148
4149         We now basically match the behaviour of IE/Windows. This means that during composition keydown and autorepeat
4150         keys generate keydown events with a keyCode of 229, which correlates to the windows VK_PROCESSKEY message.
4151         keyup events are generated with the keyCode of the actual key that was pressed.
4152
4153         The only difference is on the first keydown of a composition, in which IE will use keyCode == 229, and we will
4154         send an event with the keyCode for the actual key that was pressed.
4155
4156         * page/EventHandler.cpp:
4157         (WebCore::EventHandler::keyEvent):
4158         * platform/PlatformKeyboardEvent.h:
4159         (WebCore::PlatformKeyboardEvent::setWindowsKeyCode):
4160
4161 2007-07-19  Brady Eidson  <beidson@apple.com>
4162
4163         Reviewed by Sam
4164
4165         <rdar://problem/5134929> REGRESSION: Colon detected as delimiting an empty port is stripped
4166
4167         The fix for this was in KURL::parse() which had a slightly changed rule that would strip the colon if there
4168         was no port.
4169
4170         An additional canonicalization fix was made in window.location.host to match the expected behavior of leaving
4171         the colon in place - before this fix, if the colon was there but no port was there, we'd see the port as 0.
4172
4173         * bindings/js/kjs_window.cpp:
4174         (KJS::Location::put): Call setHostAndPort instead of setHost and setPort seperately
4175
4176         * manual-tests/location-host-canonicalization.html: Added.
4177
4178         * platform/KURL.cpp:
4179         (WebCore::KURL::setHostAndPort): Set the host and port as one string component then reparse the URL
4180         (WebCore::KURL::parse): Change one line to consider the empty colon as part of the host name
4181         * platform/KURL.h:
4182
4183 2007-07-19  Anders Carlsson  <andersca@apple.com>
4184
4185         Reviewed by Adam.
4186
4187         <rdar://problem/5288617>
4188         Crash playing a very large QuickTime movie in Safari
4189         
4190         <rdar://problem/5271174>
4191         http://bugs.webkit.org/show_bug.cgi?id=14148
4192         LEAK: Serious memory consumption and