Timeline



Sep 11, 2007:

8:16 PM Changeset in webkit [25505] by kdecker
  • 8 edits
    2 adds in trunk

Reviewed by Oliver Hunt.

Fixed: <rdar://problem/5472402> crash due to infinite recursion in expandUseElementsInShadowTree on SVG from wikipedia

  • ksvg2/svg/SVGUseElement.cpp: Added SVG_EXPERIMENTAL #ifdef for expandUseElementsInShadowTree(). (WebCore::SVGUseElement::buildPendingResource): Ditto. (WebCore::SVGUseElement::associateInstancesWithShadowTreeElements): Tweaked an ASSERT to not fire on non-experimental builds.
  • ksvg2/svg/SVGUseElement.h: Added SVG_EXPERIMENTAL #ifdef for expandUseElementsInShadowTree().
6:51 PM Changeset in webkit [25504] by sfalken
  • 1 copy in tags/Safari-523.5b

New tag.

4:32 PM Known incompatibilities between open-source WebKit and Safari edited by beidson@apple.com
(diff)
3:44 PM Changeset in webkit [25503] by beidson
  • 4 edits in trunk/WebCore

Reviewed by Maciej

Fix for <rdar://problem/5473046> - Crash when resetting all icons

Originally I'd written the "reset all icons" to be synchronous on the main thread, but it
was decided that it should be async since it involved I/O. Turns out it needs to be... both!
Synchronous removal of all in-memory records of icons, and then continue and clean up the
on-disk database on the background thread.

Also, it turns out that resetting all the page url retain counts should *not* be part of
"reset all icons" because it breaks various contracts the API makes about maintaining retain counts.

The problem that occured here was removing all the icons, then all the history items that were
removed as part of "Reset Safari..." would try to release their icon, but their icon doesn't exist
anymore.

We get around this by simply leaving the in-memory page url records and retain counts alone - they
are still wiped from disk.

  • loader/icon/IconDatabase.cpp: (WebCore::IconDatabase::removeAllIcons): Clear in-memory records of all icons then tell the thread to wipe the on-disk tables (WebCore::IconDatabase::removeAllIconsOnThread): Only do the disk cleanup - in-memory maintenance is handled on the main thread (WebCore::IconDatabase::cleanupSyncThread): Now that it's possible for new "icons to be written to disk" to appear while on-disk deleting is occuring, let the cleanup procedure perform 1 final write *after* it does the remove all icons
  • loader/icon/IconDatabase.h: Removed unused lock and condition
  • loader/icon/PageURLRecord.cpp: (WebCore::PageURLRecord::setIconRecord): Allow setting a NULL icon record, so a PageURLRecord can be cleared as part of removeAllIcons()
3:13 PM Changeset in webkit [25502] by tristan
  • 2 edits in trunk/WebCore

Reviewed by David Harrison.


<rdar://problem/5467203> CrashTracer: [USER] 1 crash in Mail at <unknown binary>: WebCore::Range::startContainer const

  • editing/SelectionController.cpp: (WebCore::SelectionController::addRange): (WebCore::SelectionController::setSelectedRange): Added a check to make sure the passed in Range* value is not null before performing operations on it.
2:50 PM Changeset in webkit [25501] by thatcher
  • 2 edits in trunk/WebKit

Reviewed by Darin.

Remove the unused class_getMethodImplementation function.

  • Misc/WebNSObjectExtras.h:
1:59 PM Changeset in webkit [25500] by justing
  • 4 edits
    2 adds in trunk

WebCore:

Reviewed by Maciej.


<rdar://problem/5458246>
GoogleDocs: A hang occurs when applying list styling to selection that contains a <HR>


List insertion moves selected paragraphs into list items, and relies on the selection
preservation code inside moveParagraphs to iterate over the selected paragraphs.
When list insertion would try to listify a paragraph that came after a list item
containing an <hr>, the selection preservation code would set an incorrect ending
selection because of a TextIterator bug, and we would try to listify the same
paragraph over and over.


  • editing/CompositeEditCommand.cpp: (WebCore::CompositeEditCommand::moveParagraphs): Pass range compliant equivalents to the Range constructor here. The position [hr, 0] is not a valid DOM Range endpoint for example.
  • editing/TextIterator.cpp: (WebCore::shouldEmitSpaceForNode): Added. (WebCore::TextIterator::handleNonTextNode): Emit a space to represent a horizontal rule, since it has VisiblePositions before and after it, but only for TextIterators used for selection preservation, so innerText will be unaffected.

LayoutTests:

Reviewed by Maciej.

  • editing/execCommand/5458246-expected.txt: Added.
  • editing/execCommand/5458246.html: Added.
1:57 PM Changeset in webkit [25499] by kmccullo
  • 2 edits
    2 moves in trunk/WebKitTools

Reviewed by Adam.

  • Just doing the moves in a separate patch so the changes are easier to see.
  • Drosera/win/DebuggerClient.cpp: Copied from Drosera/win/DebuggerDocumentWin.cpp.
  • Drosera/win/DebuggerClient.h: Copied from Drosera/win/DebuggerDocumentWin.h.
  • Drosera/win/DebuggerDocumentWin.cpp: Removed.
  • Drosera/win/DebuggerDocumentWin.h: Removed.
  • Drosera/win/Drosera.vcproj/Drosera.vcproj:
11:53 AM Changeset in webkit [25498] by ggaren
  • 3 edits in trunk/WebKit

Reviewed by Oliver Hunt.


Fixed CFNetwork version check so it actually works.

  • Misc/WebKitVersionChecks.h:
  • WebView/WebView.mm: (+[WebView _setCacheModel:]): Don't use NSVersionOfLinkTimeLibrary because we don't link against CFNetwork directly, so it returns -1. Also, use the proper hex encoding instead of decimal numbers.
11:29 AM Changeset in webkit [25497] by adachan
  • 3 edits in trunk/WebCore

<rdar://problem/5472130> Support NTLM authentication via CFNetwork.

Reviewed by Darin.

  • platform/network/ProtectionSpace.h: (WebCore::):
  • platform/network/cf/AuthenticationCF.cpp: (WebCore::createCF): (WebCore::core):
11:11 AM Changeset in webkit [25496] by darin
  • 1 edit in trunk/WebKit/win/WebView.cpp

Roll out accidentally-checked in change.

11:10 AM Changeset in webkit [25495] by darin
  • 3 edits in trunk/WebKit
  • redo fix for <rdar://problem/5472899> REGRESSION (TOT): Crash in FrameLoadDelegate loading stationery
  • WebView/WebView.mm: (getMethod): Added. (-[WebView _cacheResourceLoadDelegateImplementations]): Use getMethod. (-[WebView _cacheFrameLoadDelegateImplementations]): Ditto.
10:47 AM Changeset in webkit [25494] by darin
  • 5 edits in trunk

WebCore:

Rubber-stamped by Dave Harrison.

  • fixed pasteboard types here to match WebKit and use constants instead of WebKitSystemInterface
  • platform/mac/PasteboardMac.mm: Use constants for all pasteboard type strings.
  • platform/mac/WebCoreSystemInterface.h: Removed wkCreateURLPasteboardFlavorTypeName and wkCreateURLNPasteboardFlavorTypeName.

WebKit:

Rubber-stamped by Dave Harrison.

  • WebCoreSupport/WebSystemInterface.m: (InitWebCoreSystemInterface): Removed wkCreateURLPasteboardFlavorTypeName and wkCreateURLNPasteboardFlavorTypeName.
9:41 AM Changeset in webkit [25493] by darin
  • 5 edits in trunk/WebKit

Reviewed by Mark Rowe.

  • fix <rdar://problem/5472899> REGRESSION (TOT): Crash in FrameLoadDelegate loading stationery
  • Misc/WebNSObjectExtras.h: (class_getMethodImplementation): Added. (method_setImplementation): Added.
  • WebView/WebHTMLView.mm: (+[WebHTMLViewPrivate initialize]):
  • Carbon/HIViewAdapter.m: (+[HIViewAdapter bindHIViewToNSView:nsView:]): Remove old-ObjC code path, since WebNSObjectExtras.h now implements everything we need.
  • WebView/WebView.mm: (-[WebView _cacheResourceLoadDelegateImplementations]): Don't bother doing a separate respondsToSelector call, since class_getMethodImplementation will return 0 for selectors that we don't respond to. The bug fix is to actually set the cached pointer to 0. Also get rid of the unnecessary use of a macro; instead use the functions from WebNSObjectExtras.h on Tiger and the appropriate function directly on Leopard. (-[WebView _cacheFrameLoadDelegateImplementations]): Ditto.
9:35 AM Changeset in webkit [25492] by ddkilzer
  • 2 edits in trunk/WebKitTools

WebKitTools:

Don't overwrite LD_LIBRARY_PATH, prepend to it. Fixes:
http://bugs.webkit.org/show_bug.cgi?id=15176

  • Scripts/run-launcher: don't replace LD_LIBRARY_PATH with $projectDir, but prepend $projectDir to LD_LIBRARY_PATH (to preserve other paths eg. from jhbuild)
9:33 AM Changeset in webkit [25491] by darin
  • 2 edits in trunk/WebKit

Reviewed by Sam, Ollie.

  • WebView/WebView.mm: (+[WebView _setCacheModel:]): A slightly cleaner 64-bit fix for the NSURLCache capacity code in this file.
9:00 AM Changeset in webkit [25490] by darin
  • 2 edits in trunk/WebKit

Rubber-stamped by Mark Rowe.

  • Misc/WebNSPasteboardExtras.mm: Fix incorrect strings in my last check-in. The strings I checked in were wrong and were breaking layout tests too. These new ones match what WebKitSystemInterface was returning.
8:03 AM Changeset in webkit [25489] by bdash
  • 4 edits in trunk/WebCore

2007-09-11 Sven Herzberg <sven@imendio.com>

Reviewed by Mark.

Remove unnecessary fields in FontPlatformData
http://bugs.webkit.org/show_bug.cgi?id=15177

  • platform/gdk/FontDataGdk.cpp: removed the destroy code of the fields that have been removed
  • platform/gdk/FontPlatformData.h: removed m_fontFace, m_fontMatrix and m_options; hask on m_scaledFont
  • platform/gdk/FontPlatformDataGdk.cpp: simplified setFont() by using m_scaledFont only; turned the former struct members into local variables

Sep 10, 2007:

10:33 PM Changeset in webkit [25488] by staikos
  • 2 edits in trunk/WebCore

2007-09-11 George Staikos <staikos@kde.org>

Reviewed by Anders.

Work around gcc bug with some old gcc versions.

  • platform/qt/WidgetQt.cpp: (WebCore::Widget::convertToContainingWindow): (WebCore::Widget::convertFromContainingWindow):
10:19 PM Changeset in webkit [25487] by bdash
  • 3 edits
    4 adds in trunk

2007-09-10 Mitz Pettel <mitz@webkit.org>

Reviewed by Maciej Stachowiak.

Test: fast/repaint/body-background-image.html

  • rendering/RenderBox.cpp: (WebCore::RenderBox::imageChanged): Refined the logic for when the root takes over painting the background, to match paintBoxDecorations(). In particular, if the root has defined a background, the body should paint its own background.

2007-09-10 Mitz Pettel <mitz@webkit.org>

Reviewed by Maciej Stachowiak.

  • fast/repaint/body-background-image.html: Added.
  • platform/mac/fast/repaint/body-background-image-expected.checksum: Added.
  • platform/mac/fast/repaint/body-background-image-expected.png: Added.
  • platform/mac/fast/repaint/body-background-image-expected.txt: Added.
