23:06 Changeset [27638] by mrowe@apple.com

2007-11-08 Timothy Hatcher <timothy@apple.com>

Reviewed by Sam Weinig.

Some Web Inspector CSS editing changes.

  • Only delete the property if all the text is delete or the new user input correctly parses. This prevents deleting the existing property if the new text is invalid.
  • Intercept the Escape key and cancel editing, not saving any changes.
  • page/inspector/StylesSidebarPane.js:
21:57 Changeset [27637] by darin@apple.com
  • fix build
  • kjs/grammar.y:
  • kjs/nodes.h:
  • kjs/property_map.cpp:
21:56 Changeset [27636] by darin@apple.com
  • roll out accidentally-checked in changes
  • kjs/nodes.cpp: Back to previous version.
  • kjs/nodes.h: Ditto.
  • kjs/grammar.y: Ditto.
21:55 Changeset [27635] by darin@apple.com
  • roll out accidentally-checked in changes
  • kjs/nodes.cpp: Back to previous version.
  • kjs/nodes.h: Ditto.
21:51 Changeset [27634] by darin@apple.com

Reviewed by Maciej.

  • kjs/property_map.cpp: (KJS::PropertyMap::getEnumerablePropertyNames): Use insertion sort instead of qsort for small sets of property names. We can probably do some even-better speedups of for/in, but this nets 0.6% overall and 6.7% on fasta.
21:50 Changeset [27633] by darin@apple.com

Reviewed by Maciej.

This fixes one source of the slowness -- the conversion to an unused
Identifier as we call the get function from the slot -- but doesn't
fix others, such as the fact that we have to allocate a new UString::Rep
for every single character.

Speeds up string-base64 30%, and at least 0.5% overall.
But does slow down access-fannkuch quite a bit. Might be worth
revisiting in the future to see what we can do about that (although
I did look at a profile for a while).

  • kjs/property_slot.h: Add a new marker for "numeric" property slots; slots where we don't need to pass the identifier to the get function. (KJS::PropertySlot::getValue): Added code to call the numeric get function. (KJS::PropertySlot::setCustomNumeric): Added.
  • kjs/string_object.cpp: (KJS::StringInstance::indexGetter): Changed to use substr() instead of constructing a wholly new UString each time. (KJS::stringInstanceNumericPropertyGetter): Added. Like indexGetter, but takes advantage of setCustomNumeric to avoid creating an Identifier. (KJS::StringInstance::getOwnPropertySlot): Changed to use setCustomNumeric.
21:48 Changeset [27632] by darin@apple.com

Reviewed by Oliver.

1% improvement of SunSpider

  • kjs/JSImmediate.h: Eliminate the now-unneeded FPBitValues struct template. (KJS::JSImmediate::from): Overload for most numeric types; many types can do fewer branches and checks. (KJS::JSImmediate::getUInt32): Removed unneeded check for undefined. (KJS::JSImmediate::getTruncatedInt32): Ditto. (KJS::JSImmediate::getTruncatedUInt32): Ditto. There's no difference any more between getUInt32 and getTruncatedUInt32, so that's worth a rename and merge later.
  • kjs/grammar.y: Update since fromDouble is now just from.
  • kjs/nodes.h: Ditto.
  • kjs/value.h: (KJS::jsNumber): Overload for most numeric types.
21:38 Changeset [27631] by kevino@webkit.org

Adding Bakefiles for JSCore, WebCore, and WebKit, and adding wxWebKit implementation.

Reviewed by Mark Rowe

20:32 Changeset [27630] by oliver

Fix regression caused by earlier bitwise and optimisation. 1 & undefined != 1.

Reviewed by Maciej.

The implementation of JSImmediate::areBothImmediateNumbers relies on
(JSImmediate::getTag(immediate1) & JSImmediate::getTag(immediate2)) having
a unique result when both immediate values are numbers.

The regression was due to UndefinedType & NumberType returning NumberType (3 & 1).
By swapping the value of NumberType and UndefinedType this ceases to be a problem.

19:13 Changeset [27629] by mrowe@apple.com

2007-11-08 Justin Haygood <jhaygood@reaktix.com>

Reviewed by Mark Rowe.


Fix builds with HTML 5 Storage support disabled.
ENABLE(DATABASE) needs to be added in a few places.

  • page/InspectorController.cpp:
  • storage/Database.h:
18:03 Changeset [27628] by sfalken

Bump versions for submit

17:48 Changeset [27627] by mrowe@apple.com


17:39 Changeset [27626] by sfalken

Fix typo in ChangeLog.

17:32 Changeset [27625] by sfalken

<rdar://problem/5491463> Wrong dates shown in History menu.

Fix off-by-one error in Windows epoch.

For the Windows DATE type, 1/1/1900 should be 2.0, not 1.0.
DATE is the number of dates since 12/30/1899.

Reviewed by Ada.

  • MarshallingHelpers.cpp: (MarshallingHelpers::windowsEpochAbsoluteTime):
17:13 Changeset [27624] by alp@webkit.org

2007-11-08 Alp Toker <alp@atoker.com>

Reviewed by Mark Rowe.

[GTK] Text editor does not handle common keystrokes

