Timeline


and

04/10/08:

23:58 Changeset [31804] by ggaren@apple.com

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

This time for sure.

  • kjs/interpreter.cpp: (KJS::Interpreter::evaluate):
23:57 Changeset [31803] by ggaren@apple.com

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):
23:38 Changeset [31802] by antti@apple.com

2008-04-10 Antti Koivisto <antti@apple.com>

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:
23:37 Changeset [31801] by antti@apple.com

2008-04-10 Antti Koivisto <antti@apple.com>

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;

23:06 Changeset [31800] by oliver@apple.com

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

Reviewed by Geoff

22:59 Changeset [31799] by weinig@apple.com

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.

22:35 Changeset [31798] by oliver@apple.com

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.

22:26 Changeset [31797] by antti@apple.com

2008-04-10 Antti Koivisto <antti@apple.com>

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):
21:32 Changeset [31796] by ggaren@apple.com

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):
18:47 Changeset [31795] by kevino@webkit.org

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.

18:11 Changeset [31794] by ggaren@apple.com

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.

18:06 Changeset [31793] by beidson@apple.com

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.
17:53 Changeset [31792] by alp@webkit.org

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):
17:45 Changeset [31791] by alp@webkit.org

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:
17:30 Changeset [31790] by alp@webkit.org

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):
16:56 Changeset [31789] by timothy@apple.com

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.

16:42 Changeset [31788] by alice.liu@apple.com

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.
15:51 Changeset [31787] by mrowe@apple.com

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:
15:38 squirrelfish edited by ggaren@apple.com
(diff)
15:30 Changeset [31786] by adachan@apple.com

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:
15:24 Changeset [31785] by antti@apple.com

2008-04-10 Antti Koivisto <antti@apple.com>

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):
15:03 squirrelfish edited by ggaren@apple.com
(diff)
13:59 Changeset [31784] by ggaren@apple.com

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):
13:27 Changeset [31783] by ggaren@apple.com

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):
13:25 Changeset [31782] by hyatt@apple.com

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 Changeset [31781] by hyatt@apple.com

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 Changeset [31780] by timothy@apple.com

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 Changeset [31779] by sfalken@apple.com

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 Changeset [31778] by beidson@apple.com

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 squirrelfish edited by ggaren@apple.com
(diff)
10:10 squirrelfish edited by ggaren@apple.com
(diff)
09:03 Changeset [31777] by aroben@apple.com

Touch a file to force WTF.vcproj to build

08:25 Changeset [31776] by aroben@apple.com

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.
05:32 Changeset [31775] by mjs@apple.com

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

Reviewed by Oliver.


Add newly runnable tests to --squirrelfish mode.

  • tests/LIST-SQUIRRELFISH:
04:18 Changeset [31774] by mjs@apple.com

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):
04:14 Changeset [31773] by mjs@apple.com

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::):
04:06 QtWebKitTodo edited by bmeyer@trolltech.com
(diff)
03:29 Changeset [31772] by mjs@apple.com

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):
02:12 Changeset [31771] by mjs@apple.com

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::):
00:37 Changeset [31770] by ggaren@apple.com

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):

04/09/08:

23:52 Changeset [31769] by beidson@apple.com

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

Forgot to check in this updated result with my Storage-enumeration change
earlier today

  • fast/dom/Window/window-properties-expected.txt:
23:49 Changeset [31768] by beidson@apple.com

WebCore:

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

Reviewed by Mitz Pettel

Add the "onstorage" attribute for the body element to provide easy setup of StorageEvent handling.

Tests: storage/domstorage/sessionstorage/onstorage-attribute-markup.html

storage/domstorage/sessionstorage/onstorage-attribute-setattribute.html

  • html/HTMLAttributeNames.in: Added "onstorage"
  • html/HTMLBodyElement.cpp: (WebCore::HTMLBodyElement::parseMappedAttribute): Handle this attribute on the body element *only* because that's where the HTML5 spec says StorageEvents go. This might change in the future

LayoutTests:

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

Reviewed by Mitz Pettel

Add the "onstorage" attribute for the body element to provide easy setup of StorageEvent handling.

  • storage/domstorage/sessionstorage/onstorage-attribute-markup-expected.txt: Added.
  • storage/domstorage/sessionstorage/onstorage-attribute-markup.html: Added.
  • storage/domstorage/sessionstorage/onstorage-attribute-setattribute-expected.txt: Added.
  • storage/domstorage/sessionstorage/onstorage-attribute-setattribute.html: Added.
22:23 squirrelfish edited by oliver@apple.com
(diff)
22:22 squirrelfish edited by oliver@apple.com
(diff)
17:55 Changeset [31767] by antti@apple.com

2008-04-09 Antti Koivisto <antti@apple.com>

Reviewed by Mitz.

Remove a less-than-critical bit from Node and replace it with a hash. Those bits are valuable!

Also moved setting of the guard to dispatchSimulatedClick for better consistency.
No one else calls dispatchSimulatedMouseEvent() currently and this is really a click() specific behavior.

  • dom/EventTargetNode.cpp: (WebCore::EventTargetNode::dispatchSimulatedMouseEvent): (WebCore::EventTargetNode::dispatchSimulatedClick):
  • dom/Node.cpp: (WebCore::Node::Node):
  • dom/Node.h:
17:23 Changeset [31766] by weinig@apple.com

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

Reviewed by Geoffrey Garen.

Fix for https://bugs.webkit.org/show_bug.cgi?id=18389
Crash in JSDOMWindowWrapper::mark loading digg.com

  • Add a null check to JSDOMWindowWrapper::mark for the case when the collector runs during its allocation.
  • Cleans up the creation of the window to be a little more straight forward.
  • bindings/js/JSDOMWindowBase.cpp: (WebCore::JSDOMWindowBasePrivate::JSDOMWindowBasePrivate): (WebCore::JSDOMWindowBase::JSDOMWindowBase): (WebCore::JSDOMWindowBase::clear): (WebCore::JSDOMWindowBase::wrapper):
  • bindings/js/JSDOMWindowBase.h:
  • bindings/js/JSDOMWindowWrapper.cpp: (WebCore::JSDOMWindowWrapper::JSDOMWindowWrapper): (WebCore::JSDOMWindowWrapper::mark):
  • bindings/js/JSDOMWindowWrapper.h:
  • bindings/js/kjs_proxy.cpp: (WebCore::KJSProxy::initScript):
  • bindings/scripts/CodeGeneratorJS.pm:
17:21 Changeset [31765] by aroben@apple.com

VC++ Express build fix

  • JavaScriptCore.vcproj/testkjs/testkjs.vcproj: Link against user32.lib.
16:29 Changeset [31764] by beidson@apple.com

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

Rubberstamped by Mitzpettel

Added HTMLAttributeNames.in and HTMLTagNames.in to the xcodeproj for easy editing,
and sorted the html group

  • WebCore.xcodeproj/project.pbxproj:
16:20 Changeset [31763] by pewtermoose@webkit.org

2008-04-09 Brent Fulgham <bfulgham@gmail.com>

Reviewed by Mitz.

