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