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