Correct build regression in Windows (Cairo) build due to changes
in FontDescription.h signature. (see http://bugs.webkit.org/show_bug.cgi?id=18394)

  • rendering/RenderThemeWin.cpp: Change for new font methods. (WebCore::RenderThemeWin::systemFont):
16:18 Changeset [31762] by beidson@apple.com

WebCore:

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

Reviewed by Sam Weinig

When enumerating a Storage object, the Storage built-ins should not be included, but the
prototype chain SHOULD be included.

  • bindings/js/JSStorageCustom.cpp: (WebCore::JSStorage::customGetPropertyNames): Return false so the prototype chain is walked
  • storage/Storage.idl: Mark all built-ins as "DontEnum"

LayoutTests:

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

Reviewed by Sam Weinig

When enumerating a Storage object, the Storage built-ins should not be included, but the
prototype chain SHOULD be included.

Updated the layout test to test this.

  • storage/domstorage/sessionstorage/enumerate-storage-expected.txt:
  • storage/domstorage/sessionstorage/enumerate-storage.html:
16:05 Changeset [31761] by ggaren@apple.com

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

Reviewed by Oliver Hunt.

Next step toward re-entrant execution of function code (global code ->
built-in function -> JS function):


Made op_ret return from Machine::privateExecute if its calling codeBlock
is NULL.


I'm checking this in by itself to demonstrate that a more clever
mechanism is not necessary for performance.


sunspider --squirrelfish reports no regression.

  • ChangeLog:
  • VM/Machine.cpp: (KJS::Machine::execute): (KJS::Machine::privateExecute):
15:36 Changeset [31760] by mitz@apple.com

Reviewed by Sam Weinig.

  • fix more Windows layout test regressions from the font-weight patch

The patch silently introduced the ability to select some fonts
by their full name on Windows. Firefox and IE allow the same.
This made these tests use different, Windows-only fonts on
Windows. The patch removes references to these fonts from the
tests.

  • tables/mozilla/bugs/bug4093.html:
  • tables/mozilla/bugs/bug43854-1.html:
  • tables/mozilla/bugs/bug8381.html:
  • tables/mozilla/core/bloomberg.html:
14:21 Changeset [31759] by beidson@apple.com

WebCore:

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

Reviewed by Adam Roben

Per the HTML5 spec, enumerating a Storage object should walk the keys in the storage area,
and should not return the built-in properties.

Test: storage/domstorage/sessionstorage/enumerate-storage.html

  • bindings/js/JSLocationCustom.cpp: (WebCore::JSLocation::customGetPropertyNames): Removed the name from an unused parameter
  • bindings/js/JSStorageCustom.cpp: (WebCore::JSStorage::customGetPropertyNames): Copy all of the keys into the property names array
  • storage/Storage.idl: Add CustomGetPropertyNames

LayoutTests:

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

Reviewed by Adam Roben

Per the HTML5 spec, enumerating a Storage object should walk the keys in the storage area,
and should not return the built-in properties.

This test adds some keys to sessionStorage, enumerates the sessionStorage object, and logs
the sorted result. It should *not* contain the built in properties of the Storage object

  • storage/domstorage/sessionstorage/enumerate-storage-expected.txt: Added.
  • storage/domstorage/sessionstorage/enumerate-storage.html: Added.
13:36 Changeset [31758] by timothy@apple.com

Fixes the regression where resource time/size pills do not
update during a load in the Inspector.

http://bugs.webkit.org/show_bug.cgi?id=18374

Reviewed by John Sullivan.

  • page/inspector/ResourcesPanel.js:

(ResourcesPanel.prototype.show): Remove an unneeded call to _updateGraphBars,
since _updateSidebarWidth already calls _updateGraphBars.
(ResourcesPanel.prototype.addResource): Call updateGraphSideWidth.
(ResourcesPanel.prototype._updateGraphBars): Ditto.
(ResourceSidebarTreeElement.prototype.updateGraphSideWidth): Update the
style for graphSideElement with the passed in width.

11:36 Changeset [31757] by antti@apple.com

2008-04-09 Antti Koivisto <antti@apple.com>

Reviewed by Mitz.

Avoid unnecessary calls to virtual updateStyleAttributeIfNeeded() method.

  • do the the checking in call sites instead of inside the function
  • rename to updateStyleAttribute()
  • use namedAttrMap directly (for getting id attribute) in insertedIntoDocument/removedFromDocument to avoid calling attributes() which may trigger style attribute update.


  • dom/Element.cpp: (WebCore::Element::attributes): (WebCore::Element::getAttribute): (WebCore::Element::hasAttributes): (WebCore::Element::insertedIntoDocument): (WebCore::Element::removedFromDocument):
  • dom/Element.h: (WebCore::Element::updateStyleAttribute):
  • dom/NamedAttrMap.cpp: (WebCore::NamedAttrMap::addAttribute):
  • dom/StyledElement.cpp: (WebCore::StyledElement::updateStyleAttribute):
  • dom/StyledElement.h:
11:09 Changeset [31756] by ggaren@apple.com

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

Reviewed by Maciej Stachowiak.

Next step toward re-entrant execution of function code (global code ->
built-in function -> JS function):


Made Machine::execute return a value.


Sketched out some code for Machine::execute for functions -- still
doesn't work yet, though.

sunspider --squirrelfish reports no regression.

  • VM/Machine.cpp: (KJS::Machine::execute): (KJS::Machine::privateExecute):
  • VM/Machine.h:
  • kjs/interpreter.cpp: (KJS::Interpreter::evaluate):
  • kjs/testkjs.cpp: (runWithScripts):
10:01 Changeset [31755] by timothy@apple.com

A more complete fix for: can't drag the Web Inspector when grabbing
in the toolbar area. Makes dragging under the search field in the
empty space work again.

http://bugs.webkit.org/show_bug.cgi?id=18373

Reviewed by Adam Roben.

  • page/inspector/inspector.js:

(WebInspector.toolbarDragStart): Prevent dragging if the event target
is a toggleable toolbar item. Allow dragging when the target is a
normal toolbar item.

09:54 Changeset [31754] by ggaren@apple.com

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

Reviewed by Sam Weinig.


First step toward re-entrant execution of function code (global code ->
built-in function -> JS function):


Tiny bit of refactoring in the Machine class.

sunspider --squirrelfish reports no regression.

  • VM/Machine.cpp: (KJS::Machine::dumpRegisters): (KJS::Machine::unwindCallFrame): (KJS::Machine::execute): (KJS::Machine::privateExecute):
  • VM/Machine.h: (KJS::Machine::isGlobalCallFrame):
  • kjs/interpreter.cpp: (KJS::Interpreter::evaluate):
08:28 Changeset [31753] by aroben@apple.com

Build fix

08:18 Changeset [31752] by aroben@apple.com

Build fix

  • wtf/AlwaysInline.h: Make sure to #include Platform.h before using the macros it defines.
00:06 squirrelfish edited by ggaren@apple.com
(diff)
00:04 Changeset [31751] by ggaren@apple.com

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

Reviewed by Oliver Hunt.


Support for re-entrant execution of global code (global code -> built-in
function -> global code).


Keep a stack of register files instead of just one. Globals propogate
between register files as the register files enter and exit the stack.


An activation still uses its own register file's base as its
registerBase, but the global object uses the register file *stack*'s
registerBase, which updates dynamically to match the register file at
the top of the stack.


sunspider --squirrelfish reports no regression.

04/08/08:

23:18 Changeset [31750] by mjs@apple.com

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

Reviewed by Geoff.


  • initial preparatory work for JS constructors


1) Allocate registers for the returnInfo block and "this" value when generating code for
op_construct. These are not used yet, but the JS branch of op_construct will use them.


2) Adjust argc and argv appropriately for native constructor calls.


3) Assign return value in a more straightforward way in op_ret since this is actually
a bit faster (and makes up for the allocation of extra registers above).

  • VM/CodeGenerator.cpp: (KJS::CodeGenerator::emitConstruct):
  • VM/Machine.cpp: (KJS::Machine::privateExecute):
23:18 Changeset [31749] by mrowe@apple.com

2008-04-08 Mark Rowe <mrowe@apple.com>

Export WTF::initializeThreading() from JavaScriptCore.

22:13 Changeset [31748] by weinig@apple.com

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

Reviewed by Timothy Hatcher.

Fix for http://bugs.webkit.org/show_bug.cgi?id=18373
REGRESSION: Can't drag the Web Inspector when grabbing in the toolbar area

  • page/inspector/inspector.css:
20:21 squirrelfish edited by oliver@apple.com
(diff)
20:21 Changeset [31747] by alp@webkit.org

2008-04-08 Christian Persch <chpe@gnome.org>

Reviewed by Alp Toker.

http://bugs.webkit.org/show_bug.cgi?id=18360
"missing sentinel" warnings in PluginDatabaseGtk.cpp

Use NULL, not 0 as sentinel in varargs calls.

  • plugins/gtk/PluginDatabaseGtk.cpp: (WebCore::PluginDatabase::getPluginPathsInDirectories): (WebCore::PluginDatabase::defaultPluginDirectories):
20:21 squirrelfish edited by oliver@apple.com
(diff)
19:17 Changeset [31746] by weinig@apple.com

JavaScriptCore:

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

Reviewed by Geoffrey Garen.

First step in implementing the "split window"

  • Add a GlobalThisValue to ExecState which should be used in places that used to implement the "use the global object as this if null" rule.
  • Factor out lookupGetter/lookupSetter into virtual methods on JSObject so that they can be forwarded.
  • Make defineGetter/defineSetter virtual methods for the same reason.
  • Have PrototypeReflexiveFunction store the globalObject used to create it so that it can be used to get the correct thisObject for eval.
  • API/JSObjectRef.cpp: (JSObjectCallAsFunction):
  • JavaScriptCore.exp:
  • kjs/Activation.h:
  • kjs/ExecState.cpp: (KJS::ExecState::ExecState): (KJS::GlobalExecState::GlobalExecState):
  • kjs/ExecState.h: (KJS::ExecState::globalThisValue):
  • kjs/ExecStateInlines.h: (KJS::ExecState::ExecState): (KJS::FunctionExecState::FunctionExecState):
  • kjs/JSGlobalObject.cpp: (KJS::JSGlobalObject::reset): (KJS::JSGlobalObject::toGlobalObject):
  • kjs/JSGlobalObject.h: (KJS::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData): (KJS::JSGlobalObject::JSGlobalObject):
  • kjs/array_instance.cpp: (KJS::CompareWithCompareFunctionArguments::CompareWithCompareFunctionArguments): (KJS::compareWithCompareFunctionForQSort):
  • kjs/array_object.cpp: (KJS::arrayProtoFuncSort): (KJS::arrayProtoFuncFilter): (KJS::arrayProtoFuncMap): (KJS::arrayProtoFuncEvery): (KJS::arrayProtoFuncForEach): (KJS::arrayProtoFuncSome):
  • kjs/function.cpp: (KJS::FunctionImp::callAsFunction): (KJS::ActivationImp::toThisObject): (KJS::globalFuncEval): (KJS::PrototypeReflexiveFunction::PrototypeReflexiveFunction): (KJS::PrototypeReflexiveFunction::mark):
  • kjs/function.h: (KJS::PrototypeReflexiveFunction::cachedGlobalObject):
  • kjs/function_object.cpp: (KJS::functionProtoFuncApply): (KJS::functionProtoFuncCall):
  • kjs/nodes.cpp: (KJS::ExpressionNode::resolveAndCall): (KJS::FunctionCallValueNode::evaluate): (KJS::LocalVarFunctionCallNode::inlineEvaluate): (KJS::ScopedVarFunctionCallNode::inlineEvaluate): (KJS::FunctionCallBracketNode::evaluate): (KJS::FunctionCallDotNode::inlineEvaluate):
  • kjs/object.cpp: (KJS::JSObject::call): (KJS::JSObject::put): (KJS::tryGetAndCallProperty): (KJS::JSObject::lookupGetter): (KJS::JSObject::lookupSetter): (KJS::JSObject::toThisObject): (KJS::JSObject::toGlobalObject): (KJS::JSObject::fillGetterPropertySlot):
  • kjs/object.h:
  • kjs/object_object.cpp: (KJS::objectProtoFuncLookupGetter): (KJS::objectProtoFuncLookupSetter):
  • kjs/string_object.cpp: (KJS::replace):

WebCore:

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

Reviewed by Geoffrey Garen.