Handle more keystrokes in EditorClientGtk. Note that this is a
temporary measure pending a proper solution using GtkBindingSet (see

  • WebCoreSupport/EditorClientGtk.cpp: (WebKit::EditorClient::handleKeypress):
17:04 Changeset [27623] by darin@apple.com
  • fix build
  • kjs/nodes.h: Add missing parameter name.
16:43 Changeset [27622] by eseidel

2007-11-08 Eric Seidel <eric@webkit.org>

Reviewed by darin.

Add ExpressionNode subclass of Node, use it.

  • kjs/grammar.y:
  • kjs/nodes.cpp: (KJS::ForInNode::ForInNode):
  • kjs/nodes.h: (KJS::ExpressionNode::): (KJS::NullNode::): (KJS::NullNode::precedence): (KJS::BooleanNode::): (KJS::BooleanNode::precedence): (KJS::RegExpNode::): (KJS::RegExpNode::precedence): (KJS::ThisNode::): (KJS::ThisNode::precedence): (KJS::ResolveNode::): (KJS::ElementNode::): (KJS::ArrayNode::): (KJS::PropertyNode::): (KJS::PropertyNode::precedence): (KJS::PropertyNode::name): (KJS::PropertyListNode::): (KJS::ObjectLiteralNode::): (KJS::ObjectLiteralNode::precedence): (KJS::BracketAccessorNode::): (KJS::DotAccessorNode::): (KJS::DotAccessorNode::precedence): (KJS::ArgumentListNode::): (KJS::ArgumentsNode::): (KJS::NewExprNode::): (KJS::NewExprNode::precedence): (KJS::FunctionCallValueNode::): (KJS::FunctionCallValueNode::precedence): (KJS::FunctionCallResolveNode::): (KJS::FunctionCallBracketNode::): (KJS::FunctionCallBracketNode::precedence): (KJS::FunctionCallDotNode::): (KJS::FunctionCallDotNode::precedence): (KJS::PrePostResolveNode::): (KJS::PostfixBracketNode::): (KJS::PostfixBracketNode::precedence): (KJS::PostIncBracketNode::): (KJS::PostIncBracketNode::isIncrement): (KJS::PostDecBracketNode::): (KJS::PostDecBracketNode::isIncrement): (KJS::PostfixDotNode::): (KJS::PostfixDotNode::precedence): (KJS::PostIncDotNode::): (KJS::PostIncDotNode::isIncrement): (KJS::PostDecDotNode::): (KJS::PostDecDotNode::isIncrement): (KJS::PostfixErrorNode::): (KJS::PostfixErrorNode::precedence): (KJS::DeleteResolveNode::): (KJS::DeleteBracketNode::): (KJS::DeleteBracketNode::precedence): (KJS::DeleteDotNode::): (KJS::DeleteDotNode::precedence): (KJS::DeleteValueNode::): (KJS::DeleteValueNode::precedence): (KJS::VoidNode::): (KJS::VoidNode::precedence): (KJS::TypeOfResolveNode::): (KJS::TypeOfValueNode::): (KJS::PrefixBracketNode::): (KJS::PrefixBracketNode::precedence): (KJS::PreIncBracketNode::): (KJS::PreIncBracketNode::isIncrement): (KJS::PreDecBracketNode::): (KJS::PreDecBracketNode::isIncrement): (KJS::PrefixDotNode::): (KJS::PrefixDotNode::precedence): (KJS::PreIncDotNode::): (KJS::PreIncDotNode::isIncrement): (KJS::PreDecDotNode::): (KJS::PreDecDotNode::isIncrement): (KJS::PrefixErrorNode::): (KJS::PrefixErrorNode::precedence): (KJS::UnaryPlusNode::): (KJS::UnaryPlusNode::precedence): (KJS::NegateNode::): (KJS::NegateNode::precedence): (KJS::BitwiseNotNode::): (KJS::BitwiseNotNode::precedence): (KJS::LogicalNotNode::): (KJS::LogicalNotNode::precedence): (KJS::AddNode::): (KJS::AddNode::precedence): (KJS::LeftShiftNode::): (KJS::LeftShiftNode::precedence): (KJS::RightShiftNode::): (KJS::RightShiftNode::precedence): (KJS::UnsignedRightShiftNode::): (KJS::UnsignedRightShiftNode::precedence): (KJS::LessNode::): (KJS::LessNode::precedence): (KJS::GreaterNode::): (KJS::GreaterNode::precedence): (KJS::LessEqNode::): (KJS::LessEqNode::precedence): (KJS::GreaterEqNode::): (KJS::GreaterEqNode::precedence): (KJS::InstanceOfNode::): (KJS::InstanceOfNode::precedence): (KJS::InNode::): (KJS::InNode::precedence): (KJS::EqualNode::): (KJS::EqualNode::precedence): (KJS::NotEqualNode::): (KJS::NotEqualNode::precedence): (KJS::StrictEqualNode::): (KJS::StrictEqualNode::precedence): (KJS::NotStrictEqualNode::): (KJS::NotStrictEqualNode::precedence): (KJS::BitAndNode::): (KJS::BitAndNode::precedence): (KJS::BitOrNode::): (KJS::BitOrNode::precedence): (KJS::BitXOrNode::): (KJS::BitXOrNode::precedence): (KJS::LogicalAndNode::): (KJS::LogicalAndNode::precedence): (KJS::LogicalOrNode::): (KJS::LogicalOrNode::precedence): (KJS::ConditionalNode::): (KJS::ConditionalNode::precedence): (KJS::ReadModifyResolveNode::): (KJS::ReadModifyResolveNode::precedence): (KJS::AssignResolveNode::): (KJS::AssignResolveNode::precedence): (KJS::ReadModifyBracketNode::): (KJS::ReadModifyBracketNode::precedence): (KJS::AssignBracketNode::): (KJS::AssignBracketNode::precedence): (KJS::AssignDotNode::): (KJS::AssignDotNode::precedence): (KJS::ReadModifyDotNode::): (KJS::ReadModifyDotNode::precedence): (KJS::AssignErrorNode::): (KJS::AssignErrorNode::precedence): (KJS::CommaNode::): (KJS::CommaNode::precedence): (KJS::AssignExprNode::): (KJS::AssignExprNode::precedence): (KJS::ExprStatementNode::): (KJS::IfNode::): (KJS::DoWhileNode::): (KJS::WhileNode::): (KJS::ReturnNode::): (KJS::WithNode::): (KJS::ThrowNode::): (KJS::ParameterNode::): (KJS::CaseClauseNode::): (KJS::CaseClauseNode::precedence): (KJS::ClauseListNode::): (KJS::SwitchNode::):
16:09 Changeset [27621] by weinig@apple.com

Correct ChangeLogs to reflect that the speedup was 1% not .5%. Turns out you are not supposed to test in Debug builds.

15:51 Changeset [27620] by ggaren@apple.com

Fixed bug title in old check-in.

15:49 Changeset [27619] by sfalken

<rdar://problem/5524082> Allow images to be dragged out directly into other apps

We weren't including CF_HDROP in our image drops. This broke drag of
images out of the browser window directly into other apps (examples
include notepad, mspaint, msword).

Reviewed by Oliver, Ada.

  • platform/win/ClipboardWin.cpp: (WebCore::createGlobalImageFileContent): Removed unused variable. (WebCore::createGlobalHDropContent): Added (WebCore::writeFileToDataObject): Write HDROP data if available. (WebCore::writeImageToDataObject): Write HDROP for dragged images. (WebCore::ClipboardWin::writeURL): Don't write HDROP for dragged URLs.
15:31 Changeset [27618] by alp@webkit.org

2007-11-08 Xan Lopez <xan@gnome.org>

Reviewed by Alp.

Use g_object_ref_sink when available

  • platform/gtk/PopupMenuGtk.cpp: (WebCore::PopupMenu::show):
  • platform/gtk/ScrollViewGtk.cpp: (WebCore::ScrollView::setGtkAdjustments):
14:59 Changeset [27617] by mitz@apple.com


Reviewed by Beth Dakin.

  • fix <rdar://problem/5491922> REGRESSION (Safari 2-3): Flash-based "Cash Optimizer" on etrade.com does not draw completely

Test: fast/dom/length-attribute-mapping.html

  • dom/StyledElement.cpp: (WebCore::StyledElement::addCSSLength): Changed the garbage-stripping logic to stop after the first "%" or "*" in the string. This allows for "100%25" to be mapped to "100%" like it is in Firefox and WinIE.


Reviewed by Beth Dakin.

  • test for <rdar://problem/5491922> REGRESSION (Safari 2-3): Flash-based "Cash Optimizer" on etrade.com does not draw completely
  • fast/dom/length-attribute-mapping-expected.txt: Added.
  • fast/dom/length-attribute-mapping.html: Added.
14:26 Changeset [27616] by kmccullo


  • Build fix.
  • loader/FrameLoaderClient.h:
  • platform/graphics/svg/SVGImageEmptyClients.h: (WebCore::SVGEmptyFrameLoaderClient::windowObjectCleared):


Build Fix.

  • WebCoreSupport/WebFrameLoaderClient.h:
  • WebCoreSupport/WebFrameLoaderClient.mm: (WebFrameLoaderClient::windowObjectCleared):
14:23 Changeset [27615] by oliver

Add a fast path for bitwise-and of two immediate numbers for a 0.7% improvement in SunSpider (4% bitop improvement).

Reviewed by Sam.

This only improves bitwise-and performance, as the additional logic required
for similar code paths on or, xor, and shifting requires additional operations
and branches that negate (and in certain cases, regress) any advantage we might
otherwise receive.

This improves performance on all bitop tests, the cryptography tests, as well as
the string-base64 and string-unpack-code tests. No significant degradation on
any other tests.

13:49 Changeset [27614] by aroben@apple.com

Stop using KJS inside of MathExtras.h

Reviewed by Darin.

  • wtf/MathExtras.h: Removed an unused header, and a now-unused forward-declaration. (wtf_atan2): Use std::numeric_limits intead of KJS.
13:45 Changeset [27613] by kmccullo

Reviewed by Sam.

  • Use the new IWebFrame [local] function signature and get the shared server correctly.
  • Drosera/win/DebuggerClient.cpp: (DebuggerClient::didFinishLoadForFrame):
  • Drosera/win/ServerConnection.cpp: (ServerConnection::attemptToCreateServerConnection):
13:43 Changeset [27612] by kmccullo


Reviewed by Sam.

  • windowObjectCleared() is no longer const. It needs to setup the script debugger and cannot be const to do so.
  • loader/FrameLoaderClient.h:
  • platform/graphics/svg/SVGImageEmptyClients.h: (WebCore::SVGEmptyFrameLoaderClient::windowObjectCleared):


Reviewed by Sam.

  • windowObjectCleared() is no longer const. It needs to setup the script debugger and cannot be const to do so.
  • WebCoreSupport/FrameLoaderClientGtk.cpp: (WebKit::FrameLoaderClient::windowObjectCleared):
  • WebCoreSupport/FrameLoaderClientGtk.h:


Reviewed by Sam.

  • windowObjectCleared() is no longer const. It needs to setup the script debugger and cannot be const to do so.
  • WebCoreSupport/FrameLoaderClientQt.cpp: (WebCore::FrameLoaderClientQt::windowObjectCleared):
  • WebCoreSupport/FrameLoaderClientQt.h:


Reviewed by Sam.

  • With this change Drosera can now get the source of a website and the listings of the sources it gets. This also lays the foundation for letting Drosera show the scope chain of the JavaScript stack.
  • Interfaces/IWebFrame.idl: Changed the signature of the local function, globalContext(), because COM was unable to marshal this object with the other signature.
  • Interfaces/IWebScriptDebugServer.idl: Of course adding and removing a listener cannot be done in a const function.
  • WebChromeClient.h: Added accessor to the WebView for the new added kit() function in WebFrame. (WebChromeClient::webView):
  • WebFrame.cpp: Added a script debugger object and the necessary functions to attach and communicate with it. Also needed to change the local function, globalContext(), because of a COM issue. (kit): (WebFrame::WebFrame): (WebFrame::globalContext): (WebFrame::loadData): (WebFrame::attachScriptDebugger): (WebFrame::detachScriptDebugger): (WebFrame::dispatchDidLoadMainResource): (WebFrame::windowObjectCleared):
  • WebFrame.h: Ditto.
  • WebHTMLRepresentation.cpp: Implemented documentSource so Drosera has some source code to display. (WebHTMLRepresentation::WebHTMLRepresentation): (WebHTMLRepresentation::documentSource):
  • WebKit.vcproj/WebKit.vcproj: Added the new WebScriptDebugger class.
  • WebScriptCallFrame.cpp: Implemented much of this class' functionality. (EnumScopes::EnumScopes): Made an EnumScopes class to create an IEnumVARIANT to wrap a ScopeChain for Drosera. (EnumScopes::QueryInterface): (EnumScopes::AddRef): (EnumScopes::Release): (EnumScopes::Next): (EnumScopes::Skip): (EnumScopes::Reset): (EnumScopes::Clone): (WebScriptCallFrame::caller): (WebScriptCallFrame::scopeChain): (WebScriptCallFrame::functionName): (WebScriptCallFrame::stringByEvaluatingJavaScriptFromString):
  • WebScriptCallFrame.h: Added member data needed for the above functions
  • WebScriptDebugServer.cpp: Began implementing. (WebScriptDebugServer::listenerCount): (EnumViews::QueryInterface): (EnumViews::AddRef): (EnumViews::Release): (EnumViews::Next): (EnumViews::Skip): (EnumViews::Reset): (EnumViews::Clone): (WebScriptDebugServer::WebScriptDebugServer): (WebScriptDebugServer::createInstance): (WebScriptDebugServer::sharedWebScriptDebugServer): (WebScriptDebugServer::AddRef): (WebScriptDebugServer::Release): (WebScriptDebugServer::addListener): (WebScriptDebugServer::removeListener): (WebScriptDebugServer::step): (WebScriptDebugServer::pause): (WebScriptDebugServer::resume): (WebScriptDebugServer::isPaused): (WebScriptDebugServer::suspendProcessIfPaused): (WebScriptDebugServer::didLoadMainResourceForDataSource): (WebScriptDebugServer::didParseSource): (WebScriptDebugServer::failedToParseSource): (WebScriptDebugServer::didEnterCallFrame): (WebScriptDebugServer::willExecuteStatement): (WebScriptDebugServer::willLeaveCallFrame): (WebScriptDebugServer::exceptionWasRaised):
  • WebScriptDebugServer.h: Began implementing.
  • WebScriptDebugger.cpp: Added. (WebScriptDebugger::WebScriptDebugger): (WebScriptDebugger::sourceParsed):
  • WebScriptDebugger.h: Added.
  • WebScriptScope.cpp: Make this class use createInstance which is more in line with our guidelines. (WebScriptScope::WebScriptScope): (WebScriptScope::createInstance):
  • WebScriptScope.h:
13:27 Changeset [27611] by aroben@apple.com

Hopeful Windows build fix

  • rendering/RenderObject.cpp: Touch this file to make it recompile.
13:26 Changeset [27610] by weinig@apple.com

Windows build fix.

  • kjs/date_object.cpp: (KJS::DateProtoFuncToLocaleString::callAsFunction): Fix unused arg warning. (KJS::DateProtoFuncToLocaleDateString::callAsFunction): ditto (KJS::DateProtoFuncToLocaleTimeString::callAsFunction): ditto
13:03 Changeset [27609] by mrowe@apple.com

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

Gtk build fix.

  • kjs/lookup.h: Add missing include.
12:31 Changeset [27608] by weinig@apple.com


Reviewed by Darin.

Convert JavaScript internal function objects to use one class per
function. This avoids a switch statement inside what used to be
the shared function classes and will allow Shark to better analyze
the code.

To make this switch, the value property of the HashEntry was changed
to a union of an intptr_t (which is used to continue handle valueGetters)
and function pointer which points to a static constructor for the
individual new function objects.

SunSpider claims this is a 0.5% speedup.

  • kjs/array_object.cpp: (KJS::ArrayPrototype::getOwnPropertySlot): (KJS::getProperty): (KJS::ArrayProtoFuncToString::callAsFunction): (KJS::ArrayProtoFuncToLocaleString::callAsFunction): (KJS::ArrayProtoFuncJoin::callAsFunction): (KJS::ArrayProtoFuncConcat::callAsFunction): (KJS::ArrayProtoFuncPop::callAsFunction): (KJS::ArrayProtoFuncPush::callAsFunction): (KJS::ArrayProtoFuncReverse::callAsFunction): (KJS::ArrayProtoFuncShift::callAsFunction): (KJS::ArrayProtoFuncSlice::callAsFunction): (KJS::ArrayProtoFuncSort::callAsFunction): (KJS::ArrayProtoFuncSplice::callAsFunction): (KJS::ArrayProtoFuncUnShift::callAsFunction): (KJS::ArrayProtoFuncFilter::callAsFunction): (KJS::ArrayProtoFuncMap::callAsFunction): (KJS::ArrayProtoFuncEvery::callAsFunction): (KJS::ArrayProtoFuncForEach::callAsFunction): (KJS::ArrayProtoFuncSome::callAsFunction): (KJS::ArrayProtoFuncIndexOf::callAsFunction): (KJS::ArrayProtoFuncLastIndexOf::callAsFunction):
  • kjs/array_object.h: (KJS::ArrayPrototype::classInfo):
  • kjs/create_hash_table:
  • kjs/date_object.cpp: (KJS::DatePrototype::getOwnPropertySlot): (KJS::DateProtoFuncToString::callAsFunction): (KJS::DateProtoFuncToUTCString::callAsFunction): (KJS::DateProtoFuncToDateString::callAsFunction): (KJS::DateProtoFuncToTimeString::callAsFunction): (KJS::DateProtoFuncToLocaleString::callAsFunction): (KJS::DateProtoFuncToLocaleDateString::callAsFunction): (KJS::DateProtoFuncToLocaleTimeString::callAsFunction): (KJS::DateProtoFuncValueOf::callAsFunction): (KJS::DateProtoFuncGetTime::callAsFunction): (KJS::DateProtoFuncGetFullYear::callAsFunction): (KJS::DateProtoFuncGetUTCFullYear::callAsFunction): (KJS::DateProtoFuncToGMTString::callAsFunction): (KJS::DateProtoFuncGetMonth::callAsFunction): (KJS::DateProtoFuncGetUTCMonth::callAsFunction): (KJS::DateProtoFuncGetDate::callAsFunction): (KJS::DateProtoFuncGetUTCDate::callAsFunction): (KJS::DateProtoFuncGetDay::callAsFunction): (KJS::DateProtoFuncGetUTCDay::callAsFunction): (KJS::DateProtoFuncGetHours::callAsFunction): (KJS::DateProtoFuncGetUTCHours::callAsFunction): (KJS::DateProtoFuncGetMinutes::callAsFunction): (KJS::DateProtoFuncGetUTCMinutes::callAsFunction): (KJS::DateProtoFuncGetSeconds::callAsFunction): (KJS::DateProtoFuncGetUTCSeconds::callAsFunction): (KJS::DateProtoFuncGetMilliSeconds::callAsFunction): (KJS::DateProtoFuncGetUTCMilliseconds::callAsFunction): (KJS::DateProtoFuncGetTimezoneOffset::callAsFunction): (KJS::DateProtoFuncSetTime::callAsFunction): (KJS::DateProtoFuncSetMilliSeconds::callAsFunction): (KJS::DateProtoFuncSetUTCMilliseconds::callAsFunction): (KJS::DateProtoFuncSetSeconds::callAsFunction): (KJS::DateProtoFuncSetUTCSeconds::callAsFunction): (KJS::DateProtoFuncSetMinutes::callAsFunction): (KJS::DateProtoFuncSetUTCMinutes::callAsFunction): (KJS::DateProtoFuncSetHours::callAsFunction): (KJS::DateProtoFuncSetUTCHours::callAsFunction): (KJS::DateProtoFuncSetDate::callAsFunction): (KJS::DateProtoFuncSetUTCDate::callAsFunction): (KJS::DateProtoFuncSetMonth::callAsFunction): (KJS::DateProtoFuncSetUTCMonth::callAsFunction): (KJS::DateProtoFuncSetFullYear::callAsFunction): (KJS::DateProtoFuncSetUTCFullYear::callAsFunction): (KJS::DateProtoFuncSetYear::callAsFunction): (KJS::DateProtoFuncGetYear::callAsFunction):
  • kjs/date_object.h:
  • kjs/lookup.cpp: (KJS::Lookup::find):
  • kjs/lookup.h: (KJS::HashEntry::): (KJS::staticFunctionGetter): (KJS::staticValueGetter): (KJS::getStaticPropertySlot): (KJS::getStaticFunctionSlot): (KJS::lookupPut):
  • kjs/math_object.cpp: (KJS::MathObjectImp::getOwnPropertySlot): (KJS::MathProtoFuncAbs::callAsFunction): (KJS::MathProtoFuncACos::callAsFunction): (KJS::MathProtoFuncASin::callAsFunction): (KJS::MathProtoFuncATan::callAsFunction): (KJS::MathProtoFuncATan2::callAsFunction): (KJS::MathProtoFuncCeil::callAsFunction): (KJS::MathProtoFuncCos::callAsFunction): (KJS::MathProtoFuncExp::callAsFunction): (KJS::MathProtoFuncFloor::callAsFunction): (KJS::MathProtoFuncLog::callAsFunction): (KJS::MathProtoFuncMax::callAsFunction): (KJS::MathProtoFuncMin::callAsFunction): (KJS::MathProtoFuncPow::callAsFunction): (KJS::MathProtoFuncRandom::callAsFunction): (KJS::MathProtoFuncRound::callAsFunction): (KJS::MathProtoFuncSin::callAsFunction): (KJS::MathProtoFuncSqrt::callAsFunction): (KJS::MathProtoFuncTan::callAsFunction):
  • kjs/math_object.h: (KJS::MathObjectImp::classInfo): (KJS::MathObjectImp::):
  • kjs/string_object.cpp: (KJS::StringPrototype::getOwnPropertySlot): (KJS::StringProtoFuncToString::callAsFunction): (KJS::StringProtoFuncValueOf::callAsFunction): (KJS::StringProtoFuncCharAt::callAsFunction): (KJS::StringProtoFuncCharCodeAt::callAsFunction): (KJS::StringProtoFuncConcat::callAsFunction): (KJS::StringProtoFuncIndexOf::callAsFunction): (KJS::StringProtoFuncLastIndexOf::callAsFunction): (KJS::StringProtoFuncMatch::callAsFunction): (KJS::StringProtoFuncSearch::callAsFunction): (KJS::StringProtoFuncReplace::callAsFunction): (KJS::StringProtoFuncSlice::callAsFunction): (KJS::StringProtoFuncSplit::callAsFunction): (KJS::StringProtoFuncSubstr::callAsFunction): (KJS::StringProtoFuncSubstring::callAsFunction): (KJS::StringProtoFuncToLowerCase::callAsFunction): (KJS::StringProtoFuncToUpperCase::callAsFunction): (KJS::StringProtoFuncToLocaleLowerCase::callAsFunction): (KJS::StringProtoFuncToLocaleUpperCase::callAsFunction): (KJS::StringProtoFuncLocaleCompare::callAsFunction): (KJS::StringProtoFuncBig::callAsFunction): (KJS::StringProtoFuncSmall::callAsFunction): (KJS::StringProtoFuncBlink::callAsFunction): (KJS::StringProtoFuncBold::callAsFunction): (KJS::StringProtoFuncFixed::callAsFunction): (KJS::StringProtoFuncItalics::callAsFunction): (KJS::StringProtoFuncStrike::callAsFunction): (KJS::StringProtoFuncSub::callAsFunction): (KJS::StringProtoFuncSup::callAsFunction): (KJS::StringProtoFuncFontcolor::callAsFunction): (KJS::StringProtoFuncFontsize::callAsFunction): (KJS::StringProtoFuncAnchor::callAsFunction): (KJS::StringProtoFuncLink::callAsFunction):
  • kjs/string_object.h:


Reviewed by Darin.

Convert JavaScript internal function objects to use one class per
function. This avoids a switch statement inside what used to be
the shared function classes and will allow Shark to better analyze
the code.

To make this switch, the value property of the HashEntry was changed
to a union of an intptr_t (which is used to continue handle valueGetters)
and function pointer which points to a static constructor for the
individual new function objects.

SunSpider claims this is a 0.5% speedup.

  • On the WebCore side, I updated CodeGeneratorJS.pm to generate the new classes and hand updated the remain non-generated (groan) classes.
  • bindings/js/JSDOMWindowCustom.cpp: (WebCore::JSDOMWindow::customGetOwnPropertySlot):
  • bindings/js/JSEventTargetNode.cpp: (WebCore::JSEventTargetNodePrototypeFunctionAddEventListener::callAsFunction): (WebCore::JSEventTargetNodePrototypeFunctionRemoveEventListener::callAsFunction): (WebCore::JSEventTargetNodePrototypeFunctionDispatchEvent::callAsFunction):
  • bindings/js/JSEventTargetNode.h:
  • bindings/js/JSHTMLInputElementBase.cpp: (WebCore::JSHTMLInputElementBaseFunctionSetSelectionRange::callAsFunction): (WebCore::JSHTMLInputElementBase::getOwnPropertySlot):
  • bindings/js/JSHTMLInputElementBase.h: (WebCore::JSHTMLInputElementBase::):
  • bindings/js/JSXMLHttpRequest.cpp: (KJS::JSXMLHttpRequestPrototypeFunctionAbort::callAsFunction): (KJS::JSXMLHttpRequestPrototypeFunctionGetAllResponseHeaders::callAsFunction): (KJS::JSXMLHttpRequestPrototypeFunctionGetResponseHeader::callAsFunction): (KJS::JSXMLHttpRequestPrototypeFunctionOpen::callAsFunction): (KJS::JSXMLHttpRequestPrototypeFunctionSend::callAsFunction): (KJS::JSXMLHttpRequestPrototypeFunctionSetRequestHeader::callAsFunction): (KJS::JSXMLHttpRequestPrototypeFunctionOverrideMIMEType::callAsFunction): (KJS::JSXMLHttpRequestPrototypeFunctionAddEventListener::callAsFunction): (KJS::JSXMLHttpRequestPrototypeFunctionRemoveEventListener::callAsFunction): (KJS::JSXMLHttpRequestPrototypeFunctionDispatchEvent::callAsFunction):
  • bindings/js/JSXMLHttpRequest.h: (KJS::JSXMLHttpRequest::impl):
  • bindings/js/JSXSLTProcessor.cpp: (KJS::JSXSLTProcessorPrototypeFunctionImportStylesheet::callAsFunction): (KJS::JSXSLTProcessorPrototypeFunctionTransformToFragment::callAsFunction): (KJS::JSXSLTProcessorPrototypeFunctionTransformToDocument::callAsFunction): (KJS::JSXSLTProcessorPrototypeFunctionSetParameter::callAsFunction): (KJS::JSXSLTProcessorPrototypeFunctionGetParameter::callAsFunction): (KJS::JSXSLTProcessorPrototypeFunctionRemoveParameter::callAsFunction): (KJS::JSXSLTProcessorPrototypeFunctionClearParameters::callAsFunction): (KJS::JSXSLTProcessorPrototypeFunctionReset::callAsFunction):
  • bindings/js/JSXSLTProcessor.h:
  • bindings/js/kjs_events.cpp: (WebCore::JSClipboardPrototypeFunctionClearData::callAsFunction): (WebCore::JSClipboardPrototypeFunctionGetData::callAsFunction): (WebCore::JSClipboardPrototypeFunctionSetData::callAsFunction): (WebCore::JSClipboardPrototypeFunctionSetDragImage::callAsFunction):
  • bindings/js/kjs_events.h:
  • bindings/js/kjs_navigator.cpp: (KJS::Plugins::): (KJS::Navigator::getOwnPropertySlot): (KJS::Plugins::getOwnPropertySlot): (KJS::PluginsFunctionRefresh::callAsFunction): (KJS::NavigatorProtoFuncJavaEnabled::callAsFunction):
  • bindings/js/kjs_navigator.h: (KJS::Navigator::):
  • bindings/js/kjs_window.cpp: (KJS::Window::getOwnPropertySlot): (KJS::Window::put): (KJS::WindowProtoFuncAToB::callAsFunction): (KJS::WindowProtoFuncBToA::callAsFunction): (KJS::WindowProtoFuncOpen::callAsFunction): (KJS::WindowProtoFuncScrollBy::callAsFunction): (KJS::WindowProtoFuncScrollTo::callAsFunction): (KJS::WindowProtoFuncMoveBy::callAsFunction): (KJS::WindowProtoFuncMoveTo::callAsFunction): (KJS::WindowProtoFuncResizeBy::callAsFunction): (KJS::WindowProtoFuncResizeTo::callAsFunction): (KJS::WindowProtoFuncSetTimeout::callAsFunction): (KJS::WindowProtoFuncClearTimeout::callAsFunction): (KJS::WindowProtoFuncSetInterval::callAsFunction): (KJS::WindowProtoFuncAddEventListener::callAsFunction): (KJS::WindowProtoFuncRemoveEventListener::callAsFunction): (KJS::WindowProtoFuncShowModalDialog::callAsFunction): (KJS::WindowProtoFuncNotImplemented::callAsFunction): (KJS::Location::getOwnPropertySlot): (KJS::Location::put): (KJS::LocationProtoFuncReplace::callAsFunction): (KJS::LocationProtoFuncReload::callAsFunction): (KJS::LocationProtoFuncAssign::callAsFunction): (KJS::LocationProtoFuncToString::callAsFunction):
  • bindings/js/kjs_window.h: (KJS::Window::):
  • bindings/scripts/CodeGeneratorJS.pm:
12:22 Changeset [27607] by aroben@apple.com

Windows build fix

Reviewed by Sam and Ada.

  • wtf/MathExtras.h: Get rid of a circular #include dependency to fix the build.
11:58 Changeset [27606] by aroben@apple.com

Fix a precedence warning on Windows

  • kjs/JSImmediate.h: (KJS::JSImmediate::toBoolean):
11:49 Changeset [27605] by mrowe@apple.com

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

Build fix for JavaScriptGlue.

  • wtf/MathExtras.h: Include stdlib.h for srand and RAND_MAX.
11:45 Changeset [27604] by mrowe@apple.com

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

Build fix.

  • ForwardingHeaders/wtf/MathExtras.h: Copied from WebCore/ForwardingHeaders/wtf/MathExtras.h.
11:38 Changeset [27603] by darin@apple.com
  • Windows build fix
  • kjs/JSImmediate.h: Include MathExtras.h rather than math.h since this file uses "signbit".
10:27 Changeset [27602] by oliver

Replace the use of floats for immediate values with the use of integers for a 4.5% improvement in SunSpider.

Reviewed by Darin.

Unfortunately this change results in NaN, +Inf, -Inf, and -0 being heap allocated now, but
we should now have faster array access, faster immediate to double conversion, and the
potential to further improve bitwise operators in future.

This also removes the need for unions to avoid strict aliasing problems when extracting
a value from immediates.

  • kjs/JSImmediate.h:


  • kjs/value.h:


09:18 Changeset [27601] by mrowe@apple.com

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

Fix the Gtk, Qt and Wx builds.

  • platform/gtk/TemporaryLinkStubs.cpp:
  • platform/qt/TemporaryLinkStubs.cpp:
  • platform/wx/TemporaryLinkStubs.cpp:
08:50 Changeset [27600] by mrowe@apple.com

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

Not reviewed. Fix two instances of includes using the wrong case in the filename.

  • platform/graphics/mac/MoviePrivateQTKit.mm:
  • platform/wx/MimeTypeRegistryWx.cpp:
07:42 Changeset [27599] by darin@apple.com


Reviewed by Adam.

  • fix <rdar://problem/5552943> accesskey does not focus <button> elements

Test: fast/forms/access-key.html

  • html/HTMLButtonElement.cpp: (WebCore::HTMLButtonElement::accessKeyAction): Added a call to focus.


Reviewed by Adam.

  • test changes for <rdar://problem/5552943> accesskey does not focus <button> elements
  • fast/forms/access-key.html: Check for both focus and click events on all elements, but resisted the urge to switch to the American spelling for "focused".
  • fast/forms/access-key-expected.txt: Updated to reflect the bug fix ("1 button focussed"), the fact that <input type=button>, <input type=checkbox>, <input type=submit>, and <input type=reset> are all both focused and clicked ("2 input type button clicked", "3 input type checkbox clicked", "5 input type submit focussed", and "6 input type reset focussed"). Unfortunately this now also demonstrates that we don't send a click to <input type=text> and Gecko does. And there are still quite a few types that are not covered.
07:40 Changeset [27598] by darin@apple.com


Reviewed by Steve.

  • cut down on notImplemented() functions on Windows
  • bridge/AXObjectCache.h: Put #if around the accessibility global.
  • bridge/win/FrameWin.cpp: (WebCore::Frame::setNeedsReapplyStyles): Moved here from TemporaryLinkStubs.
  • dom/Document.cpp: (WebCore::Document::lastModified): Re-implemented using the ResourceResponse that's now available from the DocumentLoader.
  • editing/JSEditor.cpp: (execTranspose): Changed to call transpose() on the Editor instead of the obsolete one on the Frame.
  • loader/DocumentLoader.h: Removed getResponseModifiedHeader.
  • loader/FrameLoader.h: Removed overrideMediaType.
  • loader/gtk/DocumentLoaderGtk.cpp: Removed.
  • loader/mac/DocumentLoaderMac.mm: Removed.
  • loader/qt/DocumentLoaderQt.cpp: Removed.
  • page/Frame.cpp: Removed transpose.
  • page/Frame.h: Ditto.
  • page/FrameView.h: Removed updateBorder.
  • page/gtk/FrameGtk.cpp: Removed issueTransposeCommand.
  • page/mac/FrameMac.mm: Ditto.
  • page/mac/WebCoreFrameBridge.h: Removed issueTransposeCommand and overrideMediaType.
  • page/qt/FrameQt.cpp: Removed issueTransposeCommand.
  • platform/gtk/TemporaryLinkStubs.cpp: Removed gAccessibilityEnabled.
  • platform/qt/TemporaryLinkStubs.cpp: Ditto.
  • platform/win/TemporaryLinkStubs.cpp: Removed or moved all but 3 of the stubs.
  • platform/wx/TemporaryLinkStubs.cpp: Removed gAccessibilityEnabled, issueTransposeCommand, and overrideMediaType.
  • platform/network/cf/ResourceHandleCFNet.cpp: (WebCore::ResourceHandle::loadsBlocked): Moved here from TemporaryLinkStubs. (WebCore::ResourceHandle::willLoadFromCache): Ditto.
  • platform/win/GraphicsContextWin.cpp: (WebCore::GraphicsContextPlatformPrivate::clip): Ditto.
  • platform/win/ScrollViewWin.cpp: (WebCore::ScrollView::inWindow): Ditto.
  • platform/win/SystemTimeWin.cpp: (WebCore::userIdleTime): Ditto.
  • platform/win/WidgetWin.cpp: (WebCore::Widget::setIsSelected): Ditto.
  • WebCore.pro: Updated for removed files.
  • WebCore.xcodeproj/project.pbxproj: Updated for removed file.


Reviewed by Steve.

  • removed some unused WebCore bridge methods
  • WebCoreSupport/WebFrameBridge.mm: Removed issueTransposeCommand and overrideMediaType.
  • WebCoreSupport/WebFrameLoaderClient.mm: (WebFrameLoaderClient::overrideMediaType): Changed to call WebView directly instead of using the bridge object.


Reviewed by Steve.

  • Interfaces/IWebUIDelegate.idl: Added the functions needed below.
  • WebChromeClient.cpp: (WebChromeClient::setMenubarVisible): Eliminated the notImplemented() here by calling through the UI delegate. (WebChromeClient::menubarVisible): Ditto. (WebChromeClient::runDatabaseSizeLimitPrompt): Ditto.
07:12 Changeset [27597] by mrowe@apple.com

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

Build fix for case-sensitive file systems. Fix case of file names
in #include's.

  • html/HTMLMediaElement.cpp:
  • platform/graphics/Movie.cpp:
06:18 Changeset [27596] by hausmann

Build fix for Qt 4.3.

00:20 Changeset [27595] by hausmann

Remove some warnings about not implemented methods.

  • ResourceHandle::loadsBlocked and ResourceHandle::supportsBufferedData are specific to the NS API and won't be implemented on Qt.
  • ResourceHandle::bufferedData can not be reached as we return false in ResourceHandle::supportsBufferedData.

Signed-off-by: Lars Knoll <lars@trolltech.com>

00:20 Changeset [27594] by hausmann

Cleanup checking for the request method.

  • Check the request method only in QWebNetworkManager::add.
  • Currently HEAD, GET, POST are allowed and for everything else QWebNetworkManager::add returns false.
  • Returning false is compatible with ResourceHandle::start and it can be used in ResourceHandle::loadResourceSynchronously to generate a ResourceError

Signed-off-by: Lars Knoll <lars@trolltech.com>

00:20 Changeset [27593] by hausmann

Implement WebCore::callOnMainThread

Implemented using a global QObject, that is moved to the main thread
and then sending a custom event to it.
Picked a number below QEvent::User but above any other documented value.

Signed-off-by: Lars Knoll <lars@trolltech.com>

00:20 Changeset [27592] by hausmann

Fix bug in the implementation of synchronous network jobs.

  • George (pmax) reviewed the networking patches and found the following bug (thanks for reviewing)
  • if (jobMode == AsynchronousJob) {

+ if (jobMode == SynchronousJob) {

add job to synchronous list/hash

  • Just applying the above change will lead to crashes because we can finish jobs before we started them.
  • Avoid these issues by saving all work (starting a job, sending data and finishing it) inside one list. JobWork will contain any of the above three work types and doWork will just work on this list (m_pendingWork). As foreach takes a copy of the list calling started, data and finished will not add new work and we gurantee that if we have JobStarted it will be in the list before JobData and JobFinished.
  • Observation: We might just kill the code to handle sync jobs.

Signed-off-by: Lars Knoll <lars@trolltech.com>

00:20 Changeset [27591] by hausmann

Avoid problems with calling QPainter::begin() on an already active paintdevice

  • Partial pick from 6200e04c3e0a77873c3b3f3969b65bc701020326 to avoid getting crashes on Qt/Mac 4.4 with QPainter::begin to fail because we already draw.
  • If we are in a layout or need one do not paint. This can happen for the PlatformScrollBar used by the ScrollView on a layout triggered by QWebPage::paintEvent.

Signed-off-by: Lars Knoll <lars@trolltech.com>

00:03 Changeset [27590] by eric@webkit.org

2007-11-08 Eric Seidel <eric@webkit.org>

No review.

  • ksvg2/svg/SVGPathElement.h: remove old comment


23:58 Changeset [27589] by eric@webkit.org

2007-11-07 Eric Seidel <eric@webkit.org>

Reviewed by Darin and Oliver.

Add evaluateToNumber parallel evaluation tree to speed up number operations.
Make ImmediateNumberNode a subclass of NumberNode.
Share evaluate logic between evaluate and evaluateToNumber using inline functions
There is still a lot of improvement to be made here.

SunSpider claims this is a 1.0% speedup overall (nbody 7.9%), base64 slowing 2.0%
Given the huge win that this prepares us for with simple type inferencing I see the small
regression in base64 being worth the substantial overall improvement.

  • kjs/grammar.y:
  • kjs/nodes.cpp: (KJS::Node::evaluateToNumber): (KJS::NumberNode::evaluate): (KJS::NumberNode::evaluateToNumber): (KJS::StringNode::evaluateToNumber): (KJS::LocalVarAccessNode::inlineEvaluate): (KJS::LocalVarAccessNode::evaluate): (KJS::LocalVarAccessNode::evaluateToNumber): (KJS::BracketAccessorNode::inlineEvaluate): (KJS::BracketAccessorNode::evaluate): (KJS::BracketAccessorNode::evaluateToNumber): (KJS::NegateNode::evaluate): (KJS::NegateNode::evaluateToNumber): (KJS::MultNode::inlineEvaluateToNumber): (KJS::MultNode::evaluate): (KJS::MultNode::evaluateToNumber): (KJS::DivNode::inlineEvaluateToNumber): (KJS::DivNode::evaluate): (KJS::DivNode::evaluateToNumber): (KJS::ModNode::inlineEvaluateToNumber): (KJS::ModNode::evaluate): (KJS::ModNode::evaluateToNumber): (KJS::throwOutOfMemoryErrorToNumber): (KJS::addSlowCaseToNumber): (KJS::add): (KJS::addToNumber): (KJS::AddNode::evaluateToNumber): (KJS::SubNode::inlineEvaluateToNumber): (KJS::SubNode::evaluate): (KJS::SubNode::evaluateToNumber): (KJS::valueForReadModifyAssignment): (KJS::ReadModifyLocalVarNode::evaluate): (KJS::ReadModifyResolveNode::evaluate): (KJS::ReadModifyDotNode::evaluate): (KJS::ReadModifyBracketNode::evaluate):
  • kjs/nodes.h: (KJS::Node::): (KJS::NumberNode::): (KJS::ImmediateNumberNode::): (KJS::AddNode::precedence):
  • kjs/nodes2string.cpp: (KJS::NumberNode::streamTo):
23:40 Changeset [27588] by sfalken

Added IWebDocumentText available via QI from WebFrame.

Reviewed by Sam.

  • WebFrame.cpp: (WebFrame::QueryInterface): Added IID_IWebDocumentText. (WebFrame::supportsTextEncoding): Stubbed out. (WebFrame::selectedString): Implemented. (WebFrame::selectAll): Stubbed out. (WebFrame::deselectAll): Stubbed out.
  • WebFrame.h:
22:13 Changeset [27587] by antti

Reviewed by Ollie.

Ensure video renderer has correct size if video has already been loaded
when it is constructed.

  • rendering/RenderVideo.cpp: (WebCore::RenderVideo::RenderVideo):
20:24 Changeset [27586] by antti

Reviewed by Ollie.

Ensure video is visible when it should be.

  • rendering/RenderVideo.cpp: (WebCore::RenderVideo::updateMovie):
17:54 Changeset [27585] by mitz@apple.com

Reviewed by Darin Adler.

  • fix <rdar://problem/5523503> Safari crashes clicking scroll bar in FaceBook 'Trips'

Layers and listboxes are two kinds of ScrollBarClient that can be
removed while the scrollbar is tracking the mouse. The scrollbar is not
destroyed until later, and meanwhile it can try to call the client,
which results in a crash.

  • manual-tests/stale-scrollbar-client-crash.html: Added.
  • platform/ScrollBar.h: (WebCore::Scrollbar::setClient): Added.
  • rendering/RenderLayer.cpp: (WebCore::RenderLayer::destroyScrollbar): Call Scrollbar::setClient().
  • rendering/RenderListBox.cpp: (WebCore::RenderListBox::~RenderListBox): Ditto.
17:45 Changeset [27584] by mitz@apple.com

Reviewed by Darin Adler.

  • add an option to run-webkit-tests to ignore pixel test failures where all pixels differ by no more than a specified threshold
  • DumpRenderTree/mac/ImageDiff.m: (main): (compareImages): (computePercentageDifferent):
  • Scripts/run-webkit-tests:
15:45 Changeset [27583] by aroben

Fix <rdar://5569268> Crash when opening any FTP site in second tab/window


Fix <rdar://5569268> Crash when opening any FTP site in second tab/window

Reviewed by Sam.

No test possible.

  • platform/win/SharedBufferWin.cpp: (WebCore::SharedBuffer::createWithContentsOfFile): Bail if we get an empty path, because _wfopen_s will crash if we pass it a null pointer.


Fix <rdar://5569268> Crash when opening any FTP site in second tab/window

Reviewed by Sam.

  • WebView.cpp: (WebView::initWithFrame): Set the ftpDirectoryTemplatePath for every Page, not just the first one.
15:09 Changeset [27582] by mrowe@apple.com

2007-11-07 Mark Rowe <mrowe@apple.com>

Reviewed by Kevin Decker.

Fix 64-bit Mac build.

  • WebKit.xcodeproj/project.pbxproj: Change paths specified relative to SRCROOT to be relative to PROJECT_DIR. PROJECT_DIR takes into account the projectDirPath setting of the project, which in this instance includes the necessary "mac" subdirectory.
13:54 Changeset [27581] by ddkilzer


WebKit confuses width/height for Media Queries device-aspect-ratio evaluation

Reviewed by Darin.

Tests: fast/css/device-aspect-ratio.html


  • css/MediaQueryEvaluator.cpp: (WebCore::parseAspectRatio): Renamed method parameters from a/b to h/v. (WebCore::device_aspect_ratioMediaFeatureEval): Renamed local variables from a/b to h/v. Switched first two arguments of the call to cmpvalue() to fix the bug.


WebKit confuses width/height for Media Queries device-aspect-ratio evaluation

Reviewed by Darin.

Each of the following tests creates a <link> element and dynamically sets its
media query based on the aspect ratio (width/height) of the current screen.
When the <link> element is attached to the <head> node, the test expects the
stylesheet to be loaded for the test to pass.

  • fast/css/device-aspect-ratio-expected.txt: Added.
  • fast/css/device-aspect-ratio.html: Added.

This test sets the device-aspect-ratio to the current size of the screen.
NOTE: This test passed before the fix.

  • fast/css/max-device-aspect-ratio-expected.txt: Added.
  • fast/css/max-device-aspect-ratio.html: Added.

This test sets the max-device-aspect ratio to 100/1 for landscape monitors or
1/1 for portrait (or square) monitors.
NOTE: This test failed before the fix.

  • fast/css/min-device-aspect-ratio-expected.txt: Added.
  • fast/css/min-device-aspect-ratio.html: Added.

This test sets the min-device-aspect ratio to 1/1 for landscape monitors or
1/100 for portrait (or square) monitors.
NOTE: This test failed before the fix.

  • fast/css/resources/device-aspect-ratio.css: Added.
13:44 Changeset [27580] by mrowe@apple.com

Roll out r27578 as it is not necessary.

12:59 Changeset [27579] by mitz@apple.com


Reviewed by Dave Hyatt.

Test: fast/css/display-none-inline-style-change-crash.html

  • dom/Element.cpp: (WebCore::Element::recalcStyle): Fixed the crash by null-checking the current style and removed other checks that are not strictly necessary.


Reviewed by Dave Hyatt.

  • fast/css/display-none-inline-style-change-crash-expected.txt: Added.
  • fast/css/display-none-inline-style-change-crash.html: Added.
12:11 Changeset [27578] by tristan

Reviewed by Kevin Decker.

Build fix for Leopard. Cast a size() as int to unsigned for proper

  • bindings/js/JSHTMLDocumentCustom.cpp: (WebCore::writeHelper): Casted an int to unsigned for an unsigned to unsigned comparison.
11:31 Changeset [27577] by beidson@apple.com

Rubberstamped by Sam

Remove FrameLoaderClient methods from SVG that were pruned awhile ago

  • platform/graphics/svg/SVGImageEmptyClients.h:
10:52 Changeset [27576] by mitz@apple.com


Reviewed by Darin Adler.

  • fix a bug where CSS rules with :hover in the ancestor chain stopped working after changing the inline style declaration of the ancestor

Test: fast/css/affected-by-hover-after-style-change.html

  • dom/Element.cpp: (WebCore::Element::recalcStyle): If we are not forcing style recalculation for all descendants, preserve any "affected by {hover|active|drag} bits that we may have acquired from them. Also renamed _style to currentStyle.


Reviewed by Darin Adler.

  • removed a workaround for the bug fixed in the WebCore part of this patch
  • misc/DatabaseExample.html:


Reviewed by Darin Adler.

  • test that CSS rules with :hover in the ancestor chain continue to work after changing the inline style declaration of the ancestor
  • fast/css/affected-by-hover-after-style-change.html: Added.
  • platform/mac/fast/css/affected-by-hover-after-style-change-expected.checksum: Added.
  • platform/mac/fast/css/affected-by-hover-after-style-change-expected.png: Added.
  • platform/mac/fast/css/affected-by-hover-after-style-change-expected.txt: Added.
09:56 Changeset [27575] by timothy@apple.com

Reviewed by Adam.

Bug 11920: Web Inspector should have Firebug-like CSS editing

  • css/CSSComputedStyleDeclaration.h: (WebCore::CSSComputedStyleDeclaration::isPropertyImplicit): Return false. I'm not sure why this was true, but computed style has no concept of implicit. So false makes more sense and makes the code simpler in the inspector. This function was added for the inspector, so this isn't a compatibility change.
  • page/inspector/PropertiesSection.js: Add a getter/setter to reset populated status.
  • page/inspector/StylesSidebarPane.js: Some refactoring along with the main support for style editing.
  • page/inspector/inspector.css: Style changes for propery editing and focus correctness.
  • page/inspector/inspector.js: Look for a handleKeyEvent function of the focus element before trying to call a function based on the element's id. Call focused and blurred on the focused element when currentFocusElement is changed. Use the new listItemElement getter instead of the private property.
  • page/inspector/treeoutline.js: No longer expand on double click if ondblclick is implemented. Shrink the toggle zone to 10px to better match the size of the arrow. Add an onattach call to allow generation of the title using the DOM element. Add listItemElement and childrenListElement getters.
  • page/inspector/utilities.js: Add new helper prototype methods on CSSStyleDeclaration.
  • page/inspector/DocumentPanel.js: Use the new listItemElement getter instead of the private property. Also expand the DOM node on double click now that the TreeOutline dosen't do it.
  • page/inspector/Resource.js: Use the new listItemElement and childrenListElement getters instead of the private properties.
09:54 Changeset [27574] by mrowe@apple.com

2007-11-07 Mark Rowe <mrowe@apple.com>

Reviewed by Eric.

Fix up initialization after being mangled in r27572, and remove the
ternary expression as extraCost will always be zero for the numeric

  • kjs/collector.cpp: (KJS::Collector::heapAllocate):
09:54 Changeset [27573] by mrowe@apple.com

2007-11-07 Mark Rowe <mrowe@apple.com>

Gtk build fix.

  • kjs/regexp_object.cpp:
09:52 JavaScript performance improvement ideas edited by eric@webkit.org
09:32 Changeset [27572] by ggaren@apple.com

Reviewed by Beth Dakin.

Eliminated a bogus (though compiled-out) branch in the collector.

  • kjs/collector.cpp: (KJS::Collector::heapAllocate):
09:18 Changeset [27571] by ggaren@apple.com


Reviewed by Darin Adler.

Fixed part of http://bugs.webkit.org/show_bug.cgi?id=15861
15% of string-validate-input.js is spent compiling the same regular expression.

Put RegExpImp properties into a static hashtable to avoid a slew of
PropertyMap churn when creating a RegExpImp.

Factored important bits of regular expression implementation out of
RegExpImp (the JS object) and into RegExp (the PCRE wrapper class),
making RegExp a ref-counted class. (This will help later.)

Removed PCRE_POSIX support because I didn't quite know how to test it
and keep it working with these changes.

1.1% SunSpider speedup. 5.8% speedup on string-validate-input.js.

  • kjs/regexp.h: A few interface changes:
  1. Renamed "subpatterns()" => "numSubpatterns()"
  2. Made flag enumeration private and replaced it with public getters for specific flags.
  3. Made RegExp ref-counted so RegExps can be shared by RegExpImps.
  4. Made RegExp take a string of flags instead of an int, eliminating duplicated flag parsing code elsewhere.
  • kjs/regexp_object.cpp: (KJS::RegExpProtoFunc::callAsFunction): For RegExp.compile:
  • Fixed a bug where compile(undefined) would throw an exception.
  • Removed some now-redundant code.
  • Used RegExp sharing to eliminate an allocation and a bunch of PropertyMap thrash. (Not a big win since compile is a deprecated function. I mainly did this to test the plubming.)


Reviewed by Darin Adler.

Beefed up the RegExp.compile testcase to cover a mistake in the
original check-in and a mistake I made while developing my new patch.

  • fast/js/resources/regexp-compile.js:
08:36 Changeset [27570] by hausmann

JavaScriptCore.pri expects OBJECTS_DIR to be set, so set it in
testkjs.pro, too, where it's included from.

08:14 Changeset [27569] by hausmann

Coding style fix.

07:52 Changeset [27568] by hausmann

For safety provide a default constructor for WindowFeatures().
ContextMenuController.cpp: createNewWindow as well as QWebPage need to
create a default initialized WindowFeatures object on the fly.

07:35 Changeset [27567] by hausmann

Fix the Qt build.

06:45 Changeset [27566] by hausmann

Fix "nmake clean" for the Qt/Windows build by replacing tmp/ with a variable that ends with the correct type of slash/backslash depending on the choice of compiler/make tool.

06:32 Changeset [27565] by hausmann

Make the setting of letting Javascript access the clipboard configurable through QWebSettings, turn it off by default and turn it on in DumpRenderTree.

06:32 Changeset [27564] by hausmann

Changed QWebPageHistory::goToItem to take a value instead of a pointer.

06:32 Changeset [27563] by hausmann

Removed unimplemented QWebHistoryItem::children() function

06:32 Changeset [27562] by hausmann

Changed the getter functions in QWebSettings to transparently resolve against the default settings.

06:31 Changeset [27561] by hausmann

Added explicit functions for resetting the font sizes and font families.

06:31 Changeset [27560] by hausmann

Combined the font sizes accessors/setters under one setter/getter with an enum.

06:31 Changeset [27559] by hausmann

Renamed QWebPage::userAgentStringForUrl(url) to QWebPage::userAgentFor(url);

06:31 Changeset [27558] by hausmann

Renamed QWebPage::webActionTriggered to QWebPage::triggerAction

06:31 Changeset [27557] by hausmann

Changed the virtual QWebPage::setWindowGeometry to be a geometryChangeRequest signal instead.

06:31 Changeset [27556] by hausmann

Renamed QWebPage::webAction() to QWebPage::action()

06:31 Changeset [27555] by hausmann

Removed a bunch of slots/functions that are now available through the new actions API.

06:31 Changeset [27554] by hausmann

Added some more comments to the API after another round of API review with Lars.

06:31 Changeset [27553] by hausmann

Moved QWebFrame::selectedText() to QWebPage::selectedText().

The currently selected text is a property of the page as a whole.

06:31 Changeset [27552] by hausmann

Implemented support for settings propagation.

If an individual setting is not set in a page's QWebSettings then it is inherited from the default settings.

06:31 Changeset [27551] by hausmann

Reworked the QWebSettings API.
QWebPage now returns a pointer to its mutable QWebSettings object and the settings of newly created QWebPageObjects are initialized from QWebSettings::defaultSettings().

06:30 Changeset [27550] by hausmann

Made the QWebSettings::webGraphic functions static. The implementation was using QWebSettings::global() anyway.

06:30 Changeset [27549] by hausmann

Moved the WebCore::Image specific function loadResourcePixmap from qwebsettings.cpp to ImageQt.cpp and made it static.

06:30 Changeset [27548] by hausmann

Changed the icondatabase accessor to be a static function because it doesn't change the QWebSettings object.

06:30 Changeset [27547] by hausmann

Changed the webAction() accessor to not be a slot but just a public function.

06:30 Changeset [27546] by hausmann

Implemented createWindow() in QtLauncher.

06:30 Changeset [27545] by hausmann

Implemented opening links in new windows

06:30 Changeset [27544] by hausmann

Added and implemented the "OpenLink" action.

06:30 Changeset [27543] by hausmann

Adjust the state of the reload action correctly.

06:30 Changeset [27542] by hausmann

Initialize the undo/redo actions from QUndoStack. That automatically takes care of enabling/disabling them as well as the activation/trigger.

06:30 Changeset [27541] by hausmann

Added undo/redo toolbar buttons, moved the location line edit into a separate toolbar.

06:30 Changeset [27540] by hausmann

Update the editor actions when the selection changes.

06:29 Changeset [27539] by hausmann

Added cut/copy/paste actions to the toolbar of QtLauncher

06:29 Changeset [27538] by hausmann

Started working on keeping the state of the navigation actions up-to-date.

06:29 Changeset [27537] by hausmann

Use the navigational web actions in the toolbar

06:29 Changeset [27536] by hausmann

Store a bunch of QActions in QWebPagePrivate, corresponding to QWebPage::WebAction.
Added QWebPageContext to hold context sensitive information (for example used by the context menu).

06:29 Changeset [27535] by hausmann

Moved the editing actions implemented in keyPressEvent into webActionTriggered.

06:29 Changeset [27534] by hausmann

Introduced a central virtual void webActionTriggered(WebAction action) method that is called from various
convenience methods such as cut()/copy()/paste().

06:29 Changeset [27533] by hausmann

Restructure the context menu classes for the Qt port. ContextMenu and ContextMenuItem don't store
QActions/QMenus anymore but just store the action type, tag, title and optionally submenu as created
in ContextMenu::populate().
For the actual Qt context menu we traverse this structure after sendContextMenuEvent and create a QMenu
out of it. That menu is currently not functional anymore though.

06:29 Changeset [27532] by hausmann

Changed ContextMenu::setPlatformDescription for the Qt port to not show the qmenu right away
but instead just behave as a normal setter that takes ownership of the platform menu description (the qmenu).
Instead now QWebPage::contextMenuEvent() retrieves the QMenu after calling sendContextMenuEvent and calls exec()
on it.

06:29 Changeset [27531] by hausmann

Changed to PlatformMouseEvent constructor to allow construction from a QContextMenuEvent.
Call sendContextMenuEvent on the event handler from a QWidget::contextMenuEvent re-implementation instead of in mousePressEvent.

06:28 Changeset [27530] by hausmann

Turned onLoadProgressChanged into a real private slot.

06:28 Changeset [27529] by hausmann

Make QWebHistory an explicitly shared object, returned as a pointer by QWebPage::history().

06:23 Changeset [27528] by hausmann

comments on API changes that we'd like to do.

06:21 Changeset [27527] by hausmann

Add a QWebPage::frameCreated() signal and fix DRT

The removal of createFrame in QWebPage broke the re-implementation
in DumpRenderTree. Instead emit a frameCreated() signal and
connect to it in DumpRenderTree.

Signed-off-by: Lars Knoll <lars@trolltech.com>

06:19 Changeset [27526] by hausmann

Remove QWebPage::createFrame()

now that QWebFrame doesn't have virtual methods anymore, there
is no need for a createFrame() factory method in QWebpage.

06:17 Changeset [27525] by hausmann

Moved all the event handlers from QWebFrame into QWebPage.

This cleans up the public API and allows us to remove the
HackWebFrame hack in DumpRenderTree.

Signed-off-by: Lars Knoll <lars@trolltech.com>

06:01 Changeset [27524] by hausmann

don't put nbsp's into the plan text paste

Fix both ClipboardQt and PasteboardQt to replace
nbsp's with spaces before putting the text onto the
native clipboard. This is consistent with Mac and Win
and fixes at least editing/pasteboard/4076267-3.html

06:01 Changeset [27523] by hausmann

Add now passing tests

The fix of umemcasecmp in UnicodeQt4.h fixed quite a lot
of test falures. Add these to our regression tests.

06:01 Changeset [27522] by hausmann

update test results after the last commit.

06:01 Changeset [27521] by hausmann

fix umemcasecmp

Pretty embarrassing bug. Has the potential to fix quite a few test failures.

06:00 Changeset [27520] by hausmann

Update the list of skipped tests.

Three more tests are passing.

05:45 Changeset [27519] by hausmann

Implement Pasteboard::writeImage()

  • Pasteboard is now fully implemented. Copying of Images into the Clipboard is now supported.
  • As with URLs we only copy into the Clipboard (and not additionally to the Selection)

Signed-off-by: Lars Knoll <lars@trolltech.com>

05:45 Changeset [27518] by hausmann

Apple CodingStyle fixes

Signed-off-by: Lars Knoll <lars@trolltech.com>

05:45 Changeset [27517] by hausmann

Implement Pasteboard::writeURL()

  • The URL currently gets written as text/plain and text/uri-list. The win and mac port have some more types which we currently do not support. When supporting them we can use the 'titleString' as well.
  • As with writeSelection we only copy into the Clipboard. We could consider copying into the Selection as well.

Signed-off-by: Lars Knoll <lars@trolltech.com>

05:45 Changeset [27516] by hausmann

Kill whitespace

Signed-off-by: Lars Knoll <lars@trolltech.com>

05:45 Changeset [27515] by hausmann

Use correct UserAgent string.

  • Only have one User Agent String and this place is QWebPage
  • QWebPage::open -> QWebNetworkRequest -> QWebPage::open -> ResourceRequest -> FrameLoader::load -> QWebNetworkRequest
  • ResourceRequest is != 0 when getting called from WebCore, we will only do requests when coming from WebCore and then we can use the User-Agent set with the help of the FrameLoaderClient
  • We might want to change QWebNetworkRequest a bit

Signed-off-by: Lars Knoll <lars@trolltech.com>

05:18 Changeset [27514] by hausmann

Implemented the two Javascript prompt callbacks in qt/DumpRenderTree
to prevent the default implementation from popping up messageboxes.

04:47 Changeset [27513] by hausmann

add more passing test cases.

04:47 Changeset [27512] by hausmann

Use the correct function calls to convert a selection to
HTML or plain text.

04:47 Changeset [27511] by hausmann

remove two notImplemented() warnings, as I believe we don't
have to implement these methods. Add some (commented out)
debug code in one place.

04:44 Changeset [27510] by hausmann

Add WebKit/qt/Api to the dependency path when building QtLauncher and DumpRenderTree.
That means that changes to the public API of the Qt port also trigger a rebuild of the tools.

04:33 Changeset [27509] by hausmann

Some more clipboard fixes.

We have to set things immediately on the QClipBoard if the
Clipboard object is not for dragging.

This is due to the fact that the Clipboard object might be
rather long lived if accessed through javascript (it'll only
get deleted by JS garbage collection). We have to transfer
the data over to the QClipboard before that to make things work.

Fixes editing/execCommand/copy-without-selection.html

02:32 Changeset [27508] by hausmann

Fix compilation on Windows with non-cygwin perl.

02:14 Changeset [27507] by mrowe@apple.com

Remove conflict marker.

01:53 Changeset [27506] by ap@webkit.org

Corrected ChangeLog grammar.

01:52 Changeset [27505] by ap@webkit.org

Finished moving editing/pasteboard/5583362.html to platform/mac (this test was crashing in ObjC test plugin,
because it couldn't find its resources.

  • editing/resources/plaintext-pasteboard-data.dat: Removed.
  • platform/mac/editing/resources: Added.
  • platform/mac/editing/resources/plaintext-pasteboard-data.dat: Copied from editing/resources/plaintext-pasteboard-data.dat.
00:11 Changeset [27504] by mitz@apple.com


Reviewed by Brady Eidson.

Test: fast/block/float/overhanging-after-height-decrease-offsets.html

  • rendering/RenderBlock.cpp: (WebCore::RenderBlock::layoutBlock):


Reviewed by Brady Eidson.

  • fast/block/float/overhanging-after-height-decrease-offsets.html: Added.
  • platform/mac-leopard/fast/block/float/overhanging-after-height-decrease-offsets-expected.checksum: Added.
  • platform/mac-leopard/fast/block/float/overhanging-after-height-decrease-offsets-expected.png: Added.
  • platform/mac/fast/block/float/overhanging-after-height-decrease-offsets-expected.txt: Added.


23:23 Changeset [27503] by mjs

Reviewed by Eric.

  • only collect when the heap is full, unless we have lots of extra cost garbage

1.1% SunSpider speedup.

This shouldn't hit memory use much since the extra space in those
blocks hangs around either way.

  • kjs/collector.cpp: (KJS::Collector::heapAllocate): (KJS::Collector::collect): Fix logic error that reversed the sense of collect's return value.
23:00 Changeset [27502] by aroben

Move a Mac-specific test to platform/mac

  • editing/pasteboard/5583362.html: Removed.
  • platform/mac/editing/pasteboard/5583362.html: Added.
22:03 Changeset [27501] by oliver

Avoid unnecessarily boxing the result from post inc/decrement for 0.3% gain in sunspider

Reviewed by Maciej

We now convert the common 'for (...; ...; <var>++) ...' to the semantically identical
'for (...; ...; ++<var>) ...'.

21:44 JavaScript performance improvement ideas edited by eric@webkit.org
21:41 Changeset [27500] by eric@webkit.org

2007-11-06 Eric Seidel <eric@webkit.org>

  • Scripts/build-testkjs: build fix... too many $$
21:31 Changeset [27499] by bdakin


Reviewed by Sam.

<rdar://problem/5575812> REGRESSION:When using absolute positioning
with overflow:auto div, WebKit seems to add an additional 15px

  • rendering/RenderBox.cpp: (WebCore::RenderBox::containingBlockWidthForPositioned): We need to subtract off the vertical scrollbar width too.


Reviewed by Sam.

New test for <rdar://problem/5575812> REGRESSION:When using
absolute positioning with overflow:auto div, WebKit seems to add an
additional 15px

  • fast/overflow/overflow-auto-position-absolute.html: Added.
  • platform/mac/fast/overflow/overflow-auto-position-absolute-expected.checksum: Added.
  • platform/mac/fast/overflow/overflow-auto-position-absolute-expected.png: Added.
  • platform/mac/fast/overflow/overflow-auto-position-absolute-expected.txt: Added.

Test with changed results. The measurements in the rtl example now
more closely mirror the ltr example.

  • platform/mac/fast/overflow/unreachable-overflow-rtl-bug-expected.txt:
21:29 Changeset [27498] by aroben

Change WebLocalizableStrings to take UTF-8 C strings

This matches the way things work on the Mac, and will allow source
files containing localizable strings to be shared between Mac and
Windows. The old functions have not been removed for compatibility
reasons, but are now just wrappers around the new UTF-8 functions.

Reviewed by Ada.

  • WebKit.vcproj/WebKit.def: Added new functions.
  • WebKit.vcproj/WebKit_debug.def: Ditto.
  • WebLocalizableStrings.cpp: (copyLocalizedStringFromBundle): Changed to take a WebCore::String representing the key. (localizedString): Refactored from WebLocalizedString. Takes a WebCore::String representing the key. (localizedLPCTSTR): Ditto for WebLocalizedLPCTSTR. (WebLocalizedStringUTF8): Added. Takes a UTF-8 C string as the key. (WebLocalizedLPCTSTRUTF8): Ditto. (WebLocalizedString): Changed to call localizedString. (WebLocalizedLPCTSTR): Changed to call localizedLPCTSTR.
  • WebLocalizableStrings.h: Changed macros to use the new UTF-8 functions.
21:24 Changeset [27497] by eric@webkit.org

2007-11-06 Eric Seidel <eric@webkit.org>

Reviewed by Mark Rowe.

  • Scripts/build-testkjs: return xcodebuild's exit status, instead of grep's
21:00 JavaScript performance improvement ideas edited by eric@webkit.org
19:01 Changeset [27496] by mrowe@apple.com

Move Mac files from WebKit into WebKit/mac.

17:13 Changeset [27495] by justing


Reviewed by Dan Bernstein.

<rdar://problem/5583387> ASSERTION FAILED: !refChild->hasTagName(bodyTag) when pasting newline in plain text into rich text Mail
<rdar://problem/5583362> REGRESSION (5523.10.3-TOT): Newlines stripped when pasting plain text in Mail

  • editing/markup.cpp: (WebCore::createFragmentFromText): Put paragraphs of text into clones of the block that encloses the input context, unless that block is the body, which shouldn't be cloned. In that case, use regular divs, as we did before r27369.


Reviewed by Dan Bernstein.

<rdar://problem/5583387> ASSERTION FAILED: !refChild->hasTagName(bodyTag) when pasting newline in plain text into rich text Mail
<rdar://problem/5583362> REGRESSION (5523.10.3-TOT): Newlines stripped when pasting plain text in Mail

  • editing/pasteboard/5583362.html: Added.
  • editing/resources/plaintext-pasteboard-data.dat: Added.
  • platform/mac/editing/pasteboard/5583362-expected.checksum: Added.
  • platform/mac/editing/pasteboard/5583362-expected.png: Added.
  • platform/mac/editing/pasteboard/5583362-expected.txt: Added.
17:03 Changeset [27494] by eseidel

2007-11-06 Eric Seidel <eric@webkit.org>

Reviewed by darin.

This fixes a regressed layout test for string + object

SunSpider claims this was an overall 0.3% speedup, although some individual tests were slower.

  • kjs/nodes.cpp: (KJS::add): remove erroneous "fast path" for string + *
16:17 JavaScript performance improvement ideas edited by darin@apple.com
16:12 JavaScript performance improvement ideas edited by eric@webkit.org
16:11 JavaScript performance improvement ideas edited by eric@webkit.org
16:06 Changeset [27493] by ggaren@apple.com

Reviewed by Eric Seidel.

Added toJSNumber, a fast path for converting a JSValue to a JS number,
and deployed it in postfix expressions. In the fast case this
eliminates a call to jsNumber.

0.4% speedup on SunSpider.

  • ChangeLog:
  • kjs/nodes.cpp: (KJS::PostIncResolveNode::evaluate): (KJS::PostIncLocalVarNode::evaluate): (KJS::PostDecResolveNode::evaluate): (KJS::PostDecLocalVarNode::evaluate): (KJS::PostIncBracketNode::evaluate): (KJS::PostDecBracketNode::evaluate): (KJS::PostIncDotNode::evaluate): (KJS::PostDecDotNode::evaluate): (KJS::UnaryPlusNode::evaluate):
  • kjs/value.h: (KJS::JSValue::toJSNumber):
16:04 Changeset [27492] by mrowe@apple.com

2007-11-06 Christian Dywan <christian@twotoasts.de>

Reviewed by Darin.

Fix http://bugs.webkit.org/show_bug.cgi?id=15828
Bug 15828: WebKit GTK include and lib directory is installed in qt4-named directory

  • WebCore.pro: Use sane default install paths for the gtk port.
16:02 Changeset [27491] by mrowe@apple.com

2007-11-06 Rodney Dawes <dobey@wayofthemonkey.com>

Fix http://bugs.webkit.org/attachment.cgi?id=17043&action=view
Bug 15766: [GTK] WebKit sometimes spews binary data as text/plain into iframes

FrameLoaderClient::objectContentType needs to check with the MIMETypeRegistry
to determine whether the given MIME type is displayable as an image or non-image.

  • WebCoreSupport/FrameLoaderClientGtk.cpp: (FrameLoaderClient::objectContentType): Change logic to match that in the Windows and Mac ports.
15:19 Changeset [27490] by antti

Correct test results.

  • platform/mac/fast/layers/layer-visibility-expected.txt:
15:00 Changeset [27489] by antti

Reviewed by Hyatt.

Update test to cover
Visibility not propagated correctly for children of a layer with z-index

The fix for this was (accidentally) already checked in with r27277,
with retroactive r=hyatt.

  • fast/layers/layer-visibility.html:
  • platform/mac/fast/layers/layer-visibility-expected.checksum:
  • platform/mac/fast/layers/layer-visibility-expected.png:
  • platform/mac/fast/layers/layer-visibility-expected.txt:
14:28 Changeset [27488] by justing


Reviewed by Darin Adler.

REGRESSION: Caret disappears after deleting the last character in inline hole (15714)

  • editing/TypingCommand.cpp: (WebCore::TypingCommand::deleteSelection): Like the other TypingCommands, including both of the other deletion commands, call typingAddedToOpenCommand(), which takes the command's endingSelection and sets it as selection.


Reviewed by Darin Adler.

<rdar://problem/5576619> REGRESSION: Caret disappears after deleting the last character in inline hole (15714)

  • platform/mac/editing/input/5576619-expected.checksum: Added.
  • platform/mac/editing/input/5576619-expected.png: Added.
  • platform/mac/editing/input/5576619-expected.txt: Added.
  • platform/mac/editing/input/5576619.html: Added.
  • platform/mac/editing/input/text-input-controller-expected.txt:
13:37 Changeset [27487] by darin@apple.com

Reviewed by Maciej.

There was a mistake in the algorithm used to find an empty slot in the property
map entries vector; when we were putting in a new property value and not overwriting
an existing deleted sentinel, we would enlarge the entries vector, but would not
overwrite the stale data that's in the new part. It was easy to pin this down by
turning on property map consistency checks -- I never would have landed with this
bug if I had run the regression tests once with consistency checks on!

  • kjs/property_map.cpp: (KJS::PropertyMap::put): Changed logic for the case where foundDeletedElement is false to always use the item at the end of the entries vector. Also allowed me to merge with the logic for the "no deleted sentinels at all" case.
13:03 Changeset [27486] by mitz@apple.com


Reviewed by Antti Koivisto and Dave Hyatt.

  • fix <rdar://problem/5582961> Incorrect layout and floating object list corruption when CSS decreases a block's height

Test: fast/block/float/overhanging-after-height-decrease.html

  • rendering/RenderBlock.cpp: (WebCore::RenderBlock::layoutBlock): If after calculating the height it turns out that there are overhanging floats that were not overhanging before, rescan children with overhanging floats and add them. (WebCore::RenderBlock::layoutBlockChildren): Added a parameter that returns the lowest float bottom of any of the children. (WebCore::RenderBlock::addOverhangingFloats): Changed to return the lowest float bottom.
  • rendering/RenderBlock.h:


Reviewed by Antti Koivisto and Dave Hyatt.

  • test for <rdar://problem/5582961> Incorrect layout and floating object list corruption when CSS decreases a block's height
  • fast/block/float/overhanging-after-height-decrease.html: Added.
  • platform/mac-leopard/fast/block: Added.
  • platform/mac-leopard/fast/block/float: Added.
  • platform/mac-leopard/fast/block/float/overhanging-after-height-decrease-expected.checksum: Added.
  • platform/mac-leopard/fast/block/float/overhanging-after-height-decrease-expected.png: Added.
  • platform/mac/fast/block/float/overhanging-after-height-decrease-expected.txt: Added.
11:53 Changeset [27485] by adele


Reviewed by Darin.

Switched all uses of HTMLImageLoader to use OwnPtrs.

  • html/HTMLInputElement.h:
  • html/HTMLInputElement.cpp: (WebCore::HTMLInputElement::init): (WebCore::HTMLInputElement::~HTMLInputElement): (WebCore::HTMLInputElement::setInputType): (WebCore::HTMLInputElement::parseMappedAttribute): (WebCore::HTMLInputElement::attach):
  • html/HTMLObjectElement.h:
  • html/HTMLObjectElement.cpp: (WebCore::HTMLObjectElement::HTMLObjectElement): (WebCore::HTMLObjectElement::~HTMLObjectElement): (WebCore::HTMLObjectElement::parseMappedAttribute): (WebCore::HTMLObjectElement::attach):
  • html/HTMLVideoElement.h:
  • html/HTMLVideoElement.cpp: (WebCore::HTMLVideoElement::HTMLVideoElement): (WebCore::HTMLVideoElement::attach): (WebCore::HTMLVideoElement::detach): (WebCore::HTMLVideoElement::parseMappedAttribute):


Reviewed by Darin.

Added test for poster attribute.

  • media/content/abe.png: Added.
  • media/content/greenbox.png: Added.
  • media/video-poster-expected.txt: Added.
  • media/video-poster.html: Added.
11:49 Changeset [27484] by oliver

Fix previous patch to use a 3 bit shift, a 16 bit shift causes a regression in sunspider.


11:34 Changeset [27483] by oliver

Replace boolean comparisons in AddNode with mask comparisons for a 0.2% improvement in sunspider.

Reviewed by Darin

10:56 Changeset [27482] by eseidel

2007-11-06 Eric Seidel <eric@webkit.org>

Reviewed by darin.

SunSpider claims this is a 1.1% speedup.

  • kjs/nodes.cpp: (KJS::throwOutOfMemoryError): Added, non inline. (KJS::addSlowCase): renamed from add(), non inline. (KJS::add): add fast path for String + String, Number + Number and String + *
10:43 Changeset [27481] by darin@apple.com

Reviewed by Adam and Steve.

  • added hooks needed to implement showModalDialog on Windows
  • Interfaces/IWebUIDelegate.idl: Added canRunModal, createModalDialog, and runModal functions to the end of IWebUIDelegate3.
  • WebChromeClient.h: Added uiDelegate and uiDelegate2 helper functions, so it's easier to write client functions.
  • WebChromeClient.cpp: (WebChromeClient::createWindow): Implemented dialog case. Calls IWebUIDelegate3. (WebChromeClient::canRunModal): Implemented. Calls IWebUIDelegate3. (WebChromeClient::runModal): Ditto. (WebChromeClient::uiDelegate): Added. (WebChromeClient::uiDelegate2): Added. (WebChromeClient::uiDelegate3): Added.
10:11 Changeset [27480] by antti


Reviewed by Darin.

Trigger media load on on src attribute changes as specified in new HTML5 draft.

Tests: media/video-src-change.html


  • html/HTMLMediaElement.cpp: (WebCore::HTMLMediaElement::attributeChanged):
  • html/HTMLMediaElement.h:


Reviewed by Darin.

Tests for media src attribute changes.

  • media/video-src-change-expected.txt: Added.
  • media/video-src-change.html: Added.
  • media/video-src-remove-expected.txt: Added.
  • media/video-src-remove.html: Added.
  • media/video-src-set-expected.txt: Added.
  • media/video-src-set.html: Added.
  • media/video-test.js:
10:10 Changeset [27479] by ap

Rubber-stamped by Adam Roben.

Windows build fix.

  • WebFrame.cpp: (WebFrame::string): plainText() returns a String now.
09:48 Changeset [27478] by mitz@apple.com


Reviewed by Darin Adler.

Test: fast/repaint/make-children-non-inline.html

  • rendering/RenderBlock.cpp: (WebCore::RenderBlock::makeChildrenNonInline): Repaint the block. This is needed because the inline children may be repositioned as they move into new anonymous blocks, but those blocks have no knowledge of where their children used to be, so they cannot invalidate those areas.


Reviewed by Darin Adler.

  • fast/repaint/make-children-non-inline.html: Added.
  • platform/mac/fast/repaint/make-children-non-inline-expected.txt: Added.
  • platform/mac-leopard/fast/repaint: Added.
  • platform/mac-leopard/fast/repaint/make-children-non-inline-expected.checksum: Added.
  • platform/mac-leopard/fast/repaint/make-children-non-inline-expected.png: Added.
08:07 Changeset [27477] by ap

Reviewed by Darin.

Some editing cleanup

No change in functionality.


  • editing/TextIterator.cpp: (WebCore::plainText):
  • editing/TextIterator.h: Made WebCore::plainText() return String instead of DeprecatedString.
  • bridge/mac/WebCoreAXObject.mm: (-[WebCoreAXObject textUnderElement]): (-[WebCoreAXObject value]): (-[WebCoreAXObject doAXBoundsForTextMarkerRange:]): (-[WebCoreAXObject doAXNextSentenceEndTextMarkerForTextMarker:]): (-[WebCoreAXObject doAXPreviousSentenceStartTextMarkerForTextMarker:]): Updated for the above change. There is no need to explicitly convert to NSString now.
  • editing/EditCommand.cpp: (WebCore::EditCommand::EditCommand): m_startingSelection and m_endingSelection are actually initialized in constructor body, so the work done in initializer list was wasted.

(WebCore::EditCommand::apply): Moved some stars.
(WebCore::EditCommand::unapply): Ditto.
(WebCore::EditCommand::reapply): Ditto.
(WebCore::EditCommand::setStartingSelection): The loop exit condition was evaluated twice,
removed one of the checks.

  • editing/SelectionController.cpp: (WebCore::SelectionController::toString): plainText() result type now matches what we need here.
  • page/mac/WebCoreFrameBridge.h:
  • page/mac/WebCoreFrameBridge.mm: Removed unused -[WebCoreFrameBridge deleteKeyPressedWithSmartDelete:granularity:] and -[WebCoreFrameBridge forwardDeleteKeyPressedWithSmartDelete:granularity:].


  • WebView/WebHTMLView.mm: (-[WebHTMLView deleteToEndOfLine:]): (-[WebHTMLView deleteToEndOfParagraph:]): WebCore had a duplicate of the same logic already. We are passing a boundary value to a function that expects granularity, this may need to be straightened out in the future.
01:08 Changeset [27476] by eseidel

2007-11-06 Eric Seidel <eric@webkit.org>

Reviewed by mjs.

Avoid more UString creation.

SunSpider claims this is a 0.4% speedup.

  • kjs/regexp_object.cpp: (KJS::RegExpObjectImp::construct): use UString::find(UChar)


23:47 Changeset [27475] by mrowe@apple.com

2007-11-05 Mark Rowe <mrowe@apple.com>

Mac build fix.

  • bindings/js/JSHTMLDocumentCustom.cpp: (WebCore::writeHelper):
23:30 Changeset [27474] by mrowe@apple.com

2007-11-05 Mark Rowe <mrowe@apple.com>

Mac build fix.

  • kjs/array_object.cpp: (KJS::ArrayProtoFunc::callAsFunction):
23:20 Changeset [27473] by aroben

Don't crash if SafariTheme can't be loaded

PlatformScrollBarSafari and RenderThemeSafari were not checking
whether SafariTheme was successfully loaded. All other uses of
SafariTheme already check this.

Reviewed by Steve.

  • platform/win/PlatformScrollBarSafari.cpp: (WebCore::PlatformScrollbar::paintButton): (WebCore::PlatformScrollbar::paintTrack): (WebCore::PlatformScrollbar::paintThumb):
  • rendering/RenderThemeSafari.cpp: (WebCore::RenderThemeSafari::isControlStyled): (WebCore::RenderThemeSafari::paintCheckbox): (WebCore::RenderThemeSafari::paintRadio): (WebCore::RenderThemeSafari::paintButton): (WebCore::RenderThemeSafari::paintTextField): (WebCore::RenderThemeSafari::paintCapsLockIndicator): (WebCore::RenderThemeSafari::paintTextArea): (WebCore::RenderThemeSafari::paintMenuList): (WebCore::RenderThemeSafari::paintSliderThumb): (WebCore::RenderThemeSafari::paintSearchField): (WebCore::RenderThemeSafari::paintSearchFieldCancelButton): (WebCore::RenderThemeSafari::paintSearchFieldResultsDecoration): (WebCore::RenderThemeSafari::paintSearchFieldResultsButton):
23:20 Changeset [27472] by aroben

Windows build fix

  • kjs/list.h:
23:09 Changeset [27471] by mrowe@apple.com

2007-11-05 Mark Rowe <mrowe@apple.com>

Build fix. Add missing #include.

  • kjs/operations.cpp:
22:48 Changeset [27470] by eseidel

2007-11-05 Eric Seidel <eric@webkit.org>

Reviewed by mjs.

Remove another call to toString(exec)

SunSpider claims this is a 0.5% speedup.

  • kjs/operations.cpp: (KJS::equal): remove another toString
22:39 Changeset [27469] by kevino

Adding the rest of wx port's graphics impl.

Rubber-stamped by Maciej Stachowiak.

22:24 Changeset [27468] by eseidel

2007-11-05 Eric Seidel <eric@webkit.org>

  • kjs/operations.cpp: (KJS::equal): correct broken change.
22:17 Changeset [27467] by eseidel

2007-11-05 Eric Seidel <eric@webkit.org>

Reviewed by mjs.

Remove one more call to toString(exec).

SunSpider claims this is a 0.7% speedup.

  • kjs/operations.cpp: (KJS::equal): remove a call to toString()
21:52 Changeset [27466] by kevino

wx port bug fixes and new files to get platform/wx building on trunk.

Rubber-stamped by Maciej Stachowiak.

21:43 Changeset [27465] by adele

Reviewed by Maciej.

Fix for <rdar://problem/5579999> Add poster attribute for video element

  • html/HTMLAttributeNames.in: Added poster attribute.
  • html/HTMLImageLoader.cpp: (WebCore::HTMLImageLoader::updateFromElement): Calls imageSourceAttributeName instead of having special cases for the different kinds of elements.
  • dom/Element.cpp: (WebCore::Element::imageSourceAttributeName): Added.
  • dom/Element.h:
  • html/HTMLObjectElement.cpp: (WebCore::HTMLObjectElement::imageSourceAttributeName): Added.
  • html/HTMLObjectElement.h:
  • html/HTMLMediaElement.cpp: (WebCore::HTMLMediaElement::movieNetworkStateChanged): Calls updatePosterImage when the network state is empty and when the first frame has been loaded.
  • html/HTMLMediaElement.h: (WebCore::HTMLMediaElement::rendererIsNeeded): Made this inline. HTMLVideoElement now also implements this.
  • html/HTMLVideoElement.idl: Added case for poster attribute.
  • html/HTMLVideoElement.h: Added image loader and flag to keep track of whether or not the poster image should be shown.
  • html/HTMLVideoElement.cpp: (WebCore::HTMLVideoElement::HTMLVideoElement): Initialize m_imageLoader and m_shouldShowPosterImage. (WebCore::HTMLVideoElement::rendererIsNeeded): Calls HTMLElement::rendererIsNeeded since HTMLMediaElements have renderer by default. (WebCore::HTMLVideoElement::createRenderer): Create a RenderImage or RenderVideo depending on whether or not the poster image should be shown. (WebCore::HTMLVideoElement::attach): Set up image loader and RenderImage if necessary. (WebCore::HTMLVideoElement::detach): Delete image loader if its no longer needed. (WebCore::HTMLVideoElement::parseMappedAttribute): Added case to process poster attribute. (WebCore::HTMLVideoElement::poster): Added getter for poster attribute. (WebCore::HTMLVideoElement::setPoster): Added setter for poster attribute. (WebCore::HTMLVideoElement::isURLAttribute): Added. (WebCore::HTMLVideoElement::imageSourceAttributeName): Added. (WebCore::HTMLVideoElement::updatePosterImage): Added. Updates m_shouldShowPosterImage and if its changed, detaches and attaches so the renderer is correct.
21:39 JavaScript performance improvement ideas edited by mjs@apple.com
21:25 Changeset [27464] by aroben

Fix <rdar://5563572> SVG image support is turned off


Fix <rdar://5563572> SVG image support is turned off

Turned on SVG images for all platforms.

Reviewed by Eric.

  • WebCore.vcproj/WebCore.vcproj: Added SVGImage.{cpp,h}
  • loader/CachedImage.cpp: (WebCore::CachedImage::createImage): Removed platform checks for SVGImage.


Remove a now-passing test from the Windows Skipped file

Reviewed by Eric.

  • platform/win/Skipped:
20:55 Changeset [27463] by eseidel

Fix spelling errors in ChangeLogs, no review

20:43 Changeset [27462] by antti

Reviewed by Darin.

QTMovieView can generate callbacks during paint. This can lead to crashes.

Delay callbacks so they get handled after painting is completed. No test case,
I don't know how to reliably reproduce this.

  • platform/graphics/mac/MoviePrivateQTKit.mm: (WebCore::MoviePrivate::MoviePrivate): (WebCore::MoviePrivate::~MoviePrivate): (WebCore::MoviePrivate::paint): (-[WebCoreMovieObserver initWithCallback:WebCore::]): (-[WebCoreMovieObserver disconnect]): (-[WebCoreMovieObserver loadStateChanged:]): (-[WebCoreMovieObserver rateChanged:]): (-[WebCoreMovieObserver sizeChanged:]): (-[WebCoreMovieObserver timeChanged:]): (-[WebCoreMovieObserver volumeChanged:]): (-[WebCoreMovieObserver didEnd:]): (-[WebCoreMovieObserver setDelayCallbacks:]):
20:12 Changeset [27461] by antti

Reviewed by Adam.

Add some missing WebCore* prefixes to ObjC classes

  • platform/mac/FileChooserMac.mm: (WebCore::FileChooser::FileChooser):
  • platform/mac/SharedBufferMac.mm: (WebCore::SharedBuffer::createNSData): (WebCore::SharedBuffer::createCFData):
  • platform/mac/SharedTimerMac.cpp: (WebCore::setSharedTimerFireTime):
18:53 Changeset [27460] by alp

2007-11-05 Christian Dywan <christian@twotoasts.de>

Reviewed by Maciej.

FrameLoaderClientGtk hardcodes data, including platform to Linux i686

Compute a proper user agent string.

Patch includes fixes by Alp.

  • WebCoreSupport/FrameLoaderClientGtk.cpp: (WebKit::agentPlatform): (WebKit::agentOS): (WebKit::composeUserAgent): (WebKit::FrameLoaderClient::userAgent):
  • WebCoreSupport/FrameLoaderClientGtk.h:
18:10 Changeset [27459] by adachan

<rdar://problem/5579772> Regression: AltGr does not work
Testing whether alt-key is down is not the right test for system key event.
Added a m_isSystemKey flag in PlatformKeyboardEvent to keep track of whether
this is a system key event, check that flag instead in handleEditingKeyboardEvent().

Reviewed by Oliver.

16:35 Changeset [27458] by mrowe@apple.com

2007-11-05 Mark Rowe <mrowe@apple.com>

Gtk build fix.

  • pcre/pcre.pri:
16:02 Changeset [27457] by adachan

Build fix.

Reviewed by Tristan.

  • WebChromeClient.h:
15:56 Changeset [27456] by antti

Reviewed by Sam.

Update WKQTMovieViewSetDrawSynchronously.

  • libWebKitSystemInterfaceLeopard.a:
  • libWebKitSystemInterfaceTiger.a:
15:21 Changeset [27455] by sullivan@apple.com
  • WebView/WebView.mm: (-[WebView _searchWithSpotlightFromMenu:]):

Teeny style tweak to test svn access on other machine

15:12 Changeset [27454] by sullivan@apple.com
  • WebView/WebView.mm: (-[WebView computedStyleForElement:pseudoElement:]):

Teeny style tweak to test svn access

15:05 Changeset [27453] by mrowe@apple.com

2007-11-05 Mark Rowe <mrowe@apple.com>

Gtk build fix.

  • kjs/list.cpp:
14:43 Changeset [27452] by tristan


Reviewed by Darin Adler.

  • WebCoreSupport/ChromeClientQt.cpp: (WebCore::ChromeClientQt::createWindow):
  • WebCoreSupport/ChromeClientQt.h: Revised to use new WebCore ChromeClient createWindow API.


Reviewed by Darin Adler.

  • WebCore.xcodeproj/project.pbxproj: Set WindowFeatures.h as a Private header.

  • loader/FrameLoader.cpp: (WebCore::FrameLoader::createWindow): Revised to use a single createWindow function instead of two createWindow functions and one createModalDialog function. The logic for this is now addressed in WebKit in an effort to make this easier to follow.

  • page/Chrome.cpp: (WebCore::Chrome::createWindow):
  • page/Chrome.h:
  • page/ChromeClient.h:
  • page/ContextMenuController.cpp: (WebCore::openNewWindow):
  • platform/graphics/svg/SVGImageEmptyClients.h: (WebCore::SVGEmptyChromeClient::createWindow): Revised to take new additional windowFeatures parameter.


Reviewed by Darin Adler.

  • DefaultDelegates/WebDefaultUIDelegate.m: (-[WebDefaultUIDelegate webView:createWebViewWithRequest:windowFeatures:]): Forward the UI delegate to call webView:createWebViewWithRequest: if this method doesn't exist.

  • WebCoreSupport/WebFrameLoaderClient.mm: (WebFrameLoaderClient::dispatchCreatePage):
  • Plugins/WebBaseNetscapePluginView.mm: (-[WebBaseNetscapePluginView loadPluginRequest:]):
  • WebView/WebView.mm: (-[WebView _openNewWindowWithRequest:]): Revised to use new webView:createWebViewWithRequest:windowFeatures: callback.

  • WebCoreSupport/WebChromeClient.h:
  • WebCoreSupport/WebChromeClient.mm: (WebChromeClient::createWindow): Added a new createWindow that accepts 3 parameters, so we can pass up windowFeatures to the chrome. Removed createModalDialog to use new createWindow function.

  • WebView/WebUIDelegatePrivate.h: Added new webView:createWebViewWithRequest:windowFeatures: method.


Reviewed by Darin Adler.

Part of the WebKit/WebCore API changes for

  • WebChromeClient.cpp: (WebChromeClient::createWindow): Removed usage of createModalDialog and revised to use new createWindow ChromeClient API.
14:02 Changeset [27451] by ggaren@apple.com

Touched a file to test my new HTTP access.

  • kjs/scope_chain.cpp:
13:56 Changeset [27450] by ggaren

Build fix.

  • ForwardingHeaders/kjs/value.h: Added.
13:35 Changeset [27449] by alp

2007-11-05 Alp Toker <alp@atoker.com>

Unreviewed build fix for qmake-based ports.

Someone with a better understanding of qmake still needs to sort out

13:27 Changeset [27448] by ggaren


Reviewed by Darin Adler.


Switched List implementation from a custom heap allocator to an inline
Vector, for a disappointing .5% SunSpider speedup.

Also renamed List::slice to List::getSlice because "get" is the
conventional prefix for functions returning a value through an out

  • kjs/array_object.cpp: (KJS::ArrayProtoFunc::callAsFunction): Removed some redundant function calls and memory accesses.
  • kjs/bool_object.cpp: (BooleanObjectImp::construct): Removed questionable use of iterator.
  • kjs/list.cpp:
  • kjs/list.h: New List class, implemented in terms of Vector. Two interesting differences:
    1. The inline capacity is 8, not 5. Many of the Lists constructed during a SunSpider run are larger than 5; almost none are larger than 8.
  1. The growth factor is 4, not 2. Since we can guarantee that Lists aren't long-lived, we can grow them more aggressively, to avoid excessive copying.
  • kjs/regexp_object.cpp: (RegExpObjectImp::construct): Removed redundant function calls.
  • kjs/string_object.cpp: (KJS::StringObjectImp::construct): Removed questionable use of iterator.
  • wtf/Vector.h: (WTF::::uncheckedAppend): Added a fast, unchecked version of append.


Reviewed by Darin Adler.


Small adaptations to new KJS::List class.

  • bindings/js/kjs_window.cpp: (KJS::WindowFunc::callAsFunction): (KJS::ScheduledAction::ScheduledAction):


Reviewed by Darin Adler.


Small adaptations to new KJS::List class.

  • ForwardingHeaders/kjs/value.h: Added.
13:09 Changeset [27447] by mrowe@apple.com

2007-11-05 Mark Rowe <mrowe@apple.com>

Reviewed by Alp Toker.

Add DEPENDPATH to JavaScriptCore and pcre to help qmake with dependencies.

10:57 Changeset [27446] by aroben

Add support on Windows for WEBKIT_TESTFONTS

This environment variable lets you specify where the fonts to be used
by DumpRenderTree reside. The Qt port is already using this, so I'm
just following their lead.

Reviewed by Darin.

  • DumpRenderTree/win/DumpRenderTree.cpp: (exePath): Refactored code out of initialize(). (fontsPath): Returns either $WEBKIT_TESTFONTS or DumpRenderTree.resources. (initialize): Use the new fontsPath function. (main): Use the new exePath function.
  • Scripts/run-webkit-tests: Propagate the WEBKIT_TESTFONTS environment variable to DRT, like Qt does.
10:57 Changeset [27445] by aroben

Add IWebCache::disabled

This matches the Mac WebCache class.

Reviewed by Sam.

  • Interfaces/IWebCache.idl:
  • WebCache.cpp: (WebCache::disabled):
  • WebCache.h:
10:57 Changeset [27444] by aroben

Add IWebInspector and a way to get one from a WebView


Allow passing a base class pointer to COMPtr::copyRefTo

Reviewed by Sam.

  • platform/win/COMPtr.h:


Add IWebInspector and a way to get one from a WebView

This API matches the Mac one added in r27266.

Reviewed by Sam.

  • Interfaces/IWebInspector.idl: Added.
  • Interfaces/IWebViewPrivate.idl: Added a new inspector method to match Mac.
  • WebInspector.cpp: Added. (WebInspector::createInstance): (WebInspector::WebInspector): (WebInspector::~WebInspector): (WebInspector::webViewClosed): (WebInspector::QueryInterface): (WebInspector::AddRef): (WebInspector::Release): (WebInspector::show): (WebInspector::showConsole): (WebInspector::showTimeline): (WebInspector::close): (WebInspector::attach): (WebInspector::detach):
  • WebInspector.h: Added.
  • WebKit.vcproj/Interfaces.vcproj: Added IWebInspector.idl.
  • WebKit.vcproj/WebKit.vcproj: Added WebInspector.{cpp,h}.
  • WebKit.vcproj/WebKitGUID.vcproj: Added IWebInspector_i.c.
  • WebView.cpp: (WebView::close): Notify the WebInspector that we're closing. (WebView::inspector): Added.
  • WebView.h:
10:56 Changeset [27443] by aroben

Cache strings that come directly from WebLocalizedString

Reviewed by Steve.

  • WebLocalizableStrings.cpp: (copyLocalizedStringFromBundle): This used to be WebLocalizedString, but is now just a static helper function. (findCachedStringInMap): Added static helper. (findCachedString): Refactored and cleaned up code from WebLocalizedLPCTSTR. (cacheString): Ditto. (WebLocalizedString): Rewrote to use the new helper functions. (WebLocalizedLPCTSTR): Changed to use the new helper functions.
10:55 Changeset [27442] by aroben

Only override the default user agent string if we're actually given a custom one

Reviewed by Sam.

  • WebView.cpp: (WebView::setCustomUserAgent):
10:52 Changeset [27441] by mitz@apple.com


Reviewed by Oliver Hunt.

  • fix ASSERTION FAILED: !HashTranslator::equal(KeyTraits::emptyValue(), key) when a class attribute is all-whitespace

Test: fast/dom/class-all-whitespace.html

  • dom/StyledElement.cpp: (WebCore::StyledElement::parseMappedAttribute): Check if there is any non-whitespace character in the class attribute.


Reviewed by Oliver Hunt.

  • test that an all-whitespace class attribute does not cause an assertion failure
  • fast/dom/class-all-whitespace-expected.txt: Added.
  • fast/dom/class-all-whitespace.html: Added.
10:23 Changeset [27440] by beidson@apple.com

Reviewed by Sam

Add transaction blocking to the DatabaseAuthorizer in preparation for the new version
of the sql storage API

  • storage/DatabaseAuthorizer.cpp: (WebCore::DatabaseAuthorizer::allowTransaction):
  • storage/DatabaseAuthorizer.h:
08:34 Changeset [27439] by mrowe@apple.com

2007-11-05 Mark Rowe <mrowe@apple.com>

Reviewed by Alp Toker.

Have getMIMETypeForExtension return a null string when no MIME type is known
for the extension rather than returning "text/plain". This prevents plugin data
being dumped into object elements when plugins are disabled.

  • platform/gtk/MIMETypeRegistryGtk.cpp: (WebCore::MIMETypeRegistry::getMIMETypeForExtension):
07:01 Changeset [27438] by mrowe@apple.com

2007-11-05 Mark Rowe <mrowe@apple.com>

Rubber-stamped by Alp Toker.

Remove buggy "autocomplete" from GtkLauncher as it causes more problems than it solves.

  • GtkLauncher/main.cpp: (goToURLBarText): (main):
06:39 Changeset [27437] by mrowe@apple.com

2007-11-05 Mark Rowe <mrowe@apple.com>

Rubber-stamped by Alp Toker.

Remove unused m_firstData member from FrameLoaderClientGtk.

  • WebCoreSupport/FrameLoaderClientGtk.cpp:
  • WebCoreSupport/FrameLoaderClientGtk.h:
06:39 Changeset [27436] by mrowe@apple.com

2007-11-05 Mark Rowe <mrowe@apple.com>

Reviewed by Alp Toker.

Fix http://bugs.webkit.org/show_bug.cgi?id=15842
Bug 15842: [Gtk] about:blank doesn't work

  • WebCoreSupport/FrameLoaderClientGtk.cpp: (WebKit::FrameLoaderClient::finishedLoading): Set the encoding on the frame loader to get work done that is normally done when the first bit of data is received, even in the case of a document with no data (like about:blank).
06:30 Changeset [27435] by ap

Reviewed by Darin.

fast/dom/Document/early-document-access.html crashes under GuardMalloc

  • fast/dom/Document/early-document-access.html: Don't check for open() timeout; wait for popup window to close as long as it takes.


22:38 Changeset [27434] by ddkilzer

bisect-builds doesn't work with nightly build r19992 or newer on Leopard

Reviewed by Timothy.

Restrict the range of nightly builds used by the bisect-builds script
based on the version of Safari and the version of Mac OS X being used.

Mac OS X 10.4: Safari 2.0: r11976 or newer
Mac OS X 10.4: Safari 3.0: r19992 or newer

Mac OS X 10.5: Safari 2.0: r19594 or newer
Mac OS X 10.5: Safari 3.0: r25124 or newer

  • Scripts/bisect-builds: (findMacOSXVersion): Added. (makeNightlyList): Added argument to provide version of Mac OS X. Restrict range of nightly builds based on Safari and Mac OS X versions.
17:37 Changeset [27433] by weinig@apple.com

Rubber-stamped by Adam Roben.

Rename SecurityOrigin::allowsAccessFrom to SecurityOrigin::canAccess to
clear up ambiguity.

  • bindings/js/kjs_window.cpp: (KJS::Window::isSafeScript):
  • platform/SecurityOrigin.cpp: (WebCore::SecurityOrigin::canAccess):
  • platform/SecurityOrigin.h:
16:20 Changeset [27432] by timothy@apple.com

Land the HTML Editing Toolbar demo from WWDC 2007.

  • demos: Added.
  • demos/editingToolbar: Added.
  • demos/editingToolbar/FancyToolbar.css: Added.
  • demos/editingToolbar/FancyToolbar.js: Added.
  • demos/editingToolbar/FancyToolbarImages: Added.
  • demos/editingToolbar/FancyToolbarImages/button.png: Added.
  • demos/editingToolbar/FancyToolbarImages/buttonLeft.png: Added.
  • demos/editingToolbar/FancyToolbarImages/buttonMiddle.png: Added.
  • demos/editingToolbar/FancyToolbarImages/buttonPressed.png: Added.
  • demos/editingToolbar/FancyToolbarImages/buttonPressedLeft.png: Added.
  • demos/editingToolbar/FancyToolbarImages/buttonPressedMiddle.png: Added.
  • demos/editingToolbar/FancyToolbarImages/buttonPressedRight.png: Added.
  • demos/editingToolbar/FancyToolbarImages/buttonRight.png: Added.
  • demos/editingToolbar/FancyToolbarImages/camera.png: Added.
  • demos/editingToolbar/FancyToolbarImages/link.png: Added.
  • demos/editingToolbar/FancyToolbarImages/textAlign.png: Added.
  • demos/editingToolbar/FancyToolbarImages/toolbarOutline.png: Added.
  • demos/editingToolbar/FancyToolbarImages/toolbarOutlineBottom.png: Added.
  • demos/editingToolbar/FancyToolbarImages/toolbarOutlineBottomLeft.png: Added.
  • demos/editingToolbar/FancyToolbarImages/toolbarOutlineBottomRight.png: Added.
  • demos/editingToolbar/FancyToolbarImages/toolbarOutlineLeft.png: Added.
  • demos/editingToolbar/FancyToolbarImages/toolbarOutlineRight.png: Added.
  • demos/editingToolbar/FancyToolbarImages/toolbarOutlineTop.png: Added.
  • demos/editingToolbar/FancyToolbarImages/toolbarOutlineTopLeft.png: Added.
  • demos/editingToolbar/FancyToolbarImages/toolbarOutlineTopRight.png: Added.
  • demos/editingToolbar/content.html: Added.
  • demos/editingToolbar/images: Added.
  • demos/editingToolbar/images/safari.png: Added.
  • demos/editingToolbar/index.html: Added.
16:09 Changeset [27431] by timothy@apple.com

Reviewed by Adam.

Bug 15834: There are many subtle bugs in the Styles pane of the Web Inspector

  • Broke up DocumentPanel and added three SidebarPane sub-classes.
  • Fixed many Style pane bugs, including:
    • Poor handling of duplicate properties in the same rule. Some of this can't be fixed since we can't only get the "winning" value for duplicate properties. So we should only show one entry per unique property name.
    • Computed style does not show font shorthand sub-properties if 'font' was used.
    • Property priority was broken, the wrong properties were crossed out.
    • The 'border' shorthand shows null for the shorthand value.
    • Shorthands didn't show their priority (e.g. !important).
    • HSL and HTML hex colors didn't have preview swatch blocks.
    • Code refactoring, making it easier to reuse for console.log later.
  • page/inspector/DocumentPanel.js: Move sidebar pane code to three seperate classes in new files.
  • page/inspector/MetricsSidebarPane.js: Added.
  • page/inspector/Panel.js: Remove an InspectorController.log() call.
  • page/inspector/PropertiesSection.js: Add the section to the TreeOutline. So TreeElements can access properties on their section.
  • page/inspector/PropertiesSidebarPane.js: Added.
  • page/inspector/SidebarPane.js: Remove the explicit asignment of the onexpand and oncollapse to null. These were hiding prototypes.
  • page/inspector/StylesSidebarPane.js: Added.
  • page/inspector/inspector.html: Include the new script files.
  • page/inspector/treeoutline.js: If a null representedObject is passed in just use a empty object.
14:36 Changeset [27430] by kmccullo

Reviewed by Maciej.

  • This patch involves several changes, all of them were noticed that they were needed by the work being done in WebKit to get Drosera and WebKit working together on Windows.
  • The changes are: 1) Added a debugger console for output messages. 2) Drosera now listens for the WebKit server (before, the server would have to be running before Drosera was started.) 3) Fixed a bug where the WebView started out as 0x0 pixels. 4) Fixed a bug when there is no scope. 5) Added the HTML, JS, and CSS to the project file to make them easy to find. 6) Made the ServerConnection functions virtual.
  • Drosera/win/DebuggerClient.cpp: This is part of how Drosera listens for the WebKit server. (DebuggerClient::DebuggerClient): (DebuggerClient::~DebuggerClient): (DebuggerClient::didFinishLoadForFrame): (DebuggerClient::serverConnected): (DebuggerClient::attemptToCreateServerConnection):
  • Drosera/win/DebuggerClient.h: Ditto.
  • Drosera/win/DebuggerDocumentPlatform.cpp: Fixed a bug when there is no scope. (DebuggerDocument::getPlatformLocalScopeVariableNamesForCallFrame): (DebuggerDocument::platformValueForScopeVariableNamed):
  • Drosera/win/Drosera.cpp: (_tWinMain): Added a console in debug for output messages. (Drosera::Drosera): Listen for server. (Drosera::initUI): The server now Initializes COM. (Drosera::serverConnected): Part of the listening for the server. (Drosera::attemptToCreateServerConnection): Ditto.
  • Drosera/win/Drosera.h: New interface for listening for the server.
  • Drosera/win/Drosera.vcproj/Drosera.vcproj: Added HTML, JS, and CSS files to the VS project.
  • Drosera/win/ServerConnection.cpp: Part of listening for the server connection. (ServerConnection::ServerConnection): (ServerConnection::attemptToCreateServerConnection):
  • Drosera/win/ServerConnection.h: Ditto and virtualized the Interface methods. (ServerConnection::serverConnected):