10:17 PM Changeset in webkit [25486] by bdash
  • 2 edits in trunk/WebKit/gtk

2007-09-10 Nigel Tao <nigeltao@gnome.org>

Reviewed by Mark Rowe.

Fix a typo where webkit_gtk_page_can_copy was declared twice,
rather than webkit_gtk_page_can_paste.

  • Api/webkitgtkpage.h:
8:53 PM Changeset in webkit [25485] by ggaren
  • 2 edits in trunk/WebKit

Fixed 64-bit build (I think).

  • WebView/WebView.mm: (max): Added. In 64-bit land, -diskCapacity magically starts returning unsigned long instead of unsigned, so we define a custom max() that's willing to compare unsigned to unsigned long.
6:03 PM Changeset in webkit [25484] by harrison
  • 9 edits
    8 adds in trunk

WebCore:

Reviewed by Kevin and Tristan.

Tests added:

  • editing/pasteboard/paste-into-anchor-text.html: Added.
  • editing/pasteboard/paste-table-cells.html: Added.

Source changes:

  • editing/CompositeEditCommand.cpp: (WebCore::CompositeEditCommand::positionAvoidingSpecialElementBoundary): Nil check enclosingAnchor.


  • editing/ReplaceSelectionCommand.cpp: (WebCore::ReplaceSelectionCommand::removeNodeAndPruneAncestors): New. Keeps m_firstNodeInserted and m_lastLeafInserted updated.


(WebCore::ReplaceSelectionCommand::negateStyleRulesThatAffectAppearance):
Added a comment.


(WebCore::ReplaceSelectionCommand::removeRedundantStyles):
Let ReplaceSelectionCommand::removeNodeAndPruneAncestors() update the nodes.


(WebCore::ReplaceSelectionCommand::doApply):
Pass originalVisPosBeforeEndBR to shouldRemoveEndBR()


(WebCore::ReplaceSelectionCommand::shouldRemoveEndBR):
Don't remove the br if nothing was inserted.


  • editing/ReplaceSelectionCommand.h: Add VisiblePosition parameter to shouldRemoveEndBR()


  • editing/markup.cpp: (WebCore::createMarkup): Wrap orphan tr element with a table element, just like we were doing for tobody elements.

LayoutTests:

Reviewed by Kevin and Tristan.

<rdar://problem/5456800> Mail crashes at WebCore::nextCandidate() after pasting back into a <table> multiple times

  • editing/pasteboard/paste-into-anchor-text.html: Added.
  • editing/pasteboard/paste-table-cells.html: Added.
  • editing/pasteboard/quirks-mode-br-1-expected.checksum:
  • editing/pasteboard/quirks-mode-br-1-expected.txt:
  • editing/pasteboard/quirks-mode-br-1.html:
  • platform/mac/editing/pasteboard/paste-into-anchor-text-expected.checksum: Added.
  • platform/mac/editing/pasteboard/paste-into-anchor-text-expected.png: Added.
  • platform/mac/editing/pasteboard/paste-into-anchor-text-expected.txt: Added.
  • platform/mac/editing/pasteboard/paste-table-cells-expected.checksum: Added.
  • platform/mac/editing/pasteboard/paste-table-cells-expected.png: Added.
  • platform/mac/editing/pasteboard/paste-table-cells-expected.txt: Added.
5:16 PM Changeset in webkit [25483] by thatcher
  • 2 edits in trunk/JavaScriptCore

Reviewed by Darin Adler.

<rdar://problem/5456224> CrashTracer: [USER] 2 crashes in Toast Titanium at com.apple.CoreServices.CarbonCore: CSMemDisposePtr + 37

Removed the implementation of these malloc zone functions. We do not have the ability to
check if a pointer is valid or not, so we can't correctly implement them. The system free
does not fail if you pass in a bad pointer.

  • wtf/FastMalloc.cpp: (WTF::FastMallocZone::size): (WTF::FastMallocZone::zoneMalloc): (WTF::FastMallocZone::zoneCalloc): (WTF::FastMallocZone::zoneFree): (WTF::FastMallocZone::zoneRealloc):
4:29 PM Changeset in webkit [25482] by kmccullo
  • 2 edits in trunk/LayoutTests

Reviewed by Oliver.

  • Updated Skipped list to remove tests that are now passing.
  • platform/win/Skipped:
4:13 PM Changeset in webkit [25481] by kmccullo
  • 4 edits
    3 deletes in trunk/WebKitTools

Reviewed by Adam.

  • Made an order-of-deletion mistake.
  • Drosera/DebuggerDocument.h:
  • Drosera/ForwardingHeaders/wtf/Assertions.h: Removed.
  • Drosera/ForwardingHeaders/wtf/Noncopyable.h: Removed.
  • Drosera/ForwardingHeaders/wtf/OwnPtr.h: Removed.
  • Drosera/mac/DebuggerClient.mm: (DebuggerDocument::platformPause): (DebuggerDocument::platformResume): (DebuggerDocument::platformStepInto): (DebuggerDocument::platformEvaluateScript): (DebuggerDocument::getPlatformCurrentFunctionStack): (DebuggerDocument::getPlatformLocalScopeVariableNamesForCallFrame): (DebuggerDocument::platformValueForScopeVariableNamed):
  • Drosera/mac/Drosera.xcodeproj/project.pbxproj:
3:59 PM Changeset in webkit [25480] by kmccullo
  • 5 edits
    2 moves
    3 adds in trunk/WebKitTools

Reviewed by Darin.

  • Renaming DebuggerDocument[platform] to DebuggerClient to be more clear.
  • Drosera/DebuggerDocument.cpp: (DebuggerDocument::DebuggerDocument):
  • Drosera/DebuggerDocument.h:
  • Drosera/ForwardingHeaders/wtf/Assertions.h: Added.
  • Drosera/ForwardingHeaders/wtf/Noncopyable.h: Added.
  • Drosera/ForwardingHeaders/wtf/OwnPtr.h: Added.
  • Drosera/mac/DebuggerApplication.mm: (-[DebuggerApplication attach:]):
  • Drosera/mac/DebuggerClient.h: Copied from Drosera/mac/DebuggerDocumentMac.h.
  • Drosera/mac/DebuggerClient.mm: Copied from Drosera/mac/DebuggerDocumentMac.mm. (DebuggerDocument::platformPause): (DebuggerDocument::platformResume): (DebuggerDocument::platformStepInto): (DebuggerDocument::platformEvaluateScript): (DebuggerDocument::getPlatformCurrentFunctionStack): (DebuggerDocument::getPlatformLocalScopeVariableNamesForCallFrame): (DebuggerDocument::platformValueForScopeVariableNamed): (DebuggerDocument::platformLog):
  • Drosera/mac/DebuggerDocumentMac.h: Removed.
  • Drosera/mac/DebuggerDocumentMac.mm: Removed.
  • Drosera/mac/Drosera.xcodeproj/project.pbxproj:
3:53 PM Changeset in webkit [25479] by thatcher
  • 1 edit in tags/Safari-5523.5.1/WebKit/Configurations/Version.xcconfig

Versioning

3:49 PM Changeset in webkit [25478] by thatcher
  • 7 edits in tags/Safari-5523.5.1/WebKit

Merge r25476.

3:41 PM Changeset in webkit [25477] by thatcher
  • 1 copy in tags/Safari-5523.5.1

New tag.

3:39 PM Changeset in webkit [25476] by darin
  • 7 edits in trunk/WebKit

Reviewed by Tim Hatcher.

  • <rdar://problem/5471082> Removing WebURLPboardType from headers broke SPI-using applications

Rolled out my fix for bug 4582212 and fixed it in a much simpler way.

  • Misc/WebNSPasteboardExtras.h:
  • Misc/WebNSPasteboardExtras.mm:
  • WebCoreSupport/WebPasteboardHelper.mm:
  • WebKit.exp:
  • WebView/WebHTMLView.mm:
  • WebView/WebView.mm: Rolled out the new PasteboardType functions and changed the PboardType globals to be initialized with constant values.
2:47 PM Changeset in webkit [25475] by sfalken
  • 2 edits in trunk/WebKit/win

Remove site-specific hacks that we don't need anymore.

Reviewed by Adam.

  • WebView.cpp: (WebView::userAgentForKURL):
2:32 PM Changeset in webkit [25474] by sfalken
  • 3 edits in trunk/WebKit/win

Prevent WebKit version numbers from containing "4" in Windows.

Reviewed by Darin.

  • WebKit.vcproj/VERSION: Bump version since our current version ends in 4.
  • WebKit.vcproj/auto-version.sh: Add version checking code.
2:23 PM Changeset in webkit [25473] by ddkilzer
  • 2 edits in trunk/WebCore

WebCore:

Rubberstamped by Kevin Decker.

No test required since there is no change in functionality.

  • history/BackForwardList.cpp: (WebCore::BackForwardList::BackForwardList): Fix misspelling of DefaultCapacitiy to DefaultCapacity.
2:21 PM Changeset in webkit [25472] by staikos
  • 2 edits in trunk/WebKitQt

Don't double-encode URL fragments

2:15 PM Changeset in webkit [25471] by tristan
  • 3 edits
    4 adds in trunk

WebCore:

Reviewed by Adele Peterson.

Test: fast/forms/menulist-clip.html

  • rendering/RenderMenuList.cpp: (WebCore::RenderMenuList::controlClipRect): Use correct coordinates for the inner block's content rect.

LayoutTests:

Reviewed by Adele Peterson.

  • fast/forms/menulist-clip.html: Added.
  • platform/mac/fast/forms/menulist-clip-expected.checksum: Added.
  • platform/mac/fast/forms/menulist-clip-expected.png: Added.
  • platform/mac/fast/forms/menulist-clip-expected.txt: Added.
2:08 PM Changeset in webkit [25470] by beidson
  • 4 edits in trunk/WebCore

Reviewed by Darin, Sam, Oliver, Geoff, probably others - what a fun one to review!

<rdar://problem/5471641> - URLs get the wrong icon

Turns out sqlite3_reset() doesn't clear bindings, so previously bound icons were being
written out for pages without icons. Easy fix!

  • loader/icon/IconDatabase.cpp: (WebCore::IconDatabase::writeIconSnapshotToSQLDatabase): For null icons, manually bind NULL - otherwise, the previously bound icon will be written out to disk
  • loader/icon/SQLStatement.cpp: (WebCore::SQLStatement::bindNull): Access to sqlite3_bind_null
  • loader/icon/SQLStatement.h:
2:05 PM Changeset in webkit [25469] by andersca
  • 2 edits in trunk/WebCore

Reviewed by Oliver and Darin.

<rdar://problem/5468613>
Using shockwave pages first time after plugin install crashed safari in PluginPing.


Only restore the window proc if the plugin didn't override it.


  • plugins/win/PluginViewWin.cpp: (WebCore::PluginViewWin::stop):
1:55 PM Changeset in webkit [25468] by justing
  • 14 edits
    2 adds
    2 deletes in trunk

WebCore:

Reviewed by Darin.

<rdar://problem/5467405>
Revert back behavior of -webkit-user-select to fix widget selection problems