First step in implementing the "split window"

  • This patch takes the first step in changing the window navigation model from clearing the window properties on navigation, to replacing an inner window. This is necessary to safely perform security checks using the lexical global object.

This first step adds a new class called JSDOMWindowWrapper, which wraps
the real window object. All JS calls that would go to the window object
now go to it, which it forwards to the current inner window. To accomplish
this, the wrapper window is used as the ThisValue wherever the window was used
before.

  • WebCore.base.exp:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/JSDOMWindowBase.cpp: (WebCore::JSDOMWindowBase::JSDOMWindowBase): (WebCore::JSDOMWindowBase::clear): Reset the wrapper windows prototype too. (WebCore::JSDOMWindowBase::toThisObject): (WebCore::JSDOMWindowBase::wrapper): (WebCore::windowProtoFuncAToB): (WebCore::windowProtoFuncBToA): (WebCore::windowProtoFuncOpen): (WebCore::windowProtoFuncSetTimeout): (WebCore::windowProtoFuncClearTimeout): (WebCore::windowProtoFuncSetInterval): (WebCore::windowProtoFuncAddEventListener): (WebCore::windowProtoFuncRemoveEventListener): (WebCore::windowProtoFuncShowModalDialog): (WebCore::windowProtoFuncNotImplemented): (WebCore::toJS):
  • bindings/js/JSDOMWindowBase.h: Fix to expect the wrapper as the thisObj.
  • bindings/js/JSDOMWindowCustom.cpp: (WebCore::JSDOMWindow::postMessage): (WebCore::toDOMWindow):
  • bindings/js/JSDOMWindowWrapper.cpp: Added. (WebCore::): (WebCore::JSDOMWindowWrapper::JSDOMWindowWrapper): (WebCore::JSDOMWindowWrapper::~JSDOMWindowWrapper): (WebCore::JSDOMWindowWrapper::mark): (WebCore::JSDOMWindowWrapper::className): (WebCore::JSDOMWindowWrapper::getOwnPropertySlot): (WebCore::JSDOMWindowWrapper::put): (WebCore::JSDOMWindowWrapper::deleteProperty): (WebCore::JSDOMWindowWrapper::getPropertyNames): (WebCore::JSDOMWindowWrapper::getPropertyAttributes): (WebCore::JSDOMWindowWrapper::defineGetter): (WebCore::JSDOMWindowWrapper::defineSetter): (WebCore::JSDOMWindowWrapper::lookupGetter): (WebCore::JSDOMWindowWrapper::lookupSetter): (WebCore::JSDOMWindowWrapper::toGlobalObject): (WebCore::JSDOMWindowWrapper::impl): (WebCore::JSDOMWindowWrapper::disconnectFrame): (WebCore::JSDOMWindowWrapper::clear): (WebCore::toJS):
  • bindings/js/JSDOMWindowWrapper.h: Added. (WebCore::JSDOMWindowWrapper::innerWindow): (WebCore::JSDOMWindowWrapper::setInnerWindow): (WebCore::JSDOMWindowWrapper::classInfo): Forward methods to the innerWindow.
  • bindings/js/JSHTMLDocumentCustom.cpp: (WebCore::JSHTMLDocument::open):
  • bindings/js/ScheduledAction.cpp: (WebCore::ScheduledAction::execute):
  • bindings/js/kjs_events.cpp: (WebCore::JSAbstractEventListener::handleEvent):
  • bindings/js/kjs_proxy.cpp: (WebCore::KJSProxy::~KJSProxy): (WebCore::KJSProxy::evaluate): (WebCore::KJSProxy::clear): (WebCore::KJSProxy::initScript): (WebCore::KJSProxy::clearDocumentWrapper): (WebCore::KJSProxy::processingUserGesture): (WebCore::KJSProxy::attachDebugger):
  • bindings/js/kjs_proxy.h: (WebCore::KJSProxy::haveWindowWrapper): (WebCore::KJSProxy::windowWrapper): (WebCore::KJSProxy::globalObject): (WebCore::KJSProxy::initScriptIfNeeded): Hold onto the wrapper window instead of global object. As a convenience, keep the globalObject() as a forward to the inner window.
  • bindings/objc/DOMUtility.mm: (KJS::createDOMWrapper):
  • bindings/scripts/CodeGeneratorJS.pm:
  • dom/Document.cpp: (WebCore::Document::domWindow):
  • dom/Document.h: (WebCore::Document::defaultView):
  • loader/FrameLoader.cpp: (WebCore::FrameLoader::dispatchWindowObjectAvailable):
  • page/DOMWindow.idl:
  • page/Frame.cpp: (WebCore::Frame::~Frame): (WebCore::Frame::pageDestroyed):
18:02 Changeset [31745] by beidson@apple.com

JavaScriptCore:

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

Encourage Windows to rebuild - AGAIN...

  • kjs/DateMath.cpp:

WebCore:

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

Encourage Windows to rebuild - AGAIN...

  • WebCore.vcproj/build-generated-files.sh:
  • bindings/scripts/CodeGenerator.pm:
  • bindings/scripts/CodeGeneratorJS.pm:
  • config.h:
17:10 Changeset [31744] by beidson@apple.com

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

OMG release builds didn't have this flag Windows build bots I'm so
sorry will you ever forgive me?

(Found by Stephanie, rubberstamped and landed by Brady)

  • WebCore.vcproj/WebCore.vcproj: Add ENABLE_DOM_STORAGE for release builds
17:06 Changeset [31743] by timothy@apple.com

Fixes a crash in KJS::JSValue::toObject when closing
Safari with Inspector open.

http://bugs.webkit.org/show_bug.cgi?id=18371

Reviewed by Adam Roben.

  • page/InspectorController.cpp:

(WebCore::inspectedWindow): NULL check the result of toJSDOMWindow.
Return JSNull if JSDOMWindow is 0.

  • page/inspector/ElementsPanel.js:

(ElementsPanel.prototype.reset): NULL check the result of
InspectorController.inspectedWindow.

16:57 Changeset [31742] by aroben@apple.com

Export callOnMainThread from WebKit.dll

Rubberstamped by Anders.

  • WebKit.vcproj/WebKit.def:
  • WebKit.vcproj/WebKit_debug.def:
16:07 Changeset [31741] by dino@apple.com

Add some updated proposals for CSS specifications, such as
Transforms and Transitions which are already implemented in TOT.

14:57 Changeset [31740] by aroben@apple.com

Wx build fix

  • webcore-wx.bkl: Removed entry for non-existent file.
14:52 Changeset [31739] by aroben@apple.com

qmake build fixes

  • WebCore.pro: Removed entries for non-existent files.
14:34 Changeset [31738] by aroben@apple.com

Mac build fix

14:28 Changeset [31737] by beidson@apple.com

Strongly encourage Windows bots to rebuild with DOM_STORAGE enabled

14:04 Changeset [31736] by timothy@apple.com

Implements the majority of the Inspector UI refresh as shown at:
http://trac.webkit.org/projects/webkit/wiki/ProposedWebInspectorUIRefresh

http://bugs.webkit.org/show_bug.cgi?id=17773

A few areas that have not been re-implemented with the new UI are:

  • Search and search results.
  • Request and response headers in the Resources panel.
  • Changing the sorting, grouping or toggling small rows in Resources.
  • Image and font previews in the icon of resources.

Reviewed by Adam Roben.

  • English.lproj/InspectorLocalizedStrings.js: Updated to match actual strings.
  • WebCore.vcproj/WebCore.vcproj: Added new files.
  • page/InspectorController.cpp:

(WebCore::InspectorController::setWindowVisible): Call resetScriptObjects()
instead of individual clear functions.
(WebCore::InspectorController::populateScriptObjects): Renamed from
populateScriptResources.
(WebCore::InspectorController::addDatabaseScriptResource): Call
addDatabase instead of addResource.
(WebCore::InspectorController::removeDatabaseScriptResource): Call
removeDatabase instead of removeResource.
(WebCore::InspectorController::resetScriptObjects): Renamed from
clearScriptResources.
(WebCore::InspectorController::didCommitLoad): Call resetScriptObjects()
instead of individual clear functions.

  • page/InspectorController.h: Rename functions.
  • page/inspector/Console.js: Changed the object name to Console from

ConsolePanel. Made it inherit the prototype from View. Added code
to animate in and out.

  • page/inspector/Database.js: Removed title updating and Resource

pseudo-subclassing. Made more of a Model object that just encapsulates
data. Add a getter for table names.

  • page/inspector/DatabaseQueryView.js: Added. Implements the view seen

when selecting a Database in the DatabasesPanel. Implemented as an
interactive console-like area.

  • page/inspector/DatabaseTableView.js: Added. Implements the view seen

when selecting a Database Table in the DatabasesPanel. Matches the old
Browse view of Database panels.

  • page/inspector/DatabasesPanel.js: Changed the object name to DatabasesPanel

from DatabasePanel. Implements a panel that shows a sidebar of Databases
and Database Tables.

  • page/inspector/ElementsPanel.js: Changed the object name to ElementsPanel

