Timeline



Apr 14, 2008:

10:19 PM Changeset in webkit [31896] by ggaren@apple.com
  • 2 edits in branches/squirrelfish/JavaScriptCore

2008-04-14 Geoffrey Garen <ggaren@apple.com>

Reviewed by Oliver Hunt.


Fixed crash when accessing registers in a torn-off activation object.

  • kjs/JSActivation.cpp: (KJS::JSActivation::copyRegisters): Update our registerOffset after copying our registers, since our offset should now be relative to our private register array, not the shared register file.
8:40 PM Changeset in webkit [31895] by mjs@apple.com
  • 3 edits in branches/squirrelfish/JavaScriptCore

2008-04-14 Maciej Stachowiak <mjs@apple.com>

Reviewed by Oliver.


  • fix a codegen flaw that makes some tests run way too fast or way too slow


The basic problem was that FunctionCallResolveNode results in
codegen which can incorrectly write an intermediate value into the
dst register even when that is a local. I added convenience
functions to CodeGenerator for getting this right, but for now I
only fixed FunctionCallResolve.

  • VM/CodeGenerator.h: (KJS::CodeGenerator::tempDestination): (KJS::CodeGenerator::):
  • kjs/nodes.cpp: (KJS::FunctionCallResolveNode::emitCode):
5:47 PM Changeset in webkit [31894] by beidson@apple.com
  • 1 edit in trunk/WebCore/ChangeLog

2008-04-14 Brady Eidson <beidson@apple.com>

Fix up a recent Changelog comment that I never updated

5:45 PM Changeset in webkit [31893] by beidson@apple.com
  • 17 edits
    3 adds in trunk

WebCore:

2008-04-14 Brady Eidson <beidson@apple.com>

Reviewed by Anders

Lay the underpinnings for LocalStorage.

For now, this just exposes window.localStorage to the dom which returns an in-memory Storage object, much
like SessionStorage. The primary difference at this point is that the object returned is shared globally,
and isn't copied for new top-level browsing contexts like SessionStorage.

Later, I'll add proper event dispatch and a persistent storage backing.

  • GNUmakefile.am:
  • WebCore.base.exp:
  • WebCore.pro:
  • WebCore.vcproj/WebCore.vcproj:
  • WebCore.xcodeproj/project.pbxproj:
  • WebCoreSources.bkl:
  • bindings/js/JSDOMWindowCustom.cpp: (WebCore::JSDOMWindow::mark): Mark the optionalLocalStorage
  • page/DOMWindow.cpp: (WebCore::DOMWindow::clear): (WebCore::DOMWindow::localStorage):
  • page/DOMWindow.h: (WebCore::DOMWindow::optionalLocalStorage):
  • storage/LocalStorage.cpp: Added. (WebCore::LocalStorage::sharedLocalStorage): (WebCore::LocalStorage::LocalStorage): (WebCore::LocalStorage::storageArea): (WebCore::LocalStorage::itemChanged): (WebCore::LocalStorage::itemRemoved): (WebCore::LocalStorage::dispatchStorageEvent):
  • storage/LocalStorage.h: Added.
  • storage/SessionStorage.cpp: Refactor to use the client interface for event dispatching for sessionStorage objects (WebCore::SessionStorage::SessionStorage): (WebCore::SessionStorage::copy): (WebCore::SessionStorage::storageArea): (WebCore::SessionStorage::itemChanged): (WebCore::SessionStorage::itemRemoved): (WebCore::SessionStorage::dispatchStorageEvent):
  • storage/SessionStorage.h:
  • storage/StorageArea.cpp: Add a client parameter, and call to the client when an item is changed or removed. (WebCore::StorageArea::create): (WebCore::StorageArea::StorageArea): (WebCore::StorageArea::copy): (WebCore::StorageArea::setItem): (WebCore::StorageArea::removeItem): (WebCore::StorageArea::setClient):
  • storage/StorageArea.h: (WebCore::StorageArea::page): (WebCore::StorageArea::securityOrigin):
  • storage/StorageAreaClient.h: Added. Break out "itemChanged" and "itemRemoved" to a StorageAreaClient This way, both SessionStorage and LocalStorage areas can have different behavior on changes with that behavior managed from a central location. (WebCore::StorageAreaClient::~StorageAreaClient): (WebCore::StorageAreaClient::StorageAreaClient): (WebCore::StorageAreaClient::itemChanged): (WebCore::StorageAreaClient::itemRemoved):

LayoutTests:

2008-04-14 Brady Eidson <beidson@apple.com>

Reviewed by Anders

As underpinnings for LocalStorage are laid, it is exposed to the dom - update the relevant layout tests.

  • fast/dom/Window/window-properties-expected.txt:
  • storage/domstorage/window-attributes-exist-expected.txt:
5:40 PM Changeset in webkit [31892] by beidson@apple.com
  • 9 edits in trunk

WebCore:

2008-04-14 Brady Eidson <beidson@apple.com>

Reviewed by Anders

Add a hidden pref to debug WebArchive loading. With this pref on, when loading a WebArchive,
if the resource isn't in the ArchiveResourceCollection, the loader will not fall back to the
network and will instead fail the load as "cancelled."

  • loader/ResourceLoader.cpp: (WebCore::ResourceLoader::load): Do the check here.
  • page/Settings.cpp: (WebCore::Settings::Settings): (WebCore::Settings::setWebArchiveDebugModeEnabled):
  • page/Settings.h: (WebCore::Settings::webArchiveDebugModeEnabled):

WebKit/mac:

2008-04-14 Brady Eidson <beidson@apple.com>

Reviewed by Anders

Add a hidden pref to debug WebArchive loading. With this pref on, when loading a WebArchive,
if the resource isn't in the ArchiveResourceCollection, the loader will not fall back to the
network and will instead fail the load as "cancelled."

  • WebView/WebPreferenceKeysPrivate.h:
  • WebView/WebPreferences.m: (+[WebPreferences initialize]): (-[WebPreferences _webArchiveDebugModeEnabled]):
  • WebView/WebPreferencesPrivate.h:
  • WebView/WebView.mm: (-[WebView _preferencesChangedNotification:]):
4:55 PM Changeset in webkit [31891] by Antti Koivisto
  • 9 edits in trunk/WebCore

2008-04-14 Antti Koivisto <Antti Koivisto>

Reviewed by Eric.

Some preparations for additive animations and animations in <use>.

  • Disallow animation elements in instance trees.
  • Fix buggy SVGUseElement::removeDisallowedElementsFromSubtree(), make it public and static
  • Invoke it from SVGElementInstance::updateInstance() to clean up the instance tree there as well.
  • Add mechanism for blocking instance updates when an animation changes the referenced tree.


The added assert in SVGSMILElement::insertedIntoDocument() verifies the fixes
with the existing test cases.

  • svg/SVGAElement.cpp: (WebCore::SVGAElement::defaultEventHandler):
  • svg/SVGElementInstance.cpp: (WebCore::SVGElementInstance::updateInstance):
  • svg/SVGStyledElement.cpp: (WebCore::SVGStyledElement::updateElementInstance): (WebCore::SVGStyledElement::setInstanceUpdatesBlocked):
  • svg/SVGStyledElement.h:
  • svg/SVGUseElement.cpp: (WebCore::isDisallowedElement): (WebCore::SVGUseElement::removeDisallowedElementsFromSubtree):
  • svg/SVGUseElement.h:
  • svg/animation/SVGSMILElement.cpp: (WebCore::SVGSMILElement::insertedIntoDocument): (WebCore::SVGSMILElement::isSMILElement): (WebCore::SVGSMILElement::connectConditions): (WebCore::SVGSMILElement::disconnectConditions):
  • svg/animation/SVGSMILElement.h:
4:46 PM Changeset in webkit [31890] by Adam Roben
  • 10 edits
    17 adds in trunk/WebCore

Don't let the inspected page overwrite properties of JS objects in the Inspector

<https://bugs.webkit.org/show_bug.cgi?id=16011>
<rdar://problem/5604409>

<https://bugs.webkit.org/show_bug.cgi?id=16837>
<rdar://problem/5813850>

Reviewed by Sam Weinig and Geoff Garen.

Tests (contributed by Adam Barth and Collin Jackson):
manual-tests/inspector-wrappers

  • GNUmakefile.am:
  • WebCore.pro:
  • WebCore.vcproj/WebCore.vcproj:
  • WebCore.xcodeproj/project.pbxproj:
  • WebCoreSources.bkl: Added new files to the projects.
  • bindings/js/JSQuarantinedObjectWrapper.cpp: Added. (WebCore::): (WebCore::JSQuarantinedObjectWrapper::asWrapper): Converts a JSValue into a JSQuarantinedObjectWrapper, if the JSValue is in fact a JSQuarantinedObjectWrapper. (WebCore::JSQuarantinedObjectWrapper::cachedValueGetter): Callback to be used with PropertySlot. (WebCore::JSQuarantinedObjectWrapper::JSQuarantinedObjectWrapper): Hold onto the object we're wrapping and its global object. Pass the wrapped prototype up to the JSObject constructor. (WebCore::JSQuarantinedObjectWrapper::~JSQuarantinedObjectWrapper): (WebCore::JSQuarantinedObjectWrapper::unwrappedExecStateMatches): Returns true if our underlying object originated from the same global object as the passed-in ExecState. (WebCore::JSQuarantinedObjectWrapper::unwrappedExecState): (WebCore::JSQuarantinedObjectWrapper::transferExceptionToExecState): Wraps and moves an exception from our underlying ExecState to the passed-in one. (WebCore::JSQuarantinedObjectWrapper::mark): Marks ourselves and the objects we're holding references to.

(WebCore::JSQuarantinedObjectWrapper::getOwnPropertySlot):
(WebCore::JSQuarantinedObjectWrapper::put):
(WebCore::JSQuarantinedObjectWrapper::deleteProperty):
(WebCore::JSQuarantinedObjectWrapper::implementsConstruct):
(WebCore::JSQuarantinedObjectWrapper::construct):
(WebCore::JSQuarantinedObjectWrapper::implementsHasInstance):
(WebCore::JSQuarantinedObjectWrapper::hasInstance):
(WebCore::JSQuarantinedObjectWrapper::implementsCall):
(WebCore::JSQuarantinedObjectWrapper::callAsFunction):
(WebCore::JSQuarantinedObjectWrapper::getPropertyNames):
JSObject overrides. These each check the appropriate permission before
allowing the call to proceed. We wrap all outgoing values using
m_wrapOutgoingValue, and we prepare all incoming values with the
virtual prepareIncomingValue function. If an exception is raised when
calling the underlying object, we transfer the exception in wrapped
form to the passed-in ExecState.

  • bindings/js/JSQuarantinedObjectWrapper.h: Added. (WebCore::JSQuarantinedObjectWrapper::unwrappedObject): (WebCore::JSQuarantinedObjectWrapper::className): We return the underlying object's class name so that we can successfully masquerade as that underlying object when, e.g., Object.prototype.toString is called on us. (WebCore::JSQuarantinedObjectWrapper::classInfo):

(WebCore::JSQuarantinedObjectWrapper::allowsGetProperty):
(WebCore::JSQuarantinedObjectWrapper::allowsSetProperty):
(WebCore::JSQuarantinedObjectWrapper::allowsDeleteProperty):
(WebCore::JSQuarantinedObjectWrapper::allowsConstruct):
(WebCore::JSQuarantinedObjectWrapper::allowsHasInstance):
(WebCore::JSQuarantinedObjectWrapper::allowsCallAsFunction):
(WebCore::JSQuarantinedObjectWrapper::allowsGetPropertyNames):
These virtual methods let subclasses define the allowed operations on
the wrapped object. By default all operations are disabled.

  • bindings/js/JSInspectedObjectWrapper.cpp: Added. This subclass of JSQuarantinedObjectWrapper is used to wrap objects from the inspected page being passed to the Inspector. (WebCore::wrappers): (WebCore::): (WebCore::JSInspectedObjectWrapper::wrap): Wraps the passed-in object if needed and returns the wrapper. If this object has been wrapped previously we'll return the old wrapper rather than make a new one. (WebCore::JSInspectedObjectWrapper::JSInspectedObjectWrapper): Add ourselves to the wrapper map. (WebCore::JSInspectedObjectWrapper::~JSInspectedObjectWrapper): Remove ourselves from the wrapper map. (WebCore::JSInspectedObjectWrapper::prepareIncomingValue): Ensure that any objects passed to the inspected object are either wrappers around objects from the inspected page (in which case we unwrap them so that the inspected page never sees the wrapper), or wrapped callbacks from the Inspector.
  • bindings/js/JSInspectedObjectWrapper.h: Added. (WebCore::JSInspectedObjectWrapper::classInfo): (WebCore::JSInspectedObjectWrapper::allowsGetProperty): (WebCore::JSInspectedObjectWrapper::allowsSetProperty): (WebCore::JSInspectedObjectWrapper::allowsDeleteProperty): (WebCore::JSInspectedObjectWrapper::allowsConstruct): (WebCore::JSInspectedObjectWrapper::allowsHasInstance): (WebCore::JSInspectedObjectWrapper::allowsCallAsFunction): (WebCore::JSInspectedObjectWrapper::allowsGetPropertyNames): These all return true so that the Inspector can use objects from the inspected page however it needs. (WebCore::JSInspectedObjectWrapper::wrapOutgoingValue): Wrap all outgoing values as JSInspectedObjectWrappers.
  • bindings/js/JSInspectorCallbackWrapper.cpp: Added. This subclass of JSQuarantinedObjectWrapper is used to wrap callbacks that the Inspector passes to the inspected page (e.g., for event listeners or client-side storage callbacks). (WebCore::wrappers): (WebCore::): (WebCore::JSInspectorCallbackWrapper::wrap): Wraps the passed-in object if needed and returns the wrapper. If this object has been wrapped previously we'll return the old wrapper rather than make a new one. (WebCore::JSInspectorCallbackWrapper::JSInspectorCallbackWrapper): Add ourselves to the wrapper map. (WebCore::JSInspectorCallbackWrapper::~JSInspectorCallbackWrapper): Remove ourselves from the wrapper map. (WebCore::JSInspectorCallbackWrapper::prepareIncomingValue): Ensure that values passed from the inspected page to an Inspector callback are wrapped in JSInspectedObjectWrappers. We also allow the inspected page to pass ourselves in (which will happen in the case of a client-side storage callback, where the callback itself is passed as the this object). In this case we unwrap ourselves so that the Inspector doesn't have to deal with the wrapper.
  • bindings/js/JSInspectorCallbackWrapper.h: Added. (WebCore::JSInspectorCallbackWrapper::classInfo): (WebCore::JSInspectorCallbackWrapper::allowsCallAsFunction): This is the only allowed operation on a JSInspectorCallbackWrapper. (WebCore::JSInspectorCallbackWrapper::wrapOutgoingValue): Wrap all outgoing values as JSInspectorCallbackWrappers.
  • page/InspectorController.cpp: (WebCore::getResourceDocumentNode): Wrap the Document before passing it to the Inspector. (WebCore::highlightDOMNode): Unwrap the Node that the Inspector passed to us. (WebCore::databaseTableNames): Unwrap the Database that the Inspector passed to us. (WebCore::inspectedWindow): Wrap the Window before passing it to the Inspector. (WebCore::InspectorController::focusNode): Wrap the Node before passing it to the Inspector. (WebCore::wrapCallback): Wraps the passed-in callback in a JSInspectorCallbackWrapper. (WebCore::InspectorController::addDatabaseScriptResource): Wrap the Database beore pasing it to the Inspector. (WebCore::InspectorController::windowScriptObjectAvailable): Add the new wrapCallback function to the InspectorController JS object.
  • page/inspector/ElementsPanel.js: (WebInspector.ElementsPanel.reset): Wrap the contentLoaded callback.
  • page/inspector/DatabaseQueryView.js: (WebInspector.DatabaseQueryView._enterKeyPressed):
  • page/inspector/DatabaseTableView.js: (WebInspector.DatabaseTableView.update): Pass null instead of an empty array to executeSql since we're no longer allowed to pass any unwrapped objects to the inspected page. We now wrap all callbacks being passed to the inspected page using InspectorController.wrapCallback.