Rolled out r25086 and r25057. I will be re-opening:
<rdar://problem/5333725> -webkit-user-select: none makes selection difficult
Which we will either to defer or fix by introducing a new value of -webkit-user-select.
<rdar://problem/5370059> REGRESSION: Cannot type into edit fields on a form (sccsheriff.org)
Which we will either defer or fix with Adele's patch that doesn't involve making
-webkit-user-select inherited.

  • css/CSSComputedStyleDeclaration.cpp: (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue):
  • css/CSSStyleSelector.cpp: (WebCore::CSSStyleSelector::adjustRenderStyle): (WebCore::CSSStyleSelector::applyProperty):
  • editing/SelectionController.cpp: (WebCore::SelectionController::selectAll):
  • page/EventHandler.cpp: (WebCore::EventHandler::selectClosestWordFromMouseEvent): (WebCore::EventHandler::handleMousePressEventTripleClick): (WebCore::EventHandler::handleMousePressEventSingleClick): (WebCore::EventHandler::updateSelectionForMouseDrag): (WebCore::EventHandler::selectCursor): (WebCore::EventHandler::canMouseDownStartSelect):
  • page/EventHandler.h:
  • rendering/RenderObject.cpp: (WebCore::selectStartNode): (WebCore::RenderObject::canSelect): (WebCore::RenderObject::shouldSelect): (WebCore::RenderObject::draggableNode):
  • rendering/RenderObject.h:
  • rendering/RenderStyle.cpp: (WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData): (WebCore::StyleRareNonInheritedData::operator==): (WebCore::StyleRareInheritedData::StyleRareInheritedData): (WebCore::StyleRareInheritedData::operator==): (WebCore::RenderStyle::diff):
  • rendering/RenderStyle.h: (WebCore::): (WebCore::RenderStyle::userSelect): (WebCore::RenderStyle::setUserSelect): (WebCore::RenderStyle::initialUserSelect):

LayoutTests:

Reviewed by Darin.


<rdar://problem/5467405>
Revert back behavior of -webkit-user-select to fix widget selection problems

  • editing/selection/5333725.html: Removed.
  • editing/selection/5333725.html-disabled: Added.
  • editing/selection/user-select-text-inside-user-select-ignore.html: Removed.
  • editing/selection/user-select-text-inside-user-select-ignore.html-disabled: Added.
  • fast/css/computed-style-expected.txt:
  • fast/css/computed-style-without-renderer-expected.txt:
10:51 AM Changeset in webkit [25467] by thatcher
  • 2 edits in trunk/WebKit

Reviewed by Darin.

Always animate when calling _scrollTo.

  • WebView/WebFrameView.mm: (-[WebFrameView _scrollVerticallyBy:]): (-[WebFrameView _scrollHorizontallyBy:]):
7:55 AM Changeset in webkit [25466] by antti
  • 6 edits
    3 adds in trunk

WebCore:

Reviewed by Kevin.

Fix <rdar://problem/5444866>
REGRESSION: missing text in Acrobat "Getting Started" screen due to change in load ordering of large resources


Make external scripts loaded using file: wait until all style sheet loads have completed before executing.
Fixes a class of problems where there is a dependency between script and stylesheet and results would effectively
get randomized based on which order the resources arrived. In Tiger file loads were effectively serialized by
lower level components, which is why this regressed.

Test: http/tests/local/stylesheet-and-script-load-order.html

  • dom/Document.cpp: (WebCore::Document::removePendingSheet):
  • dom/Tokenizer.h: (WebCore::Tokenizer::executeScriptsWaitingForStylesheets):
  • html/HTMLTokenizer.cpp: (WebCore::HTMLTokenizer::HTMLTokenizer): (WebCore::HTMLTokenizer::begin): (WebCore::HTMLTokenizer::executeScriptsWaitingForStylesheets): (WebCore::HTMLTokenizer::notifyFinished):
  • html/HTMLTokenizer.h:

LayoutTests:

Reviewed by Kevin.


Test for <rdar://problem/5444866>
REGRESSION: missing text in Acrobat "Getting Started" screen due to change in load ordering of large resources

  • http/tests/local/stylesheet-and-script-load-order-expected.txt: Added.
  • http/tests/local/stylesheet-and-script-load-order.html: Added.
  • http/tests/local/stylesheet-dependent.js: Added.

Sep 9, 2007:

9:56 PM Changeset in webkit [25465] by weinig
  • 1 edit
    2 moves in trunk/LayoutTests

Disable more occasionally failing tests.

  • http/tests/security/dataURL/xss-DENIED-from-data-url-in-foreign-domain-subframe.html: Removed.
  • http/tests/security/dataURL/xss-DENIED-from-data-url-in-foreign-domain-subframe.html-disabled: Copied from http/tests/security/dataURL/xss-DENIED-from-data-url-in-foreign-domain-subframe.html.
  • http/tests/security/dataURL/xss-DENIED-to-data-url-in-foreign-domain-window-open.html: Removed.
  • http/tests/security/dataURL/xss-DENIED-to-data-url-in-foreign-domain-window-open.html-disabled: Copied from http/tests/security/dataURL/xss-DENIED-to-data-url-in-foreign-domain-window-open.html.
8:32 PM Changeset in webkit [25464] by dsmith
  • 3 edits in trunk/WebCore

Reviewed by Maciej Stachowiak.


http://bugs.webkit.org/show_bug.cgi?id=15148
Bug 15148: Poor performance on crazy DOM raytracer


Switch data structures to avoid quadratic behavior.

  • rendering/RenderBlock.cpp: (WebCore::RenderBlock::layoutPositionedObjects): Update for ListHashSet (WebCore::RenderBlock::markPositionedObjectsForLayout): Update for ListHashSet (WebCore::RenderBlock::insertPositionedObject): Use ListHashSet to avoid expensive uniqueing (WebCore::RenderBlock::removePositionedObject): Update for ListHashSet (WebCore::RenderBlock::removePositionedObjects): Update for ListHashSet (WebCore::RenderBlock::lowestPosition): Update for ListHashSet (WebCore::RenderBlock::rightmostPosition): Update for ListHashSet (WebCore::RenderBlock::leftmostPosition): Update for ListHashSet (WebCore::RenderBlock::rightBottom): Update for ListHashSet
  • rendering/RenderBlock.h: Change m_positionedObjects from DeprecatedPtrList to ListHashSet
7:08 PM Changeset in webkit [25463] by beidson
  • 2 edits in trunk/WebCore

Rubberstamped by Darin

pthread_main_np() is a Darwin thing, not a Mac thing

  • loader/icon/IconDatabase.cpp: (WebCore::IconDatabase::IconDatabase):
5:05 PM Changeset in webkit [25462] by weinig
  • 5 edits in trunk

WebKitTools:

Reviewed by Mark Rowe.

Remove 'objC' prefix from methods now in the ObjCController.

  • DumpRenderTree/ObjCController.m: (+[ObjCController isSelectorExcludedFromWebScript:]): (+[ObjCController webScriptNameForSelector:]): (-[ObjCController classNameOf:]): (-[ObjCController objectOfClass:]): (-[ObjCController identityIsEqual::]): (-[ObjCController longLongRoundTrip:]): (-[ObjCController unsignedLongLongRoundTrip:]):

LayoutTests:

Reviewed by Mark Rowe.

Update tests now that the 'objC' prefix is no longer used for methods of the ObjCController.

  • fast/dom/wrapper-classes.html:
  • platform/mac/fast/objc/longlongTest.html:
4:48 PM Known incompatibilities between open-source WebKit and Safari edited by bdash@webkit.org
(diff)
4:48 PM Known incompatibilities between open-source WebKit and Safari edited by bdash@webkit.org
(diff)
4:41 PM Changeset in webkit [25461] by weinig
  • 10 edits
    4 adds in trunk

WebKitTools:

Reviewed by Oliver.

Initial refactor of DumpRenderTree in preparation of making it more platform independent.

  • Move LayoutTestController into its own file.
  • Move Objective-C only functions on LayoutTestController into a new controller called the ObjCController.
  • DumpRenderTree/DumpRenderTree.h:
  • DumpRenderTree/DumpRenderTree.m: (displayWebView):
  • DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
  • DumpRenderTree/FrameLoadDelegate.m: (-[FrameLoadDelegate webView:didClearWindowObject:forFrame:]):
  • DumpRenderTree/LayoutTestController.h: Added.
  • DumpRenderTree/LayoutTestController.m: Added. (+[LayoutTestController isSelectorExcludedFromWebScript:]): (+[LayoutTestController webScriptNameForSelector:]): (-[LayoutTestController clearBackForwardList]): (-[LayoutTestController setUseDashboardCompatibilityMode:]): (-[LayoutTestController setCloseRemainingWindowsWhenComplete:]): (-[LayoutTestController setCustomPolicyDelegate:]): (-[LayoutTestController keepWebHistory]): (-[LayoutTestController setCallCloseOnWebViews:]): (-[LayoutTestController setCanOpenWindows]): (-[LayoutTestController waitUntilDone]): (-[LayoutTestController waitUntilDoneWatchdogFired]): (-[LayoutTestController notifyDone]): (-[LayoutTestController dumpAsText]): (-[LayoutTestController addFileToPasteboardOnDrag]): (-[LayoutTestController addDisallowedURL:]): (-[LayoutTestController setUserStyleSheetLocation:]): (-[LayoutTestController setUserStyleSheetEnabled:]): (-[LayoutTestController dumpDOMAsWebArchive]): (-[LayoutTestController dumpSourceAsWebArchive]): (-[LayoutTestController dumpSelectionRect]): (-[LayoutTestController dumpTitleChanges]): (-[LayoutTestController dumpBackForwardList]): (-[LayoutTestController windowCount]): (-[LayoutTestController dumpChildFrameScrollPositions]): (-[LayoutTestController dumpChildFramesAsText]): (-[LayoutTestController dumpEditingCallbacks]): (-[LayoutTestController dumpResourceLoadCallbacks]): (-[LayoutTestController dumpFrameLoadCallbacks]): (-[LayoutTestController setWindowIsKey:]): (-[LayoutTestController setMainFrameIsFirstResponder:]): (-[LayoutTestController display]): (-[LayoutTestController testRepaint]): (-[LayoutTestController repaintSweepHorizontally]): (-[LayoutTestController invokeUndefinedMethodFromWebScript:withArguments:]): (-[LayoutTestController _addWorkForTarget:selector:arg1:arg2:]): (-[LayoutTestController _doLoad:target:]): (-[LayoutTestController _doBackOrForwardNavigation:]): (-[LayoutTestController queueBackNavigation:]): (-[LayoutTestController queueForwardNavigation:]): (-[LayoutTestController queueReload]): (-[LayoutTestController queueScript:]): (-[LayoutTestController queueLoad:target:]): (-[LayoutTestController setAcceptsEditing:]): (-[LayoutTestController setTabKeyCyclesThroughElements:]): (-[LayoutTestController storeWebScriptObject:]): (-[LayoutTestController accessStoredWebScriptObject]): (-[LayoutTestController dealloc]): (-[LayoutTestController decodeHostName:]): (-[LayoutTestController encodeHostName:]):
  • DumpRenderTree/ObjCController.h: Added.
  • DumpRenderTree/ObjCController.m: Added. (+[ObjCController isSelectorExcludedFromWebScript:]): (+[ObjCController webScriptNameForSelector:]): (-[ObjCController objCClassNameOf:]): (-[ObjCController objCObjectOfClass:]): (-[ObjCController objCIdentityIsEqual::]): (-[ObjCController objCLongLongRoundTrip:]): (-[ObjCController objCUnsignedLongLongRoundTrip:]): (-[ObjCController testWrapperRoundTripping:]):

LayoutTests:

Reviewed by Oliver.

Change objective-c tests to use the new ObjCController.

  • fast/dom/Window/window-properties.html:
  • fast/dom/wrapper-classes.html:
  • platform/mac/fast/dom/wrapper-round-tripping.html:
  • platform/mac/fast/objc/longlongTest.html:
4:34 PM Known incompatibilities between open-source WebKit and Safari edited by beidson@apple.com
Added comment about icon db not working fully with current released Safaris (diff)
3:54 PM Changeset in webkit [25460] by zimmermann
  • 13 edits
    24 adds in branches/feature-branch

Reviewed by Oliver.

Rework <pattern> support to take overflow & viewBox into account.
Also fix all possible combinations of patternUnits/patternContentUnits, tested by several batik testcases.

Fixes: http://bugs.webkit.org/show_bug.cgi?id=12221 (Webkit ToT fails to render this pattern example)

6:23 AM Changeset in webkit [25459] by zecke
  • 2 edits in trunk/WebCore

2007-09-09 Holger Hans Peter Freyther <zecke@selfish.org>

Build fix for Gtk+ by adding WebCore::callOnMainThread to the TemporaryLinkStubs.

  • platform/gdk/TemporaryLinkStubs.cpp: (WebCore::callOnMainThread):
12:11 AM Changeset in webkit [25458] by weinig
  • 1 edit
    3 moves in trunk/LayoutTests

Rubber-stamped by Oliver.

Disable occasionally failing tests until the reason for their failure can be determined.

  • http/tests/security/dataURL/xss-DENIED-from-data-url-in-foreign-domain-window-open.html: Removed.
  • http/tests/security/dataURL/xss-DENIED-from-data-url-in-foreign-domain-window-open.html-disabled: Copied from http/tests/security/dataURL/xss-DENIED-from-data-url-in-foreign-domain-window-open.html.
  • http/tests/security/dataURL/xss-DENIED-to-data-url-in-foreign-domain-subframe-location-change.html: Removed.
  • http/tests/security/dataURL/xss-DENIED-to-data-url-in-foreign-domain-subframe-location-change.html-disabled: Copied from http/tests/security/dataURL/xss-DENIED-to-data-url-in-foreign-domain-subframe-location-change.html.
  • http/tests/security/dataURL/xss-DENIED-to-data-url-in-foreign-domain-subframe.html: Removed.
  • http/tests/security/dataURL/xss-DENIED-to-data-url-in-foreign-domain-subframe.html-disabled: Copied from http/tests/security/dataURL/xss-DENIED-to-data-url-in-foreign-domain-subframe.html.

Sep 8, 2007:

10:31 PM Changeset in webkit [25457] by staikos
  • 1 edit in trunk/WebCore/WebCore.pro

missed file in previous checkin

10:14 PM Changeset in webkit [25456] by staikos
  • 2 edits
    2 adds in trunk/WebCore

implement a couple of FileSystem functions and stub out the new thread function
for future implementation

8:13 PM Changeset in webkit [25455] by bdash
  • 4 edits in trunk

2007-09-08 Mark Rowe <mrowe@apple.com>

Build fix for when ENABLE(ICONDATABASE) is not set.

  • loader/icon/IconDatabaseNone.cpp: (WebCore::IconDatabase::~IconDatabase):

2007-09-08 Mark Rowe <mrowe@apple.com>

Qt build fix. Move stub method implementations to the right class.

  • WebCoreSupport/FrameLoaderClientQt.cpp: (WebCore::FrameLoaderClientQt::didPerformFirstNavigation):
7:50 PM Changeset in webkit [25454] by bdash
  • 4 edits in trunk/WebCore

2007-09-08 Mark Rowe <mrowe@apple.com>

More fixes for the Qt and Gtk builds.

  • WebCore.pro: Update for file changes.
  • loader/icon/IconDatabase.cpp: Include errno.h for EDEADLK.
  • loader/icon/PageURLRecord.h:
5:22 PM Changeset in webkit [25453] by justing
  • 4 edits
    2 adds
    2 deletes in trunk

WebCore:

Backing my change back in without the changes to VisiblePosition::next
and previous that weren't necessary to fix the bug and were causing some
layout test failures. Most of the failures appeared to be fixes but I
want more time to investigate and have to move to on to another task.

  • editing/Selection.cpp: (WebCore::Selection::validate):
  • editing/visible_units.cpp: (WebCore::endOfWord):

LayoutTests:

Re-enabling these tests.

  • editing/selection/5057506-2.html: Added.
  • editing/selection/5057506-2.html-disabled: Removed.
  • editing/selection/5057506.html: Added.
  • editing/selection/5057506.html-disabled: Removed.
4:15 PM Changeset in webkit [25452] by beidson
  • 2 edits in trunk/WebCore

Reviewed by Mark Rowe

Fix the _NSAutoreleaseNoPool() errors on launch - We were using NSFileManager on the secondary
thread with no NSAutoreleasePool in place

  • loader/icon/IconDatabase.cpp: (WebCore::IconDatabase::iconDatabaseSyncThread):
3:45 PM Changeset in webkit [25451] by weinig
  • 3 edits in trunk/WebCore

Add fix to the correct file.

  • loader/icon/SQLDatabase.h:
  • loader/icon/SQLStatement.h:
3:25 PM Changeset in webkit [25450] by weinig
  • 2 edits in trunk/WebCore

Fix Windows build.

  • loader/icon/SQLStatement.h: Disable boolean conversion warning.
2:45 PM Changeset in webkit [25449] by bdash
  • 1 copy in tags/Safari-4523.5

New tag.

2:44 PM Changeset in webkit [25448] by beidson
  • 2 edits in trunk/WebKitQt

YABF (Yet Another Build Fix)

  • Api/qwebsettings.cpp: (QWebSettings::iconDatabaseEnabled):
2:35 PM Changeset in webkit [25447] by beidson
  • 3 edits in trunk/WebKit/gtk

Better build fix

  • WebCoreSupport/FrameLoaderClientGtk.cpp: (WebKit::FrameLoaderClient::registerForIconNotification):
  • WebCoreSupport/FrameLoaderClientGtk.h:
2:30 PM Changeset in webkit [25446] by beidson
  • 3 edits in trunk/WebKitQt

Better build fix

  • WebCoreSupport/FrameLoaderClientQt.cpp: (WebCore::FrameLoaderClient::registerForIconNotification):
  • WebCoreSupport/FrameLoaderClientQt.h:
2:24 PM Changeset in webkit [25445] by beidson
  • 3 edits in trunk/WebKit/gtk

Build fix

  • WebCoreSupport/FrameLoaderClientGtk.cpp: (WebKit::FrameLoaderClient::registerForIconNotification):
  • WebCoreSupport/FrameLoaderClientGtk.h:
2:19 PM Changeset in webkit [25444] by beidson
  • 3 edits in trunk/WebKitQt

Build fix

  • WebCoreSupport/FrameLoaderClientQt.cpp: (WebCore::FrameLoaderClient::registerForIconNotification):
  • WebCoreSupport/FrameLoaderClientQt.h:
2:09 PM Changeset in webkit [25443] by beidson
  • 2 edits in trunk/WebCore

Build fix for non-Mac platforms that use Icon Database

  • loader/icon/IconDatabase.cpp: (WebCore::IconDatabase::IconDatabase): Apparently only Mac has the beauty that is pthread_main_np()
1:58 PM Changeset in webkit [25442] by bdash
  • 4 edits in trunk

Versioning.

1:57 PM Changeset in webkit [25441] by bdash
  • 1 copy in tags/Safari-5523.5

New tag.

1:48 PM Changeset in webkit [25440] by bdash
  • 2 edits in trunk/WebCore

2007-09-08 Mark Rowe <mrowe@apple.com>

Build fix.

  • WebCore.xcodeproj/project.pbxproj: Headers used up in WebKit need to be be "private" rather than "project".
1:33 PM Changeset in webkit [25439] by beidson
  • 28 edits
    9 adds
    2 deletes in trunk

WebCore:

Reviewed by Darin

<rdar://problem/5434431> - Asynchronous Icon Database

The IconDatabase API was originally designed to be fully asynchronous - if an icon wasn't read in from disk
when you asked for it, you would be notified when it was.

Safari 2 did writes on a background thread, but reads blocked the main thread.

The current WebCore implementation using SQLite attempted to get rid of the background thread by defering expensive
writes via timers, but falls short in moderate to extreme usage cases

Time to make the IconDatabase live up to it's fully asynchronous destiny.

This should -

  • Make the browser instantly usable while converting Safari 2 icons in the background occurs
  • Remedy any UI slowness/blocking when on slow network home directories
  • Remedy random UI slowness, pauses, and stutters do to random I/O occurring at the exact wrong time or under heavy disk usage from swapping or other apps on the system
  • Allow certain long-running procedures to be interruptible (Safari 2 import, reading icons in from disk when trying to quit, etc)

This will have a noticeable effect on current Safari 2 and Safari 3 beta browsers, including icons not appearing in bookmarks, history,
or the location field the first time they're asked for, as current released Safari's don't properly listen for these async notifations.
The second time such a menu or view is brought up, the icon should be there.

Additionally this includes a SQLite schema change which will be a lot more efficient but will result in the loss of current SQLite icons.
Converting from Safari 2 style icons will still work.

WebCore, welcome to multi-threadedness

  • WebCore.exp:
  • WebCore.xcodeproj/project.pbxproj:
  • WebCore.vcproj/WebCore.vcproj:
  • loader/DocumentLoader.cpp: (WebCore::DocumentLoader::iconLoadDecisionAvailable): Called when an Icon becomes available that was requested by this DocumentLoader (to support the webView:didReceiveIcon: delegate call in WebKit)
  • loader/DocumentLoader.h:
  • loader/FrameLoader.cpp: (WebCore::FrameLoader::iconLoadDecisionAvailable): Called from the DocumentLoaders who get notified - if the FrameLoader ends up not caring because the WebView has transitioned to a new page, nothing occurs. Otherwise, the FrameLoader possibly starts it Icon Loader and possibly sends the webView:didReceiveIcon: delegate call (WebCore::FrameLoader::startIconLoader): Instead of "Yes, load the icon now" or "No, don't load it" there is a third possibility - "You might be asked to load your icon later." Add supporting logic for receiving this state, and being called a second time when the load decision is finally available.
  • loader/FrameLoader.h:
  • loader/FrameLoaderClient.h: Added "registerForIconNotification" which is a way to tell WebViews "The icon you are interested in might become available via the generic WebIconDatabaseDidAddIconNotification instead of a targeted delegate call" A WebView can then receive the generic notification and pass on it's own targeted delegate call.
  • loader/icon/IconDataCache.cpp: Removed.
  • loader/icon/IconDataCache.h: Removed.
  • loader/icon/IconDatabase.cpp: (WebCore::urlForLogging): Cut a URL down in length for sane logging and debugging (WebCore::defaultClient): Return the default, empty IconDatabaseClient incase the API doesn't set one.

Following block of methods are for the Main thread's usage -
(WebCore::IconDatabase::setClient):
(WebCore::makeAllDirectories): Small optimization that checks to see if the entire path exists already, and doesn't try to loop

through each patch component if the full path is already present

(WebCore::IconDatabase::open): Makes all directories to the target path and kicks off the background thread - nothing more.
(WebCore::IconDatabase::close): Signals the thread to quit and waits for it to do so
(WebCore::IconDatabase::removeAllIcons): Purge the icon database
(WebCore::IconDatabase::iconForPageURL):
(WebCore::IconDatabase::readIconForPageURLFromDisk):
(WebCore::IconDatabase::iconURLForPageURL):
(WebCore::IconDatabase::defaultIcon):
(WebCore::IconDatabase::retainIconForPageURL):
(WebCore::IconDatabase::releaseIconForPageURL):
(WebCore::IconDatabase::setIconDataForIconURL):
(WebCore::IconDatabase::setIconURLForPageURL):
(WebCore::IconDatabase::loadDecisionForIconURL): Determine if an icon loader should load now. If the decision is "maybe later", then