from DocumentPanel. Implements the DOM tree that shows the DOM rooted at the
main resource.

  • page/inspector/FontView.js: Use this.contentElement instead of this.element.
  • page/inspector/ImageView.js: Ditto.
  • page/inspector/Images/clearConsoleButtons.png: Added.
  • page/inspector/Images/consoleButtons.png: Added.
  • page/inspector/Images/darkShadow.png: Flipped.
  • page/inspector/Images/database.png: Modified to be 32x32.
  • page/inspector/Images/databaseTable.png: Added.
  • page/inspector/Images/databasesIcon.png: Added.
  • page/inspector/Images/disclosureTriangleSmallDown.png: Added.
  • page/inspector/Images/disclosureTriangleSmallDownBlack.png: Added.
  • page/inspector/Images/disclosureTriangleSmallDownWhite.png: Added.
  • page/inspector/Images/disclosureTriangleSmallRight.png: Added.
  • page/inspector/Images/disclosureTriangleSmallRightBlack.png: Added.
  • page/inspector/Images/disclosureTriangleSmallRightDown.png: Added.
  • page/inspector/Images/disclosureTriangleSmallRightDownBlack.png: Added.
  • page/inspector/Images/disclosureTriangleSmallRightDownWhite.png: Added.
  • page/inspector/Images/disclosureTriangleSmallRightWhite.png: Added.
  • page/inspector/Images/dockButtons.png: Added.
  • page/inspector/Images/elementsIcon.png: Added.
  • page/inspector/Images/gradientHighlightBottom.png:
  • page/inspector/Images/resourceCSSIcon.png: Added.
  • page/inspector/Images/resourceDocumentIcon.png: Added.
  • page/inspector/Images/resourcePlainIcon.png: Added.
  • page/inspector/Images/resourcesIcon.png: Added.
  • page/inspector/Images/resourcesSizeGraphIcon.png: Added.
  • page/inspector/Images/resourcesTimeGraphIcon.png: Added.
  • page/inspector/Images/scriptsIcon.png: Added.
  • page/inspector/Images/segment.png: Modified to fit the taller status bar.
  • page/inspector/Images/segmentEnd.png: Ditto.
  • page/inspector/Images/segmentHover.png: Ditto.
  • page/inspector/Images/segmentHoverEnd.png: Ditto.
  • page/inspector/Images/segmentSelected.png: Ditto.
  • page/inspector/Images/segmentSelectedEnd.png: Ditto.
  • page/inspector/Images/sidebarSelectionBackground.png: Added.
  • page/inspector/Images/sidebarSelectionBackgroundFocused.png: Added.
  • page/inspector/Images/sidebarSelectionBackgroundInactive.png: Added.
  • page/inspector/Images/sidebarSmallSelectionBackground.png: Added.
  • page/inspector/Images/sidebarSmallSelectionBackgroundFocused.png: Added.
  • page/inspector/Images/sidebarSmallSelectionBackgroundInactive.png: Added.
  • page/inspector/Images/statusbarBackground.png: Added.
  • page/inspector/Images/statusbarBottomBackground.png: Added.
  • page/inspector/Images/statusbarButtons.png: Added.
  • page/inspector/Images/statusbarResizerVertical.png: Added.
  • page/inspector/Images/toolbarItemSelected.png: Added.
  • page/inspector/Panel.js: Added support for toolbar items and status bar items.

Inherits from the View prototype.

  • page/inspector/Resource.js: Removed title updating and the ResourceTreeElement.

Made more of a Model object that just encapsulates data.

  • page/inspector/ResourceCategory.js: Removed the ResourceCategoryTreeElement.

Made more of a Model object that just encapsulates data.

  • page/inspector/ResourceView.js: A simple base object for Resource views

shown in ResourcesPanel. Inherits from the View prototype.

  • page/inspector/ResourcesPanel.js: Changed the object name to ResourcesPanel

from NetworkPanel. Implements the timeline graph, size graph and resource
viewing by using ResourceViews.

  • page/inspector/SidebarTreeElement.js: Added. Inherits from TreeElement and implements

a section element and a regular element that has an icon, title and optional subtitle.

  • page/inspector/SourceView.js: Use this.contentElement instead of this.element.
  • page/inspector/StylesSidebarPane.js: Null check WebInspector.mainResource.
  • page/inspector/View.js: Added. A simple object to manage showing and hiding an element.
  • page/inspector/WebKit.qrc: Added new files.
  • page/inspector/inspector.css: New and changed style rules to support the new UI.
  • page/inspector/inspector.html: New and changed HTML for the UI. The search field

is disabled until search is reimplemented.

  • page/inspector/inspector.js: Removed code related to the sidebar and back-forward lists.

Also removed code related to navigation to panels. Added code to instantiate the new
panels and setup the toolbar.

13:59 Changeset [31735] by mitz@apple.com

Reviewed by Antti Koivisto.

  • fix a regression from r31313 which made the inspector highlight and yellow find highlight for table cells with extra top appear in the wrong position
  • rendering/LayoutState.cpp: (WebCore::LayoutState::LayoutState): Changed absolutePosition() to absolutePositionForContent(), to get the right position for children of table cells. This is the correct fix for this part of r31313.
  • rendering/RenderBox.cpp: (WebCore::RenderBox::absolutePosition): Reverted the change from r31313 by changing absolutePosition() to absolutePositionForContent() here too.
  • rendering/RenderObject.h: (WebCore::RenderObject::absolutePositionForContent): Changed to return the result from absolutePosition().
  • rendering/RenderTableCell.cpp: (WebCore::RenderTableCell::absoluteClippedOverflowRect): Turned the "else" case into an early return. (WebCore::RenderTableCell::absolutePosition): Reverted the change from r31313.
13:58 Changeset [31734] by mitz@apple.com

WebCore:

Reviewed by Antti Koivisto.

Test: fast/block/float/br-with-clear-2.html

  • rendering/bidi.cpp: (WebCore::RenderBlock::layoutInlineChildren): The existing code for handling a float-clearing <br> in incremental layout had several bugs in it: it only applied when the <br> was on the last line of the block; it assumed that the <br> was always the rightmost box on the line (which is false in right-to-left runs); and in some places it looked at the last child of the block instead of the last box on the line. Fixed these bugs.

LayoutTests:

Reviewed by Antti Koivisto.

  • fast/block/float/br-with-clear-2.html: Added.
  • platform/mac/fast/block/float/br-with-clear-2-expected.checksum: Added.
  • platform/mac/fast/block/float/br-with-clear-2-expected.png: Added.
  • platform/mac/fast/block/float/br-with-clear-2-expected.txt: Added.
13:50 Changeset [31733] by aroben@apple.com

Mac build fix

  • WebCore.xcodeproj/project.pbxproj: Removed MainThread* files which were moved to WTF.
13:36 Changeset [31732] by timothy@apple.com

Change WebInspector.elementDragStart and WebInspector.elementDragEnd to have more
state, so calling elementDragEnd does not need the listener functions. Also makes
calling elementDragStart again without elementDragEnd work correctly.

Reviewed by Adam Roben.

  • page/inspector/ElementsPanel.js:

(DocumentPanel.prototype.rightSidebarResizerDragStart): Just call WebInspector.elementDragStart.
Removed code that stored away the listeners now that elementDragStart does it.
(DocumentPanel.prototype.rightSidebarResizerDragEnd): Just call WebInspector.elementDragEnd.
Removed code that deleted listeners properties now that elementDragEnd does it.

  • page/inspector/inspector.js:

(WebInspector.sidebarResizerDragEnd): Pass less arguments to elementDragEnd.
(WebInspector.searchResultsResizerDragEnd): Ditto.
(WebInspector.elementDragStart): Store the listeners as private properties on WebInspector.
If the properties are already defined, call elementDragEnd first.
(WebInspector.elementDragEnd): Remove the event listeners using the stored properties.
Delete the private listener properties.

13:30 Changeset [31731] by aroben@apple.com

Build fix

  • ForwardingHeaders/wtf/MainThread.h: Added. Forgot to commit this.
13:12 Changeset [31730] by aroben@apple.com

Move callOnMainThread to WTF

JavaScriptCore:

Move callOnMainThread to WTF

Reviewed by Alexey Proskuryakov.

  • wtf/MainThread.cpp:
  • wtf/MainThread.h:
  • wtf/gtk/MainThreadGtk.cpp:
  • wtf/mac/MainThreadMac.mm:
  • wtf/qt/MainThreadQt.cpp:
  • wtf/win/MainThreadWin.cpp:
  • wtf/wx/MainThreadWx.cpp: Moved here from WebCore/platform. Replaced all instances of "WebCore" with "WTF".
  • kjs/bool_object.cpp: Touched to force JavaScriptCore.vcproj to build. to the WTF namespace.
  • wtf/ThreadingWin.cpp: (WTF::initializeThreading): Call initializeMainThread.

WebCore:

Move callOnMainThread to WTF

Reviewed by Alexey Proskuryakov.

  • GNUmakefile.am:
  • WebCore.pro:
  • WebCore.vcproj/WebCore.vcproj:
  • WebCoreSources.bkl: Removed MainThread files.
  • bindings/js/JSCustomSQLTransactionCallback.cpp:
  • loader/icon/IconDatabase.cpp: (WebCore::iconDatabase):
  • storage/Database.cpp: (WebCore::Database::Database):
  • storage/DatabaseTracker.cpp: Updated #includes and replaced calls to WebCore::initializeThreadingAndMainThread with calls to KJS::initializeThreading.
  • platform/MainThread.cpp: Removed.
  • platform/MainThread.h: Removed.
  • platform/gtk/MainThreadGtk.cpp: Removed.
  • platform/mac/MainThreadMac.mm: Removed.
  • platform/qt/MainThreadQt.cpp: Removed.
  • platform/win/MainThreadWin.cpp: Removed.
  • platform/wx/MainThreadWx.cpp: Removed.

WebKit/gtk:

Move callOnMainThread to WTF

Reviewed by Alexey Proskuryakov.

  • webkit/webkitprivate.cpp: Updated #include. (webkit_init): Changed to call KJS::initializeThreading.

WebKit/win:

Move callOnMainThread to WTF

Reviewed by Alexey Proskuryakov.

  • WebIconDatabase.cpp: Updated #include
12:48 Changeset [31729] by mrowe@apple.com

2008-04-08 Mark Rowe <mrowe@apple.com>

Clean up after Brady.

  • DumpRenderTree/mac/DumpRenderTree.mm: Add an include so that NSInteger can be found.
