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