4:45 PM Changeset in webkit [31889] by Adam Roben
  • 5 edits in trunk/WebCore

Use prototypes/constructors from the inspected page when operating on objects from the inspected page

Reviewed by Tim Hatcher.

  • page/inspector/Console.js: (WebInspector.ConsolePanel._format): Use the Node constructor from the inspected Window with the instanceof operator.
  • page/inspector/ElementsPanel.js: (WebInspector.DOMNodeTreeElement._attributeEditingCommitted): Use the Element prototype from the inspected Window instead of the Element prototype from this Window.
  • page/inspector/inspector.js: (WebInspector.performSearch): Ditto for Document prototype.
  • page/inspector/utilities.js: (Object.type): Now takes an optional Window parameter that is used to find the built-in constructors.
4:45 PM Changeset in webkit [31888] by Adam Roben
  • 2 edits in trunk/WebCore

Don't store objects from the Inspector on CSSStyleRules from the inspected page

Reviewed by Tim Hatcher.

  • page/inspector/StylesSidebarPane.js: (WebInspector.StylesSidebarPane.update): Don't store raw CSSStyleRules from the inspected page in the styleRules array. Instead, always use a wrapper object. This will keep us from setting Inspector objects as properties of inspected objects.
4:05 PM Changeset in webkit [31887] by mjs@apple.com
  • 1 edit
    8 adds in branches/squirrelfish/SunSpider

2008-04-14 Maciej Stachowiak <mjs@apple.com>

Rubber stamped by Oliver.


  • move ubench tests properly.
  • tests/ubench: Added.
  • tests/ubench/function-closure.js: Added.
  • tests/ubench/function-empty.js: Added.
  • tests/ubench/function-missing-args.js: Added.
  • tests/ubench/function-sum.js: Added.
  • tests/ubench/loop-empty-resolve.js: Added.
  • tests/ubench/loop-empty.js: Added.
  • tests/ubench/loop-sum.js: Added.
3:55 PM Changeset in webkit [31886] by mjs@apple.com
  • 2 edits in branches/squirrelfish/WebKitTools

2008-04-14 Maciej Stachowiak <mjs@apple.com>

Reviewed by Oliver.


  • added support for --ubench mode
  • Scripts/run-sunspider:
3:47 PM Changeset in webkit [31885] by timothy@apple.com
  • 6 edits in trunk/WebCore

Fixes a regression where clicking a resource URL in the Console would not
show the resource in the Resources panel.

https://bugs.webkit.org/show_bug.cgi?id=18493

Reviewed by Adam Roben.

  • page/inspector/Console.js:

(WebInspector.Console.prototype._messagesClicked): Removed console-message-url
handling to show resources. This is now handled by WebInspector.showResourceForURL.
(WebInspector.ConsoleMessage.prototype.toMessageElement): Add the webkit-html-resource-link
class name to the URL anchor. Also add the line number as a property to the anchor.

  • page/inspector/ResourcesPanel.js:

(WebInspector.ResourcesPanel): Add a reference to the tree element to each calculator.
(WebInspector.ResourcesPanel.prototype.showResource): Select and reveal the resource in
the sidebar. Call showLine on the resource view if it is implemented.
(WebInspector.ResourcesPanel.prototype.closeVisibleResource): Select the current calculator's
tree element in the sidebar.
(WebInspector.ResourcesPanel.prototype._graphSelected): Call closeVisibleResource after
the calculator changes since closeVisibleResource uses the calculator.

  • page/inspector/SourceView.js:

(WebInspector.SourceView.prototype.sourceRow): Early return if the line is null/zero.
(WebInspector.SourceView.prototype.showLine): Renamed from showSourceLine.

  • page/inspector/inspector.css:

(body.console-visible #main-panels): Made the bottom 24px to match
the height of #main-status-bar.
(.console-message-url): Make the color important so it wins over
the .webkit-html-resource-link rule.
(.resource-view .resource-view-content): Made more generic from .image
so all resource views get sized correctly.
(.resource-view.image .resource-view-content): Removed.

  • page/inspector/inspector.js:

(WebInspector.documentClick): Pass the line number from the anchor to
WebInspector.showResourceForURL.
(WebInspector.showResourceForURL): Add line number support. Pass the line
to ResourcesPanel.showResource.
(WebInspector.addMainEventListeners): Use bind for the event listeners.

3:41 PM Changeset in webkit [31884] by mjs@apple.com
  • 2 edits in branches/squirrelfish/SunSpider

2008-04-14 Maciej Stachowiak <mjs@apple.com>

Rubber stamped by Oliver.

  • sunspider: Don't force --runs=1 in squirrelfish mode any more.
2:55 PM Changeset in webkit [31883] by ggaren@apple.com
  • 12 edits in branches/squirrelfish

JavaScriptCore:

2008-04-14 Gabor Loki <loki@inf.u-szeged.hu>

Reviewed and slightly tweaked by Geoffrey Garen.

Bug 18489: Squirrelfish doesn't build on linux
<https://bugs.webkit.org/show_bug.cgi?id=18489>

  • JavaScriptCore.pri: Add VM into include path and its files into source set
  • VM/JSPropertyNameIterator.cpp: Fix include name
  • VM/Machine.cpp: Add UNLIKELY macro for GCC
  • VM/Machine.h: Add missing includes
  • VM/RegisterFile.cpp: Add missing include
  • kjs/testkjs.pro: Add VM into include path

WebCore:

2008-04-14 Gabor Loki <loki@inf.u-szeged.hu>

Reviewed by Geoffrey Garen.

Bug 18489: Squirrelfish doesn't build on linux
<https://bugs.webkit.org/show_bug.cgi?id=18489>

2:45 PM Changeset in webkit [31882] by mjs@apple.com
  • 3 edits
    1 add
    1 delete in branches/squirrelfish/SunSpider

2008-04-14 Maciej Stachowiak <mjs@apple.com>

Reviewed by Oliver.

  • make --squirrelfish mode use the real harness, but a reduced set of tests

Also add a new ubench mode which runs the older squirrelfish microbenchmarks.

  • sunspider:
  • tests/LIST-SQUIRRELFISH:
  • tests/LIST-UBENCH: Added.
  • tests/squirrelfish: Moved to tests/ubench
2:31 PM Changeset in webkit [31881] by ggaren@apple.com
  • 1 edit
    1 delete in branches/squirrelfish/SunSpider

2008-04-14 Geoffrey Garen <ggaren@apple.com>

Reviewed by Maciej Stachowiak.


Removed an unused test.

  • tests/squirrelfish/loop-resolve.js: Removed.
2:20 PM Changeset in webkit [31880] by ggaren@apple.com
  • 3 edits in branches/squirrelfish/JavaScriptCore

2008-04-14 Geoffrey Garen <ggaren@apple.com>

Reviewed by Sam Weinig.


Restored OwnPtr in some places where I had removed it previously. We
can have an OwnPtr to an undefined class in a header as long as the
class's destructor isn't in the header.

1:45 PM Changeset in webkit [31879] by ggaren@apple.com
  • 3 edits in branches/squirrelfish/JavaScriptCore

2008-04-14 Geoffrey Garen <ggaren@apple.com>

Reviewed by Sam Weinig.


Fixed access to "this" inside dynamic scopes.

  • VM/CodeGenerator.cpp: (KJS::CodeGenerator::registerForLocal): Always return a register for "this", even if we're not optimizing access to other locals. Because "this" is a keyword, it's always in a register and always accessible.
  • VM/CodeGenerator.h: (KJS::CodeGenerator::shouldOptimizeLocals): Factored out a function for determining whether we should optimize access to locals, since eval will need to make this test a little more complicated.
1:18 PM Changeset in webkit [31878] by alp@webkit.org
  • 6 edits
    2 adds
    1 delete in trunk

2008-04-14 Xan Lopez <xan@gnome.org>

Reviewed by Alp Toker.

http://bugs.webkit.org/show_bug.cgi?id=17917
Bug 17917: Cookie support for HTTP soup backend

Initial implementation of cookies for the http soup backend.

Moved CookieJarGtk to CookieJarSoup in network/soup and left the original
one as CookieJarCurl in network/curl.

Bumped the libsoup required version to 2.23 for cookie support.

1:06 PM Changeset in webkit [31877] by alp@webkit.org
  • 8 edits in trunk

2008-04-14 Holger Freyther <zecke@selfish.org>

Reviewed by Alp Toker.

https://bugs.webkit.org/show_bug.cgi?id=18411
Enable Page caching and create FrameViews on the fly

Create the FrameView on the fly and cache pages

  • Keep a copy of the GtkAdjustment to be able to reuse it for the FrameViews
  • Do not initially create a FrameView and update the WebKit code to cope with not having a view.
  • Cache seven pages by default.
  • platform/gtk/ScrollViewGtk.cpp: (WebCore::ScrollView::setGtkAdjustments):
12:55 PM Changeset in webkit [31876] by hyatt@apple.com
  • 7 edits in trunk/WebCore

2008-04-14 David Hyatt <hyatt@apple.com>

Add a new optimized layout path for positioned objects that move. Also avoid always marking the <html>
object for layout when it has a percentage height, since the RenderView already does that when its size
changes.

Reviewed by mjs

  • rendering/RenderBlock.cpp: (WebCore::RenderBlock::layoutBlockChildren): (WebCore::RenderBlock::layoutPositionedObjects):
  • rendering/RenderBox.h: (WebCore::RenderBox::layoutDoingPositionedMovementOnly):
  • rendering/RenderObject.cpp: (WebCore::RenderObject::RenderObject): (WebCore::RenderObject::setNeedsLayout): (WebCore::RenderObject::setChildNeedsLayout): (WebCore::RenderObject::setNeedsPositionedMovementLayout): (WebCore::RenderObject::setStyle):
  • rendering/RenderObject.h: (WebCore::RenderObject::needsLayout): (WebCore::RenderObject::needsPositionedMovementLayoutOnly): (WebCore::RenderObject::layoutDoingPositionedMovementOnly):
  • rendering/RenderStyle.cpp: (WebCore::positionedObjectMoved): (WebCore::RenderStyle::diff):
  • rendering/RenderStyle.h: (WebCore::RenderStyle::):
12:30 PM Changeset in webkit [31875] by hyatt@apple.com
  • 3 adds in trunk/LayoutTests/platform/mac/fast/gradients

Add generated gradients layout test.

12:29 PM Changeset in webkit [31874] by hyatt@apple.com
  • 1 add in trunk/LayoutTests/fast/gradients/generated-gradients.html

Add generated gradients layout test.

12:28 PM Changeset in webkit [31873] by hyatt@apple.com
  • 16 edits
    2 adds in trunk/WebCore

2008-04-14 David Hyatt <hyatt@apple.com>

Add support for gradients in the CSS content property.

Reviewed by olliej

Added fast/gradients/generated-gradients.html

  • GNUmakefile.am:
  • WebCore.pro:
  • WebCore.vcproj/WebCore.vcproj:
  • WebCore.xcodeproj/project.pbxproj:
  • WebCoreSources.bkl:
  • css/CSSParser.cpp: (WebCore::CSSParser::parseContent):
  • css/CSSStyleSelector.cpp: (WebCore::CSSStyleSelector::applyProperty): (WebCore::CSSStyleSelector::styleImage): (WebCore::CSSStyleSelector::mapBackgroundImage):
  • css/CSSStyleSelector.h:
  • html/HTMLImageElement.cpp: (WebCore::HTMLImageElement::attach):
  • rendering/RenderContainer.cpp: (WebCore::RenderContainer::updateBeforeAfterContentForContainer):
  • rendering/RenderImage.cpp: (WebCore::RenderImage::RenderImage): (WebCore::RenderImage::setCachedImage): (WebCore::RenderImage::paintReplaced): (WebCore::RenderImage::calcReplacedWidth): (WebCore::RenderImage::calcReplacedHeight): (WebCore::RenderImage::calcAspectRatioWidth): (WebCore::RenderImage::calcAspectRatioHeight):
  • rendering/RenderImage.h: (WebCore::RenderImage::hasImage): (WebCore::RenderImage::image): (WebCore::RenderImage::errorOccurred): (WebCore::RenderImage::usesImageContainerSize): (WebCore::RenderImage::setImageContainerSize): (WebCore::RenderImage::imageHasRelativeWidth): (WebCore::RenderImage::imageHasRelativeHeight): (WebCore::RenderImage::imageSize):
  • rendering/RenderImageGeneratedContent.cpp: Added. (WebCore::RenderImageGeneratedContent::RenderImageGeneratedContent): (WebCore::RenderImageGeneratedContent::~RenderImageGeneratedContent): (WebCore::RenderImageGeneratedContent::setStyleImage):
  • rendering/RenderImageGeneratedContent.h: Added. (WebCore::RenderImageGeneratedContent::hasImage): (WebCore::RenderImageGeneratedContent::image): (WebCore::RenderImageGeneratedContent::errorOccurred): (WebCore::RenderImageGeneratedContent::usesImageContainerSize): (WebCore::RenderImageGeneratedContent::setImageContainerSize): (WebCore::RenderImageGeneratedContent::imageHasRelativeWidth): (WebCore::RenderImageGeneratedContent::imageHasRelativeHeight): (WebCore::RenderImageGeneratedContent::imageSize):
  • rendering/RenderObject.cpp: (WebCore::RenderObject::createObject):
  • rendering/RenderStyle.cpp: (WebCore::StyleCachedImage::imageHasRelativeWidth): (WebCore::StyleCachedImage::imageHasRelativeHeight): (WebCore::StyleCachedImage::usesImageContainerSize): (WebCore::RenderStyle::contentDataEquivalent): (WebCore::RenderStyle::setContent): (WebCore::ContentData::clear):
  • rendering/RenderStyle.h: (WebCore::StyleGeneratedImage::imageHasRelativeWidth): (WebCore::StyleGeneratedImage::imageHasRelativeHeight): (WebCore::StyleGeneratedImage::usesImageContainerSize): (WebCore::BackgroundLayer::setBackgroundImage): (WebCore::ContentData::): (WebCore::RenderStyle::setListStyleImage):
11:48 AM Changeset in webkit [31872] by andersca@apple.com
  • 2 edits in trunk/JavaScriptCore

2008-04-14 Anders Carlsson <andersca@apple.com>

Reviewed by Adam.

Don't leak the prototype class.


  • API/JSClassRef.cpp: (OpaqueJSClass::create):
11:33 AM Changeset in webkit [31871] by sfalken@apple.com
  • 2 edits in trunk/JavaScriptCore

Fix build.

  • wtf/ThreadingWin.cpp:
11:13 AM squirrelfish edited by ggaren@apple.com
(diff)
11:09 AM Changeset in webkit [31870] by beidson@apple.com
  • 4 edits in trunk/WebCore

2008-04-14 Brady Eidson <beidson@apple.com>

Reviewed by Sam, but Anders too, and he was more thorough in his review
and thats the only reason Sam beat him

Swap the Page and SecurityOrigin arguments when creating a StorageArea.

SecurityOrigin is really the primary identifying characteristic of a StorageArea,
and StorageAreas that represent LocalStorage won't have an owner Page.

  • storage/SessionStorage.cpp: (WebCore::SessionStorage::copy): (WebCore::SessionStorage::storageArea):
  • storage/StorageArea.cpp: (WebCore::StorageArea::create): (WebCore::StorageArea::StorageArea): (WebCore::StorageArea::copy): (WebCore::StorageArea::dispatchStorageEvent): Null check m_page here, as in the future it might be null
  • storage/StorageArea.h:
10:41 AM Changeset in webkit [31869] by mjs@apple.com
  • 3 edits in branches/squirrelfish/JavaScriptCore

2008-04-14 Maciej Stachowiak <mjs@apple.com>

Reviewed by Adam.


  • fix crash when running SunSpider full harness


When growing the register file's buffer to make space for new globals,
make sure to copy accounting for the fact that the new space is logically
at the beginning of the buffer in this case, instead of at the end as when
growing for a new call frame.

  • VM/RegisterFile.cpp: (KJS::RegisterFile::newBuffer): (KJS::RegisterFile::growBuffer): (KJS::RegisterFile::addGlobalSlots):
  • VM/RegisterFile.h:
10:09 AM Changeset in webkit [31868] by timothy@apple.com
  • 1 edit in trunk/WebCore/English.lproj/InspectorLocalizedStrings.js

Forgot to land InspectorLocalizedStrings.js with my last commit.

10:05 AM Changeset in webkit [31867] by timothy@apple.com
  • 3 edits
    2 adds in trunk/WebCore

Add support for changing the sort order of the resources. The two sorting
methods supported current are Time and Size.

Reviewed by Adam Roben.

  • page/inspector/Images/statusbarMenuButton.png: Added.
  • page/inspector/Images/statusbarMenuButtonSelected.png: Added.
  • page/inspector/ResourcesPanel.js:

(WebInspector.ResourcesPanel): Create the status bar menu button and
setup the event listener to call _changeSortingFunction. Each option in
the select references a sorting function.
(WebInspector.ResourcesPanel.get statusBarItems): Add the sorting menu to the
items returned.
(WebInspector.ResourcesPanel._changeSortingFunction): Set the sorting function
to the selected option's function in the sorting menu.

  • page/inspector/inspector.css: Added CSS rules for select elements in status bars.
10:05 AM Changeset in webkit [31866] by timothy@apple.com
  • 4 edits
    3 adds in trunk/WebCore

Add support for toggling between small and large resource rows

in the Resources panel.

Reviewed by Adam Roben.

  • English.lproj/InspectorLocalizedStrings.js: Added new tooltip string.
  • page/inspector/Images/largerResourcesButtons.png: Added.
  • page/inspector/Images/resourceDocumentIconSmall.png: Added.
  • page/inspector/Images/resourcePlainIconSmall.png: Added.
  • page/inspector/ResourcesPanel.js:

(WebInspector.ResourcesPanel): Create the status bar button and
setup the event listener to call _toggleLargerResources.
(WebInspector.ResourcesPanel.get statusBarItems): Return the status bar button.
(WebInspector.ResourcesPanel._toggleLargerResources): Toggle the class names
for the resources children list and the status bar button.

  • page/inspector/inspector.css: New style rules for small resources

and the status bar item.

9:46 AM Changeset in webkit [31865] by Chris Fleizach
  • 3 edits in trunk/WebCore

<rdar://problem/5854572> REGRESSION: AXPosition seems to be flipped in nightly build
AX was using the wrong method to determine the view to use to create the screen position

9:30 AM Changeset in webkit [31864] by ap@webkit.org
  • 2 edits in trunk/JavaScriptCore

Reviewed by Adam Roben.

https://bugs.webkit.org/show_bug.cgi?id=18488
FastMalloc doesn't release thread-specific data on Windows

  • wtf/ThreadingWin.cpp: (WTF::threadMapMutex): (WTF::initializeThreading): Call threadMapMutex once to initialize the static safely. (WTF::ThreadFunctionInvocation::ThreadFunctionInvocation): Added a structure to wrap thread entry point and arguments. (WTF::wtfThreadEntryPoint): Make sure to end all WTF threads with pthread_exit(), to give pthreads-win32 a chance to call destructors of thread-specific data. (WTF::createThread): Use _beginthreadex instead of CreateThread, because MSDN says so. Also removed a call to CreateEvent, for which I could see no reason at all.
9:24 AM Changeset in webkit [31863] by dsmith@webkit.org
  • 4 edits in trunk/WebCore

2008-04-14 David Smith <catfish.man@gmail.com>

Reviewed by Timothy Hatcher.


  • page/inspector/Resource.js: Change the sorting function to sort by response received time.
  • page/inspector/ResourcesPanel.js: Hook up the existing infrastructure to two bars instead of one; one for the total time, one for the time post-response.
  • page/inspector/inspector.css: Add a new rule to make the waiting bar have a lower opacity, and change the total bar opacity to handle the overlap
9:08 AM Changeset in webkit [31862] by ap@webkit.org
  • 2 edits in trunk/JavaScriptCore

Touched a file to make JavaScriptCore.vcproj rebuild.

  • wtf/MathExtras.h:
8:25 AM Changeset in webkit [31861] by Adam Roben
  • 2 edits in trunk/JavaScriptCore

Windows build fix

Rubberstamped by Alexey Proskuryakov.

  • JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Disable the "potentially uninitialized variable" warning for grammar.cpp, as it seems to be incorrect. yylval gets initialized by the lexer, but MSVC doesn't seem to understand this.
6:29 AM QtWebKitContrib edited by Simon Hausmann
(diff)
4:50 AM Changeset in webkit [31860] by jchaffraix@webkit.org
  • 4 edits
    2 adds in trunk

2008-04-14 Julien Chaffraix <jchaffraix@webkit.org>

Reviewed by Ap.

Bug 17403: WebKit Creates Invalid Xhtml Links with Ajax
http://bugs.webkit.org/show_bug.cgi?id=17403

The previous code had callbacks for the normal parsing (full document) and fragment parsing.
The difference was induced by the method we were using which did not accept a xmlParserCtxt.
The code has been refactored to allow us to share the callbacks between the different cases.
A drawback is that we have to use xmlParseContent which is an internal libxml method and thus
some internal intialization is done in WebCore.

Test: fast/parser/ampersand-escaped-parseXMLFragment.xhtml

  • dom/XMLTokenizer.cpp: (WebCore::createStringParser): Moved didInit in the global scope as it is shared by the 2 create methods.

(WebCore::createMemoryParser): Create a memory parser similar to the previous code.
Initialize the xmlParserContext to call xmlParseContent in parseXMLDocumentFragment.

(WebCore::XMLTokenizer::initializeParserContext): Check m_parsingFragment to know
which create method to call.

  • dom/XMLTokenizer.h: Added parseXMLDocumentFragment as a friend of XMLTokenizer.

2008-04-14 Julien Chaffraix <jchaffraix@webkit.org>

Reviewed by Ap.

Layout test for http://bugs.webkit.org/show_bug.cgi?id=17403:
WebKit Creates Invalid Xhtml Links with Ajax

  • fast/parser/ampersand-escaped-parseXMLFragment-expected.txt: Added.
  • fast/parser/ampersand-escaped-parseXMLFragment.xhtml: Added.

Apr 13, 2008:

11:53 PM Changeset in webkit [31859] by rwlbuis@webkit.org
  • 3 edits
    2 adds in trunk

Reviewed by Eric.

http://bugs.webkit.org/show_bug.cgi?id=18230
tspan in link not working

Implement SVG Errata: "The 'a' element may contain any
element that its parent may contain, except itself."

11:23 PM Changeset in webkit [31858] by hyatt@apple.com
  • 3 edits in trunk/WebCore

2008-04-13 David Hyatt <hyatt@apple.com>

Fix for bug 18466, WebKit exhibits slow performance on Opera DHTML benchmark. Improve layout's rect
invalidation code to only invalidate a single unioned rect once enough individual little rects have
been detected.

Reviewed by olliej

  • page/FrameView.cpp: (WebCore::FrameViewPrivate::reset): (WebCore::FrameView::layout): (WebCore::FrameView::repaintRectangle): (WebCore::FrameView::beginDeferredRepaints): (WebCore::FrameView::endDeferredRepaints):
  • page/FrameView.h:
10:51 PM Changeset in webkit [31857] by eric@webkit.org
  • 2 edits in trunk/WebCore

Reviewed by Oliver.

Fix spelling error in function name, no test case.

  • svg/SVGTextContentElement.cpp: (WebCore::SVGInlineTextBoxQueryWalker::chunkPortionCallback):
10:22 PM Changeset in webkit [31856] by eric@webkit.org
  • 2 edits in trunk/WebCore

Reviewed by Oliver.

Build fix for +SVG_ANIMATION -SVG_FOREIGN_OBJECT build, no tests.

  • svg/SVGAnimateMotionElement.cpp: (WebCore::SVGAnimateMotionElement::hasValidTarget):
7:46 PM Changeset in webkit [31855] by alp@webkit.org
  • 2 edits in trunk/WebCore

2008-04-13 Jan Michael Alonzo <jmalonzo@unpluggable.com>

Reviewed by Oliver Hunt.

http://bugs.webkit.org/show_bug.cgi?id=18239
[Gtk] Build breaks if SVG is enabled but SVG Fonts disabled

  • svg/SVGAltGlyphElement.idl: Add SVG_FONTS in Conditional
6:49 PM Changeset in webkit [31854] by jchaffraix@webkit.org
  • 2 edits in trunk/WebCore

2008-04-13 Julien Chaffraix <jchaffraix@webkit.org>

Reviewed by David.

More SVG filters build fix.

  • svg/graphics/filters/SVGFEImage.cpp: (WebCore::SVGFEImage::~SVGFEImage): (WebCore::SVGFEImage::setCachedImage):
10:47 AM Changeset in webkit [31853] by hyatt@apple.com
  • 2 edits in trunk/WebCore

2008-04-13 David Hyatt <hyatt@apple.com>

Fix build bustage on the filters SVG code path (not built by default).

  • svg/SVGFEImageElement.cpp: (WebCore::SVGFEImageElement::~SVGFEImageElement): (WebCore::SVGFEImageElement::parseMappedAttribute):
10:38 AM Changeset in webkit [31852] by alp@webkit.org
  • 2 edits in trunk/WebCore

2008-04-13 Dan Winship <danw@gnome.org>

Reviewed by Alp Toker.

http://bugs.webkit.org/show_bug.cgi?id=18391
return body data incrementally from libsoup backend

Fix libsoup backend to pass data to the loader incrementally
rather than all at once at the end.

  • platform/network/soup/ResourceHandleSoup.cpp (ResourceHandle::start): connect to "got-headers" and "got-chunk" signals on the message (gotHeadersCallback): call client->didReceiveResponse() from here (gotChunkCallback): call client->didReceiveData() from here (finishedCallback): renamed from dataCallback. mostly just calls client->didFinishLoading() now.
9:57 AM Changeset in webkit [31851] by mitz@apple.com
  • 2 edits in trunk/WebCore

Reviewed by Jessica Kahn.

  • remove duplicate condition in canHaveChildrenForEditing()
  • editing/htmlediting.cpp: (WebCore::canHaveChildrenForEditing):
8:56 AM Changeset in webkit [31850] by mitz@apple.com
  • 3 edits in trunk/WebCore

Reviewed by Darin Adler.

Test: fast/css/font-weight-1.html

  • platform/graphics/mac/FontCacheMac.mm: (WebCore::toAppKitFontWeight): Adjusted the mapping to cover the AppKit weight range from 2 to 12, because AppKit weight 1 never occurs. The new mapping matches font-weight: n00 to ISO weight Wn.
  • platform/mac/WebFontCache.mm: (betterChoice): Changed the midpoint used when deciding between two candidates that deviate from the desired weight by the same amount.
1:16 AM Changeset in webkit [31849] by hyatt@apple.com
  • 10 edits in trunk/WebCore

2008-04-12 David Hyatt <hyatt@apple.com>

Memory management cleanup for the new StyleCachedImage and StyleGeneratedImage classes. Make the back end
values hold refptrs to cached front end values. This will avoid malloc churn as RenderStyles get
re-resolved.

Reviewed by olliej

  • css/CSSCursorImageValue.cpp: (WebCore::CSSCursorImageValue::updateIfSVGCursorIsUsed): (WebCore::CSSCursorImageValue::cachedImage):
  • css/CSSCursorImageValue.h:
  • css/CSSImageGeneratorValue.cpp: (WebCore::CSSImageGeneratorValue::CSSImageGeneratorValue): (WebCore::CSSImageGeneratorValue::generatedImage):
  • css/CSSImageGeneratorValue.h:
  • css/CSSImageValue.cpp: (WebCore::CSSImageValue::CSSImageValue): (WebCore::CSSImageValue::~CSSImageValue): (WebCore::CSSImageValue::cachedImage):
  • css/CSSImageValue.h:
  • css/CSSStyleSelector.cpp: (WebCore::CSSStyleSelector::applyProperty): (WebCore::CSSStyleSelector::createStyleImage):
  • css/CSSStyleSelector.h:
  • rendering/RenderStyle.h: (WebCore::StyleCachedImage::cachedImage): (WebCore::StyleGeneratedImage::StyleGeneratedImage): (WebCore::StyleGeneratedImage::data):

Apr 12, 2008:

8:38 PM Changeset in webkit [31848] by jchaffraix@webkit.org
  • 4 edits in trunk/WebCore

2008-04-12 Julien Chaffraix <jchaffraix@webkit.org>

Not reviewed, Qt build fix.

  • dom/XMLTokenizer.cpp: (WebCore::XMLTokenizer::parseEndElement):
  • platform/graphics/qt/GraphicsContextQt.cpp: (WebCore::GraphicsContext::clip):
  • platform/qt/ClipboardQt.cpp: (WebCore::ClipboardQt::setDragImage):
5:26 PM Changeset in webkit [31847] by hyatt@apple.com
  • 3 adds in trunk/LayoutTests/platform/mac/fast/gradients

Add list item gradient test.

5:25 PM Changeset in webkit [31846] by hyatt@apple.com
  • 1 add in trunk/LayoutTests/fast/gradients/list-item-gradient.html

Add list item gradient test.

5:25 PM Changeset in webkit [31845] by hyatt@apple.com
  • 8 edits in trunk/WebCore

2008-04-12 David Hyatt <hyatt@apple.com>

Add support for list-style-image gradients. Also improve the image comparisons between two RenderStyles
to not mistakenly believe that images have changed.

Reviewed by olliej

Added fast/gradients/list-item-gradient.html

  • css/CSSComputedStyleDeclaration.cpp: (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue):
  • css/CSSParser.cpp: (WebCore::CSSParser::parseValue):
  • css/CSSStyleSelector.cpp: (WebCore::CSSStyleSelector::applyProperty): (WebCore::CSSStyleSelector::createStyleImage):
  • rendering/RenderListMarker.cpp: (WebCore::RenderListMarker::RenderListMarker): (WebCore::RenderListMarker::paint): (WebCore::RenderListMarker::imageChanged): (WebCore::RenderListMarker::calcPrefWidths):
  • rendering/RenderListMarker.h:
  • rendering/RenderStyle.cpp: (WebCore::imagesEquivalent): (WebCore::BorderImage::operator==): (WebCore::StyleCachedImage::errorOccurred): (WebCore::BackgroundLayer::operator==): (WebCore::StyleInheritedData::StyleInheritedData): (WebCore::cursorDataEquivalent): (WebCore::StyleInheritedData::operator==): (WebCore::RenderStyle::diff):
  • rendering/RenderStyle.h: (WebCore::StyleImage::errorOccurred): (WebCore::RenderStyle::listStyleImage): (WebCore::RenderStyle::setListStyleImage): (WebCore::RenderStyle::initialListStyleImage):
4:01 PM Changeset in webkit [31844] by pewtermoose@webkit.org
  • 2 edits in trunk/WebKit/win

2008-04-12 Matt Lilek <webkit@mattlilek.com>

Not reviewed, build fix.

  • WebView.cpp: (WebView::paintDocumentRectToContext):
3:46 PM Changeset in webkit [31843] by mitz@apple.com
  • 2 edits in trunk/WebCore
  • Windows build fix
  • platform/win/ClipboardWin.cpp: (WebCore::ClipboardWin::setDragImage):
3:37 PM Changeset in webkit [31842] by kevino@webkit.org
  • 2 edits in trunk/WebCore

wx build fix. Update clip to take a FloatRect.

1:33 AM Changeset in webkit [31841] by hyatt@apple.com
  • 1 edit in trunk/WebCore/rendering/RenderBox.cpp

Add a missing null check to stop crashing when a border image is examined but null.

1:12 AM Changeset in webkit [31840] by hyatt@apple.com
  • 6 adds in trunk/LayoutTests/platform/mac/fast/gradients

Land results for border gradient tests.

1:11 AM Changeset in webkit [31839] by hyatt@apple.com
  • 1 add in trunk/LayoutTests/fast/gradients/border-image-gradient-sides-and-corners.html

Add complex border image gradient test.

1:11 AM Changeset in webkit [31838] by hyatt@apple.com
  • 1 add in trunk/LayoutTests/fast/gradients/border-image-gradient.html

Add simple border gradient test.

1:11 AM Changeset in webkit [31837] by hyatt@apple.com
  • 9 edits in trunk/WebCore

2008-04-12 David Hyatt <hyatt@apple.com>

Add gradient support to border-image (even though it's mostly just weird).

Reviewed by Dan

Added fast/gradients/border-image-gradient.html

fast/gradients/border-image-gradient-sides-and-corners.html

  • css/CSSBorderImageValue.h: (WebCore::CSSBorderImageValue::imageValue):
  • css/CSSStyleSelector.cpp: (WebCore::CSSStyleSelector::applyProperty):
  • platform/graphics/GeneratedImage.cpp: (WebCore::GeneratedImage::draw):
  • rendering/InlineFlowBox.cpp: (WebCore::InlineFlowBox::paintBoxDecorations):
  • rendering/RenderBox.cpp: (WebCore::RenderBox::imageChanged):
  • rendering/RenderObject.cpp: (WebCore::RenderObject::mustRepaintBackgroundOrBorder): (WebCore::RenderObject::paintBorderImage): (WebCore::RenderObject::paintBorder): (WebCore::RenderObject::updateBackgroundImages): (WebCore::RenderObject::arenaDelete):
  • rendering/RenderStyle.cpp: (WebCore::StyleCachedImage::isLoaded):
  • rendering/RenderStyle.h: (WebCore::StyleImage::isLoaded): (WebCore::BorderImage::image):

Apr 11, 2008:

11:35 PM Changeset in webkit [31836] by mitz@apple.com
  • 4 edits in trunk

WebCore:

Reviewed by Dave Hyatt.

  • fix a regression from r31324 which caused most Arabic text to render as missing glyphs

Test: svg/W3C-SVG-1.1/fonts-glyph-02-t.svg

  • svg/SVGFont.cpp: (WebCore::SVGTextRunWalker::walk): Changed to always process characters in logical order and therefore dispatch the callbacks with a logically- ordered glyph stream. Changed the call to isCompatibleGlyph() to check for compatibility only with the range of characters the candidate glyph is derived from rather than with the entire lookup range. Changed to mark the <missing-glyph> glyph identifier as valid, to facilitate the use of invalid glyph identifiers to mark font fallback. (WebCore::drawTextUsingSVGFontCallback): Changed to only append the glyph identifier to a vector. (WebCore::drawTextMissingGlyphCallback): Changed to only append the character to a vector and append an invalid glyph identifier to the glyph vector. (WebCore::Font::drawTextUsingSVGFont): Moved the drawing from the callbacks into this function, iterating over the glyph and fallback characters vector in visual order.

LayoutTests:

Reviewed by Dave Hyatt.

  • revert incorrect expected results from r31324
  • platform/mac/svg/W3C-SVG-1.1/fonts-glyph-02-t-expected.txt:
11:23 PM Changeset in webkit [31835] by eric@webkit.org
  • 3 edits in trunk/WebCore

Reviewed by eseidel.

Attempt to fix Cairo build.

  • platform/graphics/cairo/GraphicsContextCairo.cpp:
  • platform/graphics/cairo/GraphicsContextPlatformPrivateCairo.h:
9:09 PM Changeset in webkit [31834] by hyatt@apple.com
  • 36 edits in trunk

WebCore:

2008-04-11 David Hyatt <hyatt@apple.com>

Rename CachedResource's ref/deref methods to addClient/removeClient. This matches the new
StyleImage class and is a more accurate description of what those methods really do.

Reviewed by olliej

  • WebCore.base.exp:
  • css/CSSCursorImageValue.cpp: (WebCore::CSSCursorImageValue::updateIfSVGCursorIsUsed):
  • css/CSSFontFaceSource.cpp: (WebCore::CSSFontFaceSource::CSSFontFaceSource): (WebCore::CSSFontFaceSource::~CSSFontFaceSource):
  • css/CSSImageValue.cpp: (WebCore::CSSImageValue::~CSSImageValue): (WebCore::CSSImageValue::image):
  • css/CSSImportRule.cpp: (WebCore::CSSImportRule::~CSSImportRule): (WebCore::CSSImportRule::insertedIntoParent):
  • dom/ProcessingInstruction.cpp: (WebCore::ProcessingInstruction::~ProcessingInstruction): (WebCore::ProcessingInstruction::checkStyleSheet): (WebCore::ProcessingInstruction::parseStyleSheet):
  • dom/XMLTokenizer.cpp: (WebCore::XMLTokenizer::~XMLTokenizer): (WebCore::XMLTokenizer::endElementNs): (WebCore::XMLTokenizer::notifyFinished):
  • html/CanvasPattern.cpp: (WebCore::CanvasPattern::CanvasPattern): (WebCore::CanvasPattern::~CanvasPattern):
  • html/HTMLImageLoader.cpp: (WebCore::HTMLImageLoader::~HTMLImageLoader): (WebCore::HTMLImageLoader::setImage): (WebCore::HTMLImageLoader::updateFromElement):
  • html/HTMLLinkElement.cpp: (WebCore::HTMLLinkElement::~HTMLLinkElement): (WebCore::HTMLLinkElement::process):
  • html/HTMLScriptElement.cpp: (WebCore::HTMLScriptElement::~HTMLScriptElement): (WebCore::HTMLScriptElement::parseMappedAttribute): (WebCore::HTMLScriptElement::insertedIntoDocument): (WebCore::HTMLScriptElement::removedFromDocument): (WebCore::HTMLScriptElement::notifyFinished):
  • html/HTMLTokenizer.cpp: (WebCore::HTMLTokenizer::reset): (WebCore::HTMLTokenizer::scriptHandler): (WebCore::HTMLTokenizer::notifyFinished):
  • loader/CachedCSSStyleSheet.cpp: (WebCore::CachedCSSStyleSheet::addClient):
  • loader/CachedCSSStyleSheet.h:
  • loader/CachedFont.cpp: (WebCore::CachedFont::addClient):
  • loader/CachedFont.h:
  • loader/CachedImage.cpp: (WebCore::CachedImage::addClient):
  • loader/CachedImage.h:
  • loader/CachedResource.cpp: (WebCore::CachedResource::addClient): (WebCore::CachedResource::removeClient):
  • loader/CachedResource.h:
  • loader/CachedScript.cpp: (WebCore::CachedScript::addClient):
  • loader/CachedScript.h:
  • loader/CachedXBLDocument.h:
  • loader/CachedXSLStyleSheet.cpp: (WebCore::CachedXSLStyleSheet::addClient):
  • loader/CachedXSLStyleSheet.h:
  • loader/mac/UserStyleSheetLoader.cpp: (UserStyleSheetLoader::UserStyleSheetLoader): (UserStyleSheetLoader::~UserStyleSheetLoader):
  • platform/mac/ClipboardMac.mm: (WebCore::ClipboardMac::setDragImage):
  • rendering/RenderImage.cpp: (WebCore::RenderImage::~RenderImage): (WebCore::RenderImage::setCachedImage):
  • rendering/RenderListMarker.cpp: (WebCore::RenderListMarker::~RenderListMarker): (WebCore::RenderListMarker::setStyle):
  • rendering/RenderObject.cpp: (WebCore::RenderObject::updateBackgroundImages): (WebCore::RenderObject::arenaDelete):
  • rendering/RenderStyle.cpp: (WebCore::StyleCachedImage::addClient): (WebCore::StyleCachedImage::removeClient):
  • svg/SVGImageLoader.cpp: (WebCore::SVGImageLoader::updateFromElement):
  • xml/XSLImportRule.cpp: (WebCore::XSLImportRule::~XSLImportRule): (WebCore::XSLImportRule::loadSheet):

WebKit/mac:

2008-04-11 David Hyatt <hyatt@apple.com>

Rename CachedResource ref/deref methods to addClient/removeClient.

Reviewed by olliej

  • WebView/WebHTMLView.mm: (-[WebHTMLViewPrivate dealloc]): (-[WebHTMLViewPrivate finalize]): (-[WebHTMLViewPrivate clear]): (-[WebHTMLView setPromisedDragTIFFDataSource:WebCore::]):
8:28 PM Changeset in webkit [31833] by hyatt@apple.com
  • 1 edit in trunk/WebCore/WebCore.xcodeproj/project.pbxproj

Fix remaining conflict I missed.

8:25 PM Changeset in webkit [31832] by hyatt@apple.com
  • 4 adds in trunk/LayoutTests/platform/mac/fast/gradients
8:25 PM Changeset in webkit [31831] by hyatt@apple.com
  • 2 adds in trunk/LayoutTests/fast/gradients
8:24 PM Changeset in webkit [31830] by hyatt@apple.com
  • 39 edits
    7 adds in trunk/WebCore

2008-04-11 David Hyatt <hyatt@apple.com>

This patch adds support for CSS gradients as background images. RenderStyles now hold a StyleImage
RefPtr, which is a wrapper for two types of images: CachedImages (loaded from URLs) and generated images
(patterns created on the fly such as gradients).

All of the features of <canvas> are supported: gradients can be linear or radial, have multiple stops, and
can specify their points as percentages (for reusable gradients across different box sizes).

Reviewed by olliej

Added fast/gradients/simple-gradients.html

  • WebCore.xcodeproj/project.pbxproj:
  • css/CSSBorderImageValue.cpp: (WebCore::CSSBorderImageValue::CSSBorderImageValue):
  • css/CSSBorderImageValue.h: (WebCore::CSSBorderImageValue::imageValue): (WebCore::CSSBorderImageValue::generatorValue):
  • css/CSSComputedStyleDeclaration.cpp: (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue):
  • css/CSSGradientValue.cpp: Added. (WebCore::CSSGradientValue::cssText): (WebCore::CSSGradientValue::createGradient): (WebCore::CSSGradientValue::image): (WebCore::compareStops): (WebCore::CSSGradientValue::sortStopsIfNeeded): (WebCore::CSSGradientValue::resolvePoint): (WebCore::CSSGradientValue::resolveRadius):
  • css/CSSGradientValue.h: Added. (WebCore::): (WebCore::CSSGradientColorStop::CSSGradientColorStop): (WebCore::CSSGradientValue::CSSGradientValue): (WebCore::CSSGradientValue::type): (WebCore::CSSGradientValue::setType): (WebCore::CSSGradientValue::setFirstX): (WebCore::CSSGradientValue::setFirstY): (WebCore::CSSGradientValue::setSecondX): (WebCore::CSSGradientValue::setSecondY): (WebCore::CSSGradientValue::setFirstRadius): (WebCore::CSSGradientValue::setSecondRadius): (WebCore::CSSGradientValue::addStop):
  • css/CSSImageGeneratorValue.cpp: Added. (WebCore::CSSImageGeneratorValue::~CSSImageGeneratorValue): (WebCore::CSSImageGeneratorValue::addClient): (WebCore::CSSImageGeneratorValue::removeClient): (WebCore::CSSImageGeneratorValue::getImage): (WebCore::CSSImageGeneratorValue::putImage):
  • css/CSSImageGeneratorValue.h: Added. (WebCore::CSSImageGeneratorValue::isImageGeneratorValue):
  • css/CSSImageValue.h: (WebCore::CSSImageValue::isImageValue):
  • css/CSSParser.cpp: (WebCore::CSSParser::parseBackgroundImage): (WebCore::BorderImageParseContext::commitImage): (WebCore::CSSParser::parseBorderImage): (WebCore::parseGradientPoint): (WebCore::parseGradientColorStop): (WebCore::CSSParser::parseGradient):
  • css/CSSParser.h:
  • css/CSSStyleSelector.cpp: (WebCore::CSSStyleSelector::applyProperty): (WebCore::CSSStyleSelector::createStyleImage): (WebCore::CSSStyleSelector::mapBackgroundImage):
  • css/CSSStyleSelector.h:
  • css/CSSValue.h: (WebCore::CSSValue::isImageValue): (WebCore::CSSValue::isImageGeneratorValue):
  • html/CanvasRenderingContext2D.cpp: (WebCore::CanvasRenderingContext2D::isPointInPath):
  • platform/graphics/BitmapImage.cpp: (WebCore::BitmapImage::BitmapImage): (WebCore::BitmapImage::dataChanged): (WebCore::BitmapImage::frameCount):
  • platform/graphics/BitmapImage.h:
  • platform/graphics/GraphicsContext.cpp: (WebCore::GraphicsContext::clipToImageBuffer):
  • platform/graphics/GraphicsContext.h:
  • platform/graphics/ImageBuffer.h: (WebCore::ImageBuffer::cgImage): (WebCore::ImageBuffer::image):
  • platform/graphics/cg/GraphicsContextCG.cpp: (WebCore::GraphicsContext::clipToImageBuffer): (WebCore::GraphicsContext::paintBuffer): (WebCore::GraphicsContext::drawImage):
  • platform/graphics/cg/ImageBufferCG.cpp: (WebCore::ImageBuffer::create): (WebCore::ImageBuffer::ImageBuffer): (WebCore::ImageBuffer::~ImageBuffer): (WebCore::ImageBuffer::image): (WebCore::ImageBuffer::getImageData): (WebCore::ImageBuffer::putImageData): (WebCore::ImageBuffer::toDataURL):
  • platform/graphics/cg/ImageCG.cpp: (WebCore::BitmapImage::BitmapImage): (WebCore::BitmapImage::draw): (WebCore::Image::drawPattern):
  • platform/graphics/qt/ImageQt.cpp: (WebCore::BitmapImage::BitmapImage):
  • rendering/InlineFlowBox.cpp: (WebCore::InlineFlowBox::paintBackground):
  • rendering/RenderBox.cpp: (WebCore::RenderBox::calculateBackgroundSize): (WebCore::RenderBox::imageChanged): (WebCore::RenderBox::paintBackgroundExtended):
  • rendering/RenderObject.cpp: (WebCore::RenderObject::mustRepaintBackgroundOrBorder): (WebCore::RenderObject::updateBackgroundImages): (WebCore::RenderObject::arenaDelete):
  • rendering/RenderStyle.cpp: (WebCore::StyleCachedImage::cssValue): (WebCore::StyleCachedImage::canRender): (WebCore::StyleCachedImage::imageSize): (WebCore::StyleCachedImage::setImageContainerSize): (WebCore::StyleCachedImage::addClient): (WebCore::StyleCachedImage::removeClient): (WebCore::StyleCachedImage::image): (WebCore::StyleGeneratedImage::cssValue): (WebCore::StyleGeneratedImage::imageSize): (WebCore::StyleGeneratedImage::setImageContainerSize): (WebCore::StyleGeneratedImage::addClient): (WebCore::StyleGeneratedImage::removeClient): (WebCore::StyleGeneratedImage::image):
  • rendering/RenderStyle.h: (WebCore::StyleImage::StyleImage): (WebCore::StyleImage::~StyleImage): (WebCore::StyleImage::operator==): (WebCore::StyleImage::canRender): (WebCore::StyleImage::isCachedImage): (WebCore::StyleImage::isGeneratedImage): (WebCore::StyleCachedImage::StyleCachedImage): (WebCore::StyleCachedImage::data): (WebCore::StyleCachedImage::isCachedImage): (WebCore::StyleGeneratedImage::StyleGeneratedImage): (WebCore::StyleGeneratedImage::data): (WebCore::StyleGeneratedImage::isGeneratedImage): (WebCore::BackgroundLayer::backgroundImage): (WebCore::BackgroundLayer::setBackgroundImage): (WebCore::BackgroundLayer::containsImage): (WebCore::RenderStyle::backgroundImage): (WebCore::RenderStyle::initialBackgroundImage):
  • svg/graphics/cg/SVGPaintServerGradientCg.cpp: (WebCore::SVGPaintServerGradient::teardown):
  • svg/graphics/cg/SVGResourceMaskerCg.mm: (WebCore::SVGResourceMasker::applyMask):
8:14 PM Changeset in webkit [31829] by mitz@apple.com
  • 3 edits in trunk/WebCore

Reviewed by Oliver Hunt.

  • add SVGGlyphMap.h to project files
  • WebCore.vcproj/WebCore.vcproj:
  • WebCore.xcodeproj/project.pbxproj:
6:08 PM Changeset in webkit [31828] by andersca@apple.com
  • 3 edits in trunk/WebCore

2008-04-11 Anders Carlsson <andersca@apple.com>

Fix release build.


  • WebCore.base.exp:


  • loader/archive/ArchiveResource.h: (WebCore::ArchiveResource::response): This should be const.
6:05 PM Changeset in webkit [31827] by Antti Koivisto
  • 2 edits in trunk/WebCore

2008-04-11 Antti Koivisto <Antti Koivisto>

Try to fix Qt build.

  • svg/animation/SMILTime.cpp:
5:13 PM Changeset in webkit [31826] by andersca@apple.com
  • 3 edits in trunk/WebCore

2008-04-11 Anders Carlsson <andersca@apple.com>

Reviewed by Brady.

Don't create the ArchiveResource response lazily.


  • loader/archive/ArchiveResource.cpp: (WebCore::ArchiveResource::ArchiveResource):
  • loader/archive/ArchiveResource.h: (WebCore::ArchiveResource::response):
5:09 PM Changeset in webkit [31825] by ggaren@apple.com
  • 6 edits in branches/squirrelfish/JavaScriptCore

2008-04-11 Geoffrey Garen <ggaren@apple.com>

Reviewed by Sam Weinig.


Mark constant pools for global and eval code (collectively known as
"program code"). (Constant pools for function code are already marked by
their functions.)


The global object is responsible for marking program code constant
pools. Code blocks add themselves to the mark set at creation time, and
remove themselves from the mark set at destruction time.


sunspider --squirrelfish reports a 1% speedup, perhaps because
generateCode() is now non-virtual.

  • kjs/nodes.cpp: I had to use manual init and delete in this file because putting an OwnPtr into the header would have created a circular header dependency.
4:17 PM Changeset in webkit [31824] by Antti Koivisto
  • 2 edits in trunk/JavaScriptCore

2008-04-11 Antti Koivisto <Antti Koivisto>

Reviewed by Maciej.


Add default hash for pairs of hashable types.

  • wtf/HashFunctions.h: (WTF::PairHash::hash): (WTF::PairHash::equal): (WTF::):
2:47 PM Changeset in webkit [31823] by mrowe@apple.com
  • 2 edits in trunk/WebCore

2008-04-11 Jan Michael Alonzo <jmalonzo@unpluggable.com>

Reviewed by Mark Rowe.

Added missing '\' in the svg include path

  • GNUmakefile.am:
2:45 PM Changeset in webkit [31822] by sfalken@apple.com
  • 2 edits in trunk/WebKit/win

Fix caching typo.


Made this code match the Mac.


Reviewed by Mark Rowe.

  • WebView.cpp: (PreferencesChangedOrRemovedObserver::notifyPreferencesChanged):
2:18 PM Changeset in webkit [31821] by mrowe@apple.com
  • 2 edits in trunk

Fix https://bugs.webkit.org/show_bug.cgi?id=18430
Bug 18430: SIGSEGV on amd64 when built with gcc 4.3

GCC 4.3 generates bad code in some instances when working with our HashTables
as some of the HashTable code violates the strict aliasing requirements. Since
GCC 4.2 this code has generated warnings when -fstrict-aliasing is enabled. Until
the code can be fixed to be safe with strict aliasing enabled, we will disable
strict aliasing.

Rubber-stamped by Anders Carlsson.

2:11 PM UsingGitWithWebKit edited by ddkilzer@apple.com
(diff)
2:06 PM Changeset in webkit [31820] by Adam Roben
  • 2 edits in trunk/WebKit/win
  • ForEachCoClass.h: Added a deprecation notice.
2:04 PM Changeset in webkit [31819] by Adam Roben
  • 2 edits in trunk/WebKit/win

Fix Bug 18376: r31733 and 27 don't work w/Safari 3.1


<https://bugs.webkit.org/show_bug.cgi?id=18376>

Rubberstamped by Steve.

  • ForEachCoClass.h: Move post-3.1 classes to the end of the FOR_EACH_COCLASS macro so that pre-3.1 classes will be in the place Safari expects them to be. We will soon be deprecating setUseOpenSourceWebKit/progIDForClass because it is clearly very fragile.
1:52 PM Changeset in webkit [31818] by Antti Koivisto
  • 2 edits in trunk/WebCore

2008-04-11 Antti Koivisto <Antti Koivisto>

Another attempted Qt build fix.

  • WebCore.pro:
1:33 PM Changeset in webkit [31817] by Antti Koivisto
  • 19 edits in trunk/WebCore

2008-04-11 Antti Koivisto <Antti Koivisto>

Reviewed by Oliver.

Fix build when SVG is enabled but SVG_ANIMATION is not.

  • ChangeLog:
  • bindings/js/JSSVGElementWrapperFactory.cpp:
  • bindings/objc/DOM.mm: (WebCore::createElementClassMap):
  • svg/SVGAElement.cpp: (WebCore::SVGAElement::defaultEventHandler):
  • svg/SVGAnimateColorElement.cpp:
  • svg/SVGAnimateColorElement.h:
  • svg/SVGAnimateColorElement.idl:
  • svg/SVGAnimateMotionElement.h:
  • svg/SVGAnimationElement.cpp: (WebCore::SVGAnimationElement::animationMode):
  • svg/SVGAnimationElement.h:
  • svg/SVGAnimationElement.idl:
  • svg/SVGSetElement.cpp:
  • svg/SVGSetElement.h:
  • svg/SVGSetElement.idl:
  • svg/animation/SMILTimeContainer.cpp: (WebCore::SMILTimeContainer::begin): (WebCore::SMILTimeContainer::pause): (WebCore::SMILTimeContainer::resume): (WebCore::SMILTimeContainer::elapsed): (WebCore::SMILTimeContainer::isPaused): (WebCore::SMILTimeContainer::timerFired):
  • svg/animation/SMILTimeContainer.h:
  • svg/animation/SVGSMILElement.cpp:
  • svg/animation/SVGSMILElement.h:
  • svg/svgtags.in:
1:29 PM Changeset in webkit [31816] by andersca@apple.com
  • 6 edits in trunk/WebCore

2008-04-11 Anders Carlsson <andersca@apple.com>

Reviewed by Brady.

Move archive loading from FrameLoader to DocumentLoader.


  • loader/DocumentLoader.cpp: (WebCore::DocumentLoader::DocumentLoader): (WebCore::DocumentLoader::clearArchiveResources): (WebCore::DocumentLoader::deliverArchivedResourcesAfterDelay): (WebCore::DocumentLoader::archiveResourceDeliveryTimerFired): (WebCore::DocumentLoader::isArchiveLoadPending): (WebCore::DocumentLoader::cancelPendingArchiveLoad): (WebCore::DocumentLoader::scheduleArchiveLoad): (WebCore::DocumentLoader::setDefersLoading):
  • loader/DocumentLoader.h:
  • loader/FrameLoader.cpp: (WebCore::FrameLoader::FrameLoader): (WebCore::FrameLoader::setDefersLoading): (WebCore::FrameLoader::stopAllLoaders):
  • loader/FrameLoader.h:
  • loader/ResourceLoader.cpp: (WebCore::ResourceLoader::load): (WebCore::ResourceLoader::didCancel):
12:57 PM Changeset in webkit [31815] by timothy@apple.com
  • 2 edits in trunk/WebCore

Fixes the regression where the DOM tree does not update when navigating
to another page with the Inspector open.

https://bugs.webkit.org/show_bug.cgi?id=18418

Reviewed by Adam Roben.

  • page/inspector/ElementsPanel.js:

(WebInspector.ElementsPanel.prototype.reset): If the inspected document does not have a
firstChild yet, add an event listener for DOMContentLoaded. The event listener just sets
a proeprty that a polling functions looks for then triggers the reset.
(WebInspector.ElementsPanel.prototype._focusedNodeChanged): Always call updateStyles with
forceUpdate as true. This makes sure the Styles pane clears when there isn't a focused node.

10:05 AM Changeset in webkit [31814] by mitz@apple.com
  • 2 edits in trunk/WebCore

Reviewed by Timothy Hatcher.

  • page/inspector/inspector.css:
9:40 AM Changeset in webkit [31813] by ap@webkit.org
  • 4 edits in trunk/JavaScriptCore

Reviewed by Geoff.

Make DateMath.cpp thread safe.

No measurable change on SunSpider (should be a very small speedup).

  • kjs/DateMath.cpp: (KJS::mimimumYearForDST): (KJS::equivalentYearForDST): Got rid of double caching of the same precomputed value. (KJS::calculateUTCOffset): (KJS::getUTCOffset): Factored actual UTC offset calculation code out of getUTCOffset(), and notification setup into initDateMath().

(KJS::initDateMath): Added.

  • kjs/DateMath.h:
  • kjs/InitializeThreading.cpp: (KJS::initializeThreading): Added initDateMath().
9:35 AM Changeset in webkit [31812] by ap@webkit.org
  • 2 edits in trunk/JavaScriptCore

Windows build fix.

  • kjs/grammar.y:
9:18 AM Changeset in webkit [31811] by ap@webkit.org
  • 4 edits in trunk/JavaScriptCore

Tiger build fix. Forward declaring a union didn't work for whatever reason, make the
parameters void*.

  • kjs/grammar.y:
  • kjs/lexer.cpp: (kjsyylex): (KJS::Lexer::lex):
  • kjs/lexer.h:
3:41 AM squirrelfish edited by cwzwarich@uwaterloo.ca
(diff)
3:23 AM Changeset in webkit [31810] by oliver@apple.com
  • 7 edits in branches/squirrelfish/JavaScriptCore

Bug 18231: Improve support for function call nodes in SquirrelFish
<https://bugs.webkit.org/show_bug.cgi?id=18231>

Reviewed by Maciej

Use correct value of 'this' for function calls.

1:14 AM Changeset in webkit [31809] by ap@webkit.org
  • 6 edits in trunk/JavaScriptCore

Reviewed by Geoff.

Generate a pure (re-entrant) parser with Bison.

No change on SunSpider.

  • kjs/Parser.cpp: (KJS::Parser::parse):
  • kjs/grammar.y:
  • kjs/lexer.cpp: (kjsyylex): (KJS::Lexer::lex):
  • kjs/lexer.h: Pass state as function arguments, instead of global data. Don't call lexer() as often as before, as this function is about to become slower due to thread-specific storage.
  • kjs/function.cpp: (KJS::isStrWhiteSpace): Don't call isSeparatorSpace() for 8-bit characters, as these are already taken care of. This is a small speedup, compensating for a small slowdown caused by switching Bison mode.
12:41 AM Changeset in webkit [31808] by Antti Koivisto
  • 5 edits in trunk/WebCore

2008-04-11 Antti Koivisto <Antti Koivisto>

Try to fix Qt build by including some headers.

  • ChangeLog:
  • platform/graphics/UnitBezier.h:
  • svg/SVGAnimationElement.cpp:
  • svg/animation/SMILTime.h:
  • svg/animation/SVGSMILElement.cpp:
12:37 AM Changeset in webkit [31807] by ap@webkit.org
  • 5 edits
    3 adds in trunk

Reviewed by Geoff.

https://bugs.webkit.org/show_bug.cgi?id=18402
REGRESSION: visited element handling is incorrect in nested join/toString calls

No change on SunSpider total, possibly a tiny improvement (about 0.1%).

Test: fast/js/array-tostring-and-join.html

  • kjs/JSGlobalObject.h: (KJS::JSGlobalObject::visitedElements): Store visited elements HashSet here, making it common to toString/toLocalizedString/join again.
  • kjs/array_object.cpp: (KJS::arrayProtoFuncToString): (KJS::arrayProtoFuncToLocaleString): (KJS::arrayProtoFuncJoin): Got rid of static variables. Replaced UString with Vector to avoid O(n2) behavior and regain performance.
  • wtf/Vector.h: (WTF::::resize): (WTF::::grow): (WTF::::reserveCapacity): (WTF::::append): (WTF::::insert): Added null checks, so that Vector methods don't crash when out of memory. The caller should check that data pointer is not null before proceeding.
12:08 AM Changeset in webkit [31806] by Antti Koivisto
  • 2 edits in trunk/WebCore

2008-04-11 Antti Koivisto <Antti Koivisto>

Try to fix Windows build by switching to std::sort().

  • svg/animation/SVGSMILElement.cpp: (WebCore::sortTimeList):
12:00 AM Changeset in webkit [31805] by rwlbuis@webkit.org
  • 3 edits
    4 adds in trunk

Reviewed by Eric.

http://bugs.webkit.org/show_bug.cgi?id=18340
Elements with display="none" in a <clipPath> still contribute to clipping path

Skip elements in clip-path container that have display=none specified.

Apr 10, 2008:

11:58 PM Changeset in webkit [31804] by ggaren@apple.com
  • 2 edits in branches/squirrelfish/JavaScriptCore

2008-04-10 Geoffrey Garen <ggaren@apple.com>

This time for sure.

  • kjs/interpreter.cpp: (KJS::Interpreter::evaluate):
11:57 PM Changeset in webkit [31803] by ggaren@apple.com
  • 2 edits in branches/squirrelfish/JavaScriptCore

2008-04-10 Geoffrey Garen <ggaren@apple.com>

Reviewed by Sam Weinig.


Fixed Interpreter::execute to honor the new model for returning non-NULL
values when an exception is thrown.

  • kjs/interpreter.cpp: (KJS::Interpreter::evaluate):
11:38 PM Changeset in webkit [31802] by Antti Koivisto
  • 94 edits in trunk/LayoutTests

2008-04-10 Antti Koivisto <Antti Koivisto>

Update SVG animation test results.

  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-02-t-expected.checksum:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-02-t-expected.png:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-03-t-expected.checksum:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-03-t-expected.png:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-04-t-expected.checksum:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-04-t-expected.png:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-05-t-expected.checksum:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-05-t-expected.png:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-09-t-expected.checksum:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-09-t-expected.png:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-10-t-expected.checksum:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-10-t-expected.png:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-11-t-expected.checksum:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-11-t-expected.png:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-12-t-expected.checksum:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-12-t-expected.png:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-30-t-expected.checksum:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-30-t-expected.png:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-31-t-expected.checksum:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-31-t-expected.png:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-33-t-expected.checksum:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-33-t-expected.png:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-34-t-expected.checksum:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-34-t-expected.png:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-39-t-expected.checksum:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-39-t-expected.png:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-40-t-expected.checksum:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-40-t-expected.png:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-41-t-expected.checksum:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-41-t-expected.png:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-46-t-expected.checksum:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-46-t-expected.png:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-60-t-expected.checksum:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-60-t-expected.png:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-62-t-expected.checksum:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-62-t-expected.png:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-63-t-expected.checksum:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-63-t-expected.png:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-64-t-expected.checksum:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-64-t-expected.png:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-65-t-expected.checksum:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-65-t-expected.png:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-66-t-expected.checksum:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-66-t-expected.png:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-67-t-expected.checksum:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-67-t-expected.png:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-68-t-expected.checksum:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-68-t-expected.png:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-69-t-expected.checksum:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-69-t-expected.png:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-70-t-expected.checksum:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-70-t-expected.png:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-77-t-expected.checksum:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-77-t-expected.png:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-78-t-expected.checksum:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-78-t-expected.png:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-81-t-expected.checksum:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-81-t-expected.png:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-82-t-expected.checksum:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-82-t-expected.png:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-85-t-expected.checksum:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-85-t-expected.png:
  • platform/mac/svg/W3C-SVG-1.1/animate-elem-02-t-expected.txt:
  • platform/mac/svg/W3C-SVG-1.1/animate-elem-03-t-expected.txt:
  • platform/mac/svg/W3C-SVG-1.1/animate-elem-04-t-expected.txt:
  • platform/mac/svg/W3C-SVG-1.1/animate-elem-05-t-expected.txt:
  • platform/mac/svg/W3C-SVG-1.1/animate-elem-09-t-expected.txt:
  • platform/mac/svg/W3C-SVG-1.1/animate-elem-10-t-expected.txt:
  • platform/mac/svg/W3C-SVG-1.1/animate-elem-11-t-expected.txt:
  • platform/mac/svg/W3C-SVG-1.1/animate-elem-12-t-expected.txt:
  • platform/mac/svg/W3C-SVG-1.1/animate-elem-30-t-expected.txt:
  • platform/mac/svg/W3C-SVG-1.1/animate-elem-31-t-expected.txt:
  • platform/mac/svg/W3C-SVG-1.1/animate-elem-33-t-expected.txt:
  • platform/mac/svg/W3C-SVG-1.1/animate-elem-34-t-expected.txt:
  • platform/mac/svg/W3C-SVG-1.1/animate-elem-39-t-expected.txt:
  • platform/mac/svg/W3C-SVG-1.1/animate-elem-40-t-expected.txt:
  • platform/mac/svg/W3C-SVG-1.1/animate-elem-41-t-expected.txt:
  • platform/mac/svg/W3C-SVG-1.1/animate-elem-46-t-expected.txt:
  • platform/mac/svg/W3C-SVG-1.1/animate-elem-60-t-expected.txt:
  • platform/mac/svg/W3C-SVG-1.1/animate-elem-62-t-expected.txt:
  • platform/mac/svg/W3C-SVG-1.1/animate-elem-63-t-expected.txt:
  • platform/mac/svg/W3C-SVG-1.1/animate-elem-64-t-expected.txt:
  • platform/mac/svg/W3C-SVG-1.1/animate-elem-65-t-expected.txt:
  • platform/mac/svg/W3C-SVG-1.1/animate-elem-66-t-expected.txt:
  • platform/mac/svg/W3C-SVG-1.1/animate-elem-67-t-expected.txt:
  • platform/mac/svg/W3C-SVG-1.1/animate-elem-68-t-expected.txt:
  • platform/mac/svg/W3C-SVG-1.1/animate-elem-69-t-expected.txt:
  • platform/mac/svg/W3C-SVG-1.1/animate-elem-70-t-expected.txt:
  • platform/mac/svg/W3C-SVG-1.1/animate-elem-77-t-expected.txt:
  • platform/mac/svg/W3C-SVG-1.1/animate-elem-78-t-expected.txt:
  • platform/mac/svg/W3C-SVG-1.1/animate-elem-81-t-expected.txt:
  • platform/mac/svg/W3C-SVG-1.1/animate-elem-82-t-expected.txt:
  • platform/mac/svg/W3C-SVG-1.1/animate-elem-85-t-expected.txt:
11:37 PM Changeset in webkit [31801] by Antti Koivisto
  • 25 edits
    7 adds
    4 deletes in trunk/WebCore

2008-04-10 Antti Koivisto <Antti Koivisto>

Reviewed by Eric.

Redo the SVG animation support.


It does

  • Full SMIL interval timing model including syncbase and event base timing (the hard part).
  • CSS and XML attribute animation.
  • Linear, discrete and spline calcModes.
  • Values animation with keyTimes and keySplines.
  • Link activated animations.
  • Pretty good support for <animate> and <set> animations
  • Basic support for <animateColor>, <animateMotion> and <animateTransform>.

This passes some 35 of the 56 tests in W3C SVG animation test suite, a bunch more
with some subtest failures.

What is still missing

  • Additive animation with multiple animations operating on the same property. This is a major architectural feature in animation code. It shouldn't be too hard to add.
  • Only <animate> implements accumulate.
  • <animateMotion> does not do paths, keypoints, rotate.
  • <animateTransform> does not work correctly in all cases
  • calcMode paced is missing.
  • repeat, beginEvent, endEvent are missing.
  • accesskey() is missing.
  • JS does not see correct values for baseVal/animVal, changing values that are being animted for a script produces wrong results. This problem needs to be solved outside the animation code.
  • Some other stuff I forgot or do not know about.
  • GNUmakefile.am:
  • WebCore.pro:
  • WebCore.vcproj/WebCore.vcproj:
  • WebCore.xcodeproj/project.pbxproj:
  • dom/Document.cpp:
  • history/CachedPage.cpp: (WebCore::CachedPage::CachedPage):


Use cache notification mechanism to start/stop animations.

  • svg/SVGAElement.cpp: (WebCore::SVGAElement::defaultEventHandler):


Start target animation on link activation.


  • svg/SVGAnimateColorElement.cpp: (WebCore::SVGAnimateColorElement::applyAnimatedValueToElement): (WebCore::SVGAnimateColorElement::updateAnimatedValue): (WebCore::SVGAnimateColorElement::calculateFromAndToValues): (WebCore::SVGAnimateColorElement::calculateFromAndByValues):
  • svg/SVGAnimateColorElement.h:
  • svg/SVGAnimateElement.cpp: (WebCore::SVGAnimateElement::SVGAnimateElement): (WebCore::parseNumberValueAndUnit): (WebCore::SVGAnimateElement::applyAnimatedValueToElement): (WebCore::SVGAnimateElement::updateAnimatedValue): (WebCore::isColorAttribute): (WebCore::SVGAnimateElement::calculateFromAndToValues): (WebCore::SVGAnimateElement::calculateFromAndByValues):
  • svg/SVGAnimateElement.h: (WebCore::SVGAnimateElement::):
  • svg/SVGAnimateMotionElement.cpp: (WebCore::SVGAnimateMotionElement::SVGAnimateMotionElement): (WebCore::SVGAnimateMotionElement::parseMappedAttribute): (WebCore::SVGAnimateMotionElement::updateAnimatedValue): (WebCore::parsePoint): (WebCore::SVGAnimateMotionElement::calculateFromAndToValues): (WebCore::SVGAnimateMotionElement::calculateFromAndByValues): (WebCore::SVGAnimateMotionElement::applyAnimatedValueToElement): (WebCore::SVGAnimateMotionElement::startedActiveInterval):
  • svg/SVGAnimateMotionElement.h:
  • svg/SVGAnimateTransformElement.cpp: (WebCore::SVGAnimateTransformElement::SVGAnimateTransformElement): (WebCore::SVGAnimateTransformElement::hasValidTarget): (WebCore::SVGAnimateTransformElement::updateAnimatedValue): (WebCore::transformListFor): (WebCore::SVGAnimateTransformElement::applyAnimatedValueToElement): (WebCore::SVGAnimateTransformElement::calculateFromAndToValues): (WebCore::SVGAnimateTransformElement::calculateFromAndByValues): (WebCore::SVGAnimateTransformElement::startedActiveInterval): (WebCore::SVGAnimateTransformElement::parseTransformValue):
  • svg/SVGAnimateTransformElement.h:


Concrete anmation element classes.


  • svg/SVGAnimationElement.cpp: (WebCore::SVGAnimationElement::SVGAnimationElement): (WebCore::SVGAnimationElement::~SVGAnimationElement): (WebCore::parseKeyTimes): (WebCore::parseKeySplines): (WebCore::SVGAnimationElement::parseMappedAttribute): (WebCore::SVGAnimationElement::attributeChanged): (WebCore::SVGAnimationElement::getStartTime): (WebCore::SVGAnimationElement::getCurrentTime): (WebCore::SVGAnimationElement::getSimpleDuration): (WebCore::SVGAnimationElement::beginElement): (WebCore::SVGAnimationElement::beginElementAt): (WebCore::SVGAnimationElement::endElement): (WebCore::SVGAnimationElement::endElementAt): (WebCore::SVGAnimationElement::animationMode): (WebCore::SVGAnimationElement::calcMode): (WebCore::SVGAnimationElement::attributeType): (WebCore::SVGAnimationElement::toValue): (WebCore::SVGAnimationElement::byValue): (WebCore::SVGAnimationElement::fromValue): (WebCore::SVGAnimationElement::attributeName): (WebCore::SVGAnimationElement::isAdditive): (WebCore::SVGAnimationElement::isAccumulated): (WebCore::SVGAnimationElement::hasValidTarget): (WebCore::SVGAnimationElement::targetAttributeIsCSS): (WebCore::SVGAnimationElement::setTargetAttributeAnimatedValue): (WebCore::SVGAnimationElement::targetAttributeBaseValue): (WebCore::solveEpsilon): (WebCore::SVGAnimationElement::currentValuesForValuesAnimation): (WebCore::SVGAnimationElement::startedActiveInterval): (WebCore::SVGAnimationElement::applyAnimation): (WebCore::SVGAnimationElement::unapplyAnimation): (WebCore::SVGAnimationElement::endedActiveInterval):
  • svg/SVGAnimationElement.h: (WebCore::SVGAnimationElement::):


This is pretty much a complete rewrite of the SVGAnimationElement. Timing related functionality
was refactored to SMILTimingElement class that this class now inherits.


  • svg/SVGDocumentExtensions.cpp: (WebCore::SVGDocumentExtensions::startAnimations):
  • svg/SVGElement.cpp: (WebCore::SVGElement::ownerSVGElement):
  • svg/SVGSVGElement.cpp:


We need to reach the <svg> element from <use> too so go out from the shadow tree.


(WebCore::SVGSVGElement::SVGSVGElement):
(WebCore::SVGSVGElement::~SVGSVGElement):
(WebCore::SVGSVGElement::pauseAnimations):
(WebCore::SVGSVGElement::unpauseAnimations):
(WebCore::SVGSVGElement::animationsPaused):
(WebCore::SVGSVGElement::getCurrentTime):
(WebCore::SVGSVGElement::willSaveToCache):
(WebCore::SVGSVGElement::willRestoreFromCache):

  • svg/SVGSVGElement.h: (WebCore::SVGSVGElement::timeContainer):
  • svg/SVGSetElement.cpp: (WebCore::SVGSetElement::applyAnimatedValueToElement): (WebCore::SVGSetElement::calculateFromAndToValues): (WebCore::SVGSetElement::calculateFromAndByValues): (WebCore::SVGSetElement::updateAnimatedValue):
  • svg/SVGSetElement.h:


Concrete anmation element classes.


  • svg/SVGTimer.cpp: Removed.
  • svg/SVGTimer.h: Removed.
  • svg/SVGUseElement.cpp: (WebCore::SVGUseElement::removedFromDocument):
  • svg/TimeScheduler.cpp: Removed.
  • svg/TimeScheduler.h: Removed.


Replaced these with SMILTimeContainer class.


  • svg/animation: Added.
  • svg/animation/SMILTime.cpp: Added. (WebCore::operator+): (WebCore::operator-): (WebCore::operator*):
  • svg/animation/SMILTime.h: Added. (WebCore::SMILTime::SMILTime): (WebCore::SMILTime::unresolved): (WebCore::SMILTime::indefinite): (WebCore::SMILTime::operator=): (WebCore::SMILTime::value): (WebCore::SMILTime::isFinite): (WebCore::SMILTime::isIndefinite): (WebCore::SMILTime::isUnresolved): (WebCore::operator==): (WebCore::operator!=): (WebCore::operator>): (WebCore::operator<): (WebCore::operator>=): (WebCore::operator<=): (WebCore::max): (WebCore::min):


A floating point number with special values "indefinite" and "unresolved". Defines math for those.


  • svg/animation/SMILTimeContainer.cpp: Added. (WebCore::SMILTimeContainer::SMILTimeContainer): (WebCore::SMILTimeContainer::schedule): (WebCore::SMILTimeContainer::unschedule): (WebCore::SMILTimeContainer::elapsed): (WebCore::SMILTimeContainer::isActive): (WebCore::SMILTimeContainer::isPaused): (WebCore::SMILTimeContainer::begin): (WebCore::SMILTimeContainer::pause): (WebCore::SMILTimeContainer::resume): (WebCore::SMILTimeContainer::startTimer): (WebCore::SMILTimeContainer::timerFired): (WebCore::SMILTimeContainer::updateAnimations):
  • svg/animation/SMILTimeContainer.h: Added.


Manages the clock and time line for active animations in a document.


  • svg/animation/SVGSMILElement.cpp: Added. (WebCore::ConditionEventListener::ConditionEventListener): (WebCore::ConditionEventListener::handleEvent): (WebCore::SVGSMILElement::Condition::Condition): (WebCore::SVGSMILElement::SVGSMILElement): (WebCore::SVGSMILElement::~SVGSMILElement): (WebCore::SVGSMILElement::insertedIntoDocument): (WebCore::SVGSMILElement::removedFromDocument): (WebCore::SVGSMILElement::finishParsingChildren): (WebCore::SVGSMILElement::parseOffsetValue): (WebCore::SVGSMILElement::parseClockValue): (WebCore::smilTimeSortFunction): (WebCore::sortTimeList): (WebCore::SVGSMILElement::parseCondition): (WebCore::SVGSMILElement::isTimingElement): (WebCore::SVGSMILElement::parseBeginOrEnd): (WebCore::SVGSMILElement::parseMappedAttribute): (WebCore::SVGSMILElement::attributeChanged): (WebCore::SVGSMILElement::connectConditions): (WebCore::SVGSMILElement::disconnectConditions): (WebCore::SVGSMILElement::reschedule): (WebCore::SVGSMILElement::targetElement): (WebCore::SVGSMILElement::elapsed): (WebCore::SVGSMILElement::restart): (WebCore::SVGSMILElement::fill): (WebCore::SVGSMILElement::xlinkHref): (WebCore::SVGSMILElement::dur): (WebCore::SVGSMILElement::repeatDur): (WebCore::SVGSMILElement::repeatCount): (WebCore::SVGSMILElement::maxValue): (WebCore::SVGSMILElement::minValue): (WebCore::SVGSMILElement::simpleDuration): (WebCore::SVGSMILElement::addBeginTime): (WebCore::SVGSMILElement::addEndTime): (WebCore::SVGSMILElement::findInstanceTime): (WebCore::SVGSMILElement::repeatingDuration): (WebCore::SVGSMILElement::resolveActiveEnd): (WebCore::SVGSMILElement::resolveInterval): (WebCore::SVGSMILElement::resolveFirstInterval): (WebCore::SVGSMILElement::resolveNextInterval): (WebCore::SVGSMILElement::nextProgressTime): (WebCore::SVGSMILElement::beginListChanged): (WebCore::SVGSMILElement::endListChanged): (WebCore::SVGSMILElement::checkRestart): (WebCore::SVGSMILElement::calculateAnimationPercentAndRepeat): (WebCore::SVGSMILElement::calculateNextProgressTime): (WebCore::SVGSMILElement::determineActiveState): (WebCore::SVGSMILElement::progress): (WebCore::SVGSMILElement::notifyDependentsIntervalChanged): (WebCore::SVGSMILElement::createInstanceTimesFromSyncbase): (WebCore::SVGSMILElement::addTimeDependent): (WebCore::SVGSMILElement::removeTimeDependent): (WebCore::SVGSMILElement::handleConditionEvent): (WebCore::SVGSMILElement::beginByLinkActivation):
  • svg/animation/SVGSMILElement.h: Added. (WebCore::SVGSMILElement::timeContainer): (WebCore::SVGSMILElement::): (WebCore::SVGSMILElement::intervalBegin): (WebCore::SVGSMILElement::intervalEnd): (WebCore::SVGSMILElement::Condition::):


This abstract class implements the SMIL timing model. As an output it produces calls
to these virtual functions:


virtual void startedActiveInterval() = 0;
virtual void applyAnimation(float percent, unsigned repeat) = 0;
virtual void unapplyAnimation() = 0;
virtual void endedActiveInterval() = 0;

11:06 PM Changeset in webkit [31800] by oliver@apple.com
  • 2 edits in branches/squirrelfish/JavaScriptCore

Fix SquirrelFish interpreter to pass internal exceptions back to
native code correctly.

Reviewed by Geoff

10:59 PM Changeset in webkit [31799] by weinig@apple.com
  • 47 edits
    2 copies in branches/squirrelfish

JavaScriptCore:

2008-04-10 Sam Weinig <sam@webkit.org>

Reviewed by Geoffrey Garen.

Replace the use of getCallData in op_construct with the new
getConstructData function that replaces implementsConstruct.

  • API/JSCallbackConstructor.cpp: (KJS::JSCallbackConstructor::getConstructData):
  • API/JSCallbackConstructor.h:
  • API/JSCallbackObject.h:
  • API/JSCallbackObjectFunctions.h: (KJS::::getConstructData): (KJS::::construct):
  • API/JSObjectRef.cpp: (JSObjectIsConstructor):
  • JavaScriptCore.exp:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • VM/Machine.cpp: (KJS::Machine::privateExecute):
  • kjs/CallData.h:
  • kjs/ConstructData.h: Copied from JavaScriptCore/kjs/CallData.h. (KJS::):
  • kjs/array_object.cpp: (KJS::ArrayObjectImp::getConstructData):
  • kjs/array_object.h:
  • kjs/bool_object.cpp: (KJS::BooleanObjectImp::getConstructData):
  • kjs/bool_object.h:
  • kjs/date_object.cpp: (KJS::DateObjectImp::getConstructData):
  • kjs/date_object.h:
  • kjs/error_object.cpp: (KJS::ErrorObjectImp::getConstructData): (KJS::NativeErrorImp::getConstructData):
  • kjs/error_object.h:
  • kjs/function.cpp: (KJS::FunctionImp::getCallData): (KJS::FunctionImp::getConstructData): (KJS::FunctionImp::construct):
  • kjs/function.h:
  • kjs/function_object.cpp: (KJS::FunctionObjectImp::getConstructData):
  • kjs/function_object.h:
  • kjs/nodes.cpp: (KJS::NewExprNode::inlineEvaluate):
  • kjs/number_object.cpp: (KJS::NumberObjectImp::getConstructData):
  • kjs/number_object.h:
  • kjs/object.cpp:
  • kjs/object.h:
  • kjs/object_object.cpp: (KJS::ObjectObjectImp::getConstructData):
  • kjs/object_object.h:
  • kjs/regexp_object.cpp: (KJS::RegExpObjectImp::getConstructData):
  • kjs/regexp_object.h:
  • kjs/string_object.cpp: (KJS::StringObjectImp::getConstructData):
  • kjs/string_object.h:
  • kjs/value.cpp: (KJS::JSCell::getConstructData):
  • kjs/value.h: (KJS::JSValue::getConstructData):

WebCore:

2008-04-10 Sam Weinig <sam@webkit.org>

Reviewed by Geoffrey Garen.

Adjusted WebCore JS functions to the new "getConstructData" calling convention.

10:35 PM Changeset in webkit [31798] by oliver@apple.com
  • 4 edits
    4 adds in branches/squirrelfish/JavaScriptCore

Bug 18420: SquirrelFish: need to throw Reference and Type errors
when attempting invalid operations on JSValues

Reviewed by Geoff

Add validation and exception checks to SquirrelFish so that the
correct exceptions are thrown for undefined variables, type errors
and toObject failure. Also handle exceptions thrown by native
function calls.

10:26 PM Changeset in webkit [31797] by Antti Koivisto
  • 4 edits
    1 add in trunk/WebCore

2008-04-10 Antti Koivisto <Antti Koivisto>

Reviewed by Eric.

Move CurveData out from AnimationController.cpp and rename
it to UnitBezier. This makes it possible to reuse this nice class from the
SVG animation code.

  • WebCore.vcproj/WebCore.vcproj:
  • WebCore.xcodeproj/project.pbxproj:
  • page/AnimationController.cpp: (WebCore::solveCubicBezierFunction):
  • platform/graphics/UnitBezier.h: Added. (WebCore::UnitBezier::UnitBezier): (WebCore::UnitBezier::sampleCurveX): (WebCore::UnitBezier::sampleCurveY): (WebCore::UnitBezier::sampleCurveDerivativeX): (WebCore::UnitBezier::solveCurveX): (WebCore::UnitBezier::solve):
9:32 PM Changeset in webkit [31796] by ggaren@apple.com
  • 2 edits in branches/squirrelfish/JavaScriptCore

2008-04-10 Geoffrey Garen <ggaren@apple.com>

Reviewed by Oliver Hunt.


Pass a function body node its function's scope chain, rather than the
current execution context's scope chain, when compiling it.


This doesn't matter yet, but it will once we start using the scope
chain during compilation.

sunspider --squirrelfish notes a tiny speedup.

  • VM/Machine.cpp: (KJS::Machine::privateExecute):
6:47 PM Changeset in webkit [31795] by kevino@webkit.org
  • 1 edit
    1 add in trunk/WebKitTools

Reviewed by Darin Adler.

Add a script that propagates any file changes made to the Bakefiles over to GTK and Qt build systems. Still needs to be wired into those ports though.

6:11 PM Changeset in webkit [31794] by ggaren@apple.com
  • 4 edits in branches/squirrelfish/JavaScriptCore

2008-04-10 Geoffrey Garen <ggaren@apple.com>

Reviewed by Oliver Hunt.


Fix two bugs when throwing exceptions from re-entrant JS calls:


(1) Don't shrink the register file to 0, since our caller may still
be using it.


(2) In case of exception, return jsNull() instead of 0 because,
surprisingly, some JavaScriptCore clients rely on a function's return
value being safe to operate on even if the function threw an exception.


Also:


  • Changed FunctionImp::callAsFunction to honor the new semantics of exceptions not returning 0.


  • Renamed "handlerPC" to "handlerVPC" to match other uses of "VPC".


  • Renamed "exceptionData" to "exceptionValue", because "data" seemed to imply something more than just a JSValue.


  • Merged prepareException into throwException, since throwException was its only caller, and it seemed weird that throwException didn't take an exception as an argument.

sunspider --squirrelfish does not seem to complain on my machine, but it
complains a little (.6%) on Oliver's.

6:06 PM Changeset in webkit [31793] by beidson@apple.com
  • 13 edits
    2 moves in trunk/WebCore

2008-04-10 Brady Eidson <beidson@apple.com>

Reviewed by Sam Weinig

The name "OriginStorage" never felt right to a few of us. The HTML5 spec refers to our
concept of "OriginStorage" as a "storage area", which makes more sense here.

This patch is basically:
s/OriginStorage/StorageArea/

  • GNUmakefile.am:
  • WebCore.pro:
  • WebCore.vcproj/WebCore.vcproj:
  • WebCore.xcodeproj/project.pbxproj:
  • WebCoreSources.bkl:
  • loader/FrameLoader.cpp:
  • page/DOMWindow.cpp: (WebCore::DOMWindow::sessionStorage):
  • page/Page.cpp:
  • storage/OriginStorage.cpp: Removed.
  • storage/OriginStorage.h: Removed.
  • storage/SessionStorage.cpp: (WebCore::SessionStorage::copy): (WebCore::SessionStorage::storageArea):
  • storage/SessionStorage.h:
  • storage/Storage.cpp: (WebCore::Storage::create): (WebCore::Storage::Storage): (WebCore::Storage::length): (WebCore::Storage::key): (WebCore::Storage::getItem): (WebCore::Storage::setItem): (WebCore::Storage::removeItem): (WebCore::Storage::contains):
  • storage/Storage.h:
  • storage/StorageArea.cpp: Copied from storage/OriginStorage.cpp. (WebCore::StorageArea::create): (WebCore::StorageArea::StorageArea): (WebCore::StorageArea::~StorageArea): (WebCore::StorageArea::copy): (WebCore::StorageArea::length): (WebCore::StorageArea::key): (WebCore::StorageArea::getItem): (WebCore::StorageArea::setItem): (WebCore::StorageArea::removeItem): (WebCore::StorageArea::contains): (WebCore::StorageArea::dispatchStorageEvent):
  • storage/StorageArea.h: Copied from storage/OriginStorage.h.
5:53 PM Changeset in webkit [31792] by alp@webkit.org
  • 2 edits in trunk/WebCore

2008-04-10 Xan Lopez <xan@gnome.org>

Reviewed by Alp Toker.

http://bugs.webkit.org/show_bug.cgi?id=18342
Bug #18342 - Add logging to HTTP soup backend


Add soup logging facilities to HTTP soup backend.
Enable defining WEBKIT_SOUP_LOGGING, with values from
0 to 3 for more verbosity.


  • platform/network/soup/ResourceHandleSoup.cpp: (WebCore::ResourceHandle::start):
5:45 PM Changeset in webkit [31791] by alp@webkit.org
  • 2 edits in trunk

2008-03-12 Michael Emmel <mike.emmel@gmail.com>

Reviewed by Alp Toker.

http://bugs.webkit.org/show_bug.cgi?id=18397
Fix leaving spaces before parens in functions

  • WebKitTools/Scripts/wkstyle:
5:30 PM Changeset in webkit [31790] by alp@webkit.org
  • 2 edits in trunk/WebKit/gtk

2008-04-10 Mario Bensi <mbensi@pleyo.com>

Reviewed by Alp Toker.

https://bugs.webkit.org/show_bug.cgi?id=18400
Database example doesn't work on Gtk port

Fix quota in ChromeClient

  • WebCoreSupport/ChromeClientGtk.cpp: (WebKit::ChromeClient::exceededDatabaseQuota):
4:56 PM Changeset in webkit [31789] by timothy@apple.com
  • 5 edits in trunk/WebCore

Fixes floating point precision in the Resources graph labels by using String.sprintf to
format the values. Also makes the image view use Number.bytesToString when showing the file
size. Makes Number.bytesToString and Number.secondsToString take an optional formatter function
so the Inspector can pass WebInspector.UIString, so the format strings can be localized.

https://bugs.webkit.org/show_bug.cgi?id=18381
https://bugs.webkit.org/show_bug.cgi?id=14333

Reviewed by Adam Roben.

  • English.lproj/InspectorLocalizedStrings.js: Added the new strings.
  • page/inspector/ImageView.js:

(WebInspector.ImageView): Use Number.bytesToString to format this.resource.contentLength.

  • page/inspector/ResourcesPanel.js:

(WebInspector.ResourceTransferTimeCalculator.prototype.formatValue): Pass WebInspector.UIString
to Number.secondsToString.
(WebInspector.ResourceTransferSizeCalculator.prototype.formatValue): Pass WebInspector.UIString
to Number.bytesToString.

  • page/inspector/utilities.js:

(Number.secondsToString): Added a formatterFunction argument. Use the formatter and format strings
to control the number precision.
(Number.bytesToString): Ditto.

4:42 PM Changeset in webkit [31788] by alice.liu@apple.com
  • 3 edits
    2 adds in trunk

WebCore:

2008-04-010 Alice Liu <alice.liu@apple.com>

Reviewed by Dan Bernstein.

Fixed <rdar://5815856> CrashTracer: [USER] 8384 crashes in WebCore::Widget::getView const + 6

Test: fast/events/mouseout-dead-subframe.html

  • page/EventHandler.cpp: dispatching a mouse event can change the document structure, necessitating a check for whether we still want to pass the event to the pre-determined subframe (WebCore::EventHandler::handleMouseMoveEvent):

LayoutTests:

2008-04-10 Alice Liu <alice.liu@apple.com>

Reviewed by Dan Bernstein.

Added test for <rdar://5815856> CrashTracer: [USER] 8384 crashes in WebCore::Widget::getView const + 6

  • fast/events/mouseout-dead-subframe-expected.txt: Added.
  • fast/events/mouseout-dead-subframe.html: Added.
3:51 PM Changeset in webkit [31787] by mrowe@apple.com
  • 3 edits in trunk/JavaScriptCore

Fix https://bugs.webkit.org/show_bug.cgi?id=18367 and the many dupes.
Bug 18367: Crash during celtic kane js speed 2007 test

Reviewed by Maciej Stachowiak.

GCC 4.2 on x86_64 Linux decided to reorder the local variables in markCurrentThreadConservatively's
stack frame. This lead to the range of addresses the collector treated as stack to exclude the
contents of volatile registers that markCurrentThreadConservatively forces onto the stack. This was
leading to objects being prematurely collected if the only reference to them was via a register at
the time a collection occurred.

The fix for this is to move the calculation of the top of the stack into a NEVER_INLINE function
that is called from markCurrentThreadConservatively. This forces the dummy variable we use for
determining the top of stack to be in a different stack frame which prevents the compiler from
reordering it relative to the registers that markCurrentThreadConservatively forces onto the stack.

  • kjs/collector.cpp:

(KJS::Collector::markCurrentThreadConservativelyInternal):
(KJS::Collector::markCurrentThreadConservatively):

  • kjs/collector.h:
3:38 PM squirrelfish edited by ggaren@apple.com
(diff)
3:30 PM Changeset in webkit [31786] by adachan@apple.com
  • 6 edits
    3 adds in trunk/WebKit/win

Added WebCoreStatistics that provides stats on Javascript objects
and IconDatabase.


Changed WebCache::statistics() to additionally return xsl stylesheets data
and data on live sizes and decoded sizes.

Reviewed by Steve.

  • ForEachCoClass.h:
  • Interfaces/IWebCoreStatistics.idl: Added.
  • Interfaces/WebKit.idl:
  • WebCache.cpp: (WebCache::statistics):
  • WebCoreStatistics.cpp: Added. (WebCoreStatistics::WebCoreStatistics): (WebCoreStatistics::~WebCoreStatistics): (WebCoreStatistics::createInstance): (WebCoreStatistics::QueryInterface): (WebCoreStatistics::AddRef): (WebCoreStatistics::Release): (WebCoreStatistics::javaScriptObjectsCount): (WebCoreStatistics::javaScriptGlobalObjectsCount): (WebCoreStatistics::javaScriptProtectedObjectsCount): (WebCoreStatistics::javaScriptProtectedGlobalObjectsCount): (WebCoreStatistics::iconPageURLMappingCount): (WebCoreStatistics::iconRetainedPageURLCount): (WebCoreStatistics::iconRecordCount): (WebCoreStatistics::iconsWithDataCount):
  • WebCoreStatistics.h: Added.
  • WebKit.vcproj/WebKit.vcproj:
  • WebKitClassFactory.cpp:
3:24 PM Changeset in webkit [31785] by Antti Koivisto
  • 2 edits in trunk/WebCore

2008-04-10 Antti Koivisto <Antti Koivisto>

Reviewed by Eric.

Fix scale transform. This will be tested by the animation test suite when
SVG animation support lands.

  • svg/SVGTransformDistance.cpp: (WebCore::SVGTransformDistance::SVGTransformDistance):
3:03 PM squirrelfish edited by ggaren@apple.com
(diff)
1:59 PM Changeset in webkit [31784] by ggaren@apple.com
  • 2 edits in branches/squirrelfish/JavaScriptCore

2008-04-10 Geoffrey Garen <ggaren@apple.com>

Reviewed by Maciej Stachowiak.


Fixed op_construct for CallTypeNative to reacquire "r" before setting
its return value, since registerBase can theoretically change during the
execution of arbitrary code. (Not sure if any native constructors
actually make this possible.)

sunspider --squirrelfish does not seem to complain.

  • VM/Machine.cpp: (KJS::Machine::privateExecute):
1:27 PM Changeset in webkit [31783] by ggaren@apple.com
  • 7 edits in branches/squirrelfish/JavaScriptCore

2008-04-10 Geoffrey Garen <ggaren@apple.com>

Reviewed by Oliver Hunt and Sam Weinig.


Re-entrant execution of function code (global code -> built-in function
-> JS function):


Miraculously, sunspider --squirrelfish does not seem to complain.

A re-entrant function call is the same as a normal function call with
one exception: the re-entrant call leaves everything except for
CallerCodeBlock in the call frame header uninitialized, since the call
doesn't need to return to JS code. (It sets CallerCodeBlock to 0, to
indicate that the call shouldn't return to JS code.)


Also fixed a few issues along the way:


  • Fixed two bugs in the read-write List implementation that caused m_size and m_buffer to go stale.


  • Changed native call code to update "r" *before* setting the return value, since the call may in turn call JS code, which changes the value of "r".


  • Migrated initialization of "r" outside of Machine::privateExecute, because global code and function code initialize "r" differently.


  • Migrated a codegen warning from Machine::privateExecute to the wiki.


  • Removed unnecessary "r" parameter from slideRegisterWindowForCall
  • VM/Machine.cpp: (KJS::slideRegisterWindowForCall): (KJS::scopeChainForCall): (KJS::Machine::execute): (KJS::Machine::privateExecute):
  • VM/Machine.h:
  • kjs/function.cpp: (KJS::FunctionImp::callAsFunction):
  • kjs/list.cpp: (KJS::List::getSlice):
  • kjs/list.h: (KJS::List::clear):
1:25 PM Changeset in webkit [31782] by hyatt@apple.com
  • 4 edits in trunk/WebCore

2008-04-10 David Hyatt <hyatt@apple.com>

Add a gradient fillRect method to GraphicsContext. This is implemented only in the CG port. I stubbed
out a method in GraphicsContext.cpp with notImplemented(). Other platforms will need to add their own
gradient fill methods.

Reviewed by aroben

  • platform/graphics/GraphicsContext.cpp: (WebCore::GraphicsContext::fillRect):
  • platform/graphics/GraphicsContext.h:
  • platform/graphics/cg/GraphicsContextCG.cpp: (WebCore::GraphicsContext::fillRect):
12:35 PM Changeset in webkit [31781] by hyatt@apple.com
  • 3 edits in trunk/WebCore

2008-04-10 David Hyatt <hyatt@apple.com>

Gradient improvements. Support for adding color stops by Color and not just by String. Add the ability to mark
stops as already being sorted.

Reviewed by aroben

  • platform/graphics/Gradient.cpp: (WebCore::Gradient::addColorStop):
  • platform/graphics/Gradient.h: (WebCore::Gradient::setStopsSorted):
12:25 PM Changeset in webkit [31780] by timothy@apple.com
  • 2 edits in trunk/WebCore

Fixes the build where some wtf headers would not be copied due
to a bug in some older versions of Xcode.

Rubber-stamped by Adam Roben.

  • WebCore.xcodeproj/project.pbxproj: Adds a new script phase to handle

the copying of the icu and ForwardingHeaders folder to WebCore's PrivateHeaders.
Removes the old copy files phase and the icu and ForwardingHeaders folder references.

11:46 AM Changeset in webkit [31779] by sfalken@apple.com
  • 2 edits in trunk/WebKit/win

Delete backing store (after a delay) when a WebView's top-level parent becomes inactive.

Reviewed by Brady Eidson.

  • WebView.cpp: (WebView::windowReceivedMessage):
10:42 AM Changeset in webkit [31778] by beidson@apple.com
  • 3 edits in trunk/LayoutTests

2008-04-10 Brady Eidson <beidson@apple.com>

Reviewed by Mitz Pettel

DOM Storage layout test cleanup

  • storage/domstorage/sessionstorage/iframe-events.html: Check for the layoutTestController in a manner that won't confuse Firefox
  • storage/domstorage/sessionstorage/resources/clearSessionStorage.js: Don't mutate while iterating! Clea the sessionStorage properly
10:22 AM squirrelfish edited by ggaren@apple.com
(diff)
10:10 AM squirrelfish edited by ggaren@apple.com
(diff)
9:03 AM Changeset in webkit [31777] by Adam Roben
  • 1 edit in trunk/JavaScriptCore/wtf/Assertions.cpp

Touch a file to force WTF.vcproj to build

8:25 AM Changeset in webkit [31776] by Adam Roben
  • 2 edits in trunk/JavaScriptCore

VC++ Express build fix

  • JavaScriptCore.vcproj/WTF/WTF.vcproj: Link against user32.lib so that anyone who links against WTF.lib will get user32.lib automatically.
5:32 AM Changeset in webkit [31775] by mjs@apple.com
  • 2 edits in branches/squirrelfish/SunSpider

2008-04-10 Maciej Stachowiak <mjs@apple.com>

Reviewed by Oliver.


Add newly runnable tests to --squirrelfish mode.

  • tests/LIST-SQUIRRELFISH:
4:18 AM Changeset in webkit [31774] by mjs@apple.com
  • 2 edits in branches/squirrelfish/JavaScriptCore

2008-04-10 Maciej Stachowiak <mjs@apple.com>

Reviewed by Oliver.


  • fix problem with code generation for return with no argument


3d-cube now runs

  • kjs/nodes.cpp: (KJS::ReturnNode::emitCode):
4:14 AM Changeset in webkit [31773] by mjs@apple.com
  • 3 edits in branches/squirrelfish/JavaScriptCore

2008-04-10 Maciej Stachowiak <mjs@apple.com>

Reviewed by Oliver.


  • Implement support for JS constructors


access-binary-trees and access-nbody now run.


Inexplicably a 1% speedup.

  • VM/Machine.cpp: (KJS::initializeCallFrame): (KJS::Machine::privateExecute):
  • VM/Machine.h: (KJS::Machine::):
4:06 AM QtWebKitTodo edited by bmeyer@trolltech.com
(diff)
3:29 AM Changeset in webkit [31772] by mjs@apple.com
  • 2 edits in branches/squirrelfish/JavaScriptCore

2008-04-10 Maciej Stachowiak <mjs@apple.com>

Reviewed by Oliver.

  • More code cleanup in preparation for JS constructors

Factor the remaining interesting parts of JS function calls into
slideRegisterWindowForCall and scopeChainForCall.


  • VM/Machine.cpp: (KJS::slideRegisterWindowForCall): (KJS::scopeChainForCall): (KJS::Machine::privateExecute):
2:12 AM Changeset in webkit [31771] by mjs@apple.com
  • 4 edits in branches/squirrelfish/JavaScriptCore

2008-04-10 Maciej Stachowiak <mjs@apple.com>

Reviewed by Geoff.


  • Code cleanup in preparation for JS constructors
  • Renamed returnInfo to callFrame.
  • Made an enum which defines what goes where in the call frame.
  • Factored out initializeCallFrame function from op_call


  • VM/CodeGenerator.cpp: (KJS::CodeGenerator::emitCall): (KJS::CodeGenerator::emitConstruct):
  • VM/Machine.cpp: (KJS::Machine::dumpRegisters): (KJS::initializeCallFrame): (KJS::Machine::unwindCallFrame): (KJS::Machine::execute): (KJS::Machine::privateExecute):
  • VM/Machine.h: (KJS::Machine::):
12:37 AM Changeset in webkit [31770] by ggaren@apple.com
  • 4 edits in branches/squirrelfish/JavaScriptCore

2008-04-10 Geoffrey Garen <ggaren@apple.com>

Reviewed by Oliver Hunt.


Fixed two bugs in register allocation for function calls:


(1) op_call used to allocate codeBlock->numVars too many registers for
each call frame, due to duplicated math. Fixing this revealed...


(2) By unconditionally calling resize(), op_call used to truncate the
register file when calling a function whose registers fit wholly within
the register file already allocated by its caller.


sunspider --squirrelfish reports no regression.


I also threw in a little extra formatting to dumpCallFrame, because it
helped me debug these issues.

  • VM/Machine.cpp: (KJS::Machine::dumpRegisters): (KJS::Machine::execute): (KJS::Machine::privateExecute):
  • VM/RegisterFile.h: (KJS::RegisterFile::shrink): (KJS::RegisterFile::grow):
  • VM/RegisterFileStack.cpp: (KJS::RegisterFileStack::popRegisterFile):
Note: See TracTimeline for information about the timeline view.