11:56 Changeset [31728] by aroben@apple.com

Combine :equal operations with the following operation if they are fewer than 3 characters long

This keeps us from showing lots of small changes on long lines, just
because some letters happened to be the same.

Inspired by
http://code.google.com/p/reviewboard/source/browse/trunk/reviewboard/diffviewer/diffutils.py?r=1264#147

  • PrettyPatch/PrettyPatch.rb: (PrettyPatch::DiffSection.initialize): Remove :equal operations fewer than 3 characters long. The characters from the removed operations become part of the subsequent operation. (PrettyPatch::CodeLine.text_as_html): Don't wrap 0-length strings in <ins>/<del> tags. Also removed the @fromLineNumber.nil? and @toLineNumber.nil? checks as they are no longer reliable now that we're removing operations.
11:28 Changeset [31727] by sfalken@apple.com

Fix ChangeLog

11:28 Changeset [31726] by sfalken@apple.com

Add missing increment/decrement COM class counts to detect leaks.


Reviewed by Adam Roben.

  • CFDictionaryPropertyBag.cpp: (CFDictionaryPropertyBag::CFDictionaryPropertyBag): (CFDictionaryPropertyBag::~CFDictionaryPropertyBag):
  • CFDictionaryPropertyBag.h:
  • HTTPHeaderPropertyBag.cpp: (HTTPHeaderPropertyBag::HTTPHeaderPropertyBag): (HTTPHeaderPropertyBag::~HTTPHeaderPropertyBag):
  • HTTPHeaderPropertyBag.h:
  • WebActionPropertyBag.cpp: (WebActionPropertyBag::WebActionPropertyBag): (WebActionPropertyBag::~WebActionPropertyBag):
  • WebDocumentLoader.cpp: (WebDocumentLoader::WebDocumentLoader): (WebDocumentLoader::~WebDocumentLoader):
  • WebDropSource.cpp: (WebDropSource::WebDropSource): (WebDropSource::~WebDropSource):
  • WebDropSource.h:
  • WebElementPropertyBag.cpp: (WebElementPropertyBag::WebElementPropertyBag): (WebElementPropertyBag::~WebElementPropertyBag):
  • WebTextRenderer.cpp: (WebTextRenderer::WebTextRenderer): (WebTextRenderer::~WebTextRenderer):
  • WebView.cpp: (WebView::updateActiveState):
11:08 Changeset [31725] by aroben@apple.com

Change PrettyPatch to use DiffBuilder for intra-line diffs

This gives us much prettier intra-line diffs, largely because it can
distinguish multiple changes on the same line. e.g., if a line changes
from:

const int myConstant = 0;

to

static const unsigned myConstant;

You will see that "static " was inserted, "int" changed to "unsigned",
and " = 0" was deleted.