mark the DocumentLoader to be notified later when the final decision is available.

(WebCore::IconDatabase::iconDataKnownForIconURL): Determine if the actual image data has been read from disk (or set from the loader) for

icon URL in question

(WebCore::IconDatabase::setEnabled):
(WebCore::IconDatabase::isEnabled):
(WebCore::IconDatabase::setPrivateBrowsingEnabled):
(WebCore::IconDatabase::isPrivateBrowsingEnabled):
(WebCore::IconDatabase::delayDatabaseCleanup): Restore this method from a year ago, as asynchronous pruning of icons can now occur on a

background thread.

(WebCore::IconDatabase::allowDatabaseCleanup):
(WebCore::IconDatabase::checkIntegrityBeforeOpening):
(WebCore::IconDatabase::pageURLMappingCount):
(WebCore::IconDatabase::retainedPageURLCount):
(WebCore::IconDatabase::iconRecordCount):
(WebCore::IconDatabase::iconRecordCountWithData):
(WebCore::IconDatabase::IconDatabase):
(WebCore::IconDatabase::~IconDatabase):
(WebCore::IconDatabase::notifyPendingLoadDecisions): Tell all the registered DocumentLoaders "Hey, we've read in all URL mappings from disk,

so check to see if you are interested in any of them"

(WebCore::IconDatabase::notifyPendingLoadDecisionsInternal):
(WebCore::IconDatabase::wakeSyncThread): Wake the sync thread, if it is idle
(WebCore::IconDatabase::scheduleOrDeferSyncTimer): Even though we're on a background thread, we still defer writing out to disk during

periods of high activity

(WebCore::IconDatabase::syncTimerFired): Call wakeSyncThread()

Following block of methods may be used by either thread -
(WebCore::IconDatabase::isOpen):
(WebCore::IconDatabase::databasePath):
(WebCore::IconDatabase::defaultDatabaseFilename):
(WebCore::IconDatabase::getOrCreateIconRecord):
(WebCore::IconDatabase::getOrCreatePageURLRecord):

Following block of methods are used by the secondary thread only -
(WebCore::IconDatabase::importIconURLForPageURL): For the Safari 2 import procedure - write a URL mapping directly out to disk
(WebCore::IconDatabase::importIconDataForIconURL): For the Safari 2 import procedure - write an Icon directly out to disk
(WebCore::IconDatabase::shouldStopThreadActivity): To check and see if the thread should stop what it is doing now to do something

more important (such as quit, or delete all icons)

(WebCore::IconDatabase::iconDatabaseSyncThreadStart):
(WebCore::IconDatabase::iconDatabaseSyncThread): Entry point for the background thread
(WebCore::databaseVersionNumber):
(WebCore::isValidDatabase):
(WebCore::createDatabaseTables):
(WebCore::IconDatabase::performOpenInitialization): Open and validate the SQLite database, making sure it's schema jives with what

is expected

(WebCore::IconDatabase::checkIntegrity):
(WebCore::IconDatabase::performURLImport): Import all the Page URL -> Icon URL mappings from the database. Done "1st thing" on startup,

this is necessary to be able to give the loader decisions about whether or not it should load icons from the network

(WebCore::IconDatabase::syncThreadMainLoop): Main loop - sleeps until woken up, then does a read cycle and a write cycle until both cycles

do no work - then it goes back to sleep.

(WebCore::IconDatabase::readFromDatabase): Reads icons from the database that clients are waiting on
(WebCore::IconDatabase::writeToDatabase): Writes any changes page -> icon url mappings to disk, as well as any new image data that has

been received from the loader

(WebCore::IconDatabase::pruneUnretainedIcons): Done only once, and only after the first write to the database, this procedure removes all

icons and page URLs from disk that haven't been retained by any client. Note that the prune can be delayed by utilizing delayDatabaseCleanup()

(WebCore::IconDatabase::checkForDanglingPageURLs): Usually part of the prune procedure, prunes any pages who point to icons that no longer exist

in the database

(WebCore::IconDatabase::removeAllIconsOnThread): Completely purge both the on-disk and in memory records of all icons
(WebCore::IconDatabase::deleteAllPreparedStatements): Part of removeAllIcons and the thread cleanup procedure
(WebCore::IconDatabase::cleanupSyncThread): Write out any last remaining writes to disk, close the database, and then end the thread
(WebCore::IconDatabase::imported): Checks the DB to see if the Safari 2 import has occured
(WebCore::IconDatabase::setImported): Sets the "Safari 2 imported" flag
(WebCore::readySQLStatement):
(WebCore::IconDatabase::setIconURLForPageURLInSQLDatabase): This and the following "SQLDatabase" suffixed methods are pretty self explanatory
(WebCore::IconDatabase::setIconIDForPageURLInSQLDatabase):
(WebCore::IconDatabase::removePageURLFromSQLDatabase):
(WebCore::IconDatabase::getIconIDForIconURLFromSQLDatabase):
(WebCore::IconDatabase::addIconURLToSQLDatabase):
(WebCore::IconDatabase::getImageDataForIconURLFromSQLDatabase):
(WebCore::IconDatabase::removeIconFromSQLDatabase):
(WebCore::IconDatabase::writeIconSnapshotToSQLDatabase):

  • loader/icon/IconDatabase.h:
  • loader/icon/IconDatabaseClient.h: Added. (WebCore::IconDatabaseClient::~IconDatabaseClient): (WebCore::IconDatabaseClient::performImport): Perform the Safari 2 import, implemented by WebKit (WebCore::IconDatabaseClient::dispatchDidRemoveAllIcons): Send the API notification (WebCore::IconDatabaseClient::dispatchDidAddIconForPageURL): Ditto
  • loader/icon/IconDatabaseNone.cpp: Best attempt to keep non icon-DB platforms building (WebCore::IconDatabase::defaultDatabaseFilename): (WebCore::IconDatabase::readIconForPageURLFromDisk): (WebCore::IconDatabase::loadDecisionForIconURL): (WebCore::IconDatabase::iconDataKnownForIconURL): (WebCore::IconDatabase::setIconURLForPageURL): (WebCore::IconDatabase::isEnabled): (WebCore::IconDatabase::delayDatabaseCleanup): (WebCore::IconDatabase::allowDatabaseCleanup): (WebCore::IconDatabase::setClient):
  • loader/icon/IconRecord.cpp: Added. (WebCore::IconRecord::IconRecord): IconRecord used to be "IconDataCache" - it is merely a container for the url, timestamp, and image for a site icon. 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 an IconRecord and therefore tracking when we should try to get rid of one. (WebCore::IconRecord::~IconRecord): (WebCore::IconRecord::image): (WebCore::IconRecord::setImageData): (WebCore::IconRecord::loadImageFromResource): (WebCore::IconRecord::imageDataStatus): Return whether the image data hasn't been read yet, exists in memory, or is absent (site with no icon) (WebCore::IconRecord::snapshot): Returns a snapshot of the icon's data - url, timestamp, and image data - to be written to disk
  • loader/icon/IconRecord.h: Added. (WebCore::IconSnapshot::IconSnapshot): (WebCore::IconRecord::getTimestamp): (WebCore::IconRecord::setTimestamp): (WebCore::IconRecord::iconURL): (WebCore::IconRecord::retainingPageURLs):
  • loader/icon/PageURLRecord.cpp: Added. (WebCore::PageURLRecord::PageURLRecord): PageURLRecord is fundamentally a pairing of a Page URL to an Icon. It has manual ref counting for the sake of "retainIconForPageURL" and "releaseIconForPageURL", and can provide a quick snapshot of it's Page URL -> Icon URL mapping for writing to the database (WebCore::PageURLRecord::setIconRecord): (WebCore::PageURLRecord::snapshot):
  • loader/icon/PageURLRecord.h: Added. (WebCore::PageURLSnapshot::PageURLSnapshot): (WebCore::PageURLRecord::url): (WebCore::PageURLRecord::PageURLRecord::iconRecord): (WebCore::PageURLRecord::retain): (WebCore::PageURLRecord::release): (WebCore::PageURLRecord::retainCount):
  • platform/SharedBuffer.cpp: (WebCore::SharedBuffer::copy): Added a deep copy method for the purposes of handing icon data across the thread boundary into the icon database
  • platform/SharedBuffer.h:
  • platform/graphics/svg/SVGImageEmptyClients.h: (WebCore::SVGEmptyFrameLoaderClient::registerForIconNotification):
  • platform/win/TemporaryLinkStubs.cpp: (WebCore::callOnMainThread): Only other IconDatabase utilizing platform - keep their build going

WebKit:

Reviewed by Darin

<rdar://problem/5434431> - Asynchronous Icon Database

WebKit side of things
Mainly, there are Notifications WebKit has to listen for now that tell it when to either call back into WebCore
for some purpose or to send the webView:didReceiveIcon: delegate call

Many smaller tweaks as well.

  • Misc/WebIconDatabase.h:
  • Misc/WebIconDatabase.mm: (defaultClient): (-[WebIconDatabase init]): (+[WebIconDatabase delayDatabaseCleanup]): Accessor so clients can prevent the thread from cleaning up the database before they've done all their necessary retaining of icons. (+[WebIconDatabase allowDatabaseCleanup]): (-[WebIconDatabase removeAllIcons]): (-[WebIconDatabase _isEnabled]): (-[WebIconDatabase _sendNotificationForURL:]): (-[WebIconDatabase _sendDidRemoveAllIconsNotification]): (-[WebIconDatabase _databaseDirectory]):

(-[ThreadEnabler threadEnablingSelector:]): Quick and dirty class to enabled Cocoa multithreading
(+[ThreadEnabler enableThreading]):
(importToWebCoreFormat):

  • Misc/WebIconDatabaseInternal.h: Expose the internal methods of WebIconDatabase that are required by WebIconDatabaseClient
  • Misc/WebNSNotificationCenterExtras.h: Added. - Great utility class whose design was borrowed from Colloquy that allows the posting of a Cocoa notification on the main thread from *any* thread
  • Misc/WebNSNotificationCenterExtras.m: Added. (-[NSNotificationCenter postNotificationOnMainThreadWithName:object:]): (-[NSNotificationCenter postNotificationOnMainThreadWithName:object:userInfo:]): (-[NSNotificationCenter postNotificationOnMainThreadWithName:object:userInfo:waitUntilDone:]): (+[NSNotificationCenter _postNotificationName:]):
  • WebCoreSupport/WebFrameLoaderClient.h:
  • WebCoreSupport/WebFrameLoaderClient.mm: (WebFrameLoaderClient::dispatchDidReceiveIcon): Send the webView:didReceiveIcon: delegate call (WebFrameLoaderClient::registerForIconNotification):
  • WebCoreSupport/WebIconDatabaseClient.h: Added.
  • WebCoreSupport/WebIconDatabaseClient.mm: Added. (WebIconDatabaseClient::performImport): Perform the Safari 2 icon import (WebIconDatabaseClient::dispatchDidRemoveAllIcons): Send the NSNotification (WebIconDatabaseClient::dispatchDidAddIconForPageURL): Ditto
  • WebView/WebView.mm: (-[WebView _receivedIconChangedNotification:]): Check and see if this notification is for this WebView's current URL by calling back into the IconDatabase (-[WebView _registerForIconNotification:]): Support for WebIconDatabaseClient (-[WebView _dispatchDidReceiveIconFromWebFrame:]): Dispatch this delegate call as well as unregister for the notification
  • WebView/WebViewInternal.h:
  • WebKit.xcodeproj/project.pbxproj:

win:

<rdar://problem/5434431> - Asynchronous Icon Database

  • WebFrame.cpp: (WebFrame::didPerformFirstNavigation): Empty impl for now (WebFrame::registerForIconNotification): Ditto
  • WebFrame.h:

Sep 7, 2007:

9:00 PM Changeset in webkit [25438] by oliver
  • 1 edit in trunk/LayoutTests/ChangeLog

Spell Sams name correctly.

8:59 PM Changeset in webkit [25437] by oliver
  • 1 edit
    42 deletes in trunk/LayoutTests

RS=Same

r25382 moved a number of tests from platform/mac back to the cross-platform
directories, but did not commit the platform/mac changes themselves.


This patch actually does.


  • platform/mac/editing/execCommand/nsresponder-outdent-expected.txt: Removed.
  • platform/mac/editing/execCommand/nsresponder-indent-expected.checksum: Removed.
  • platform/mac/editing/execCommand/nsresponder-outdent-expected.checksum: Removed.
  • platform/mac/editing/execCommand/nsresponder-indent-expected.png: Removed.
  • platform/mac/editing/execCommand/nsresponder-outdent-expected.png: Removed.
  • platform/mac/editing/execCommand/nsresponder-indent.html: Removed.
  • platform/mac/editing/execCommand/nsresponder-outdent.html: Removed.
  • platform/mac/editing/execCommand/nsresponder-indent-expected.txt: Removed.
  • platform/mac/editing/selection/5195166-1-expected.png: Removed.
  • platform/mac/editing/selection/5195166-2-expected.png: Removed.
  • platform/mac/editing/selection/select-line-expected.txt: Removed.
  • platform/mac/editing/selection/selection-actions-expected.checksum: Removed.
  • platform/mac/editing/selection/selection-actions.html: Removed.
  • platform/mac/editing/selection/4947387-expected.txt: Removed.
  • platform/mac/editing/selection/4947387-expected.png: Removed.
  • platform/mac/editing/selection/5195166-1-expected.checksum: Removed.
  • platform/mac/editing/selection/5195166-2-expected.checksum: Removed.
  • platform/mac/editing/selection/selection-actions-expected.txt: Removed.
  • platform/mac/editing/selection/5195166-1.html: Removed.
  • platform/mac/editing/selection/5195166-2.html: Removed.
  • platform/mac/editing/selection/selection-actions-expected.png: Removed.
  • platform/mac/editing/selection/select-line.html: Removed.
  • platform/mac/editing/selection/4947387-expected.checksum: Removed.
  • platform/mac/editing/selection/5195166-1-expected.txt: Removed.
  • platform/mac/editing/selection/4947387.html: Removed.
  • platform/mac/editing/selection/5195166-2-expected.txt: Removed.
  • platform/mac/editing/deleting/smart-delete-003-expected.checksum: Removed.
  • platform/mac/editing/deleting/smart-delete-004-expected.checksum: Removed.
  • platform/mac/editing/deleting/smart-delete-003.html: Removed.
  • platform/mac/editing/deleting/smart-delete-004.html: Removed.
  • platform/mac/editing/deleting/5300379-expected.checksum: Removed.
  • platform/mac/editing/deleting/delete-to-end-of-paragraph-expected.checksum: Removed.
  • platform/mac/editing/deleting/5300379.html: Removed.
  • platform/mac/editing/deleting/delete-to-end-of-paragraph.html: Removed.
  • platform/mac/editing/deleting/smart-delete-003-expected.txt: Removed.
  • platform/mac/editing/deleting/smart-delete-004-expected.txt: Removed.
  • platform/mac/editing/deleting/5300379-expected.txt: Removed.
  • platform/mac/editing/deleting/smart-delete-003-expected.png: Removed.
  • platform/mac/editing/deleting/delete-to-end-of-paragraph-expected.txt: Removed.
  • platform/mac/editing/deleting/smart-delete-004-expected.png: Removed.
  • platform/mac/editing/deleting/5300379-expected.png: Removed.
  • platform/mac/editing/deleting/delete-to-end-of-paragraph-expected.png: Removed.
8:24 PM Changeset in webkit [25436] by oliver
  • 1 edit
    17 adds in trunk/LayoutTests

Reviewed by Sam.

Re-adding a few mac specific directories that accidentally got clobbered
during my recent layout test rearranging

  • platform/mac/editing/input: Added.
  • platform/mac/editing/input/hangul-enter-confirms-and-sends-keypress-expected.txt: Added.
  • platform/mac/editing/input/hangul-enter-confirms-and-sends-keypress.html: Added.
  • platform/mac/editing/input/hangul.js: Added.
  • platform/mac/editing/input/kotoeri-enter-to-confirm-and-newline-expected.txt: Added.
  • platform/mac/editing/input/kotoeri-enter-to-confirm-and-newline.html: Added.
  • platform/mac/editing/input/kotoeri.js: Added.
  • platform/mac/editing/input/logger.js: Added.
  • platform/mac/fast/AppleScript: Added.
  • platform/mac/fast/AppleScript/001-expected.txt: Added.
  • platform/mac/fast/AppleScript/001.html: Added.
  • platform/mac/fast/AppleScript/array-expected.txt: Added.
  • platform/mac/fast/AppleScript/array.html: Added.
  • platform/mac/fast/AppleScript/date-expected.txt: Added.
  • platform/mac/fast/AppleScript/date.html: Added.
  • platform/mac/fast/objc: Added.
  • platform/mac/fast/objc/longlongTest-expected.txt: Added.
  • platform/mac/fast/objc/longlongTest.html: Added.
8:10 PM Changeset in webkit [25435] by ddkilzer
  • 2 edits
    1 delete in trunk/WebCore

WebCore:

Reviewed by Timothy Hatcher.

Housekeeping. No test required.

  • bindings/objc/WebScriptObjectInternal.h: Removed unused file.
  • bindings/objc/WebScriptObjectPrivate.h: Updated copyright statement.
7:31 PM Changeset in webkit [25434] by justing
  • 6 edits
    2 adds
    2 deletes in trunk

WebCore:

Rolling out my changes from r25421 while I investigate the layout test failures
they caused.


  • editing/Selection.cpp: (WebCore::Selection::validate):
  • editing/VisiblePosition.cpp: (WebCore::VisiblePosition::next): (WebCore::VisiblePosition::previous): (WebCore::VisiblePosition::lastEditablePositionAtOrBefore): (WebCore::VisiblePosition::firstEditablePositionAtOrAfter):
  • editing/VisiblePosition.h:
  • editing/visible_units.cpp: (WebCore::endOfWord): (WebCore::previousWordPosition): (WebCore::nextWordPosition): (WebCore::startOfLine): (WebCore::endOfLine): (WebCore::previousSentencePosition): (WebCore::nextSentencePosition):

LayoutTests:

Disabling the layout tests checked in with r25421 while I investigate
some layout test failures that that change caused.

  • editing/selection/5057506-2.html: Removed.
  • editing/selection/5057506-2.html-disabled: Added.
  • editing/selection/5057506.html: Removed.
  • editing/selection/5057506.html-disabled: Added.
7:23 PM Changeset in webkit [25433] by weinig
  • 2 edits in trunk/LayoutTests
  • platform/win/Skipped: Remove a duplicate test.
6:40 PM Changeset in webkit [25432] by ggaren
  • 2 edits in trunk/WebKit

Suggested by Maciej Stachowiak.


Added wKiosk Browser to the browser list. Pretty sweet app.

  • WebView/WebPreferences.m: (cacheModelForMainBundle):
6:17 PM Changeset in webkit [25431] by ggaren
  • 2 edits in trunk/WebKit

Build fix.

  • WebView/WebView.mm: (+[WebView _setCacheModel:]):
5:40 PM Changeset in webkit [25430] by ggaren
  • 25 edits in trunk

gtk:

Reviewed by Darin Adler, Maciej Stachowiak, Mark Rowe, Tim Hatcher.


Fixed <rdar://problem/5326009> Make non-browser WebKit clients have no
memory cache, or a very tiny one


Keep the GTK build working with an empty stub.


  • WebCoreSupport/FrameLoaderClientGtk.cpp: (WebKit::FrameLoaderClient::didPerformFirstNavigation):
  • WebCoreSupport/FrameLoaderClientGtk.h:

WebCore:

Reviewed by Darin Adler, Maciej Stachowiak, Mark Rowe, Tim Hatcher.


Fixed <rdar://problem/5326009> Make non-browser WebKit clients have no
memory cache, or a very tiny one

Added a client callback to notify WebKit when the first navigation has
taken place. "Navigation" here means a transition from one page to
another that ends up in the back/forward list.


WebKit Mac uses this notification to grow its cache model under certain
circumstances.


  • loader/FrameLoader.cpp: (WebCore::FrameLoader::addBackForwardItemClippedAtTarget):
  • loader/FrameLoaderClient.h:
  • platform/graphics/svg/SVGImageEmptyClients.h: (WebCore::SVGEmptyFrameLoaderClient::didPerformFirstNavigation): Ah, SVGEmptyFrameLoaderClient, my old friend.

WebKit:

Reviewed by Darin Adler, Maciej Stachowiak, Mark Rowe, Tim Hatcher.


Fixed <rdar://problem/5326009> Make non-browser WebKit clients have no
memory cache, or a very tiny one


High level explanation:

  • Added SPI for specifying a cache model on a per-WebView basis. (Hopefully, this will become API soon.) We balance competing cache models simply by using the largest one that pertains at a given time.
  • Added heuristic for guessing a default cache model in WebViews that don't specify one:

1) Default to DocumentViewer for apps linked on or after this
WebKit. Default to DocumentBrowser otherwise.

2) Assign specific defaults to well-known clients based on
bundle ID.

3) Grow the default to DocumentBrowser if a navigation takes
place.

  • As a part of the DocumentBrowser & PrimaryWebBrowser settings:

1) Make the Foundation disk cache much much bigger than the
default 20MB, if space allows. (This is a hedge against a small
WebCore cache in DocumentBrowser mode, but also an all-around
win for page load speed.)

2) Scaled the Foundation memory cache's capacity with physical
RAM, just like we do with other caches. This is a small win on
low memory systems.

  • Misc/WebKitSystemBits.h:
  • Misc/WebKitSystemBits.m: (WebMemorySize): Renamed from "WebSystemMainMemory." (WebHomeDirectoryFreeSize): Added function to measure the free space on the user's home directory. We use this as a factor in determining the disk cache's cacpacity.
  • Misc/WebKitVersionChecks.h: Support for linked on or after check.


  • WebCoreSupport/WebFrameLoaderClient.h:
  • WebCoreSupport/WebFrameLoaderClient.mm: (WebFrameLoaderClient::didPerformFirstNavigation): Implementation of heuristic rule #3.
  • WebView/WebPreferenceKeysPrivate.h:
  • WebView/WebPreferences.m: (cacheModelForMainBundle): Implementation of heuristic rule #2. (-[NSMutableDictionary _web_checkLastReferenceForIdentifier:]): Added notification for when a WebPreferences instance becomes inert. We use this to shrink the cache model back down if possible. Moved this code into a WebPreferences method, since it's not really a feature of NSDictionary.
  • WebView/WebPreferencesPrivate.h: SPI declarations.


  • WebView/WebView.mm: Replaced manual notification posts with calls to the _postPreferencesChangesNotification convenience method.

(-[WebView _preferencesChangedNotification:]): Merged dispersed code
for updating preferences-related settings into this one function. This
was needed for an earlier version of the patch, even though the
current version could probably do without it.