14:30 Changeset [27429] by weinig

Add svn:ignore for vcproj temp files under FindSafari.

12:27 Changeset [27428] by ap

Reviewed by Maciej.

fast/dom/gc-10.html crashes when run alone

Check for !done before using objects that can be already deallocated.

  • DumpRenderTree/mac/EditingDelegate.mm: (-[EditingDelegate webView:shouldBeginEditingInDOMRange:]): (-[EditingDelegate webView:shouldEndEditingInDOMRange:]): (-[EditingDelegate webView:shouldInsertNode:replacingDOMRange:givenAction:]): (-[EditingDelegate webView:shouldInsertText:replacingDOMRange:givenAction:]): (-[EditingDelegate webView:shouldDeleteDOMRange:]): (-[EditingDelegate webView:shouldChangeSelectedDOMRange:toDOMRange:affinity:stillSelecting:]): (-[EditingDelegate webView:shouldApplyStyle:toElementsInDOMRange:]): (-[EditingDelegate webView:shouldChangeTypingStyle:toStyle:]): (-[EditingDelegate webViewDidBeginEditing:]): (-[EditingDelegate webViewDidChange:]): (-[EditingDelegate webViewDidEndEditing:]): (-[EditingDelegate webViewDidChangeTypingStyle:]): (-[EditingDelegate webViewDidChangeSelection:]):
  • DumpRenderTree/mac/FrameLoadDelegate.mm: (-[FrameLoadDelegate webView:didStartProvisionalLoadForFrame:]): (-[FrameLoadDelegate webView:didCommitLoadForFrame:]): (-[FrameLoadDelegate webView:didFailProvisionalLoadWithError:forFrame:]): (-[FrameLoadDelegate webView:didFinishLoadForFrame:]): (-[FrameLoadDelegate webView:didFailLoadWithError:forFrame:]): (-[FrameLoadDelegate webView:windowScriptObjectAvailable:]): (-[FrameLoadDelegate webView:didClearWindowObject:forFrame:]): (-[FrameLoadDelegate webView:didReceiveTitle:forFrame:]): (-[FrameLoadDelegate webView:didReceiveServerRedirectForProvisionalLoadForFrame:]): (-[FrameLoadDelegate webView:didReceiveIcon:forFrame:]): (-[FrameLoadDelegate webView:didChangeLocationWithinPageForFrame:]): (-[FrameLoadDelegate webView:willPerformClientRedirectToURL:delay:fireDate:forFrame:]): (-[FrameLoadDelegate webView:didCancelClientRedirectForFrame:]): (-[FrameLoadDelegate webView:willCloseFrame:]): (-[FrameLoadDelegate webView:didFinishDocumentLoadForFrame:]): (-[FrameLoadDelegate webView:didHandleOnloadEventsForFrame:]):
  • DumpRenderTree/mac/ResourceLoadDelegate.mm: (-[ResourceLoadDelegate webView:identifierForInitialRequest:fromDataSource:]): (-[ResourceLoadDelegate webView:resource:willSendRequest:redirectResponse:fromDataSource:]): (-[ResourceLoadDelegate webView:resource:didReceiveResponse:fromDataSource:]): (-[ResourceLoadDelegate webView:resource:didFinishLoadingFromDataSource:]): (-[ResourceLoadDelegate webView:resource:didFailLoadingWithError:fromDataSource:]): (-[ResourceLoadDelegate webView:resource:willCacheResponse:fromDataSource:]):
