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