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