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