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