08:46 Changeset [27427] by ddkilzer

Fix build when spaces appear in the WebKit source path.

Reviewed by Mark Rowe.

  • bindings/scripts/IDLParser.pm: Use safer open() method which lists arguments individually and prevents the need to work around spaces in the path.
08:13 Changeset [27426] by ddkilzer

CIA has changed its hostname from cia.navi.cx to cia.vc

Reviewed by Mitz.

  • contact.html: Updated links to CIA.
07:03 Changeset [27425] by alp

2007-11-04 Alp Toker <alp@atoker.com>

Reviewed by Alexey Proskuryakov.

Fix a crash when no clipboard text is available

  • platform/gtk/PasteboardGtk.cpp: (WebCore::Pasteboard::plainText):
01:48 Changeset [27424] by mrowe@apple.com

2007-11-04 Mark Rowe <mrowe@apple.com>

Build fix. Don't use Carbon.h as the prefix header as it triggers
warnings that would otherwise be suppressed due to it being a system header.

  • DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
01:58 Changeset [27423] by darin@apple.com
  • hosted/sunspider.html: Tweaked formatting a bit.
01:28 Changeset [27422] by darin@apple.com

Reviewed by Maciej.

SunSpider says it's 2.6% faster overall, 32.5% in the regular expression tests.

  • pcre/pcre_internal.h: Added OP_ASCII_CHAR and OP_ASCII_LETTER_NC.
  • pcre/pcre_compile.c: (find_fixedlength): Added cases for OP_ASCII_CHAR and OP_ASCII_LETTER_NC. Also added OP_NOT since there was no reason it should not be in here. (could_be_empty_branch): Ditto. (compile_branch): Streamlined all the single-character cases; there was a bit of duplicate code. Added cases for OP_ASCII_CHAR and OP_ASCII_LETTER_NC as needed. But in particular, compile to those opcodes when the single character match is ASCII. (find_firstassertedchar): Added cases for OP_ASCII_CHAR and OP_ASCII_LETTER_NC.
  • pcre/pcre_exec.c: (match): Removed the "min", "minimize", and "op" fields from the matchframe, after I discovered that none of them needed to be saved and restored across recursive match calls. Also eliminated the ignored result field from the matchframe, since I discovered that rrc ("recursive result code") was already the exact same thing. Moved the handling of opcodes higher than OP_BRA into the default statement of the switch instead of doing them before the switch. This removes a branch from each iteration of the opcode interpreter, just as removal of "op" removed at least one store from each iteration. Last, but not least, add the OP_ASCII_CHAR and OP_ASCII_LETTER_NC functions. Neither can ever match a surrogate pair and the letter case can be handled efficiently.
Note: See TracTimeline for information about the timeline view.