(+[WebView _preferencesChangedNotification:]): Added a class-level
listener for WebPreferences changes. This listener takes care of
modifying the class-level global cache model setting if necessary.

(+[WebPreferences standardPreferences]): Removed call to
_postPreferencesChangesNotification because the notification already
posts when you create the WebPreferences object. (I noticed this
inefficiency because my new _preferencesChangedNotification: method was
called excessively at startup.)

Also Added explicit tracking of WebPreferences clients, so we know when
a WebPreferences instance becomes inert:


(-[WebPreferences didRemoveFromWebView]):
(-[WebPreferences willAddToWebView]):

(+[WebView _setCacheModel:]): Translates a cache model into actual
settings in various APIs. Caches that have unbounded value grow
linearly relative to available space. Caches that have bounded value
grow inverse-squaredly relative to available space.

WebKitQt:

Reviewed by Darin Adler, Maciej Stachowiak, Mark Rowe, Tim Hatcher.


Fixed <rdar://problem/5326009> Make non-browser WebKit clients have no
memory cache, or a very tiny one


Keep the Qt build working with an empty stub.


  • WebCoreSupport/FrameLoaderClientQt.cpp: (WebCore::FrameLoaderClient::didPerformFirstNavigation):
  • WebCoreSupport/FrameLoaderClientQt.h:

win:

Reviewed by Darin Adler, Maciej Stachowiak, Mark Rowe, Tim Hatcher.


Fixed <rdar://problem/5326009> Make non-browser WebKit clients have no
memory cache, or a very tiny one


Keep the Windows build working with an empty stub.


  • WebFrame.cpp: (FrameLoaderClient::didPerformFirstNavigation):
  • WebFrame.h:
4:53 PM Changeset in webkit [25429] by adele
  • 6 edits
    2 adds in trunk

WebCore:

Reviewed by Dave Harrison.

Fix for <rdar://problem/5428427> Wrong characters are re-converted after doing reconversion with Kotoeri

Revert change for<rdar://problem/5279521> and add nil checks for the result of TextIterator::rangeFromLocationAndLength
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.
We'll get that for free when we switch to use TextIterator in _web_attributedStringFromRange.

  • editing/ApplyStyleCommand.cpp: (WebCore::ApplyStyleCommand::applyBlockStyle): Added nil checks.
  • editing/IndentOutdentCommand.cpp: (WebCore::IndentOutdentCommand::indentRegion): ditto.
  • editing/TextIterator.cpp: (WebCore::TextIterator::exitNode): Re-added check for m_lastTextNode before emitting newline.

LayoutTests:

Reviewed by Dave Harrison.

Tests for <rdar://problem/5428427> Wrong characters are re-converted after doing reconversion with Kotoeri

  • platform/mac/fast/text/attributed-substring-from-range-002-expected.txt: Added.
  • platform/mac/fast/text/attributed-substring-from-range-002.html: Added.
  • fast/forms/textarea-type-spaces-expected.txt: Revert back to old result.
4:45 PM Changeset in webkit [25428] by adachan
  • 2 edits in trunk/WebKit/win

Need to let the OS handle Alt+F4.

Reviewed by Hyatt.

  • WebView.cpp: (WebView::keyUp): (WebView::keyDown):
3:46 PM Changeset in webkit [25427] by andersca
  • 2 edits in trunk/WebKit/win

Reviewed by Oliver.

<rdar://problem/5461487>
Seed: Embedded media content (Flash Player 9) inside RSS reported as unknown MIME type.


Don't return ObjectContentNone if the URL's extension can't be mapped to a MIME type. If the MIME type is empty,
we will try to display the content in a subframe instead, just like Mac WebKit.


  • WebFrame.cpp: (WebFrame::objectContentType):
3:39 PM Changeset in webkit [25426] by adachan
  • 6 edits in trunk

<rdar://problem/5395928> Need to be able to handle context menu item selection by index


Reviewed by Beth.

WebCore:

  • platform/ContextMenu.h: Added method to retrieve context menu item by index
  • platform/win/ContextMenuWin.cpp: (WebCore::ContextMenu::ContextMenu): call setPlatformDescription() since that will handle adding the MNS_NOTIFYBYPOS style to the context menu. (WebCore::contextMenuItemByIdOrPosition): helper method so we don't have to duplicate code between itemWithAction() and itemAtIndex(). (WebCore::ContextMenu::itemWithAction): (WebCore::ContextMenu::itemAtIndex): (WebCore::ContextMenu::setPlatformDescription): add MNS_NOTIFYBYPOS style to the context menu so we will get notified by menu position through WM_MENUCOMMAND when the item is selected.


WebKit/win:

  • WebView.cpp: (WebView::performContextMenuAction): performContextMenuAction() can now handle context menu item selection via WM_MENUCOMMAND (by specifying byPosition to be true). In that case, we get the ContextMenuItem by position rather than by action id. (WebViewWndProc): handle WM_MENUCOMMAND
  • WebView.h:
3:01 PM Changeset in webkit [25425] by weinig
  • 4 edits in trunk

WebKitTools:

Reviewed by Alice.

Strip trailing and leading space/newline characters from skiplist file names.

  • Scripts/run-webkit-tests:

LayoutTests:

  • platform/win/Skipped: fix typo
2:39 PM Changeset in webkit [25424] by aliceli1
  • 2 edits in trunk/LayoutTests
  • platform/win/Skipped: removing a duplicated test
2:34 PM Changeset in webkit [25423] by aliceli1
  • 2 edits in trunk/LayoutTests
  • platform/win/Skipped: moved a bunch of editing tests that actually succeed in both Debug and Release into a section at the end of the skip list. The reason I'm not just removing these tests from the skip list right now is because the windows bots are not stable and green yet, and I was asked to do this removal at a later time when regressions are easier to spot.
12:42 PM Changeset in webkit [25422] by darin
  • 2 edits in trunk/JavaScriptCore

Reviewed by Steve Falkenburg.

  • fix crash seen on Windows release builds
  • wtf/FastMalloc.cpp: Change pthread_getspecific optimization to be done only on the DARWIN platform. Also correct a couple reinterpret_cast that should be static_cast instead.
12:18 PM Changeset in webkit [25421] by justing
  • 7 edits
    8 adds in trunk

WebCore:

Reviewed by Darin.


<rdar://problem/5057506> Double-clicking after ToDo content doesn't select the paragraph break


  • editing/Selection.cpp: (WebCore::Selection::validate): Moved the code that moves across a paragraph boundary when expanding selections by word granularity from endOfWord to here. In the word and paragraph granularity cases, if the end of the selection is at the end of the last paragraph in the last cell of a block table, expand it so that it ends at the start of the paragraph after the table, instead of just after the table, so that ToDo content gets the same double/tripled click behavior that normal paragraphs get (added two testcases). When expanding the selection to include paragraph breaks, pass VisiblePosition::next true so that it doesn't change editability.
  • editing/VisiblePosition.cpp: (WebCore::VisiblePosition::next): Renamed the bool because it's now also used to keep non-editable positions non-editable. (WebCore::VisiblePosition::previous): Ditto. (WebCore::VisiblePosition::lastPositionWithSameEditabilityAtOrBefore): Renamed this function and made it also work with non-editable positions. (WebCore::VisiblePosition::firstPositionWithSameEditabilityAtOrAfter): Ditto.
  • editing/VisiblePosition.h:
  • editing/visible_units.cpp: (WebCore::endOfWord): Called the renamed function. (WebCore::previousWordPosition): Ditto. (WebCore::nextWordPosition): Ditto. (WebCore::startOfLine): Ditto. (WebCore::endOfLine): Ditto. (WebCore::previousSentencePosition): Ditto. (WebCore::nextSentencePosition): Ditto.

LayoutTests:

Reviewed by Darin.


<rdar://problem/5333725> -webkit-user-select: none makes selection difficult

  • editing/selection/5057506-2.html: Added.
  • editing/selection/5057506.html: Added.
  • platform/mac/editing/selection/5057506-2-expected.checksum: Added.
  • platform/mac/editing/selection/5057506-2-expected.png: Added.
  • platform/mac/editing/selection/5057506-2-expected.txt: Added.
  • platform/mac/editing/selection/5057506-expected.checksum: Added.
  • platform/mac/editing/selection/5057506-expected.png: Added.
  • platform/mac/editing/selection/5057506-expected.txt: Added.
12:07 PM Changeset in webkit [25420] by thatcher
  • 1 edit in trunk/WebKit/WebCoreSupport/WebDragClient.mm

Attempt to fix the PPC build.

12:04 PM Changeset in webkit [25419] by beidson
  • 3 edits in trunk/WebCore

Reviewed by Sam

<rdar://problem/5089241> - ASSERT and other funky effects in IconLoader with large 404 pages

There were two problems:
1 - I originally didn't expect SubresourceLoader to keep pulling in data after it received a 404 response,

but if the server sends back a complex 404 page, the loader did just that. That could result in the
IconLoader "finishing" twice

2 - In this case, the long messy 404 page would be committed to the database as image data. This would

result in wasted space on disk, wasted space in RAM, and wasting processor time trying to parse 50k+
of HTML as image data

Fix is two parts - 1, monitor the "m_loadIsInProgress" flag and 2, make ::finishLoading() take an actual
SharedBuffer argument that is what should be committed to the database so the ResourceHandle is unnecessary

  • loader/icon/IconLoader.cpp: (WebCore::IconLoader::didReceiveResponse): If the response is not valid, commit null data (WebCore::IconLoader::didFail): If we've already finished loading once (the 404 response), don't finish again! (WebCore::IconLoader::didFinishLoading): Ditto (WebCore::IconLoader::finishLoading): Take a SharedBuffer argumnt as the actual data to commit
  • loader/icon/IconLoader.h: Add a SharedBuffer arg to ::finishLoading()
10:59 AM Changeset in webkit [25418] by beidson
  • 1 edit in trunk/WebCore/platform/AutodrainedPool.h

Build fix (sigh)

10:49 AM Changeset in webkit [25417] by beidson
  • 2 edits in trunk/WebCore

Reviewed by Darin

Inline the in-header definitions for non-Mac platforms

  • platform/AutodrainedPool.h: (WebCore::AutodrainedPool::AutodrainedPool): (WebCore::AutodrainedPool::~AutodrainedPool): (WebCore::AutodrainedPool::cycle):
10:39 AM Changeset in webkit [25416] by beidson
  • 2 edits
    4 adds in trunk/WebCore

Reviewed by Darin

Add some AutoreleasePool and Threading utilities in preparation for the multi-threaded
fix for <rdar://problem/5434431>

AutodrainedPool wraps an NSAutoreleasePool and tracks a "cycle" count. This allows clients
in WebCore to simply call ::cycle() and after a preset number of iterations the pool will drain
and recreate the underlying NSAutoreleasePool