This seems to have also gotten rid of some spurious instances of
"<ins></ins>" and "<del></del>" at the end of a line.

  • PrettyPatch/PrettyPatch.rb: (PrettyPatch::DiffSection.initialize): Use DiffBuilder instead of setChangeExtentFromLine (which had been copied from Trac's diffing code). (PrettyPatch::CodeLine):
    • Removed the changeExtent attribute
    • Added the operations attribute
    • Removed the setChangeExtentFromLine method

(PrettyPatch::CodeLine.text_as_html): Uses @operations to determine
what text to wrap in <ins> and <del> tags.

  • PrettyPatch/diff.rb: Deleted a bunch of code we don't use. (HTMLDiff::DiffBuilder.initialize): Moved code here from the old build method, but left out the calls to perform_operation, since we build the diff HTML outside of this class. (HTMLDiff::DiffBuilder.split_inputs_to_words): Removed calls to convert_html_to_list_of_words, since we're not diffing HTML.
11:06 Changeset [31724] by aroben@apple.com

Check in diff.rb

This came from
http://instiki.rubyforge.org/svn/instiki/trunk/lib/diff.rb
revision 28521

  • PrettyPatch/diff.rb: Added.
11:06 Changeset [31723] by timothy@apple.com

Makes the Network timeline graph resource sizes on the bar graph
when Transfer Size is selected.

http://bugs.webkit.org/show_bug.cgi?id=18351

Reviewed by Adam Roben.

  • page/inspector/Resource.js:

(WebInspector.Resource.CompareByTime): Array sorting function for time.
Copied from WebInspector.NetworkPanel.timelineEntryCompare.

  • page/inspector/ResourcesPanel.js:

(WebInspector.NetworkPanel): Set the selectedIndex of graphModeSelectElement to
make Transfer Time the default graph.
(WebInspector.NetworkPanel.prototype.changeGraphMode): Call calculator.reset,
_refreshAllResources and _updateGraphDividersIfNeeded.
(WebInspector.NetworkPanel.prototype.get totalDuration): Removed.
(WebInspector.NetworkPanel.prototype._updateGraphBoundriesIfNeeded): Removed boundary
checking code and just call calculator.updateBoundries.
(WebInspector.NetworkPanel.prototype._updateGraphDividersIfNeeded): Add a force argument.
Use calculator.boundarySpan when computing the slice. If the slice is NaN, don't make a label.
Ask the calculator to format the label values for each slice.
(WebInspector.NetworkPanel.prototype.clearTimeline): Call calculator.reset.
(WebInspector.NetworkPanel.timelineEntryCompare): Call WebInspector.Resource.CompareByTime.

(WebInspector.NetworkTimelineEntry.prototype.refresh): Ask the panel's calculator to compute
bar graph percentages for a resource. Use those percentages to change the bar style.

(WebInspector.ResourceCalculator): Renamed from WebInspector.TimelineValueCalculator.
(WebInspector.ResourceCalculator.prototype.computeSummaryValues): Changed the Array.forEach
to a normal for loop. Work with resources instead of TimelineEntries.
(WebInspector.ResourceCalculator.prototype.computeBarGraphPercentages): Return basic bar graph
percents with start always being zero.
(WebInspector.ResourceCalculator.prototype.get boundarySpan): Return the difference between
maximumBoundary and minimumBoundary.
(WebInspector.ResourceCalculator.prototype.updateBoundries): Update maximumBoundary based on _value.
The minimumBoundary is always zero.
(WebInspector.ResourceCalculator.prototype.reset): Delete maximumBoundary and minimumBoundary.
(WebInspector.ResourceCalculator.prototype._value): Takes a Resource instead of TimelineEntry.

(WebInspector.ResourceTransferTimeCalculator): Renamed from TransferTimeCalculator.
(WebInspector.ResourceTransferTimeCalculator.prototype.computeSummaryValues): Work with resources
instead of entries. Changed the Array.forEach to a normal for loop.
(WebInspector.ResourceTransferTimeCalculator.prototype.computeBarGraphPercentages): Return percents
just like WebInspector.NetworkTimelineEntry.prototype.refresh was doing before.
(WebInspector.ResourceTransferTimeCalculator.prototype.updateBoundries): Update minimumBoundary and
maximumBoundary just like the checks WebInspector.NetworkPanel.prototype._updateGraphBoundriesIfNeeded was doing.

(WebInspector.ResourceTransferSizeCalculator): Renamed from TransferSizeCalculator.
(WebInspector.ResourceTransferSizeCalculator.prototype._value): Takes a Resource instead of TimelineEntry.

10:29 Changeset [31722] by beidson@apple.com

WebKitTools:

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

Reviewed by Mitzpettel

Fixed http://bugs.webkit.org/show_bug.cgi?id=18302
-WebArchive subresources dump in random order, intermittent failures

  • DumpRenderTree/mac/DumpRenderTree.mm: (compareResourceURLs): Sorting function based on the resource URLs (serializeWebArchiveToXML): Sort the subresource array

LayoutTests:

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

Reviewed by Mitzpettel

Fixed http://bugs.webkit.org/show_bug.cgi?id=18302
-WebArchive subresources dump in random order, intermittent failures

Now that a DRT fix has set the order, these 3 tests needed new results

  • webarchive/test-css-import-expected.txt:
  • webarchive/test-duplicate-resources-expected.txt:
  • webarchive/test-frameset-expected.txt:
10:27 Changeset [31721] by rwlbuis@webkit.org

Fix the SVG build.

  • svg/SVGFEFloodElement.cpp: (WebCore::SVGFEFloodElement::filterEffect):
09:50 Changeset [31720] by alice.liu@apple.com

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

Reviewed by Dan Bernstein.


fixed http://bugs.webkit.org/show_bug.cgi?id=18329
REGRESSION: Assertion failure in -[WebViewFactory endOfTextMarkerRange:]
when invoking the Dictionary pop-up

  • page/mac/AccessibilityObjectWrapper.mm: (-[AccessibilityObjectWrapper accessibilityAttributeValue:forParameter:]): In the section of code where WebCore-equivalents of mac-specific types are prepared, some functions weren't meant to operate on the default initialized values. Checking for nil in certain places will better maintain the original pre-refactoring code path.
01:15 Changeset [31719] by mitz@apple.com

2008-04-08 Dan Bernstein <mitz@apple.com>

  • fix most of the Windows layout test regressions from the font-weight patch
  • platform/graphics/win/FontCacheWin.cpp: (WebCore::matchImprovingEnumProc): Changed to be symmetric with respect to italics: always prefer (reject) a candidate that changes the italics trait to (from) the desired value. (WebCore::createGDIFont): Added code to set more members of the LOGFONT structure before creating the font.
00:20 Changeset [31718] by rwlbuis@webkit.org

Reviewed by Ollie.

http://bugs.webkit.org/show_bug.cgi?id=18354
feFlood in attribute should be removed according to SVG 1.1 Errata

Remove the in attribute from SVGFEFlood DOM.

04/07/08:

23:24 Changeset [31717] by ggaren@apple.com

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

Reviewed by Maciej Stachowiak.


A little more love for --squirrelfish mode:


Fixed a misplaced sort. Results properly sort now.


Added a test list just for squirrelfish, and updated it to include
all currently passing SunSpider tests.


Fixed the pruning regexp to match 3d-morph.js.

  • sunspider:
23:13 Changeset [31716] by ggaren@apple.com

fix changelog, bokay?

23:12 Changeset [31715] by ggaren@apple.com

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

Reviewed by Maciej Stachowiak.


Fixed crasing SunSpider tests.


Let's just pretend this never happened, bokay?

  • VM/CodeGenerator.cpp: (KJS::CodeGenerator::CodeGenerator):
  • VM/CodeGenerator.h:
  • VM/RegisterFile.cpp: (KJS::RegisterFile::addGlobals):
22:24 Changeset [31714] by ggaren@apple.com

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

Reviewed by Oliver Hunt.


Restored dumping of generated code as a command-line switch:
run-testkjs -d will do it.

22:20 Changeset [31713] by beidson@apple.com

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

Rubberstamped by Geoff Garen

Forgot to update these results after I added the Prototype

  • fast/dom/Window/window-properties-expected.txt:
21:53 Changeset [31712] by ggaren@apple.com

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

Reviewed by Oliver Hunt.


Next step toward supporting re-entrant evaluation: Moved register file
maintenance code into a proper "RegisterFile" class.


There's a subtle change to the register file's internal layout: for
global code / the global object, registerOffset is always 0 now. In
other words, all register counting starts at 0, not 0 + (number of
global variables). The helps simplify accounting when the number of
global variables changes.

20:12 Changeset [31711] by alice.liu@apple.com

build fix for gtk. hopefully the only one

20:01 Changeset [31710] by beidson@apple.com

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

I can't fathom why the new storage tests could be hanging, but alas they are on Windows
Disable until I can figure out why

  • platform/win/Skipped:
20:00 Changeset [31709] by alice.liu@apple.com

I "objeect" to that previous build fix

19:56 squirrelfish edited by ggaren@apple.com
(diff)
19:54 Changeset [31708] by beidson@apple.com

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

OMG, BUILD - please!

  • Scripts/build-webkit:
19:50 squirrelfish edited by oliver@apple.com
(diff)
18:57 Changeset [31707] by beidson@apple.com

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

Touch JSStorageCustom.cpp to try to FORCE a recompile on bots that haven't gotten the message

  • bindings/js/JSStorageCustom.cpp: (WebCore::JSStorage::customPut):
18:28 Changeset [31706] by alice.liu@apple.com

qt build fix. third time is hopefully the charm.

18:23 Changeset [31705] by alice.liu@apple.com

attempt at wx build fix

18:16 Changeset [31704] by alice.liu@apple.com

another attempt at qt build fix

18:08 Changeset [31703] by alice.liu@apple.com

attempt at fixing qt build

18:01 Changeset [31702] by beidson@apple.com

WebCore:

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

Reviewed by John Honeycutt

ENABLE_DOM_STORAGE for Windows

  • WebCore.vcproj/WebCore.vcproj:
  • WebCore.vcproj/build-generated-files.sh:

WebKit/win:

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

Reviewed by John Honeycutt

ENABLE_DOM_STORAGE for Windows

  • WebKit.vcproj/WebKit.vcproj:
17:44 Changeset [31701] by oliver@apple.com

Bug 18338: Support exceptions in SquirrelFish <http://bugs.webkit.org/show_bug.cgi?id=18338>

Reviewed by Geoff

Initial support for exceptions in SquirrelFish, only supports finalisers in the
simple cases (eg. exceptions and non-goto/return across finaliser boundaries).
This doesn't add the required exception checks to existing code, it merely adds
support for throw, catch, and the required stack unwinding.

17:21 Changeset [31700] by beidson@apple.com

JavaScriptCore:

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

Add "ENABLE_DOM_STORAGE" to keep in sync with the rest of the project

  • Configurations/JavaScriptCore.xcconfig:

WebKit/mac:

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

Add "ENABLE_DOM_STORAGE" to keep in sync with the rest of the project

  • Configurations/WebKit.xcconfig:
17:16 Changeset [31699] by beidson@apple.com

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

Fix build for builds without DOM_STORAGE enabled

  • dom/EventTargetNode.cpp: (WebCore::EventTargetNode::dispatchStorageEvent):
  • dom/EventTargetNode.h:
16:47 Changeset [31698] by alice.liu@apple.com

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

Reviewed by Beth Dakin.

  • WebCore.vcproj/WebCore.vcproj:

Added a few cross-platform accessibility source files


  • WebCore.xcodeproj/project.pbxproj:

Added AXObjectCache.cpp


  • page/AXObjectCache.cpp: Added.

These were made cross-platform:

(WebCore::AXObjectCache::~AXObjectCache):
(WebCore::AXObjectCache::get):
(WebCore::AXObjectCache::remove):
(WebCore::AXObjectCache::childrenChanged):


  • page/AXObjectCache.h:

These were made platform-specific

(WebCore::AXObjectCache::isIDinUse):
(WebCore::AXObjectCache::detachWrapper):
(WebCore::AXObjectCache::attachWrapper):
(WebCore::AXObjectCache::postNotificationToElement):


  • page/AccessibilityObject.cpp: (WebCore::AccessibilityObject::detach):

Since only the mac has a wrapper for now, so temporarily
wrapping this line in #if PLATFORM(MAC)


(WebCore::AccessibilityObject::removeAXObjectID):

Since only the mac has uses Accessibility Object IDs,
wrap this line in #if PLATFORM(MAC)


  • page/mac/AXObjectCacheMac.mm:

Detaching and attaching the wrapper is platform-specific
since each wrapper class is platform-specific.

(WebCore::AXObjectCache::detachWrapper):
(WebCore::AXObjectCache::attachWrapper):

16:11 Changeset [31697] by beidson@apple.com

WebCore:

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

Lovingly reviewed by Sam Weinig

<rdar://problem/5797684> - HTML5 SessionStorage and underpinnings for LocalStorage

Tests: storage/domstorage/sessionstorage/iframe-events.html

storage/domstorage/sessionstorage/index-get-and-set.html
storage/domstorage/sessionstorage/simple-events.html
storage/domstorage/sessionstorage/simple-usage.html
storage/domstorage/sessionstorage/window-open.html
storage/domstorage/window-attributes-exist.html

  • Configurations/WebCore.xcconfig: Define to enable DOM_STORAGE
  • bindings/js/JSDOMWindowCustom.cpp: (WebCore::JSDOMWindow::mark): Add optionalSessionStorage case
  • bindings/js/JSEventCustom.cpp: (WebCore::toJS): Add StorageEvent case
  • bindings/js/JSStorageCustom.cpp: (WebCore::JSStorage::canGetItemsForName): (WebCore::JSStorage::nameGetter): If the property doesn't exist on the object, call through to getItem() (WebCore::JSStorage::customPut): If the property doesn't exist on the object, call through to setItem()
  • dom/Event.cpp: (WebCore::Event::isStorageEvent):
  • dom/Event.h:
  • dom/EventNames.h: Add "storage"
  • dom/EventTargetNode.cpp: (WebCore::EventTargetNode::dispatchStorageEvent):
  • dom/EventTargetNode.h:
  • loader/FrameLoader.cpp: (WebCore::FrameLoader::createWindow): After a new page has been created, set its SessionStorage object to a copy of the previous Page's
  • page/DOMWindow.cpp: (WebCore::DOMWindow::sessionStorage): Accessor to pull the appropriate OriginStorage out of the Page's SessionStorage. (WebCore::DOMWindow::localStorage): To be filled in later
  • page/DOMWindow.h: (WebCore::DOMWindow::optionalSessionStorage): Return the session Storage object for this window to mark, if any exists
  • page/DOMWindow.idl:
  • page/Page.cpp: (WebCore::Page::sessionStorage): Create and/or return the SessionStorage for this Page. (WebCore::Page::setSessionStorage): Set the SessionStorage for this Page - used in FrameLoader after a Window.open();
  • page/Page.h:
  • storage/OriginStorage.cpp: Intermediate layer between individual Storage objects, and shared StorageMap objects. There is one OriginStorage object per SecurityOrigin in each "unique set of storage areas", such as the SessionStorage. This layer forwards DOM-level calls down to the backing StorageMap, handles copy-on-write along with the StorageMap, fires StorageEvents to the DOM when a value is changed, and will eventually handle quota enforcement. (WebCore::OriginStorage::create): (WebCore::OriginStorage::OriginStorage): (WebCore::OriginStorage::~OriginStorage): (WebCore::OriginStorage::copy): (WebCore::OriginStorage::length): (WebCore::OriginStorage::key): (WebCore::OriginStorage::getItem): (WebCore::OriginStorage::setItem): (WebCore::OriginStorage::removeItem): (WebCore::OriginStorage::contains): (WebCore::OriginStorage::dispatchStorageEvent):
  • storage/OriginStorage.h:
  • storage/SessionStorage.cpp: From the HTML5 spec: "Each top-level browsing context has a unique set of session storage areas, one for each origin." This object represents that "unique set of session storage areas", and creates or returns the Storage object for the requested SecurityOrigin (WebCore::SessionStorage::create): (WebCore::SessionStorage::SessionStorage): (WebCore::SessionStorage::copy): (WebCore::SessionStorage::originStorage):
  • storage/SessionStorage.h: (WebCore::SessionStorage::page):
  • storage/Storage.cpp: Representation of the DOM-level object, wrapped by JSStorage. There is a unique Storage object per Window (per-Frame) that wraps a specific shared OriginStorage object. (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/Storage.idl:
  • storage/StorageEvent.cpp: (WebCore::StorageEvent::StorageEvent): (WebCore::StorageEvent::initStorageEvent):
  • storage/StorageEvent.h: (WebCore::StorageEvent::isStorageEvent):
  • storage/StorageMap.cpp: The physical map of key/value pairs that is shared between OriginStorage objects, and implements copy-on-write semantics whenever a value is changed (WebCore::StorageMap::create): (WebCore::StorageMap::StorageMap): (WebCore::StorageMap::copy): (WebCore::StorageMap::invalidateIterator): Used to support the key(unsigned i) part of the API (WebCore::StorageMap::setIteratorToIndex): Ditto (WebCore::StorageMap::length): (WebCore::StorageMap::key): (WebCore::StorageMap::getItem): (WebCore::StorageMap::setItem): (WebCore::StorageMap::removeItem): (WebCore::StorageMap::contains):
  • storage/StorageMap.h:

LayoutTests:

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

Begrudgingly reviewed by Sam Weinig

Initial suite of layout tests for HTML5 key/value SessionStorage (<rdar://problem/5797684>)

  • fast/dom/Window/window-properties-expected.txt:
  • storage/domstorage: Added.
  • storage/domstorage/localstorage: Added.
  • storage/domstorage/sessionstorage: Added.
  • storage/domstorage/sessionstorage/iframe-events-expected.txt: Added.
  • storage/domstorage/sessionstorage/iframe-events.html: Added.
  • storage/domstorage/sessionstorage/index-get-and-set-expected.txt: Added.
  • storage/domstorage/sessionstorage/index-get-and-set.html: Added.
  • storage/domstorage/sessionstorage/resources: Added.
  • storage/domstorage/sessionstorage/resources/clearSessionStorage.js: Added.
  • storage/domstorage/sessionstorage/resources/iframe-events-second.html: Added.
  • storage/domstorage/sessionstorage/resources/window-open-second.html: Added.
  • storage/domstorage/sessionstorage/simple-events-expected.txt: Added.
  • storage/domstorage/sessionstorage/simple-events.html: Added.
  • storage/domstorage/sessionstorage/simple-usage-expected.txt: Added.
  • storage/domstorage/sessionstorage/simple-usage.html: Added.
  • storage/domstorage/sessionstorage/window-open-expected.txt: Added.
  • storage/domstorage/sessionstorage/window-open.html: Added.
  • storage/domstorage/window-attributes-exist-expected.txt: Added.
  • storage/domstorage/window-attributes-exist.html: Added.
15:18 Changeset [31696] by timothy@apple.com

Renamed various functions that are internal to the Console object to have an underscore prefix.

Rubber-stamped by Adam Roben.

  • page/inspector/Console.js:
15:10 Changeset [31695] by timothy@apple.com

Renamed various functions and properties that are internal to an object to have an underscore prefix.

Rubber-stamped by Adam Roben.

  • page/inspector/Resource.js:
  • page/inspector/ResourcesPanel.js:
15:04 Changeset [31694] by aroben@apple.com

Windows build fix

  • wtf/ThreadingWin.cpp: Back out some changes I didn't mean to land.
14:45 Changeset [31693] by timothy@apple.com

Fixes coding style for two utility getters.

  • page/inspector/utilities.js: Fix coding style for the

totalOffsetLeft and totalOffsetTop getters.

14:34 Changeset [31692] by sullivan@apple.com

2008-04-07 John Sullivan <sullivan@apple.com>

Reviewed by Tim


  • made the JavaScript text input panel not block Quit (part of 4133196)
  • English.lproj/WebJavaScriptTextInputPanel.nib/classes.nib:
  • English.lproj/WebJavaScriptTextInputPanel.nib/info.nib:
  • English.lproj/WebJavaScriptTextInputPanel.nib/keyedobjects.nib: Made the panel be a NonBlockingPanel
14:20 squirrelfish edited by oliver@apple.com
(diff)
14:04 Changeset [31691] by aroben@apple.com

Export some more WTF functions from WebKit.dll

Reviewed by Alexey Proskuryakov.

  • WebKit.vcproj/WebKit.def:
  • WebKit.vcproj/WebKit_debug.def:
14:04 Changeset [31690] by aroben@apple.com

Add WTF::isMainThread

Reviewed by Alexey Proskuryakov.

  • wtf/Threading.h: Declare the new function.
  • wtf/ThreadingGtk.cpp: (WTF::initializeThreading): Initialize the main thread identifier. (WTF::isMainThread): Added.
  • wtf/ThreadingNone.cpp: Ditto ThreadingGtk.cpp. (WTF::initializeThreading): (WTF::isMainThread):
  • wtf/ThreadingPthreads.cpp: Ditto. (WTF::initializeThreading): (WTF::isMainThread):
  • wtf/ThreadingWin.cpp: Ditto. (WTF::initializeThreading): (WTF::isMainThread):
13:08 Changeset [31689] by mitz@apple.com

Reviewed by Dave Hyatt.

  • platform/mac/WebFontCache.mm: (+[WebFontCache internalFontWithFamily:traits:weight:size:]): Changed to match by family name first, and only if that fails, look for a match by full (PostScript) name. Reverted the full name-based match logic to only distinguish between the broad categories of "bold" and "not bold".
13:01 Changeset [31688] by timothy@apple.com

When the WebInspector.currentFocusElement changes, move the caret selection to be inside the focused element. This makes sure the caret moves in and out of the console when the focus changes.

Reviewed by Adam Roben.

  • page/inspector/TextPrompt.js:

(TextPrompt.prototype.isCaretInsidePrompt): Just call isInsertionCaretInside.

  • page/inspector/inspector.js:

(WebInspector.set currentFocusElement): Make a caret selection inside
the focused element if there isn't a range selection and there isn't
already a caret selection inside.

  • page/inspector/utilities.js:

(Element.prototype.isInsertionCaretInside): Added. Tests if the
selection is collapsed and is inside the element.

12:17 Changeset [31687] by beidson@apple.com

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

Reviewed by Tim Hatcher

Add 1 more empty file for upcoming work, as a separate step, to keep all build-systems working

  • GNUmakefile.am:
  • WebCore.pro:
  • WebCore.vcproj/WebCore.vcproj:
  • WebCore.xcodeproj/project.pbxproj:
  • WebCoreSources.bkl:
  • bindings/js/JSStorageCustom.cpp: Added.
11:50 Changeset [31686] by ap@webkit.org

Reviewed by Dan Bernstein.

<rdar://problem/5574946> Inline frame ISO-8859-1 even though parent character set is UTF-8

Test: fast/loader/inherit-charset-to-empty-frame.html

  • loader/FrameLoader.cpp: (WebCore::FrameLoader::write): Treat an empty m_encoding the same as null one.
10:33 Changeset [31685] by timothy@apple.com

Rename some Inspector panel objects to facilitate the up-coming
UI refresh changes.

Reviewed by Adam Roben.

  • page/inspector/DatabasesPanel.js: Renamed ResourcePanel to ResourceView.
  • page/inspector/ElementsPanel.js: Renamed SourcePanel to SourceView.
  • page/inspector/FontView.js: Renamed FontPanel to FontView.
  • page/inspector/ImageView.js: Renamed ImagePanel to ImageView.
  • page/inspector/Resource.js: Instantiate the new "View" named objects.
  • page/inspector/ResourceView.js: Renamed ResourcePanel to ResourceView.
  • page/inspector/SourceView.js: Renamed SourcePanel to SourceView.
10:14 Changeset [31684] by timothy@apple.com

Fix an exception and remove code that was missed when TextPrompt
was added. This makes the Console work again.

Reviewed by Adam Roben.

  • page/inspector/Console.js: Removed code that used non-existent

properties.

09:41 Changeset [31683] by timothy@apple.com

Remove the workaround for bug 11399 now that it is fixed.

Reviewed by Adam Roben.

  • page/inspector/Console.js: Removed the 'with' statement

around the eval and call eval directly on the inspected window.

06:34 Changeset [31682] by alp@webkit.org

2008-04-07 Luca Bruno <lethalman88@gmail.com>

Reviewed by Alp Toker.

http://bugs.webkit.org/show_bug.cgi?id=18297
Bug #18297 - Acid2/Acid3 -tests don't load load with soup.

Fixes in the libsoup backend: data url parsing, acid tests, redirects,
response headers handling and re-entrancy issues on job cancellation.
Thanks to Dan Winship for libsoup hints.

  • platform/network/ResourceHandleInternal.h: (WebCore::ResourceHandleInternal::ResourceHandleInternal): add m_cancelled and remove unuseful m_session
  • platform/network/soup/ResourceHandleSoup.cpp: (WebCore::restartedCallback): added to route redirects to webkit (WebCore::dataCallback): add response headers, some checks and fix re-entrancy (WebCore::parseDataUrl): be an idle callback for the main loop (WebCore::ResourceHandle::start): (WebCore::ResourceHandle::cancel): fixed re-entrancy
05:34 HackingGtk edited by alp@atoker.com
Typo fixes from timeless (diff)
05:24 Changeset [31681] by ap@webkit.org

Build fix, rubber-stamped and landed by ap.

  • configure.ac: Add autoconf flag for HTML5 client-side session and persistent storage support.

WebCore:

  • GNUmakefile.am: Fix dom_storage conditional and typo: ENABLE_DOM_STORAG.
00:07 Changeset [31680] by beidson@apple.com

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

Whoops, idls don't go in the vcproj!

  • WebCore.vcproj/WebCore.vcproj:

04/06/08:

23:55 Changeset [31679] by beidson@apple.com

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

Attempt to tickle Windows build into accepting this idl

  • storage/StorageEvent.idl:
23:39 Changeset [31678] by beidson@apple.com

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

Reviewed by Sam

HTML5 Session and Local Storage

Land a bunch of empty files and interfaces to keep things building while
I finish off the rest of the implementation of SessionStorage

  • DerivedSources.make:
  • GNUmakefile.am:
  • WebCore.pro:
  • WebCore.vcproj/WebCore.vcproj:
  • WebCore.xcodeproj/project.pbxproj:
  • WebCoreSources.bkl:
  • storage/OriginStorage.cpp: Added.
  • storage/OriginStorage.h: Added.
  • storage/SessionStorage.cpp: Added.
  • storage/SessionStorage.h: Added.
  • storage/Storage.cpp: Added. (WebCore::Storage::length): (WebCore::Storage::key): (WebCore::Storage::getItem): (WebCore::Storage::setItem): (WebCore::Storage::removeItem):
  • storage/Storage.h: Added.
  • storage/Storage.idl: Added.
  • storage/StorageEvent.cpp: Added.
  • storage/StorageEvent.h: Added. (WebCore::StorageEvent::key): (WebCore::StorageEvent::oldValue): (WebCore::StorageEvent::newValue): (WebCore::StorageEvent::uri): (WebCore::StorageEvent::source): (WebCore::StorageEvent::initStorageEvent):
  • storage/StorageEvent.idl: Added.
  • storage/StorageMap.cpp: Added.
  • storage/StorageMap.h: Added.
23:33 Changeset [31677] by ap@webkit.org

Reviewed by Darin.

Make UString thread-safe.

No change on SunSpider total, although individual tests have changed a lot, up to 3%.

  • kjs/InitializeThreading.cpp: (KJS::initializeThreading): Call UString::null() to initialize a static.


  • kjs/identifier.cpp: (KJS::CStringTranslator::translate): (KJS::UCharBufferTranslator::translate): Use "true" for a boolean value instead of 1, because it's C++.
  • kjs/ustring.h: (KJS::CString::adopt): Added a method to create from a char* buffer without copying. (KJS::UString::Rep::ref): Removed an assertion for JSLock::lockCount, as it's no longer necessary to hold JSLock when working with strings. (KJS::UString::Rep::deref): Ditto. (KJS::UString::Rep::isStatic): Added a field to quickly determine that this is an empty or null static string.
  • kjs/ustring.cpp: (KJS::): Removed normalStatBufferSize and statBufferSize, as there is no reason to have such an advanced implementation of a debug-only ascii() method. Removed a long-obsolete comment about UChar. (KJS::UString::Rep::createCopying): Removed an assertion for JSLock::lockCount. (KJS::UString::Rep::create): Ditto. (KJS::UString::Rep::destroy): Ditto. Do not do anything for static null and empty strings, as refcounting is not reliable for those. Reordered branches for a noticeable speed gain - apparently this functiton is hot enough for SunSpider to see an effect from this! (KJS::UString::null): Moved a star, added a comment. (KJS::UString::cstring): Reimplemented to not call ascii(), which is not thread-safe. (KJS::UString::ascii): Simplified statBuffer handling logic. (KJS::UString::toDouble): Use cstring() instead of ascii().
17:09 Changeset [31676] by alp@webkit.org

2008-04-06 Luca Bruno <lethalman88@gmail.com>

Reviewed by Alp Toker.

Fix webkit_web_view_get_transparent() return value.

  • webkit/webkitwebview.cpp:
17:06 Changeset [31675] by ggaren@apple.com

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

Reviewed by Oliver Hunt.


First step toward supporting re-entrant evaluation: Switch register
clients from using "registers", a pointer to a register vector, to
"registerBase", an indirect pointer to the logical first entry in the
register file. (The logical first entry is the first entry that is not
a global variable).


With a vector, offsets into the register file remain good when the
underlying buffer reallocates, but they go bad when the logical
first entry moves. (The logical first entry moves when new global
variables get added to the beginning of the register file.) With an
indirect pointer to the logical first entry, offsets will remain good
regardless.

1.4% speedup on sunspider --squirrelfish. I suspect this is due to
reduced allocation when creating closures, and reduced indirection
through the register vector.

  • wtf/Vector.h: Added an accessor for an indirect pointer to the vector's buffer, which we currently use (incorrectly) for registerBase. This is temporary scaffolding to allow us to change client code without changing behavior.
15:26 squirrelfish edited by weinig@apple.com
Remove ReadModifyDotNode (diff)
15:25 Changeset [31674] by weinig@apple.com

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

Reviewed by Oliver Hunt.

Implement codegen for ReadModifyDotNode.

  • kjs/nodes.cpp: (KJS::ReadModifyDotNode::emitCode):
  • kjs/nodes.h:
15:19 squirrelfish edited by weinig@apple.com
Re-add NewExprNode as it still needs a bit of love (diff)
14:51 squirrelfish edited by weinig@apple.com
Remove another LocalVar nodes as we don't need to emit anything for them (diff)
14:50 squirrelfish edited by weinig@apple.com
Remove more nods (diff)
14:49 Changeset [31673] by weinig@apple.com

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

Reviewed by Oliver Hunt.

Fix codegen for PostIncDotNode and implement codegen for PostIncBracketNode,
PostDecBracketNode and PostDecDotNode.

  • kjs/nodes.cpp: (KJS::PostIncBracketNode::emitCode): (KJS::PostDecBracketNode::emitCode): (KJS::PostIncDotNode::emitCode): (KJS::PostDecDotNode::emitCode):
  • kjs/nodes.h:
12:35 squirrelfish edited by weinig@apple.com
Remove more nodes that now have emitCode support (diff)
12:34 squirrelfish edited by weinig@apple.com
Remove LocalVar nodes as we don't need to emit anything for them (diff)
12:27 Changeset [31672] by weinig@apple.com

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

Reviewed by Geoffrey Garen.

Implement codegen for PreDecResolveNode, PreIncBracketNode, PreDecBracketNode,
PreIncDotNode and PreDecDotNode. This required adding one new op code, op_pre_dec.

  • VM/CodeBlock.cpp: (KJS::CodeBlock::dump):
  • VM/CodeGenerator.cpp: (KJS::CodeGenerator::emitPreDec):
  • VM/CodeGenerator.h:
  • VM/Machine.cpp: (KJS::Machine::privateExecute):
  • VM/Opcode.h:
  • kjs/nodes.cpp: (KJS::PreDecResolveNode::emitCode): (KJS::PreIncBracketNode::emitCode): (KJS::PreDecBracketNode::emitCode): (KJS::PreIncDotNode::emitCode): (KJS::PreDecDotNode::emitCode):
  • kjs/nodes.h:
10:51 Changeset [31671] by ggaren@apple.com

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

Reviewed by Sam Weinig.


Improved register dumping, plus a liberal smattering of "const". Here's
what the new format looks like:

(gdb) call (void)dumpCallFrame(codeBlock, scopeChain, registers->begin(), r)
4 instructions; 48 bytes at 0x509210; 3 locals (2 parameters); 1 temporaries

[ 0] load lr1, undefined(@k0)
[ 3] load lr1, 2(@k1)
[ 6] add tr0, lr2, lr1
[ 10] ret tr0

Constants:

k0 = undefined
k1 = 2

Register frame:

----------------------------------------

use | address | value

----------------------------------------
[return info] | 0x80ac08 | 0x5081c0
[return info] | 0x80ac0c | 0x508e90
[return info] | 0x80ac10 | 0x504acc
[return info] | 0x80ac14 | 0x2
[return info] | 0x80ac18 | 0x0
[return info] | 0x80ac1c | 0x7
[return info] | 0x80ac20 | 0x0
----------------------------------------
[param] | 0x80ac24 | 0x1
[param] | 0x80ac28 | 0x7
[var] | 0x80ac2c | 0xb
[temp] | 0x80ac30 | 0xf

00:58 Changeset [31670] by ggaren@apple.com

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

Reviewed by Sam Weinig.

Support for evaluating multiple scripts in the same global environment.
(Still don't support re-entrant evaluation yet.)

The main changes here are:

(1) Obey the ECMA 10.1.3 rules regarding how to resolve collisions when
a given symbol is declared more than once. (This patch fixes the same
issue for function code, too.)


(2) In the case of var and/or function collisions, reuse the existing
storage slot. For global code, this is required for previously
generated instructions to continue to work. For function code, it's
more of a "nice to have": it makes register layout in the case of
collisions easier to understand, and has the added benefit of saving
memory.


(3) Allocate slots in the CodeGenerator's m_locals vector in parallel
to register indexes in the symbol table. This ensures that, given an
index in the symbol table, we can find the corresponding RegisterID
without hashing, which speeds up codegen.


I moved responsibility for emitting var and function initialization
instructions into the CodeGenerator, because bookkeeping in cases where
var, function, and/or parameter names collide requires a lot of
internal knowledge about the CodeGenerator.

  • VM/CodeGenerator.cpp: (KJS::CodeGenerator::addVar): Removed responsibility for checking whether a var declaration overwrites "arguments", because the check is inappropriate for global code, which may not have a pre-existing "arguments" symbol in scope. Also changed this function to return a boolean indicating whether addVar actually created a new RegisterID, or just reused an old one.


(KJS::CodeGenerator::CodeGenerator): Split out the constructors for
function code and global code, since they're quite different now.


(KJS::CodeGenerator::registerForLocal): This function does its job
without any hashing now.


  • VM/Machine.cpp: Move old globals and update "r" before executing a new script. That way, old globals stay at a constant offset from "r", and previously optimized code still works.


  • VM/RegisterID.h: Added the ability to allocate a RegisterID before initializing its index field. We use this for parameters now.
  • kjs/JSVariableObject.h: (KJS::JSVariableObject::symbolTableGet): Changed the ungettable getter ASSERT to account for the fact that symbol indexes are all negative.
Note: See TracTimeline for information about the timeline view.