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