Threading utilities include C++ wrappers for pthread mutexes and conditions, as well as a generic
"callOnMainThread()" function for any non-main thread to use.

  • platform/AutodrainedPool.h: Added. (WebCore::AutodrainedPool::AutodrainedPool): Empty implementations for all non-mac platforms (WebCore::AutodrainedPool::~AutodrainedPool): ditto (WebCore::AutodrainedPool::cycle): ditto
  • platform/mac/AutodrainedPool.mm: Added. (WebCore::AutodrainedPool::AutodrainedPool): (WebCore::AutodrainedPool::~AutodrainedPool): (WebCore::AutodrainedPool::cycle): Keep track of number of cycles, and drain/recreate the pool if the cycle limit is hit
  • platform/Threading.h: Added. (WebCore::Mutex::Mutex): C++ wrapper for pthread_mutex (WebCore::Mutex::~Mutex): (WebCore::Mutex::lock): (WebCore::Mutex::tryLock): (WebCore::Mutex::unlock): (WebCore::MutexLocker::MutexLocker): Handles automatically locking/unlocking a Mutex (for early returns from a function, for example) (WebCore::MutexLocker::~MutexLocker): (WebCore::ThreadCondition::ThreadCondition): C++ wrapper for pthread_condition (WebCore::ThreadCondition::~ThreadCondition): (WebCore::ThreadCondition::wait): (WebCore::ThreadCondition::signal): (WebCore::ThreadCondition::broadcast):
  • platform/mac/Threading.mm: Added. (-[WebCoreFunctionWrapper initWithFunction:]): Obj-C implementation of "callOnMainThread" (-[WebCoreFunctionWrapper _call]): (WebCore::callOnMainThread):
10:27 AM Changeset in webkit [25415] by adachan
  • 5 edits in trunk/WebKit/win

<rdar://problem/5453494> Better lifetime management of WebDataSource and WebDocumentLoader
The problem was that WebDataSource does not hold a strong reference to the WebDocumentLoader. If
a WebDataSource is still around after the loader has been destroyed, it'll just point to
a stale WebDocumentLoader.
To fix this without a circular reference, WebDataSource now holds a strong reference to the
WebDocumentLoader. The WebDocumentLoader holds a strong reference to the WebDataSource
until it's detached from the WebFrame. When the WebDataSource is destroyed, it'll notify
its WebDocumentLoader so the loader will clear any references to it.

Reviewed by Darin.

  • WebDataSource.cpp: (WebDataSource::~WebDataSource): call WebDocumentLoader::detachDataSource() so the loader will clear any references to this data source (WebDataSource::documentLoader): m_loader is now a RefPtr so we need to call get().
  • WebDataSource.h:
  • WebDocumentLoader.cpp: (WebDocumentLoader::WebDocumentLoader): initialize m_dataSource since it's no longer a COMPtr. (WebDocumentLoader::~WebDocumentLoader): release m_dataSource if necessary (WebDocumentLoader::setDataSource): add a reference to m_dataSource (WebDocumentLoader::dataSource): (WebDocumentLoader::detachDataSource): clear m_detachedDataSource. (WebDocumentLoader::attachToFrame): call setDataSource() so it'll add the reference to the data source if necessary. (WebDocumentLoader::detachFromFrame): release the reference to the data source
  • WebDocumentLoader.h:
10:21 AM Changeset in webkit [25414] by weinig
  • 2 edits
    18 moves in trunk/LayoutTests

Reviewed by Kevin McCullough.

Fix embarassing spelling mistakes.

  • http/tests/security/dataURL/xss-DENIED-from-data-url-in-foreign-domain-subframe-expected.txt: Copied from http/tests/security/dataURL/xss-DENIED-from-data-url-in-foriegn-domain-subframe-expected.txt.
  • http/tests/security/dataURL/xss-DENIED-from-data-url-in-foreign-domain-subframe.html: Copied from http/tests/security/dataURL/xss-DENIED-from-data-url-in-foriegn-domain-subframe.html.
  • http/tests/security/dataURL/xss-DENIED-from-data-url-in-foreign-domain-window-open-expected.txt: Copied from http/tests/security/dataURL/xss-DENIED-from-data-url-in-foriegn-domain-window-open-expected.txt.
  • http/tests/security/dataURL/xss-DENIED-from-data-url-in-foreign-domain-window-open.html: Copied from http/tests/security/dataURL/xss-DENIED-from-data-url-in-foriegn-domain-window-open.html.
  • http/tests/security/dataURL/xss-DENIED-from-data-url-in-foriegn-domain-subframe-expected.txt: Removed.
  • http/tests/security/dataURL/xss-DENIED-from-data-url-in-foriegn-domain-subframe.html: Removed.
  • http/tests/security/dataURL/xss-DENIED-from-data-url-in-foriegn-domain-window-open-expected.txt: Removed.
  • http/tests/security/dataURL/xss-DENIED-from-data-url-in-foriegn-domain-window-open.html: Removed.
  • http/tests/security/dataURL/xss-DENIED-to-data-url-in-foreign-domain-subframe-expected.txt: Copied from http/tests/security/dataURL/xss-DENIED-to-data-url-in-foriegn-domain-subframe-expected.txt.
  • http/tests/security/dataURL/xss-DENIED-to-data-url-in-foreign-domain-subframe-location-change-expected.txt: Copied from http/tests/security/dataURL/xss-DENIED-to-data-url-in-foriegn-domain-subframe-location-change-expected.txt.
  • http/tests/security/dataURL/xss-DENIED-to-data-url-in-foreign-domain-subframe-location-change.html: Copied from http/tests/security/dataURL/xss-DENIED-to-data-url-in-foriegn-domain-subframe-location-change.html.
  • http/tests/security/dataURL/xss-DENIED-to-data-url-in-foreign-domain-subframe.html: Copied from http/tests/security/dataURL/xss-DENIED-to-data-url-in-foriegn-domain-subframe.html.
  • http/tests/security/dataURL/xss-DENIED-to-data-url-in-foreign-domain-window-open-expected.txt: Copied from http/tests/security/dataURL/xss-DENIED-to-data-url-in-foriegn-domain-window-open-expected.txt.
  • http/tests/security/dataURL/xss-DENIED-to-data-url-in-foreign-domain-window-open.html: Copied from http/tests/security/dataURL/xss-DENIED-to-data-url-in-foriegn-domain-window-open.html.
  • http/tests/security/dataURL/xss-DENIED-to-data-url-in-foriegn-domain-subframe-expected.txt: Removed.
  • http/tests/security/dataURL/xss-DENIED-to-data-url-in-foriegn-domain-subframe-location-change-expected.txt: Removed.
  • http/tests/security/dataURL/xss-DENIED-to-data-url-in-foriegn-domain-subframe-location-change.html: Removed.
  • http/tests/security/dataURL/xss-DENIED-to-data-url-in-foriegn-domain-subframe.html: Removed.
  • http/tests/security/dataURL/xss-DENIED-to-data-url-in-foriegn-domain-window-open-expected.txt: Removed.
  • http/tests/security/dataURL/xss-DENIED-to-data-url-in-foriegn-domain-window-open.html: Removed.
  • http/tests/security/javascriptURL/xss-DENIED-from-javascipt-url-in-foreign-domain-subframe-expected.txt: Copied from http/tests/security/javascriptURL/xss-DENIED-from-javascipt-url-in-foriegn-domain-subframe-expected.txt.
  • http/tests/security/javascriptURL/xss-DENIED-from-javascipt-url-in-foreign-domain-subframe.html: Copied from http/tests/security/javascriptURL/xss-DENIED-from-javascipt-url-in-foriegn-domain-subframe.html.
  • http/tests/security/javascriptURL/xss-DENIED-from-javascipt-url-in-foreign-domain-window-open-expected.txt: Copied from http/tests/security/javascriptURL/xss-DENIED-from-javascipt-url-in-foriegn-domain-window-open-expected.txt.
  • http/tests/security/javascriptURL/xss-DENIED-from-javascipt-url-in-foreign-domain-window-open.html: Copied from http/tests/security/javascriptURL/xss-DENIED-from-javascipt-url-in-foriegn-domain-window-open.html.
  • http/tests/security/javascriptURL/xss-DENIED-from-javascipt-url-in-foriegn-domain-subframe-expected.txt: Removed.
  • http/tests/security/javascriptURL/xss-DENIED-from-javascipt-url-in-foriegn-domain-subframe.html: Removed.
  • http/tests/security/javascriptURL/xss-DENIED-from-javascipt-url-in-foriegn-domain-window-open-expected.txt: Removed.
  • http/tests/security/javascriptURL/xss-DENIED-from-javascipt-url-in-foriegn-domain-window-open.html: Removed.
  • http/tests/security/javascriptURL/xss-DENIED-to-javascipt-url-in-foreign-domain-subframe-expected.txt: Copied from http/tests/security/javascriptURL/xss-DENIED-to-javascipt-url-in-foriegn-domain-subframe-expected.txt.
  • http/tests/security/javascriptURL/xss-DENIED-to-javascipt-url-in-foreign-domain-subframe.html: Copied from http/tests/security/javascriptURL/xss-DENIED-to-javascipt-url-in-foriegn-domain-subframe.html.
  • http/tests/security/javascriptURL/xss-DENIED-to-javascipt-url-in-foreign-domain-window-open-expected.txt: Copied from http/tests/security/javascriptURL/xss-DENIED-to-javascipt-url-in-foriegn-domain-window-open-expected.txt.
  • http/tests/security/javascriptURL/xss-DENIED-to-javascipt-url-in-foreign-domain-window-open.html: Copied from http/tests/security/javascriptURL/xss-DENIED-to-javascipt-url-in-foriegn-domain-window-open.html.
  • http/tests/security/javascriptURL/xss-DENIED-to-javascipt-url-in-foriegn-domain-subframe-expected.txt: Removed.
  • http/tests/security/javascriptURL/xss-DENIED-to-javascipt-url-in-foriegn-domain-subframe.html: Removed.
  • http/tests/security/javascriptURL/xss-DENIED-to-javascipt-url-in-foriegn-domain-window-open-expected.txt: Removed.
  • http/tests/security/javascriptURL/xss-DENIED-to-javascipt-url-in-foriegn-domain-window-open.html: Removed.
  • platform/win/Skipped:
9:52 AM Changeset in webkit [25413] by kmccullo
  • 5 edits
    1 move in trunk

JavaScriptCore:

Reviewed by Maciej.

  • Moved JSRetainPtr to the API.
  • API/JSRetainPtr.h: Copied from kjs/JSRetainPtr.h. (JSRetain): (JSRelease): (JSRetainPtr::JSRetainPtr): (JSRetainPtr::~JSRetainPtr): (JSRetainPtr::get): (JSRetainPtr::releaseRef): (JSRetainPtr::operator->): (JSRetainPtr::operator!): (JSRetainPtr::operator UnspecifiedBoolType): (::operator): (::adopt): (::swap): (swap): (operator==): (operator!=):
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • kjs/JSRetainPtr.h: Removed.

WebKitTools:

Reviewed by Maciej.

  • Changed Drosera to take advantage of the JSRetainPtr changes.
  • Drosera/DebuggerDocument.cpp: (DebuggerDocument::breakpointEditorHTML): (DebuggerDocument::evaluateScript): (DebuggerDocument::valueForScopeVariableNamed): (DebuggerDocument::log): (DebuggerDocument::windowScriptObjectAvailable): (DebuggerDocument::toJSArray): (DebuggerDocument::callFunctionOnObject): (DebuggerDocument::logException):
  • Drosera/mac/DebuggerDocumentMac.mm: (-[DebuggerClientMac webView:didLoadMainResourceForDataSource:]): (-[DebuggerClientMac webView:didParseSource:baseLineNumber:fromURL:sourceId:forWebFrame:]): (DebuggerDocument::platformEvaluateScript): (DebuggerDocument::getPlatformCurrentFunctionStack): (DebuggerDocument::getPlatformLocalScopeVariableNamesForCallFrame): (DebuggerDocument::platformValueForScopeVariableNamed):
9:29 AM Changeset in webkit [25412] by staikos
  • 4 edits in trunk

Fix typo in previous commit

7:49 AM Changeset in webkit [25411] by staikos
  • 6 edits in trunk

Patch from Qing Zhao to export more of the progress details and expose it from
QWebPage

Note: See TracTimeline for information about the timeline view.